diff --git a/Plutonium specific gsc-related fixes/18 Player ZM Fixes/18 Player Bugs.gsc b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/18 Player Bugs.gsc new file mode 100644 index 0000000..189a654 --- /dev/null +++ b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/18 Player Bugs.gsc @@ -0,0 +1,51 @@ +//Treyarch only creates up to 8 values for "zombie_score_start_numplayersp" so for games of more than 8 players the initial score for powerups to drop a powerup will be lower than default + +_zm::init_player_levelvars() +{ + flag_wait( "start_zombie_round_logic" ); + difficulty = 1; + column = int( difficulty ) + 1; + for ( i = 0; i < 8; i++ ) + { + points = 500; + if ( i > 3 ) + { + points = 3000; + } + points = set_zombie_var( "zombie_score_start_" + i + 1 + "p", points, 0, column ); + } +} + +_zm_powerups::watch_for_drop() +{ + flag_wait( "start_zombie_round_logic" ); + flag_wait( "begin_spawning" ); + players = get_players(); + score_to_drop = ( players.size * level.zombie_vars[ "zombie_score_start_" + players.size + "p" ] ) + level.zombie_vars[ "zombie_powerup_drop_increment" ]; + while ( 1 ) + { + flag_wait( "zombie_drop_powerups" ); + players = get_players(); + curr_total_score = 0; + for ( i = 0; i < players.size; i++ ) + { + if ( isDefined( players[ i ].score_total ) ) + { + curr_total_score += players[ i ].score_total; + } + } + if ( curr_total_score > score_to_drop ) + { + level.zombie_vars[ "zombie_powerup_drop_increment" ] *= 1.14; + score_to_drop = curr_total_score + level.zombie_vars[ "zombie_powerup_drop_increment" ]; + level.zombie_vars[ "zombie_drop_item" ] = 1; + } + wait 0.5; + } + +} + +_zm_utility::is_zombie_perk_bottle( str_weapon ) //optimized +{ + return isSubStr( str_weapon, "zombie_perk_bottle_" ); +} \ No newline at end of file diff --git a/Plutonium specific gsc-related fixes/18 Player ZM Fixes/_zm_perks_garbage.gsc b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/_zm_perks_garbage.gsc new file mode 100644 index 0000000..010653b --- /dev/null +++ b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/_zm_perks_garbage.gsc @@ -0,0 +1,13 @@ +level._custom_perks tree + array perk_name + property alias + property cost + property hint_string + property perk_bottle + property perk_machine_set_kvps + property perk_machine_thread + property precache_func + property player_thread_give + property player_thread_take + property clientfield_register + property clientfield_set \ No newline at end of file diff --git a/Plutonium specific gsc-related fixes/18 Player ZM Fixes/_zm_zonemgr_garbage.gsc b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/_zm_zonemgr_garbage.gsc new file mode 100644 index 0000000..599539d --- /dev/null +++ b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/_zm_zonemgr_garbage.gsc @@ -0,0 +1,52 @@ +level.zones tree + array zone_name + property is_enabled 0 + property is_occupied 0 + property is_active 0 + property is_spawning_allowed 0 + property array spawn_locations + property array dog_locations + property array screecher_locations + property array avogadro_locations + property array inert_locations + property array quad_locations + property array leaper_locations + property array brutus_locations + property array mechz_locations + property array astro_locations + property array spawn_locations + property array napalm_locations + property array zbarriers + property array magic_boxes + property array volumes + volumes 0 + property target + property array adjacent_zones + adjacent_zones key + property is_connected 0 + property flags_do_or_check 0 + property array flags + +level.newzones tree + array zone_name + property is_active + property is_occupied + +level.zones tree //optimized + array zone_name + property is_enabled 0 + property is_occupied 0 + property is_active 0 + property is_spawning_allowed 0 + property array zbarriers + property array magic_boxes + property array volumes + volumes 0 + property target + property array adjacent_zones + adjacent_zones key + property is_connected 0 + property flags_do_or_check 0 + property array flags + property array ai_location_types + array spawn_locations \ No newline at end of file diff --git a/Plutonium specific gsc-related fixes/18 Player ZM Fixes/changelog.md b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/changelog.md new file mode 100644 index 0000000..f2db52e --- /dev/null +++ b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/changelog.md @@ -0,0 +1,6 @@ +Addtions: + +Zombies - + +.immune_to_electric_cherry_stun = true; +You can now easily define whether a zombie is immune to electric cherry. \ No newline at end of file diff --git a/Plutonium specific gsc-related fixes/18 Player ZM Fixes/visionset_garbage.gsc b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/visionset_garbage.gsc new file mode 100644 index 0000000..c44198f --- /dev/null +++ b/Plutonium specific gsc-related fixes/18 Player ZM Fixes/visionset_garbage.gsc @@ -0,0 +1,224 @@ +_zm_perks.gsc + Die Rise Only + if ( isDefined( level.vsmgr_prio_visionset_zm_whos_who ) ) + { + vsmgr_register_info( "visionset", "zm_whos_who", 5000, level.vsmgr_prio_visionset_zm_whos_who, 1, 1 ); + } + +_zm_turned.gsc + Turned Gametype Only + if ( !isDefined( level.vsmgr_prio_visionset_zombie_turned ) ) + { + level.vsmgr_prio_visionset_zombie_turned = 123; + } + vsmgr_register_info( "visionset", "zm_turned", 3000, level.vsmgr_prio_visionset_zombie_turned, 1, 1 ); + +zm_buried_sq.gsc + Buried Only + sq_buried_register_visionset() + { + vsmgr_register_info( "visionset", "cheat_bw", 12000, 17, 1, 1 ); + } + +zm_buried_turned_street.gsc + Turned Gametype on map Buried Only + vsmgr_register_info( "overlay", "zm_transit_burn", 1, 21, 15, 1, vsmgr_duration_lerp_thread_per_player, 0 ); + +_zm_perk_vulture.gsc + Buried Classic Only + vsmgr_register_info( "overlay", "vulture_stink_overlay", 12000, 120, 31, 1 ); + +_zm_weap_time_bomb.gsc + Buried Classic Only + vsmgr_register_info( "overlay", "zombie_time_bomb_overlay", 12000, 200, 20, 0, ::time_bomb_overlay_lerp_thread ); + +_zm_perk_divetonuke.gsc + Buried Classic, Mob Grief, and Origins Only + vsmgr_register_info( "visionset", "zm_perk_divetonuke", 9000, 400, 5, 1 ); + +zm_prison.gsc + Mob Only + vsmgr_register_info( "visionset", "zm_audio_log", 9000, 200, 1, 1 ); + vsmgr_register_info( "visionset", "zm_electric_cherry", 9000, 121, 1, 1 ); + +_zm_afterlife.gsc + Mob Classic Only + vsmgr_register_info( "visionset", "zm_afterlife", 9000, 120, 1, 1 ); + vsmgr_register_info( "overlay", "zm_afterlife_filter", 9000, 120, 1, 1 ); + +zm_tomb.gsc + Origins Only + vsmgr_register_info( "overlay", "zm_transit_burn", 14000, level.vsmgr_prio_overlay_zm_transit_burn, 15, 1, ::vsmgr_duration_lerp_thread_per_player, 0 ); + +_zm_powerup_zombie_blood.gsc + Origins Only + vsmgr_register_info( "visionset", "zm_powerup_zombie_blood_visionset", 14000, level.vsmgr_prio_visionset_zm_powerup_zombie_blood, 15, 1 ); + vsmgr_register_info( "overlay", "zm_powerup_zombie_blood_overlay", 14000, level.vsmgr_prio_overlay_zm_powerup_zombie_blood, 15, 1 ); + +zm_transit_power.gsc + Tranzit Classic Only + vsmgr_register_info( "visionset", "zm_power_high_low", 1, level.vsmgr_prio_visionset_zm_transit_power_high_low, 7, 1, ::vsmgr_lerp_power_up_down, 0 ); + +zm_transit.gsc + Tranzit Only + vsmgr_register_info( "overlay", "zm_transit_burn", 1, level.vsmgr_prio_overlay_zm_transit_burn, 15, 1, ::vsmgr_duration_lerp_thread_per_player, 0 ); + +_zm_ai_avogadro.gsc + Tranzit Classic Only + vsmgr_register_info( "overlay", "zm_ai_avogadro_electrified", 1, level.vsmgr_prio_overlay_zm_ai_avogadro_electrified, 15, 1, ::vsmgr_duration_lerp_thread_per_player, 0 ); + +_zm_ai_screecher.gsc + Tranzit Classic Only + vsmgr_register_info( "overlay", "zm_ai_screecher_blur", 1, level.vsmgr_prio_overlay_zm_ai_screecher_blur, 1, 1, ::vsmgr_timeout_lerp_thread_per_player, 0 ); + + +Tranzit +level.vsmgr tree + array type + "overlay" + property type "overlay" + property in_use false + property highest_version 0 + property cf_slot_name "overlay_slot" + property cf_slot_bit_count + property cf_lerp_name "overlay_lerp" + property cf_lerp_bit_count + property sorted_name_keys + property sorted_prio_keys + property array info + "none" //can be terminated + property type + property name + property version + property priority + property lerp_step_count + property lerp_bit_count + property slot_index + property state + property type + property name + property activate_per_player + property lerp_thread + property ref_count_lerp_thread + property ref_count + property array players + players 0 - 17 + property active 0 + property lerp 0 + IF MAP == ZM_TRANSIT && GAMETYPE == ZCLASSIC + "zm_ai_screecher_blur" + property type + property name + property version + property priority + property lerp_step_count + property lerp_bit_count + property slot_index + property state + property type + property name + property activate_per_player + property lerp_thread + property ref_count_lerp_thread + property ref_count + property array players + players 0 - 17 + property active 0 + property lerp 0 + "zm_ai_avogadro_electrified" + property type + property name + property version + property priority + property lerp_step_count + property lerp_bit_count + property slot_index + property state + property type + property name + property activate_per_player + property lerp_thread + property ref_count_lerp_thread + property array players + property ref_count + players 0 - 17 + property active 0 + property lerp 0 + IF MAP == ZM_TRANSIT + "zm_transit_burn" + property type + property name + property version + property priority + property lerp_step_count + property lerp_bit_count + property slot_index + property state + property type + property name + property activate_per_player + property lerp_thread + property ref_count_lerp_thread + property ref_count + property array players + players 0 - 17 + property active 0 + property lerp 0 + "visionset" + property type "visionset" + property in_use false + property highest_version 0 + property cf_slot_name "visionset_slot" + property cf_slot_bit_count + property cf_lerp_name "visionset_lerp" + property cf_lerp_bit_count + property sorted_name_keys + property sorted_prio_keys + property array info + "none" //can be terminated + property type + property name + property version + property priority + property lerp_step_count + property lerp_bit_count + property slot_index + property state + property type + property name + property activate_per_player + property lerp_thread + property ref_count_lerp_thread + property ref_count + property array players + players 0 - 17 + property active 0 + property lerp 0 + IF MAP == ZM_TRANSIT && GAMETYPE == ZCLASSIC + "zm_power_high_low" + property type + property name + property version + property priority + property lerp_step_count + property lerp_bit_count + property slot_index + property state + property type + property name + property activate_per_player + property lerp_thread + property ref_count_lerp_thread + property ref_count + property array players + players 0 - 17 + property active 0 + property lerp 0 + + + + + +//global variables that can be terminated after the game starts +level.vsmgr_default_info_name +level.vsmgr_initializing \ No newline at end of file diff --git a/common_mp/character/c_mp_german_shepherd_vest.gsc b/common_mp/character/c_mp_german_shepherd_vest.gsc new file mode 100644 index 0000000..ce0fe5a --- /dev/null +++ b/common_mp/character/c_mp_german_shepherd_vest.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd_vest" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd_vest" ); +} diff --git a/common_mp/character/c_mp_german_shepherd_vest_black.gsc b/common_mp/character/c_mp_german_shepherd_vest_black.gsc new file mode 100644 index 0000000..c1bab6d --- /dev/null +++ b/common_mp/character/c_mp_german_shepherd_vest_black.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd_vest_black" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd_vest_black" ); +} diff --git a/common_mp/maps/mp/_serverfaceanim_mp.gsc b/common_mp/maps/mp/_serverfaceanim_mp.gsc new file mode 100644 index 0000000..bbd52a4 --- /dev/null +++ b/common_mp/maps/mp/_serverfaceanim_mp.gsc @@ -0,0 +1,56 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread init_serverfaceanim(); + } +} + +init_serverfaceanim() +{ + self.do_face_anims = 1; + if ( !isDefined( level.face_event_handler ) ) + { + level.face_event_handler = spawnstruct(); + level.face_event_handler.events = []; + level.face_event_handler.events[ "death" ] = "face_death"; + level.face_event_handler.events[ "grenade danger" ] = "face_alert"; + level.face_event_handler.events[ "bulletwhizby" ] = "face_alert"; + level.face_event_handler.events[ "projectile_impact" ] = "face_alert"; + level.face_event_handler.events[ "explode" ] = "face_alert"; + level.face_event_handler.events[ "alert" ] = "face_alert"; + level.face_event_handler.events[ "shoot" ] = "face_shoot_single"; + level.face_event_handler.events[ "melee" ] = "face_melee"; + level.face_event_handler.events[ "damage" ] = "face_pain"; + level thread wait_for_face_event(); + } +} + +wait_for_face_event() +{ + while ( 1 ) + { + level waittill( "face", face_notify, ent ); + if ( isDefined( ent ) && isDefined( ent.do_face_anims ) && ent.do_face_anims ) + { + if ( isDefined( level.face_event_handler.events[ face_notify ] ) ) + { + ent sendfaceevent( level.face_event_handler.events[ face_notify ] ); + } + } + } +} diff --git a/common_mp/maps/mp/animscripts/dog_combat.gsc b/common_mp/maps/mp/animscripts/dog_combat.gsc new file mode 100644 index 0000000..5686230 --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_combat.gsc @@ -0,0 +1,86 @@ +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + debug_anim_print( "dog_combat::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); +/# + if ( !debug_allow_combat() ) + { + combatidle(); + return; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + combatidle(); + return; + } +/# + assert( isDefined( self.enemy ) ); +#/ + if ( !isalive( self.enemy ) ) + { + combatidle(); + return; + } + if ( isplayer( self.enemy ) ) + { + self meleebiteattackplayer( self.enemy ); + } +} + +combatidle() +{ + self set_orient_mode( "face enemy" ); + self animmode( "zonly_physics", 0 ); + idleanims = []; + idleanims[ 0 ] = "combat_attackidle"; + idleanims[ 1 ] = "combat_attackidle_bark"; + idleanims[ 2 ] = "combat_attackidle_growl"; + idleanim = random( idleanims ); + debug_anim_print( "dog_combat::combatIdle() - Setting " + idleanim ); + self setanimstate( idleanim ); + self maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_combat::combatIdle() - " + idleanim + " notify done." ); +} + +meleebiteattackplayer( player ) +{ + self set_orient_mode( "face enemy" ); + self animmode( "gravity", 0 ); + self.safetochangescript = 0; + if ( use_low_attack() ) + { + self animmode( "angle deltas", 0 ); + self setanimstate( "combat_attack_player_close_range" ); + self maps/mp/animscripts/shared::donotetracksfortime( 1,4, "done" ); + self animmode( "gravity", 0 ); + } + else + { + attack_time = 1,2 + randomfloat( 0,4 ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_run_attack" ); + self setanimstate( "combat_attack_run" ); + self maps/mp/animscripts/shared::donotetracksfortime( attack_time, "done", ::handlemeleebiteattacknotetracks, player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_run notify done." ); + } + self.safetochangescript = 1; + self animmode( "none", 0 ); +} + +handlemeleebiteattacknotetracks( note, player ) +{ + if ( note == "dog_melee" ) + { + self melee( anglesToForward( self.angles ) ); + } +} + +use_low_attack( player ) +{ + return 0; +} diff --git a/common_mp/maps/mp/animscripts/dog_death.gsc b/common_mp/maps/mp/animscripts/dog_death.gsc new file mode 100644 index 0000000..8f65047 --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_death.gsc @@ -0,0 +1,30 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + debug_anim_print( "dog_death::main()" ); + self setaimanimweights( 0, 0 ); + self endon( "killanimscript" ); + if ( isDefined( self.a.nodeath ) ) + { +/# + assert( self.a.nodeath, "Nodeath needs to be set to true or undefined." ); +#/ + wait 3; + return; + } + self unlink(); + if ( isDefined( self.enemy ) && isDefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self ) + { + self.enemy.syncedmeleetarget = undefined; + } + death_anim = "death_" + getanimdirection( self.damageyaw ); +/# + println( death_anim ); +#/ + self animmode( "gravity", 0 ); + debug_anim_print( "dog_death::main() - Setting " + death_anim ); + self setanimstate( death_anim ); + self maps/mp/animscripts/shared::donotetracks( "done" ); +} diff --git a/common_mp/maps/mp/animscripts/dog_flashed.gsc b/common_mp/maps/mp/animscripts/dog_flashed.gsc new file mode 100644 index 0000000..e86fde0 --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_flashed.gsc @@ -0,0 +1,29 @@ +#include maps/mp/animscripts/shared; + +main() +{ + self endon( "killanimscript" ); + self endon( "stop_flashbang_effect" ); + wait randomfloatrange( 0, 0,4 ); + duration = self startflashbanged() * 0,001; + self setanimstate( "flashed" ); + self maps/mp/animscripts/shared::donotetracks( "done" ); + self setflashbanged( 0 ); + self.flashed = 0; + self notify( "stop_flashbang_effect" ); +} + +startflashbanged() +{ + if ( isDefined( self.flashduration ) ) + { + duration = self.flashduration; + } + else + { + duration = self getflashbangedstrength() * 1000; + } + self.flashendtime = getTime() + duration; + self notify( "flashed" ); + return duration; +} diff --git a/common_mp/maps/mp/animscripts/dog_init.gsc b/common_mp/maps/mp/animscripts/dog_init.gsc new file mode 100644 index 0000000..5c6d6bc --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_init.gsc @@ -0,0 +1,78 @@ +#include maps/mp/animscripts/dog_move; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + level.dog_debug_orient = 0; + level.dog_debug_anims = 0; + level.dog_debug_anims_ent = 0; + level.dog_debug_turns = 0; + debug_anim_print( "dog_init::main() " ); + maps/mp/animscripts/dog_move::setup_sound_variables(); + anim_get_dvar_int( "debug_dog_sound", "0" ); + anim_get_dvar_int( "debug_dog_notetracks", "0" ); + anim_get_dvar_int( "dog_force_walk", 0 ); + anim_get_dvar_int( "dog_force_run", 0 ); + self.ignoresuppression = 1; + self.chatinitialized = 0; + self.nododgemove = 1; + level.dogattackplayerdist = 50; + level.dogattackplayercloserangedist = 50; + level.dogrunturnspeed = 20; + level.dogrunpainspeed = 20; + self.meleeattackdist = 0; + self thread setmeleeattackdist(); + self.a = spawnstruct(); + self.a.pose = "stand"; + self.a.nextstandinghitdying = 0; + self.a.movement = "run"; + set_anim_playback_rate(); + self.suppressionthreshold = 1; + self.disablearrivals = 0; + level.dogstoppingdistsq = 3416,82; + self.stopanimdistsq = level.dogstoppingdistsq; + self.pathenemyfightdist = 512; + self settalktospecies( "dog" ); + level.lastdogmeleeplayertime = 0; + level.dogmeleeplayercounter = 0; + if ( !isDefined( level.dog_hits_before_kill ) ) + { + level.dog_hits_before_kill = 1; + } +} + +set_anim_playback_rate() +{ + self.animplaybackrate = 0,9 + randomfloat( 0,2 ); + self.moveplaybackrate = 1; +} + +setmeleeattackdist() +{ + self endon( "death" ); + while ( 1 ) + { + if ( isDefined( self.enemy ) ) + { + if ( isplayer( self.enemy ) ) + { + stance = self.enemy getstance(); + if ( stance == "prone" ) + { + self.meleeattackdist = level.dogattackplayercloserangedist; + } + else + { + self.meleeattackdist = level.dogattackplayerdist; + } + break; + } + else + { + self.meleeattackdist = level.dogattackplayerdist; + } + } + wait 1; + } +} diff --git a/common_mp/maps/mp/animscripts/dog_jump.gsc b/common_mp/maps/mp/animscripts/dog_jump.gsc new file mode 100644 index 0000000..acfb82a --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_jump.gsc @@ -0,0 +1,13 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_jump::main()" ); + self setaimanimweights( 0, 0 ); + self.safetochangescript = 0; + self setanimstate( "traverse_wallhop" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + self.safetochangescript = 1; +} diff --git a/common_mp/maps/mp/animscripts/dog_move.gsc b/common_mp/maps/mp/animscripts/dog_move.gsc new file mode 100644 index 0000000..af8604d --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_move.gsc @@ -0,0 +1,185 @@ +#include maps/mp/animscripts/dog_stop; +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +setup_sound_variables() +{ + level.dog_sounds[ "far" ] = spawnstruct(); + level.dog_sounds[ "close" ] = spawnstruct(); + level.dog_sounds[ "close" ].minrange = 0; + level.dog_sounds[ "close" ].maxrange = 500; + level.dog_sounds[ "close" ].sound = "aml_dog_bark_close"; + level.dog_sounds[ "close" ].soundlengthplaceholder = 0,2; + level.dog_sounds[ "close" ].aftersoundwaitmin = 0,1; + level.dog_sounds[ "close" ].aftersoundwaitmax = 0,3; + level.dog_sounds[ "close" ].minrangesqr = level.dog_sounds[ "close" ].minrange * level.dog_sounds[ "close" ].minrange; + level.dog_sounds[ "close" ].maxrangesqr = level.dog_sounds[ "close" ].maxrange * level.dog_sounds[ "close" ].maxrange; + level.dog_sounds[ "far" ].minrange = 500; + level.dog_sounds[ "far" ].maxrange = 0; + level.dog_sounds[ "far" ].sound = "aml_dog_bark"; + level.dog_sounds[ "far" ].soundlengthplaceholder = 0,2; + level.dog_sounds[ "far" ].aftersoundwaitmin = 0,1; + level.dog_sounds[ "far" ].aftersoundwaitmax = 0,3; + level.dog_sounds[ "far" ].minrangesqr = level.dog_sounds[ "far" ].minrange * level.dog_sounds[ "far" ].minrange; + level.dog_sounds[ "far" ].maxrangesqr = level.dog_sounds[ "far" ].maxrange * level.dog_sounds[ "far" ].maxrange; +} + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_move::main()" ); + self setaimanimweights( 0, 0 ); + do_movement = 1; +/# + if ( !debug_allow_movement() ) + { + do_movement = 0; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + do_movement = 0; + } + if ( !isDefined( self.traversecomplete ) && !isDefined( self.skipstartmove ) && self.a.movement == "run" && do_movement ) + { + self startmove(); + blendtime = 0; + } + else + { + blendtime = 0,2; + } + self.traversecomplete = undefined; + self.skipstartmove = undefined; + if ( do_movement ) + { + if ( shouldrun() ) + { + debug_anim_print( "dog_move::main() - Setting move_run" ); + self setanimstate( "move_run" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,1, "done" ); + debug_anim_print( "dog_move::main() - move_run wait 0.1 done " ); + } + else + { + debug_anim_print( "dog_move::main() - Setting move_start " ); + self setanimstate( "move_walk" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,1, "done" ); + } + } + self thread maps/mp/animscripts/dog_stop::lookattarget( "normal" ); + while ( 1 ) + { + self moveloop(); + if ( self.a.movement == "run" ) + { + if ( self.disablearrivals == 0 ) + { + self thread stopmove(); + } + self waittill( "run" ); + } + } +} + +moveloop() +{ + self endon( "killanimscript" ); + self endon( "stop_soon" ); + while ( 1 ) + { + do_movement = 1; +/# + if ( !debug_allow_movement() ) + { + do_movement = 0; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + do_movement = 0; + } + while ( !do_movement ) + { + self setaimanimweights( 0, 0 ); + self setanimstate( "stop_idle" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + } + if ( self.disablearrivals ) + { + self.stopanimdistsq = 0; + } + else + { + self.stopanimdistsq = level.dogstoppingdistsq; + } + if ( shouldrun() ) + { + debug_anim_print( "dog_move::moveLoop() - Setting move_run" ); + self setanimstate( "move_run" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,2, "done" ); + debug_anim_print( "dog_move::moveLoop() - move_run wait 0.2 done " ); + continue; + } + else + { + debug_anim_print( "dog_move::moveLoop() - Setting move_walk " ); + self setanimstate( "move_walk" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,2, "done" ); + debug_anim_print( "dog_move::moveLoop() - move_walk wait 0.2 done " ); + } + } +} + +startmove() +{ + debug_anim_print( "dog_move::startMove() - Setting move_start " ); + self setanimstate( "move_start" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_move::startMove() - move_start notify done." ); + self animmode( "none", 0 ); + self set_orient_mode( "face motion" ); +} + +stopmove() +{ + self endon( "killanimscript" ); + self endon( "run" ); + debug_anim_print( "dog_move::stopMove() - Setting move_stop" ); + self setanimstate( "move_stop" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_move::stopMove() - move_stop notify done." ); +} + +shouldrun() +{ +/# + if ( getDvarInt( #"DFB12081" ) != 0 ) + { + return 1; + } + else + { + if ( getDvarInt( #"D5D7999B" ) != 0 ) + { + return 0; +#/ + } + } + if ( isDefined( self.enemy ) ) + { + return 1; + } + if ( self.lookaheaddist <= 90 ) + { + return 0; + } + angles = vectorToAngle( self.lookaheaddir ); + yaw_desired = absangleclamp180( angles[ 1 ] ); + yaw = absangleclamp180( self.angles[ 1 ] ); + if ( abs( yaw_desired - yaw ) >= 8 ) + { + return 0; + } + return 1; +} diff --git a/common_mp/maps/mp/animscripts/dog_pain.gsc b/common_mp/maps/mp/animscripts/dog_pain.gsc new file mode 100644 index 0000000..d218129 --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_pain.gsc @@ -0,0 +1,26 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + debug_anim_print( "dog_pain::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); + if ( isDefined( self.enemy ) && isDefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self ) + { + self unlink(); + self.enemy.syncedmeleetarget = undefined; + } + speed = length( self getvelocity() ); + pain_anim = getanimdirection( self.damageyaw ); + if ( speed > level.dogrunpainspeed ) + { + pain_anim = "pain_run_" + pain_anim; + } + else + { + pain_anim = "pain_" + pain_anim; + } + self setanimstate( pain_anim ); + self maps/mp/animscripts/shared::donotetracksfortime( 0,2, "done" ); +} diff --git a/common_mp/maps/mp/animscripts/dog_stop.gsc b/common_mp/maps/mp/animscripts/dog_stop.gsc new file mode 100644 index 0000000..0b6e630 --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_stop.gsc @@ -0,0 +1,132 @@ +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + debug_anim_print( "dog_stop::main()" ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); + self thread lookattarget( "attackIdle" ); + while ( 1 ) + { + if ( shouldattackidle() ) + { + self randomattackidle(); + maps/mp/animscripts/shared::donotetracks( "done" ); + } + else + { + self set_orient_mode( "face current" ); + debug_anim_print( "dog_stop::main() - Setting stop_idle" ); + self notify( "stop tracking" ); + self setaimanimweights( 0, 0 ); + self setanimstate( "stop_idle" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + self thread lookattarget( "attackIdle" ); + } + debug_anim_print( "dog_stop::main() - stop idle loop notify done." ); + } +} + +isfacingenemy( tolerancecosangle ) +{ +/# + assert( isDefined( self.enemy ) ); +#/ + vectoenemy = self.enemy.origin - self.origin; + disttoenemy = length( vectoenemy ); + if ( disttoenemy < 1 ) + { + return 1; + } + forward = anglesToForward( self.angles ); + val1 = ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ); + val2 = ( ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ) ) / disttoenemy; + return ( ( ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ) ) / disttoenemy ) > tolerancecosangle; +} + +randomattackidle() +{ + if ( isfacingenemy( -0,5 ) ) + { + self set_orient_mode( "face current" ); + } + else + { + self set_orient_mode( "face enemy" ); + } + if ( should_growl() ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl" ); + self setanimstate( "stop_attackidle_growl" ); + return; + } + idlechance = 33; + barkchance = 66; + if ( isDefined( self.mode ) ) + { + if ( self.mode == "growl" ) + { + idlechance = 15; + barkchance = 30; + } + else + { + if ( self.mode == "bark" ) + { + idlechance = 15; + barkchance = 85; + } + } + } + rand = randomint( 100 ); + if ( rand < idlechance ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle" ); + self setanimstate( "stop_attackidle" ); + } + else if ( rand < barkchance ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_bark " ); + self setanimstate( "stop_attackidle_bark" ); + } + else + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl " ); + self setanimstate( "stop_attackidle_growl" ); + } +} + +shouldattackidle() +{ + if ( isDefined( self.enemy ) && isalive( self.enemy ) ) + { + return distancesquared( self.origin, self.enemy.origin ) < 1000000; + } +} + +should_growl() +{ + if ( isDefined( self.script_growl ) ) + { + return 1; + } + if ( !isalive( self.enemy ) ) + { + return 1; + } + return !self cansee( self.enemy ); +} + +lookattarget( lookposeset ) +{ + self endon( "killanimscript" ); + self endon( "stop tracking" ); + debug_anim_print( "dog_stop::lookAtTarget() - Starting look at " + lookposeset ); + self.rightaimlimit = 90; + self.leftaimlimit = -90; + self.upaimlimit = 45; + self.downaimlimit = -45; + self maps/mp/animscripts/shared::setanimaimweight( 1, 0,2 ); + self maps/mp/animscripts/shared::trackloop(); +} diff --git a/common_mp/maps/mp/animscripts/dog_turn.gsc b/common_mp/maps/mp/animscripts/dog_turn.gsc new file mode 100644 index 0000000..4d759cc --- /dev/null +++ b/common_mp/maps/mp/animscripts/dog_turn.gsc @@ -0,0 +1,117 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + self endon( "killanimscript" ); + debug_turn_print( "dog_turn::main()" ); + self setaimanimweights( 0, 0 ); + self.safetochangescript = 0; + deltayaw = self getdeltaturnyaw(); + if ( need_to_turn_around( deltayaw ) ) + { + turn_180( deltayaw ); + } + else + { + turn_90( deltayaw ); + } + move_out_of_turn(); + self.skipstartmove = 1; + self.safetochangescript = 1; +} + +need_to_turn_around( deltayaw ) +{ + angle = getDvarFloat( "dog_turn180_angle" ); + if ( deltayaw >= angle || deltayaw <= ( -1 * angle ) ) + { + debug_turn_print( "dog_turn::need_to_turn_around(): " + deltayaw + " YES" ); + return 1; + } + debug_turn_print( "dog_turn::need_to_turn_around(): " + deltayaw + " NO" ); + return 0; +} + +do_turn_anim( stopped_anim, run_anim, wait_time, run_wait_time ) +{ + speed = length( self getvelocity() ); + do_anim = stopped_anim; + if ( level.dogrunturnspeed < speed ) + { + do_anim = run_anim; + wait_time = run_wait_time; + } + debug_turn_print( "dog_turn::do_turn_anim() - Setting " + do_anim ); + self setanimstate( do_anim ); + maps/mp/animscripts/shared::donotetracksfortime( run_wait_time, "done" ); + debug_turn_print( "dog_turn::do_turn_anim() - done with " + do_anim + " wait time " + run_wait_time ); +} + +turn_left() +{ + self do_turn_anim( "move_turn_left", "move_run_turn_left", 0,5, 0,5 ); +} + +turn_right() +{ + self do_turn_anim( "move_turn_right", "move_run_turn_right", 0,5, 0,5 ); +} + +turn_180_left() +{ + self do_turn_anim( "move_turn_around_left", "move_run_turn_around_left", 0,5, 0,7 ); +} + +turn_180_right() +{ + self do_turn_anim( "move_turn_around_right", "move_run_turn_around_right", 0,5, 0,7 ); +} + +move_out_of_turn() +{ + if ( self.a.movement == "run" ) + { + debug_turn_print( "dog_turn::move_out_of_turn() - Setting move_run" ); + self setanimstate( "move_run" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,1, "done" ); + debug_turn_print( "dog_turn::move_out_of_turn() - move_run wait 0.1 done " ); + } + else + { + debug_turn_print( "dog_turn::move_out_of_turn() - Setting move_start " ); + self setanimstate( "move_walk" ); + } +} + +turn_90( deltayaw ) +{ + self animmode( "zonly_physics", 0 ); + debug_turn_print( "dog_turn::turn_90() deltaYaw: " + deltayaw ); + if ( deltayaw > 0 ) + { + debug_turn_print( "dog_turn::turn_90() left", 1 ); + self turn_left(); + } + else + { + debug_turn_print( "dog_turn::turn_90() right", 1 ); + self turn_right(); + } +} + +turn_180( deltayaw ) +{ + self animmode( "zonly_physics", 0 ); + debug_turn_print( "dog_turn::turn_180() deltaYaw: " + deltayaw ); + if ( deltayaw > 0 ) + { + debug_turn_print( "dog_turn::turn_180() left", 1 ); + self turn_180_left(); + } + else + { + debug_turn_print( "dog_turn::turn_180() right", 1 ); + self turn_180_right(); + } +} diff --git a/common_mp/maps/mp/animscripts/shared.gsc b/common_mp/maps/mp/animscripts/shared.gsc new file mode 100644 index 0000000..ee523c7 --- /dev/null +++ b/common_mp/maps/mp/animscripts/shared.gsc @@ -0,0 +1,306 @@ +#include maps/mp/_utility; +#include maps/mp/animscripts/utility; +#include common_scripts/utility; + +handledogsoundnotetracks( note ) +{ + if ( note == "sound_dogstep_run_default" ) + { + return 1; + } + prefix = getsubstr( note, 0, 5 ); + if ( prefix != "sound" ) + { + return 0; + } + return 1; +} + +growling() +{ + return isDefined( self.script_growl ); +} + +handlenotetrack( note, flagname, customfunction, var1 ) +{ +/# + if ( getDvarInt( #"6EBEB982" ) ) + { + println( "dog notetrack: " + flagname + " " + note + " " + getTime() ); +#/ + } + if ( isai( self ) && self.type == "dog" ) + { + if ( handledogsoundnotetracks( note ) ) + { + return; + } + } + switch( note ) + { + case "end": + case "finish": + case "undefined": + return note; + default: + if ( isDefined( customfunction ) ) + { + if ( !isDefined( var1 ) ) + { + return [[ customfunction ]]( note ); + } + else + { + return [[ customfunction ]]( note, var1 ); + } + } + } + } +} + +donotetracks( flagname, customfunction, var1 ) +{ + for ( ;; ) + { + self waittill( flagname, note ); + if ( !isDefined( note ) ) + { + note = "undefined"; + } + val = self handlenotetrack( note, flagname, customfunction, var1 ); + if ( isDefined( val ) ) + { + return val; + } + } +} + +donotetracksforeverproc( notetracksfunc, flagname, killstring, customfunction, var1 ) +{ + if ( isDefined( killstring ) ) + { + self endon( killstring ); + } + self endon( "killanimscript" ); + for ( ;; ) + { + time = getTime(); + returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 ); + timetaken = getTime() - time; + if ( timetaken < 0,05 ) + { + time = getTime(); + returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 ); + timetaken = getTime() - time; + if ( timetaken < 0,05 ) + { +/# + println( getTime() + " mapsmpanimscriptsshared::DoNoteTracksForever is trying to cause an infinite loop on anim " + flagname + ", returned " + returnednote + "." ); +#/ + wait ( 0,05 - timetaken ); + } + } + } +} + +donotetracksforever( flagname, killstring, customfunction, var1 ) +{ + donotetracksforeverproc( ::donotetracks, flagname, killstring, customfunction, var1 ); +} + +donotetracksfortimeproc( donotetracksforeverfunc, time, flagname, customfunction, ent, var1 ) +{ + ent endon( "stop_notetracks" ); + [[ donotetracksforeverfunc ]]( flagname, undefined, customfunction, var1 ); +} + +donotetracksfortime( time, flagname, customfunction, var1 ) +{ + ent = spawnstruct(); + ent thread donotetracksfortimeendnotify( time ); + donotetracksfortimeproc( ::donotetracksforever, time, flagname, customfunction, ent, var1 ); +} + +donotetracksfortimeendnotify( time ) +{ + wait time; + self notify( "stop_notetracks" ); +} + +trackloop() +{ + players = get_players(); + deltachangeperframe = 5; + aimblendtime = 0,05; + prevyawdelta = 0; + prevpitchdelta = 0; + maxyawdeltachange = 5; + maxpitchdeltachange = 5; + pitchadd = 0; + yawadd = 0; + if ( self.type != "dog" || self.type == "zombie" && self.type == "zombie_dog" ) + { + domaxanglecheck = 0; + self.shootent = self.enemy; + } + else + { + domaxanglecheck = 1; + if ( self.a.script == "cover_crouch" && isDefined( self.a.covermode ) && self.a.covermode == "lean" ) + { + pitchadd = -1 * anim.covercrouchleanpitch; + } + if ( self.a.script != "cover_left" && self.a.script == "cover_right" && isDefined( self.a.cornermode ) && self.a.cornermode == "lean" ) + { + yawadd = self.covernode.angles[ 1 ] - self.angles[ 1 ]; + } + } + yawdelta = 0; + pitchdelta = 0; + firstframe = 1; + for ( ;; ) + { + incranimaimweight(); + selfshootatpos = ( self.origin[ 0 ], self.origin[ 1 ], self geteye()[ 2 ] ); + shootpos = undefined; + if ( isDefined( self.enemy ) ) + { + shootpos = self.enemy getshootatpos(); + } + if ( !isDefined( shootpos ) ) + { + yawdelta = 0; + pitchdelta = 0; + } + else + { + vectortoshootpos = shootpos - selfshootatpos; + anglestoshootpos = vectorToAngle( vectortoshootpos ); + pitchdelta = 360 - anglestoshootpos[ 0 ]; + pitchdelta = angleClamp180( pitchdelta + pitchadd ); + yawdelta = self.angles[ 1 ] - anglestoshootpos[ 1 ]; + yawdelta = angleClamp180( yawdelta + yawadd ); + } + if ( domaxanglecheck || abs( yawdelta ) > 60 && abs( pitchdelta ) > 60 ) + { + yawdelta = 0; + pitchdelta = 0; + } + else + { + if ( yawdelta > self.rightaimlimit ) + { + yawdelta = self.rightaimlimit; + } + else + { + if ( yawdelta < self.leftaimlimit ) + { + yawdelta = self.leftaimlimit; + } + } + if ( pitchdelta > self.upaimlimit ) + { + pitchdelta = self.upaimlimit; + break; + } + else + { + if ( pitchdelta < self.downaimlimit ) + { + pitchdelta = self.downaimlimit; + } + } + } + if ( firstframe ) + { + firstframe = 0; + } + else + { + yawdeltachange = yawdelta - prevyawdelta; + if ( abs( yawdeltachange ) > maxyawdeltachange ) + { + yawdelta = prevyawdelta + ( maxyawdeltachange * sign( yawdeltachange ) ); + } + pitchdeltachange = pitchdelta - prevpitchdelta; + if ( abs( pitchdeltachange ) > maxpitchdeltachange ) + { + pitchdelta = prevpitchdelta + ( maxpitchdeltachange * sign( pitchdeltachange ) ); + } + } + prevyawdelta = yawdelta; + prevpitchdelta = pitchdelta; + updown = 0; + leftright = 0; + if ( yawdelta > 0 ) + { +/# + assert( yawdelta <= self.rightaimlimit ); +#/ + weight = ( yawdelta / self.rightaimlimit ) * self.a.aimweight; + leftright = weight; + } + else + { + if ( yawdelta < 0 ) + { +/# + assert( yawdelta >= self.leftaimlimit ); +#/ + weight = ( yawdelta / self.leftaimlimit ) * self.a.aimweight; + leftright = -1 * weight; + } + } + if ( pitchdelta > 0 ) + { +/# + assert( pitchdelta <= self.upaimlimit ); +#/ + weight = ( pitchdelta / self.upaimlimit ) * self.a.aimweight; + updown = weight; + } + else + { + if ( pitchdelta < 0 ) + { +/# + assert( pitchdelta >= self.downaimlimit ); +#/ + weight = ( pitchdelta / self.downaimlimit ) * self.a.aimweight; + updown = -1 * weight; + } + } + self setaimanimweights( updown, leftright ); + wait 0,05; + } +} + +setanimaimweight( goalweight, goaltime ) +{ + if ( !isDefined( goaltime ) || goaltime <= 0 ) + { + self.a.aimweight = goalweight; + self.a.aimweight_start = goalweight; + self.a.aimweight_end = goalweight; + self.a.aimweight_transframes = 0; + } + else + { + self.a.aimweight = goalweight; + self.a.aimweight_start = self.a.aimweight; + self.a.aimweight_end = goalweight; + self.a.aimweight_transframes = int( goaltime * 20 ); + } + self.a.aimweight_t = 0; +} + +incranimaimweight() +{ + if ( self.a.aimweight_t < self.a.aimweight_transframes ) + { + self.a.aimweight_t++; + t = ( 1 * self.a.aimweight_t ) / self.a.aimweight_transframes; + self.a.aimweight = ( self.a.aimweight_start * ( 1 - t ) ) + ( self.a.aimweight_end * t ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/jump_down_40.gsc b/common_mp/maps/mp/animscripts/traverse/jump_down_40.gsc new file mode 100644 index 0000000..073ee80 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/jump_down_40.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_down( 40, 3 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/jump_down_56.gsc b/common_mp/maps/mp/animscripts/traverse/jump_down_56.gsc new file mode 100644 index 0000000..f9821b7 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/jump_down_56.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_down( 56, 7 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/jump_down_96.gsc b/common_mp/maps/mp/animscripts/traverse/jump_down_96.gsc new file mode 100644 index 0000000..bfdf70d --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/jump_down_96.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_down_far( 96, 11, 0,65 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/mantle_on_40.gsc b/common_mp/maps/mp/animscripts/traverse/mantle_on_40.gsc new file mode 100644 index 0000000..29e90a5 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/mantle_on_40.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_up( 40, 3 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/mantle_on_56.gsc b/common_mp/maps/mp/animscripts/traverse/mantle_on_56.gsc new file mode 100644 index 0000000..5010ac0 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/mantle_on_56.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_up( 56, 5 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/mantle_on_80.gsc b/common_mp/maps/mp/animscripts/traverse/mantle_on_80.gsc new file mode 100644 index 0000000..feffef2 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/mantle_on_80.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_up_high( 80, 8 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/mantle_on_96.gsc b/common_mp/maps/mp/animscripts/traverse/mantle_on_96.gsc new file mode 100644 index 0000000..5bb110a --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/mantle_on_96.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_jump_up_high( 96, 9 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/mantle_over_40.gsc b/common_mp/maps/mp/animscripts/traverse/mantle_over_40.gsc new file mode 100644 index 0000000..018da80 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/mantle_over_40.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_wall_and_window_hop( "traverse_window", 40 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/mantle_window_36.gsc b/common_mp/maps/mp/animscripts/traverse/mantle_window_36.gsc new file mode 100644 index 0000000..fdb1825 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/mantle_window_36.gsc @@ -0,0 +1,9 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.type == "dog" ) + { + dog_wall_and_window_hop( "traverse_window", 36 ); + } +} diff --git a/common_mp/maps/mp/animscripts/traverse/shared.gsc b/common_mp/maps/mp/animscripts/traverse/shared.gsc new file mode 100644 index 0000000..cbd7fe5 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/shared.gsc @@ -0,0 +1,227 @@ +#include maps/mp/animscripts/shared; +#include common_scripts/utility; +#include maps/mp/_utility; +#include maps/mp/animscripts/utility; + +init_traverse() +{ + point = getent( self.target, "targetname" ); + if ( isDefined( point ) ) + { + self.traverse_height = point.origin[ 2 ]; + point delete(); + } + else + { + point = getstruct( self.target, "targetname" ); + if ( isDefined( point ) ) + { + self.traverse_height = point.origin[ 2 ]; + } + } +} + +teleportthread( verticaloffset ) +{ + self endon( "killanimscript" ); + self notify( "endTeleportThread" ); + self endon( "endTeleportThread" ); + reps = 5; + offset = ( 0, 0, verticaloffset / reps ); + i = 0; + while ( i < reps ) + { + self teleport( self.origin + offset ); + wait 0,05; + i++; + } +} + +teleportthreadex( verticaloffset, delay, frames ) +{ + self endon( "killanimscript" ); + self notify( "endTeleportThread" ); + self endon( "endTeleportThread" ); + if ( verticaloffset == 0 ) + { + return; + } + wait delay; + amount = verticaloffset / frames; + if ( amount > 10 ) + { + amount = 10; + } + else + { + if ( amount < -10 ) + { + amount = -10; + } + } + offset = ( 0, 0, amount ); + i = 0; + while ( i < frames ) + { + self teleport( self.origin + offset ); + wait 0,05; + i++; + } +} + +dog_wall_and_window_hop( traversename, height ) +{ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 36 ) + { + self thread teleportthreadex( height - 36, 0,2, 7 ); + } + } + debug_anim_print( "traverse::dog_wall_and_window_hop() - Setting " + traversename ); + self setanimstate( traversename ); + maps/mp/animscripts/shared::donotetracksfortime( 1, "done" ); + debug_anim_print( "traverse::dog_wall_and_window_hop() - " + traversename ); + self.traversecomplete = 1; +} + +dog_jump_down( height, frames, time ) +{ + self endon( "killanimscript" ); + self traversemode( "noclip" ); + if ( !isDefined( time ) ) + { + time = 0,3; + } + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 40 ) + { + self thread teleportthreadex( height - 40, 0,1, frames ); + } + } + debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_40" ); + self setanimstate( "traverse_jump_down_40" ); + maps/mp/animscripts/shared::donotetracksfortime( time, "done" ); + debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_40 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} + +dog_jump_down_far( height, frames, time ) +{ + self endon( "killanimscript" ); + self traversemode( "noclip" ); + if ( !isDefined( time ) ) + { + time = 0,3; + } + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 80 ) + { + self thread teleportthreadex( 80 - height, 0,1, frames ); + } + } + debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_80" ); + self setanimstate( "traverse_jump_down_80" ); + maps/mp/animscripts/shared::donotetracksfortime( time, "done" ); + debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_80 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} + +dog_jump_up( height, frames ) +{ + self endon( "killanimscript" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 40 ) + { + self thread teleportthreadex( height - 40, 0,2, frames ); + } + } + debug_anim_print( "traverse::dog_jump_up() - Setting traverse_jump_up_40" ); + self setanimstate( "traverse_jump_up_40" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,5, "done" ); + debug_anim_print( "traverse::dog_jump_up() - traverse_jump_up_40 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} + +dog_jump_up_high( height, frames ) +{ +/# + assert( self.type == "dog", "Only dogs can do this traverse currently." ); +#/ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthreadex( height - 80, 0,2, frames ); + } + else + { + if ( height != 80 ) + { + self thread teleportthreadex( height - 80, 0,2, frames ); + } + } + debug_anim_print( "traverse::dog_jump_up_80() - Setting traverse_jump_up_80" ); + self setanimstate( "traverse_jump_up_80" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,6, "done" ); + debug_anim_print( "traverse::dog_jump_up_80() - traverse_jump_up_80 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} diff --git a/common_mp/maps/mp/animscripts/traverse/through_hole_42.gsc b/common_mp/maps/mp/animscripts/traverse/through_hole_42.gsc new file mode 100644 index 0000000..85d77b8 --- /dev/null +++ b/common_mp/maps/mp/animscripts/traverse/through_hole_42.gsc @@ -0,0 +1,25 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight ); + } + debug_anim_print( "traverse::through_hole()" ); + self setanimstate( "traverse_through_hole_42" ); + maps/mp/animscripts/shared::donotetracksfortime( 1, "done" ); + debug_anim_print( "traverse::through_hole()" ); + self.traversecomplete = 1; +} diff --git a/common_mp/maps/mp/animscripts/utility.gsc b/common_mp/maps/mp/animscripts/utility.gsc new file mode 100644 index 0000000..6b325aa --- /dev/null +++ b/common_mp/maps/mp/animscripts/utility.gsc @@ -0,0 +1,166 @@ + +anim_get_dvar_int( dvar, def ) +{ + return int( anim_get_dvar( dvar, def ) ); +} + +anim_get_dvar( dvar, def ) +{ + if ( getDvar( dvar ) != "" ) + { + return getDvarFloat( dvar ); + } + else + { + setdvar( dvar, def ); + return def; + } +} + +set_orient_mode( mode, val1 ) +{ +/# + if ( level.dog_debug_orient == self getentnum() ) + { + if ( isDefined( val1 ) ) + { + println( "DOG: Setting orient mode: " + mode + " " + val1 + " " + getTime() ); + } + else + { + println( "DOG: Setting orient mode: " + mode + " " + getTime() ); +#/ + } + } + if ( isDefined( val1 ) ) + { + self orientmode( mode, val1 ); + } + else + { + self orientmode( mode ); + } +} + +debug_anim_print( text ) +{ +/# + if ( level.dog_debug_anims ) + { + println( ( text + " " ) + getTime() ); + } + if ( level.dog_debug_anims_ent == self getentnum() ) + { + println( ( text + " " ) + getTime() ); +#/ + } +} + +debug_turn_print( text, line ) +{ +/# + if ( level.dog_debug_turns == self getentnum() ) + { + duration = 200; + currentyawcolor = ( 1, 0, 1 ); + lookaheadyawcolor = ( 1, 0, 1 ); + desiredyawcolor = ( 1, 0, 1 ); + currentyaw = angleClamp180( self.angles[ 1 ] ); + desiredyaw = angleClamp180( self.desiredangle ); + lookaheaddir = self.lookaheaddir; + lookaheadangles = vectorToAngle( lookaheaddir ); + lookaheadyaw = angleClamp180( lookaheadangles[ 1 ] ); + println( ( text + " " ) + getTime() + " cur: " + currentyaw + " look: " + lookaheadyaw + " desired: " + desiredyaw ); +#/ + } +} + +debug_allow_movement() +{ +/# + return anim_get_dvar_int( "debug_dog_allow_movement", "1" ); +#/ + return 1; +} + +debug_allow_combat() +{ +/# + return anim_get_dvar_int( "debug_dog_allow_combat", "1" ); +#/ + return 1; +} + +current_yaw_line_debug( duration ) +{ +/# + currentyawcolor = []; + currentyawcolor[ 0 ] = ( 1, 0, 1 ); + currentyawcolor[ 1 ] = ( 1, 0, 1 ); + current_color_index = 0; + start_time = getTime(); + if ( !isDefined( level.lastdebugheight ) ) + { + level.lastdebugheight = 15; + } + while ( ( getTime() - start_time ) < 1000 ) + { + pos1 = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + level.lastdebugheight ); + pos2 = pos1 + vectorScale( anglesToForward( self.angles ), ( current_color_index + 1 ) * 10 ); + line( pos1, pos2, currentyawcolor[ current_color_index ], 0,3, 1, duration ); + current_color_index = ( current_color_index + 1 ) % currentyawcolor.size; + wait 0,05; + } + if ( level.lastdebugheight == 15 ) + { + level.lastdebugheight = 30; + } + else + { + level.lastdebugheight = 15; +#/ + } +} + +getanimdirection( damageyaw ) +{ + if ( damageyaw > 135 || damageyaw <= -135 ) + { + return "front"; + } + else + { + if ( damageyaw > 45 && damageyaw <= 135 ) + { + return "right"; + } + else + { + if ( damageyaw > -45 && damageyaw <= 45 ) + { + return "back"; + } + else + { + return "left"; + } + } + } + return "front"; +} + +setfootstepeffect( name, fx ) +{ +/# + assert( isDefined( name ), "Need to define the footstep surface type." ); +#/ +/# + assert( isDefined( fx ), "Need to define the mud footstep effect." ); +#/ + if ( !isDefined( anim.optionalstepeffects ) ) + { + anim.optionalstepeffects = []; + } + anim.optionalstepeffects[ anim.optionalstepeffects.size ] = name; + level._effect[ "step_" + name ] = fx; +} diff --git a/common_mp/maps/mp/killstreaks/_dogs.gsc b/common_mp/maps/mp/killstreaks/_dogs.gsc new file mode 100644 index 0000000..cd940bf --- /dev/null +++ b/common_mp/maps/mp/killstreaks/_dogs.gsc @@ -0,0 +1,963 @@ +#include maps/mp/gametypes/_dev; +#include maps/mp/killstreaks/_supplydrop; +#include maps/mp/_scoreevents; +#include maps/mp/gametypes/_weapons; +#include maps/mp/gametypes/_spawning; +#include maps/mp/gametypes/_battlechatter_mp; +#include maps/mp/killstreaks/_killstreakrules; +#include maps/mp/killstreaks/_killstreaks; +#include maps/mp/gametypes/_tweakables; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + precachemodel( "german_shepherd_vest" ); + precachemodel( "german_shepherd_vest_black" ); + level.dog_targets = []; + level.dog_targets[ level.dog_targets.size ] = "trigger_radius"; + level.dog_targets[ level.dog_targets.size ] = "trigger_multiple"; + level.dog_targets[ level.dog_targets.size ] = "trigger_use_touch"; +/# + level thread devgui_dog_think(); +#/ +} + +initkillstreak() +{ + if ( maps/mp/gametypes/_tweakables::gettweakablevalue( "killstreak", "allowdogs" ) ) + { + maps/mp/killstreaks/_killstreaks::registerkillstreak( "dogs_mp", "dogs_mp", "killstreak_dogs", "dogs_used", ::usekillstreakdogs, 1 ); + maps/mp/killstreaks/_killstreaks::registerkillstreakstrings( "dogs_mp", &"KILLSTREAK_EARNED_DOGS", &"KILLSTREAK_DOGS_NOT_AVAILABLE", &"KILLSTREAK_DOGS_INBOUND" ); + maps/mp/killstreaks/_killstreaks::registerkillstreakdialog( "dogs_mp", "mpl_killstreak_dogs", "kls_dogs_used", "", "kls_dogs_enemy", "", "kls_dogs_ready" ); + maps/mp/killstreaks/_killstreaks::registerkillstreakdevdvar( "dogs_mp", "scr_givedogs" ); + maps/mp/killstreaks/_killstreaks::setkillstreakteamkillpenaltyscale( "dogs_mp", 0 ); + maps/mp/killstreaks/_killstreaks::registerkillstreakaltweapon( "dogs_mp", "dog_bite_mp" ); + } +} + +usekillstreakdogs( hardpointtype ) +{ + if ( !dog_killstreak_init() ) + { + return 0; + } + if ( !self maps/mp/killstreaks/_killstreakrules::iskillstreakallowed( hardpointtype, self.team ) ) + { + return 0; + } + killstreak_id = self maps/mp/killstreaks/_killstreakrules::killstreakstart( "dogs_mp", self.team ); + self thread ownerhadactivedogs(); + if ( killstreak_id == -1 ) + { + return 0; + } + while ( level.teambased ) + { + _a71 = level.teams; + _k71 = getFirstArrayKey( _a71 ); + while ( isDefined( _k71 ) ) + { + team = _a71[ _k71 ]; + if ( team == self.team ) + { + } + else + { + thread maps/mp/gametypes/_battlechatter_mp::onkillstreakused( "dogs", team ); + } + _k71 = getNextArrayKey( _a71, _k71 ); + } + } + self maps/mp/killstreaks/_killstreaks::playkillstreakstartdialog( "dogs_mp", self.team, 1 ); + level.globalkillstreakscalled++; + self addweaponstat( "dogs_mp", "used", 1 ); + ownerdeathcount = self.deathcount; + level thread dog_manager_spawn_dogs( self, ownerdeathcount, killstreak_id ); + level notify( "called_in_the_dogs" ); + return 1; +} + +ownerhadactivedogs() +{ + self endon( "disconnect" ); + self.dogsactive = 1; + self.dogsactivekillstreak = 0; + self waittill_any( "death", "game_over", "dogs_complete" ); + self.dogsactivekillstreak = 0; + self.dogsactive = undefined; +} + +dog_killstreak_init() +{ + dog_spawner = getent( "dog_spawner", "targetname" ); + if ( !isDefined( dog_spawner ) ) + { +/# + println( "No dog spawners found in map" ); +#/ + return 0; + } + spawns = getnodearray( "spawn", "script_noteworthy" ); + if ( spawns.size <= 0 ) + { +/# + println( "No dog spawn nodes found in map" ); +#/ + return 0; + } + exits = getnodearray( "exit", "script_noteworthy" ); + if ( exits.size <= 0 ) + { +/# + println( "No dog exit nodes found in map" ); +#/ + return 0; + } + return 1; +} + +dog_set_model() +{ + self setmodel( "german_shepherd_vest" ); + self setenemymodel( "german_shepherd_vest_black" ); +} + +init_dog() +{ +/# + assert( isai( self ) ); +#/ + self.targetname = "attack_dog"; + self.animtree = "dog.atr"; + self.type = "dog"; + self.accuracy = 0,2; + self.health = 100; + self.maxhealth = 100; + self.aiweapon = "dog_bite_mp"; + self.secondaryweapon = ""; + self.sidearm = ""; + self.grenadeammo = 0; + self.goalradius = 128; + self.nododgemove = 1; + self.ignoresuppression = 1; + self.suppressionthreshold = 1; + self.disablearrivals = 0; + self.pathenemyfightdist = 512; + self.soundmod = "dog"; + self.meleeattackdist = 90; + self thread dog_health_regen(); + self thread selfdefensechallenge(); +} + +get_spawn_node( owner, team ) +{ + spawns = getnodearray( "spawn", "script_noteworthy" ); + return spawns[ randomint( spawns.size ) ]; +} + +get_score_for_spawn( origin, team ) +{ + players = get_players(); + score = 0; + _a201 = players; + _k201 = getFirstArrayKey( _a201 ); + while ( isDefined( _k201 ) ) + { + player = _a201[ _k201 ]; + if ( !isDefined( player ) ) + { + } + else if ( !isalive( player ) ) + { + } + else if ( player.sessionstate != "playing" ) + { + } + else if ( distancesquared( player.origin, origin ) > 4194304 ) + { + } + else if ( player.team == team ) + { + score++; + } + else + { + score--; + + } + _k201 = getNextArrayKey( _a201, _k201 ); + } + return score; +} + +dog_set_owner( owner, team, requireddeathcount ) +{ + self setentityowner( owner ); + self.aiteam = team; + self.requireddeathcount = requireddeathcount; +} + +dog_create_spawn_influencer() +{ + self maps/mp/gametypes/_spawning::create_dog_influencers(); +} + +dog_manager_spawn_dog( owner, team, spawn_node, requireddeathcount ) +{ + dog_spawner = getent( "dog_spawner", "targetname" ); + dog = dog_spawner spawnactor(); + dog forceteleport( spawn_node.origin, spawn_node.angles ); + dog init_dog(); + dog dog_set_owner( owner, team, requireddeathcount ); + dog dog_set_model(); + dog dog_create_spawn_influencer(); + dog thread dog_owner_kills(); + dog thread dog_notify_level_on_death(); + dog thread dog_patrol(); + dog thread maps/mp/gametypes/_weapons::monitor_dog_special_grenades(); + return dog; +} + +dog_manager_spawn_dogs( owner, deathcount, killstreak_id ) +{ + requireddeathcount = deathcount; + team = owner.team; + level.dog_abort = 0; + owner thread dog_manager_abort(); + level thread dog_manager_game_ended(); + count = 0; + while ( count < 10 ) + { + if ( level.dog_abort ) + { + break; + } + else + { + dogs = dog_manager_get_dogs(); + while ( dogs.size < 5 && count < 10 && !level.dog_abort ) + { + node = get_spawn_node( owner, team ); + level dog_manager_spawn_dog( owner, team, node, requireddeathcount ); + count++; + wait randomfloatrange( 2, 5 ); + dogs = dog_manager_get_dogs(); + } + level waittill( "dog_died" ); + } + } + for ( ;; ) + { + dogs = dog_manager_get_dogs(); + if ( dogs.size <= 0 ) + { + maps/mp/killstreaks/_killstreakrules::killstreakstop( "dogs_mp", team, killstreak_id ); + if ( isDefined( owner ) ) + { + owner notify( "dogs_complete" ); + } + return; + } + level waittill( "dog_died" ); + } +} + +dog_abort() +{ + level.dog_abort = 1; + dogs = dog_manager_get_dogs(); + _a324 = dogs; + _k324 = getFirstArrayKey( _a324 ); + while ( isDefined( _k324 ) ) + { + dog = _a324[ _k324 ]; + dog notify( "abort" ); + _k324 = getNextArrayKey( _a324, _k324 ); + } + level notify( "dog_abort" ); +} + +dog_manager_abort() +{ + level endon( "dog_abort" ); + self wait_endon( 50, "disconnect", "joined_team", "joined_specators" ); + dog_abort(); +} + +dog_manager_game_ended() +{ + level endon( "dog_abort" ); + level waittill( "game_ended" ); + dog_abort(); +} + +dog_notify_level_on_death() +{ + self waittill( "death" ); + level notify( "dog_died" ); +} + +dog_leave() +{ + self clearentitytarget(); + self.ignoreall = 1; + self.goalradius = 30; + self setgoalnode( self dog_get_exit_node() ); + self wait_endon( 20, "goal", "bad_path" ); + self delete(); +} + +dog_patrol() +{ + self endon( "death" ); +/# + self endon( "debug_patrol" ); +#/ + for ( ;; ) + { + if ( level.dog_abort ) + { + self dog_leave(); + return; + } + if ( isDefined( self.enemy ) ) + { + wait randomintrange( 3, 5 ); + continue; + } + else + { + nodes = []; + objectives = dog_patrol_near_objective(); + i = 0; + while ( i < objectives.size ) + { + objective = random( objectives ); + nodes = getnodesinradius( objective.origin, 256, 64, 512, "Path", 16 ); + if ( nodes.size ) + { + break; + } + else + { + i++; + } + } + if ( !nodes.size ) + { + player = self dog_patrol_near_enemy(); + if ( isDefined( player ) ) + { + nodes = getnodesinradius( player.origin, 1024, 0, 128, "Path", 8 ); + } + } + if ( !nodes.size && isDefined( self.script_owner ) ) + { + if ( isalive( self.script_owner ) && self.script_owner.sessionstate == "playing" ) + { + nodes = getnodesinradius( self.script_owner.origin, 512, 256, 512, "Path", 16 ); + } + } + if ( !nodes.size ) + { + nodes = getnodesinradius( self.origin, 1024, 512, 512, "Path" ); + } + while ( nodes.size ) + { + nodes = array_randomize( nodes ); + _a429 = nodes; + _k429 = getFirstArrayKey( _a429 ); + while ( isDefined( _k429 ) ) + { + node = _a429[ _k429 ]; + if ( isDefined( node.script_noteworthy ) ) + { + } + else if ( isDefined( node.dog_claimed ) && isalive( node.dog_claimed ) ) + { + } + else + { + self setgoalnode( node ); + node.dog_claimed = self; + nodes = []; + event = self waittill_any_return( "goal", "bad_path", "enemy", "abort" ); + if ( event == "goal" ) + { + wait_endon( randomintrange( 3, 5 ), "damage", "enemy", "abort" ); + } + node.dog_claimed = undefined; + break; + } + _k429 = getNextArrayKey( _a429, _k429 ); + } + } + wait 0,5; + } + } +} + +dog_patrol_near_objective() +{ + if ( !isDefined( level.dog_objectives ) ) + { + level.dog_objectives = []; + level.dog_objective_next_update = 0; + } + if ( level.gametype == "tdm" || level.gametype == "dm" ) + { + return level.dog_objectives; + } + if ( getTime() >= level.dog_objective_next_update ) + { + level.dog_objectives = []; + _a478 = level.dog_targets; + _k478 = getFirstArrayKey( _a478 ); + while ( isDefined( _k478 ) ) + { + target = _a478[ _k478 ]; + ents = getentarray( target, "classname" ); + _a482 = ents; + _k482 = getFirstArrayKey( _a482 ); + while ( isDefined( _k482 ) ) + { + ent = _a482[ _k482 ]; + if ( level.gametype == "koth" ) + { + if ( isDefined( ent.targetname ) && ent.targetname == "radiotrigger" ) + { + level.dog_objectives[ level.dog_objectives.size ] = ent; + } + } + else if ( level.gametype == "sd" ) + { + if ( isDefined( ent.targetname ) && ent.targetname == "bombzone" ) + { + level.dog_objectives[ level.dog_objectives.size ] = ent; + } + } + else if ( !isDefined( ent.script_gameobjectname ) ) + { + } + else if ( !issubstr( ent.script_gameobjectname, level.gametype ) ) + { + } + else + { + level.dog_objectives[ level.dog_objectives.size ] = ent; + } + _k482 = getNextArrayKey( _a482, _k482 ); + } + _k478 = getNextArrayKey( _a478, _k478 ); + } + level.dog_objective_next_update = getTime() + randomintrange( 5000, 10000 ); + } + return level.dog_objectives; +} + +dog_patrol_near_enemy() +{ + players = get_players(); + closest = undefined; + distsq = 99999999; + _a531 = players; + _k531 = getFirstArrayKey( _a531 ); + while ( isDefined( _k531 ) ) + { + player = _a531[ _k531 ]; + if ( !isDefined( player ) ) + { + } + else if ( !isalive( player ) ) + { + } + else if ( player.sessionstate != "playing" ) + { + } + else if ( isDefined( self.script_owner ) && player == self.script_owner ) + { + } + else + { + if ( level.teambased ) + { + if ( player.team == self.aiteam ) + { + break; + } + } + else if ( ( getTime() - player.lastfiretime ) > 3000 ) + { + break; + } + else if ( !isDefined( closest ) ) + { + closest = player; + distsq = distancesquared( self.origin, player.origin ); + break; + } + else + { + d = distancesquared( self.origin, player.origin ); + if ( d < distsq ) + { + closest = player; + distsq = d; + } + } + } + _k531 = getNextArrayKey( _a531, _k531 ); + } + return closest; +} + +dog_manager_get_dogs() +{ + dogs = getentarray( "attack_dog", "targetname" ); + return dogs; +} + +dog_owner_kills() +{ + if ( !isDefined( self.script_owner ) ) + { + return; + } + self endon( "clear_owner" ); + self endon( "death" ); + self.script_owner endon( "disconnect" ); + while ( 1 ) + { + self waittill( "killed", player ); + self.script_owner notify( "dog_handler" ); + } +} + +dog_health_regen() +{ + self endon( "death" ); + interval = 0,5; + regen_interval = int( ( self.health / 5 ) * interval ); + regen_start = 2; + for ( ;; ) + { + self waittill( "damage", damage, attacker, direction, point, type, tagname, modelname, partname, weaponname, idflags ); + self trackattackerdamage( attacker, weaponname ); + self thread dog_health_regen_think( regen_start, interval, regen_interval ); + } +} + +trackattackerdamage( attacker, weapon ) +{ + if ( isDefined( attacker ) || !isplayer( attacker ) && !isDefined( self.script_owner ) ) + { + return; + } + if ( level.teambased || attacker.team == self.script_owner.team && attacker == self ) + { + return; + } + if ( !isDefined( self.attackerdata ) || !isDefined( self.attackers ) ) + { + self.attackerdata = []; + self.attackers = []; + } + if ( !isDefined( self.attackerdata[ attacker.clientid ] ) ) + { + self.attackerclientid[ attacker.clientid ] = spawnstruct(); + self.attackers[ self.attackers.size ] = attacker; + } +} + +resetattackerdamage() +{ + self.attackerdata = []; + self.attackers = []; +} + +dog_health_regen_think( delay, interval, regen_interval ) +{ + self endon( "death" ); + self endon( "damage" ); + wait delay; + step = 0; + while ( step <= 5 ) + { + if ( self.health >= 100 ) + { + break; + } + else + { + self.health += regen_interval; + wait interval; + step += interval; + } + } + self resetattackerdamage(); + self.health = 100; +} + +selfdefensechallenge() +{ + self waittill( "death", attacker ); + if ( isDefined( attacker ) && isplayer( attacker ) ) + { + if ( isDefined( self.script_owner ) && self.script_owner == attacker ) + { + return; + } + if ( level.teambased && isDefined( self.script_owner ) && self.script_owner.team == attacker.team ) + { + return; + } + while ( isDefined( self.attackers ) ) + { + _a689 = self.attackers; + _k689 = getFirstArrayKey( _a689 ); + while ( isDefined( _k689 ) ) + { + player = _a689[ _k689 ]; + if ( player != attacker ) + { + maps/mp/_scoreevents::processscoreevent( "killed_dog_assist", player ); + } + _k689 = getNextArrayKey( _a689, _k689 ); + } + } + attacker notify( "selfdefense_dog" ); + } +} + +dog_get_exit_node() +{ + exits = getnodearray( "exit", "script_noteworthy" ); + return getclosest( self.origin, exits ); +} + +flash_dogs( area ) +{ + self endon( "disconnect" ); + dogs = dog_manager_get_dogs(); + _a714 = dogs; + _k714 = getFirstArrayKey( _a714 ); + while ( isDefined( _k714 ) ) + { + dog = _a714[ _k714 ]; + if ( !isalive( dog ) ) + { + } + else + { + if ( dog istouching( area ) ) + { + do_flash = 1; + if ( isplayer( self ) ) + { + if ( level.teambased && dog.aiteam == self.team ) + { + do_flash = 0; + break; + } + else + { + if ( !level.teambased && isDefined( dog.script_owner ) && self == dog.script_owner ) + { + do_flash = 0; + } + } + } + if ( isDefined( dog.lastflashed ) && ( dog.lastflashed + 1500 ) > getTime() ) + { + do_flash = 0; + } + if ( do_flash ) + { + dog setflashbanged( 1, 500 ); + dog.lastflashed = getTime(); + } + } + } + _k714 = getNextArrayKey( _a714, _k714 ); + } +} + +devgui_dog_think() +{ +/# + setdvar( "devgui_dog", "" ); + debug_patrol = 0; + for ( ;; ) + { + cmd = getDvar( "devgui_dog" ); + switch( cmd ) + { + case "spawn_friendly": + player = gethostplayer(); + devgui_dog_spawn( player.team ); + break; + case "spawn_enemy": + player = gethostplayer(); + _a769 = level.teams; + _k769 = getFirstArrayKey( _a769 ); + while ( isDefined( _k769 ) ) + { + team = _a769[ _k769 ]; + if ( team == player.team ) + { + } + else + { + devgui_dog_spawn( team ); + } + _k769 = getNextArrayKey( _a769, _k769 ); + } + case "delete_dogs": + level dog_abort(); + break; + case "dog_camera": + devgui_dog_camera(); + break; + case "spawn_crate": + devgui_crate_spawn(); + break; + case "delete_crates": + devgui_crate_delete(); + break; + case "show_spawns": + devgui_spawn_show(); + break; + case "show_exits": + devgui_exit_show(); + break; + case "debug_route": + devgui_debug_route(); + break; + } + if ( cmd != "" ) + { + setdvar( "devgui_dog", "" ); + } + wait 0,5; +#/ + } + } +} + +devgui_dog_spawn( team ) +{ +/# + player = gethostplayer(); + dog_spawner = getent( "dog_spawner", "targetname" ); + level.dog_abort = 0; + if ( !isDefined( dog_spawner ) ) + { + iprintln( "No dog spawners found in map" ); + return; + } + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + eye = player geteye(); + scale = 8000; + direction_vec = ( direction_vec[ 0 ] * scale, direction_vec[ 1 ] * scale, direction_vec[ 2 ] * scale ); + trace = bullettrace( eye, eye + direction_vec, 0, undefined ); + nodes = getnodesinradius( trace[ "position" ], 256, 0, 128, "Path", 8 ); + if ( !nodes.size ) + { + iprintln( "No nodes found near crosshair position" ); + return; + } + iprintln( "Spawning dog at your crosshair position" ); + node = getclosest( trace[ "position" ], nodes ); + dog = dog_manager_spawn_dog( player, player.team, node, 5 ); + if ( team != player.team ) + { + dog.aiteam = team; + dog clearentityowner(); + dog notify( "clear_owner" ); +#/ + } +} + +devgui_dog_camera() +{ +/# + player = gethostplayer(); + if ( !isDefined( level.devgui_dog_camera ) ) + { + level.devgui_dog_camera = 0; + } + dog = undefined; + dogs = dog_manager_get_dogs(); + if ( dogs.size <= 0 ) + { + level.devgui_dog_camera = undefined; + player cameraactivate( 0 ); + return; + } + i = 0; + while ( i < dogs.size ) + { + dog = dogs[ i ]; + if ( !isDefined( dog ) || !isalive( dog ) ) + { + dog = undefined; + i++; + continue; + } + else + { + if ( !isDefined( dog.cam ) ) + { + forward = anglesToForward( dog.angles ); + dog.cam = spawn( "script_model", ( dog.origin + vectorScale( ( 1, 0, 0 ), 50 ) ) + ( forward * -100 ) ); + dog.cam setmodel( "tag_origin" ); + dog.cam linkto( dog ); + } + if ( dog getentitynumber() <= level.devgui_dog_camera ) + { + dog = undefined; + i++; + continue; + } + else + { + } + } + i++; + } + if ( isDefined( dog ) ) + { + level.devgui_dog_camera = dog getentitynumber(); + player camerasetposition( dog.cam ); + player camerasetlookat( dog ); + player cameraactivate( 1 ); + } + else level.devgui_dog_camera = undefined; + player cameraactivate( 0 ); +#/ +} + +devgui_crate_spawn() +{ +/# + player = gethostplayer(); + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + eye = player geteye(); + scale = 8000; + direction_vec = ( direction_vec[ 0 ] * scale, direction_vec[ 1 ] * scale, direction_vec[ 2 ] * scale ); + trace = bullettrace( eye, eye + direction_vec, 0, undefined ); + killcament = spawn( "script_model", player.origin ); + level thread maps/mp/killstreaks/_supplydrop::dropcrate( trace[ "position" ] + vectorScale( ( 1, 0, 0 ), 25 ), direction, "supplydrop_mp", player, player.team, killcament ); +#/ +} + +devgui_crate_delete() +{ +/# + if ( !isDefined( level.devgui_crates ) ) + { + return; + } + i = 0; + while ( i < level.devgui_crates.size ) + { + level.devgui_crates[ i ] delete(); + i++; + } + level.devgui_crates = []; +#/ +} + +devgui_spawn_show() +{ +/# + if ( !isDefined( level.dog_spawn_show ) ) + { + level.dog_spawn_show = 1; + } + else + { + level.dog_spawn_show = !level.dog_spawn_show; + } + if ( !level.dog_spawn_show ) + { + level notify( "hide_dog_spawns" ); + return; + } + spawns = getnodearray( "spawn", "script_noteworthy" ); + color = ( 1, 0, 0 ); + i = 0; + while ( i < spawns.size ) + { + maps/mp/gametypes/_dev::showonespawnpoint( spawns[ i ], color, "hide_dog_spawns", 32, "dog_spawn" ); + i++; +#/ + } +} + +devgui_exit_show() +{ +/# + if ( !isDefined( level.dog_exit_show ) ) + { + level.dog_exit_show = 1; + } + else + { + level.dog_exit_show = !level.dog_exit_show; + } + if ( !level.dog_exit_show ) + { + level notify( "hide_dog_exits" ); + return; + } + exits = getnodearray( "exit", "script_noteworthy" ); + color = ( 1, 0, 0 ); + i = 0; + while ( i < exits.size ) + { + maps/mp/gametypes/_dev::showonespawnpoint( exits[ i ], color, "hide_dog_exits", 32, "dog_exit" ); + i++; +#/ + } +} + +dog_debug_patrol( node1, node2 ) +{ +/# + self endon( "death" ); + self endon( "debug_patrol" ); + for ( ;; ) + { + self setgoalnode( node1 ); + self waittill_any( "goal", "bad_path" ); + wait 1; + self setgoalnode( node2 ); + self waittill_any( "goal", "bad_path" ); + wait 1; +#/ + } +} + +devgui_debug_route() +{ +/# + iprintln( "Choose nodes with 'A' or press 'B' to cancel" ); + nodes = maps/mp/gametypes/_dev::dev_get_node_pair(); + if ( !isDefined( nodes ) ) + { + iprintln( "Route Debug Cancelled" ); + return; + } + iprintln( "Sending dog to chosen nodes" ); + dogs = dog_manager_get_dogs(); + if ( isDefined( dogs[ 0 ] ) ) + { + dogs[ 0 ] notify( "debug_patrol" ); + dogs[ 0 ] thread dog_debug_patrol( nodes[ 0 ], nodes[ 1 ] ); +#/ + } +} diff --git a/common_zm/codescripts/character.gsc b/common_zm/codescripts/character.gsc new file mode 100644 index 0000000..e47145d --- /dev/null +++ b/common_zm/codescripts/character.gsc @@ -0,0 +1,216 @@ + +setmodelfromarray( a ) +{ + self setmodel( a[ randomint( a.size ) ] ); +} + +precachemodelarray( a ) +{ + i = 0; + while ( i < a.size ) + { + precachemodel( a[ i ] ); + i++; + } +} + +randomelement( a ) +{ + return a[ randomint( a.size ) ]; +} + +attachfromarray( a ) +{ + self attach( randomelement( a ), "", 1 ); +} + +new() +{ + self detachall(); + oldgunhand = self.anim_gunhand; + if ( !isDefined( oldgunhand ) ) + { + return; + } + self.anim_gunhand = "none"; + self [[ anim.putguninhand ]]( oldgunhand ); +} + +save() +{ + info[ "gunHand" ] = self.anim_gunhand; + info[ "gunInHand" ] = self.anim_guninhand; + info[ "model" ] = self.model; + info[ "hatModel" ] = self.hatmodel; + info[ "gearModel" ] = self.gearmodel; + if ( isDefined( self.name ) ) + { + info[ "name" ] = self.name; +/# + println( "Save: Guy has name ", self.name ); +#/ + } + else + { +/# + println( "save: Guy had no name!" ); +#/ + } + attachsize = self getattachsize(); + i = 0; + while ( i < attachsize ) + { + info[ "attach" ][ i ][ "model" ] = self getattachmodelname( i ); + info[ "attach" ][ i ][ "tag" ] = self getattachtagname( i ); + i++; + } + return info; +} + +load( info ) +{ + self detachall(); + self.anim_gunhand = info[ "gunHand" ]; + self.anim_guninhand = info[ "gunInHand" ]; + self setmodel( info[ "model" ] ); + self.hatmodel = info[ "hatModel" ]; + self.gearmodel = info[ "gearModel" ]; + if ( isDefined( info[ "name" ] ) ) + { + self.name = info[ "name" ]; +/# + println( "Load: Guy has name ", self.name ); +#/ + } + else + { +/# + println( "Load: Guy had no name!" ); +#/ + } + attachinfo = info[ "attach" ]; + attachsize = attachinfo.size; + i = 0; + while ( i < attachsize ) + { + self attach( attachinfo[ i ][ "model" ], attachinfo[ i ][ "tag" ] ); + i++; + } +} + +precache( info ) +{ + if ( isDefined( info[ "name" ] ) ) + { +/# + println( "Precache: Guy has name ", info[ "name" ] ); +#/ + } + else + { +/# + println( "Precache: Guy had no name!" ); +#/ + } + precachemodel( info[ "model" ] ); + attachinfo = info[ "attach" ]; + attachsize = attachinfo.size; + i = 0; + while ( i < attachsize ) + { + precachemodel( attachinfo[ i ][ "model" ] ); + i++; + } +} + +get_random_character( amount ) +{ + self_info = strtok( self.classname, "_" ); + if ( self_info.size <= 2 ) + { + return randomint( amount ); + } + group = "auto"; + index = undefined; + prefix = self_info[ 2 ]; + if ( isDefined( self.script_char_index ) ) + { + index = self.script_char_index; + } + if ( isDefined( self.script_char_group ) ) + { + type = "grouped"; + group = "group_" + self.script_char_group; + } + if ( !isDefined( level.character_index_cache ) ) + { + level.character_index_cache = []; + } + if ( !isDefined( level.character_index_cache[ prefix ] ) ) + { + level.character_index_cache[ prefix ] = []; + } + if ( !isDefined( level.character_index_cache[ prefix ][ group ] ) ) + { + initialize_character_group( prefix, group, amount ); + } + if ( !isDefined( index ) ) + { + index = get_least_used_index( prefix, group ); + if ( !isDefined( index ) ) + { + index = randomint( 5000 ); + } + } + while ( index >= amount ) + { + index -= amount; + } + level.character_index_cache[ prefix ][ group ][ index ]++; + return index; +} + +get_least_used_index( prefix, group ) +{ + lowest_indices = []; + lowest_use = level.character_index_cache[ prefix ][ group ][ 0 ]; + lowest_indices[ 0 ] = 0; + i = 1; + while ( i < level.character_index_cache[ prefix ][ group ].size ) + { + if ( level.character_index_cache[ prefix ][ group ][ i ] > lowest_use ) + { + i++; + continue; + } + else + { + if ( level.character_index_cache[ prefix ][ group ][ i ] < lowest_use ) + { + lowest_indices = []; + lowest_use = level.character_index_cache[ prefix ][ group ][ i ]; + } + lowest_indices[ lowest_indices.size ] = i; + } + i++; + } +/# + assert( lowest_indices.size, "Tried to spawn a character but the lowest indices didn't exist" ); +#/ + return random( lowest_indices ); +} + +initialize_character_group( prefix, group, amount ) +{ + i = 0; + while ( i < amount ) + { + level.character_index_cache[ prefix ][ group ][ i ] = 0; + i++; + } +} + +random( array ) +{ + return array[ randomint( array.size ) ]; +} diff --git a/common_zm/codescripts/delete.gsc b/common_zm/codescripts/delete.gsc new file mode 100644 index 0000000..082155e --- /dev/null +++ b/common_zm/codescripts/delete.gsc @@ -0,0 +1,23 @@ + +main() +{ +/# + assert( isDefined( self ) ); +#/ + wait 0; + if ( isDefined( self ) ) + { +/# + if ( isDefined( self.classname ) ) + { + if ( self.classname != "trigger_once" || self.classname == "trigger_radius" && self.classname == "trigger_multiple" ) + { + println( "" ); + println( "*** trigger debug: delete.gsc is deleting trigger with ent#: " + self getentitynumber() + " at origin: " + self.origin ); + println( "" ); +#/ + } + } + self delete(); + } +} diff --git a/common_zm/codescripts/struct.gsc b/common_zm/codescripts/struct.gsc new file mode 100644 index 0000000..8d47324 --- /dev/null +++ b/common_zm/codescripts/struct.gsc @@ -0,0 +1,41 @@ + +initstructs() +{ + level.struct = []; +} + +createstruct() +{ + struct = spawnstruct(); + level.struct[ level.struct.size ] = struct; + return struct; +} + +findstruct( position ) +{ + _a20 = level.struct_class_names; + key = getFirstArrayKey( _a20 ); + while ( isDefined( key ) ) + { + _ = _a20[ key ]; + _a22 = level.struct_class_names[ key ]; + val = getFirstArrayKey( _a22 ); + while ( isDefined( val ) ) + { + s_array = _a22[ val ]; + _a24 = s_array; + _k24 = getFirstArrayKey( _a24 ); + while ( isDefined( _k24 ) ) + { + struct = _a24[ _k24 ]; + if ( distancesquared( struct.origin, position ) < 1 ) + { + return struct; + } + _k24 = getNextArrayKey( _a24, _k24 ); + } + val = getNextArrayKey( _a22, val ); + } + key = getNextArrayKey( _a20, key ); + } +} diff --git a/common_zm/maps/mp/_serverfaceanim_mp.gsc b/common_zm/maps/mp/_serverfaceanim_mp.gsc new file mode 100644 index 0000000..bbd52a4 --- /dev/null +++ b/common_zm/maps/mp/_serverfaceanim_mp.gsc @@ -0,0 +1,56 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread init_serverfaceanim(); + } +} + +init_serverfaceanim() +{ + self.do_face_anims = 1; + if ( !isDefined( level.face_event_handler ) ) + { + level.face_event_handler = spawnstruct(); + level.face_event_handler.events = []; + level.face_event_handler.events[ "death" ] = "face_death"; + level.face_event_handler.events[ "grenade danger" ] = "face_alert"; + level.face_event_handler.events[ "bulletwhizby" ] = "face_alert"; + level.face_event_handler.events[ "projectile_impact" ] = "face_alert"; + level.face_event_handler.events[ "explode" ] = "face_alert"; + level.face_event_handler.events[ "alert" ] = "face_alert"; + level.face_event_handler.events[ "shoot" ] = "face_shoot_single"; + level.face_event_handler.events[ "melee" ] = "face_melee"; + level.face_event_handler.events[ "damage" ] = "face_pain"; + level thread wait_for_face_event(); + } +} + +wait_for_face_event() +{ + while ( 1 ) + { + level waittill( "face", face_notify, ent ); + if ( isDefined( ent ) && isDefined( ent.do_face_anims ) && ent.do_face_anims ) + { + if ( isDefined( level.face_event_handler.events[ face_notify ] ) ) + { + ent sendfaceevent( level.face_event_handler.events[ face_notify ] ); + } + } + } +} diff --git a/common_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc b/common_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc new file mode 100644 index 0000000..f66f5ad --- /dev/null +++ b/common_zm/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc @@ -0,0 +1,378 @@ +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +#using_animtree( "zombie_cymbal_monkey" ); + +init() +{ + if ( !cymbal_monkey_exists() ) + { + return; + } +/# + level.zombiemode_devgui_cymbal_monkey_give = ::player_give_cymbal_monkey; +#/ + level._effect[ "monkey_glow" ] = loadfx( "maps/zombie/fx_zombie_monkey_light" ); + level._effect[ "grenade_samantha_steal" ] = loadfx( "maps/zombie/fx_zmb_blackhole_trap_end" ); + level.cymbal_monkeys = []; + scriptmodelsuseanimtree( -1 ); +} + +player_give_cymbal_monkey() +{ + self giveweapon( "cymbal_monkey_zm" ); + self set_player_tactical_grenade( "cymbal_monkey_zm" ); + self thread player_handle_cymbal_monkey(); +} + +player_handle_cymbal_monkey() +{ + self notify( "starting_monkey_watch" ); + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + attract_dist_diff = level.monkey_attract_dist_diff; + if ( !isDefined( attract_dist_diff ) ) + { + attract_dist_diff = 45; + } + num_attractors = level.num_monkey_attractors; + if ( !isDefined( num_attractors ) ) + { + num_attractors = 96; + } + max_attract_dist = level.monkey_attract_dist; + if ( !isDefined( max_attract_dist ) ) + { + max_attract_dist = 1536; + } + while ( 1 ) + { + grenade = get_thrown_monkey(); + self player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ); + wait 0,05; + } +} + +watch_for_dud( model ) +{ + self endon( "death" ); + self waittill( "grenade_dud" ); + model.dud = 1; + self playsound( "zmb_vox_monkey_scream" ); + self.monk_scream_vox = 1; + wait 3; + if ( isDefined( model ) ) + { + model delete(); + } + if ( isDefined( self ) ) + { + self delete(); + } +} + +watch_for_emp( model ) +{ + self endon( "death" ); + while ( 1 ) + { + level waittill( "emp_detonate", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + break; + } + else + { + } + } + self.stun_fx = 1; + if ( isDefined( level._equipment_emp_destroy_fx ) ) + { + playfx( level._equipment_emp_destroy_fx, self.origin + vectorScale( ( 0, 0, 1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); + } + wait 0,15; + self.attract_to_origin = 0; + self deactivate_zombie_point_of_interest(); + model clearanim( %o_monkey_bomb, 0 ); + wait 1; + self detonate(); + wait 1; + if ( isDefined( model ) ) + { + model delete(); + } + if ( isDefined( self ) ) + { + self delete(); + } +} + +player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ) +{ + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + if ( isDefined( grenade ) ) + { + grenade endon( "death" ); + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + grenade delete(); + return; + } + grenade hide(); + model = spawn( "script_model", grenade.origin ); + model setmodel( "weapon_zombie_monkey_bomb" ); + model useanimtree( -1 ); + model linkto( grenade ); + model.angles = grenade.angles; + model thread monkey_cleanup( grenade ); + grenade thread watch_for_dud( model ); + grenade thread watch_for_emp( model ); + info = spawnstruct(); + info.sound_attractors = []; + grenade thread monitor_zombie_groans( info ); + grenade waittill( "stationary" ); + if ( isDefined( level.grenade_planted ) ) + { + self thread [[ level.grenade_planted ]]( grenade, model ); + } + if ( isDefined( grenade ) ) + { + if ( isDefined( model ) ) + { + model setanim( %o_monkey_bomb ); + if ( isDefined( grenade.backlinked ) && !grenade.backlinked ) + { + model unlink(); + model.origin = grenade.origin; + model.angles = grenade.angles; + } + } + grenade resetmissiledetonationtime(); + playfxontag( level._effect[ "monkey_glow" ], model, "origin_animate_jnt" ); + valid_poi = check_point_in_active_zone( grenade.origin ); + if ( valid_poi ) + { + grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); + grenade.attract_to_origin = 1; + grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); + grenade thread wait_for_attractor_positions_complete(); + grenade thread do_monkey_sound( model, info ); + level.cymbal_monkeys[ level.cymbal_monkeys.size ] = grenade; + } + else + { + grenade.script_noteworthy = undefined; + level thread grenade_stolen_by_sam( grenade, model ); + } + return; + } + else + { + grenade.script_noteworthy = undefined; + level thread grenade_stolen_by_sam( grenade, model ); + } + } +} + +grenade_stolen_by_sam( ent_grenade, ent_model ) +{ + if ( !isDefined( ent_model ) ) + { + return; + } + direction = ent_model.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isalive( players[ i ] ) ) + { + players[ i ] playlocalsound( level.zmb_laugh_alias ); + } + i++; + } + playfxontag( level._effect[ "grenade_samantha_steal" ], ent_model, "tag_origin" ); + ent_model movez( 60, 1, 0,25, 0,25 ); + ent_model vibrate( direction, 1,5, 2,5, 1 ); + ent_model waittill( "movedone" ); + ent_model delete(); + if ( isDefined( ent_grenade ) ) + { + ent_grenade delete(); + } +} + +wait_for_attractor_positions_complete() +{ + self waittill( "attractor_positions_generated" ); + self.attract_to_origin = 0; +} + +monkey_cleanup( parent ) +{ + while ( 1 ) + { + if ( !isDefined( parent ) ) + { + if ( isDefined( self ) && isDefined( self.dud ) && self.dud ) + { + wait 6; + } + self_delete(); + return; + } + wait 0,05; + } +} + +do_monkey_sound( model, info ) +{ + self.monk_scream_vox = 0; + if ( isDefined( level.grenade_safe_to_bounce ) ) + { + if ( !( [[ level.grenade_safe_to_bounce ]]( self.owner, "cymbal_monkey_zm" ) ) ) + { + self playsound( "zmb_vox_monkey_scream" ); + self.monk_scream_vox = 1; + } + } + if ( !self.monk_scream_vox && level.music_override == 0 ) + { + self playsound( "zmb_monkey_song" ); + } + if ( !self.monk_scream_vox ) + { + self thread play_delayed_explode_vox(); + } + self waittill( "explode", position ); + level notify( "grenade_exploded" ); + monkey_index = -1; + i = 0; + while ( i < level.cymbal_monkeys.size ) + { + if ( !isDefined( level.cymbal_monkeys[ i ] ) ) + { + monkey_index = i; + break; + } + else + { + i++; + } + } + if ( monkey_index >= 0 ) + { + arrayremoveindex( level.cymbal_monkeys, monkey_index ); + } + if ( isDefined( model ) ) + { + model clearanim( %o_monkey_bomb, 0,2 ); + } + i = 0; + while ( i < info.sound_attractors.size ) + { + if ( isDefined( info.sound_attractors[ i ] ) ) + { + info.sound_attractors[ i ] notify( "monkey_blown_up" ); + } + i++; + } +} + +play_delayed_explode_vox() +{ + wait 6,5; + if ( isDefined( self ) ) + { + self playsound( "zmb_vox_monkey_explode" ); + } +} + +get_thrown_monkey() +{ + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + if ( weapname == "cymbal_monkey_zm" ) + { + grenade.use_grenade_special_long_bookmark = 1; + grenade.grenade_multiattack_bookmark_count = 1; + return grenade; + } + wait 0,05; + } +} + +monitor_zombie_groans( info ) +{ + self endon( "explode" ); + while ( 1 ) + { + if ( !isDefined( self ) ) + { + return; + } + while ( !isDefined( self.attractor_array ) ) + { + wait 0,05; + } + i = 0; + while ( i < self.attractor_array.size ) + { + if ( array_check_for_dupes( info.sound_attractors, self.attractor_array[ i ] ) ) + { + if ( isDefined( self.origin ) && isDefined( self.attractor_array[ i ].origin ) ) + { + if ( distancesquared( self.origin, self.attractor_array[ i ].origin ) < 250000 ) + { + info.sound_attractors[ info.sound_attractors.size ] = self.attractor_array[ i ]; + self.attractor_array[ i ] thread play_zombie_groans(); + } + } + } + i++; + } + wait 0,05; + } +} + +play_zombie_groans() +{ + self endon( "death" ); + self endon( "monkey_blown_up" ); + while ( 1 ) + { + if ( isDefined( self ) ) + { + self playsound( "zmb_vox_zombie_groan" ); + wait randomfloatrange( 2, 3 ); + continue; + } + else + { + return; + } + } +} + +cymbal_monkey_exists() +{ + return isDefined( level.zombie_weapons[ "cymbal_monkey_zm" ] ); +} diff --git a/common_zm/maps/mp/zombies/_zm_weap_thundergun.gsc b/common_zm/maps/mp/zombies/_zm_weap_thundergun.gsc new file mode 100644 index 0000000..4690759 --- /dev/null +++ b/common_zm/maps/mp/zombies/_zm_weap_thundergun.gsc @@ -0,0 +1,396 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !maps/mp/zombies/_zm_weapons::is_weapon_included( "thundergun_zm" ) ) + { + return; + } + level._effect[ "thundergun_viewmodel_power_cell1" ] = loadfx( "weapon/thunder_gun/fx_thundergun_power_cell_view1" ); + level._effect[ "thundergun_viewmodel_power_cell2" ] = loadfx( "weapon/thunder_gun/fx_thundergun_power_cell_view2" ); + level._effect[ "thundergun_viewmodel_power_cell3" ] = loadfx( "weapon/thunder_gun/fx_thundergun_power_cell_view3" ); + level._effect[ "thundergun_viewmodel_steam" ] = loadfx( "weapon/thunder_gun/fx_thundergun_steam_view" ); + level._effect[ "thundergun_viewmodel_power_cell1_upgraded" ] = loadfx( "weapon/thunder_gun/fx_thundergun_power_cell_view1" ); + level._effect[ "thundergun_viewmodel_power_cell2_upgraded" ] = loadfx( "weapon/thunder_gun/fx_thundergun_power_cell_view2" ); + level._effect[ "thundergun_viewmodel_power_cell3_upgraded" ] = loadfx( "weapon/thunder_gun/fx_thundergun_power_cell_view3" ); + level._effect[ "thundergun_viewmodel_steam_upgraded" ] = loadfx( "weapon/thunder_gun/fx_thundergun_steam_view" ); + level._effect[ "thundergun_knockdown_ground" ] = loadfx( "weapon/thunder_gun/fx_thundergun_knockback_ground" ); + level._effect[ "thundergun_smoke_cloud" ] = loadfx( "weapon/thunder_gun/fx_thundergun_smoke_cloud" ); + set_zombie_var( "thundergun_cylinder_radius", 180 ); + set_zombie_var( "thundergun_fling_range", 480 ); + set_zombie_var( "thundergun_gib_range", 900 ); + set_zombie_var( "thundergun_gib_damage", 75 ); + set_zombie_var( "thundergun_knockdown_range", 1200 ); + set_zombie_var( "thundergun_knockdown_damage", 15 ); + level.thundergun_gib_refs = []; + level.thundergun_gib_refs[ level.thundergun_gib_refs.size ] = "guts"; + level.thundergun_gib_refs[ level.thundergun_gib_refs.size ] = "right_arm"; + level.thundergun_gib_refs[ level.thundergun_gib_refs.size ] = "left_arm"; + level.basic_zombie_thundergun_knockdown = ::zombie_knockdown; +/# + level thread thundergun_devgui_dvar_think(); +#/ + onplayerconnect_callback( ::thundergun_on_player_connect ); +} + +thundergun_devgui_dvar_think() +{ +/# + if ( !maps/mp/zombies/_zm_weapons::is_weapon_included( "thundergun_zm" ) ) + { + return; + } + setdvar( "scr_thundergun_cylinder_radius", level.zombie_vars[ "thundergun_cylinder_radius" ] ); + setdvar( "scr_thundergun_fling_range", level.zombie_vars[ "thundergun_fling_range" ] ); + setdvar( "scr_thundergun_gib_range", level.zombie_vars[ "thundergun_gib_range" ] ); + setdvar( "scr_thundergun_gib_damage", level.zombie_vars[ "thundergun_gib_damage" ] ); + setdvar( "scr_thundergun_knockdown_range", level.zombie_vars[ "thundergun_knockdown_range" ] ); + setdvar( "scr_thundergun_knockdown_damage", level.zombie_vars[ "thundergun_knockdown_damage" ] ); + for ( ;; ) + { + level.zombie_vars[ "thundergun_cylinder_radius" ] = getDvarInt( "scr_thundergun_cylinder_radius" ); + level.zombie_vars[ "thundergun_fling_range" ] = getDvarInt( "scr_thundergun_fling_range" ); + level.zombie_vars[ "thundergun_gib_range" ] = getDvarInt( "scr_thundergun_gib_range" ); + level.zombie_vars[ "thundergun_gib_damage" ] = getDvarInt( "scr_thundergun_gib_damage" ); + level.zombie_vars[ "thundergun_knockdown_range" ] = getDvarInt( "scr_thundergun_knockdown_range" ); + level.zombie_vars[ "thundergun_knockdown_damage" ] = getDvarInt( "scr_thundergun_knockdown_damage" ); + wait 0,5; +#/ + } +} + +thundergun_on_player_connect() +{ + self thread wait_for_thundergun_fired(); +} + +wait_for_thundergun_fired() +{ + self endon( "disconnect" ); + self waittill( "spawned_player" ); + for ( ;; ) + { + self waittill( "weapon_fired" ); + currentweapon = self getcurrentweapon(); + if ( currentweapon == "thundergun_zm" || currentweapon == "thundergun_upgraded_zm" ) + { + self thread thundergun_fired(); + view_pos = self gettagorigin( "tag_flash" ) - self getplayerviewheight(); + view_angles = self gettagangles( "tag_flash" ); + playfx( level._effect[ "thundergun_smoke_cloud" ], view_pos, anglesToForward( view_angles ), anglesToUp( view_angles ) ); + } + } +} + +thundergun_network_choke() +{ + level.thundergun_network_choke_count++; + if ( level.thundergun_network_choke_count % 10 ) + { + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + } +} + +thundergun_fired() +{ + physicsexplosioncylinder( self.origin, 600, 240, 1 ); + if ( !isDefined( level.thundergun_knockdown_enemies ) ) + { + level.thundergun_knockdown_enemies = []; + level.thundergun_knockdown_gib = []; + level.thundergun_fling_enemies = []; + level.thundergun_fling_vecs = []; + } + self thundergun_get_enemies_in_range(); + level.thundergun_network_choke_count = 0; + i = 0; + while ( i < level.thundergun_fling_enemies.size ) + { + thundergun_network_choke(); + level.thundergun_fling_enemies[ i ] thread thundergun_fling_zombie( self, level.thundergun_fling_vecs[ i ], i ); + i++; + } + i = 0; + while ( i < level.thundergun_knockdown_enemies.size ) + { + thundergun_network_choke(); + level.thundergun_knockdown_enemies[ i ] thread thundergun_knockdown_zombie( self, level.thundergun_knockdown_gib[ i ] ); + i++; + } + level.thundergun_knockdown_enemies = []; + level.thundergun_knockdown_gib = []; + level.thundergun_fling_enemies = []; + level.thundergun_fling_vecs = []; +} + +thundergun_get_enemies_in_range() +{ + view_pos = self getweaponmuzzlepoint(); + zombies = get_array_of_closest( view_pos, get_round_enemy_array(), undefined, undefined, level.zombie_vars[ "thundergun_knockdown_range" ] ); + if ( !isDefined( zombies ) ) + { + return; + } + knockdown_range_squared = level.zombie_vars[ "thundergun_knockdown_range" ] * level.zombie_vars[ "thundergun_knockdown_range" ]; + gib_range_squared = level.zombie_vars[ "thundergun_gib_range" ] * level.zombie_vars[ "thundergun_gib_range" ]; + fling_range_squared = level.zombie_vars[ "thundergun_fling_range" ] * level.zombie_vars[ "thundergun_fling_range" ]; + cylinder_radius_squared = level.zombie_vars[ "thundergun_cylinder_radius" ] * level.zombie_vars[ "thundergun_cylinder_radius" ]; + forward_view_angles = self getweaponforwarddir(); + end_pos = view_pos + vectorScale( forward_view_angles, level.zombie_vars[ "thundergun_knockdown_range" ] ); +/# + if ( getDvarInt( #"AAC84AD6" ) == 2 ) + { + near_circle_pos = view_pos + vectorScale( forward_view_angles, 2 ); + circle( near_circle_pos, level.zombie_vars[ "thundergun_cylinder_radius" ], ( 0, 0, 1 ), 0, 0, 100 ); + line( near_circle_pos, end_pos, ( 0, 0, 1 ), 1, 0, 100 ); + circle( end_pos, level.zombie_vars[ "thundergun_cylinder_radius" ], ( 0, 0, 1 ), 0, 0, 100 ); +#/ + } + i = 0; + while ( i < zombies.size ) + { + if ( !isDefined( zombies[ i ] ) || !isalive( zombies[ i ] ) ) + { + i++; + continue; + } + else + { + test_origin = zombies[ i ] getcentroid(); + test_range_squared = distancesquared( view_pos, test_origin ); + if ( test_range_squared > knockdown_range_squared ) + { + zombies[ i ] thundergun_debug_print( "range", ( 0, 0, 1 ) ); + return; + } + normal = vectornormalize( test_origin - view_pos ); + dot = vectordot( forward_view_angles, normal ); + if ( dot <= 0 ) + { + zombies[ i ] thundergun_debug_print( "dot", ( 0, 0, 1 ) ); + i++; + continue; + } + else radial_origin = pointonsegmentnearesttopoint( view_pos, end_pos, test_origin ); + if ( distancesquared( test_origin, radial_origin ) > cylinder_radius_squared ) + { + zombies[ i ] thundergun_debug_print( "cylinder", ( 0, 0, 1 ) ); + i++; + continue; + } + else if ( zombies[ i ] damageconetrace( view_pos, self ) == 0 ) + { + zombies[ i ] thundergun_debug_print( "cone", ( 0, 0, 1 ) ); + i++; + continue; + } + else if ( test_range_squared < fling_range_squared ) + { + level.thundergun_fling_enemies[ level.thundergun_fling_enemies.size ] = zombies[ i ]; + dist_mult = ( fling_range_squared - test_range_squared ) / fling_range_squared; + fling_vec = vectornormalize( test_origin - view_pos ); + if ( test_range_squared >= 5000 ) + { + fling_vec += vectornormalize( test_origin - radial_origin ); + } + fling_vec = ( fling_vec[ 0 ], fling_vec[ 1 ], abs( fling_vec[ 2 ] ) ); + fling_vec = vectorScale( fling_vec, 100 + ( 100 * dist_mult ) ); + level.thundergun_fling_vecs[ level.thundergun_fling_vecs.size ] = fling_vec; + zombies[ i ] thread setup_thundergun_vox( self, 1, 0, 0 ); + i++; + continue; + } + else if ( test_range_squared < gib_range_squared ) + { + level.thundergun_knockdown_enemies[ level.thundergun_knockdown_enemies.size ] = zombies[ i ]; + level.thundergun_knockdown_gib[ level.thundergun_knockdown_gib.size ] = 1; + zombies[ i ] thread setup_thundergun_vox( self, 0, 1, 0 ); + i++; + continue; + } + else + { + level.thundergun_knockdown_enemies[ level.thundergun_knockdown_enemies.size ] = zombies[ i ]; + level.thundergun_knockdown_gib[ level.thundergun_knockdown_gib.size ] = 0; + zombies[ i ] thread setup_thundergun_vox( self, 0, 0, 1 ); + } + } + i++; + } +} + +thundergun_debug_print( msg, color ) +{ +/# + if ( !getDvarInt( #"AAC84AD6" ) ) + { + return; + } + if ( !isDefined( color ) ) + { + color = ( 0, 0, 1 ); + } + print3d( self.origin + vectorScale( ( 0, 0, 1 ), 60 ), msg, color, 1, 1, 40 ); +#/ +} + +thundergun_fling_zombie( player, fling_vec, index ) +{ + if ( !isDefined( self ) || !isalive( self ) ) + { + return; + } + if ( isDefined( self.thundergun_fling_func ) ) + { + self [[ self.thundergun_fling_func ]]( player ); + return; + } + self dodamage( self.health + 666, player.origin, player ); + if ( self.health <= 0 ) + { + points = 10; + if ( !index ) + { + points = maps/mp/zombies/_zm_score::get_zombie_death_player_points(); + } + else + { + if ( index == 1 ) + { + points = 30; + } + } + player maps/mp/zombies/_zm_score::player_add_points( "thundergun_fling", points ); + self startragdoll(); + self launchragdoll( fling_vec ); + self.thundergun_death = 1; + } +} + +zombie_knockdown( player, gib ) +{ + if ( gib && !self.gibbed ) + { + self.a.gib_ref = random( level.thundergun_gib_refs ); + self thread maps/mp/animscripts/zm_death::do_gib(); + } + damage = level.zombie_vars[ "thundergun_knockdown_damage" ]; + if ( isDefined( level.override_thundergun_damage_func ) ) + { + self [[ level.override_thundergun_damage_func ]]( player, gib ); + } + else + { + self.thundergun_handle_pain_notetracks = ::handle_thundergun_pain_notetracks; + self dodamage( damage, player.origin, player ); + } +} + +thundergun_knockdown_zombie( player, gib ) +{ + self endon( "death" ); + playsoundatposition( "vox_thundergun_forcehit", self.origin ); + playsoundatposition( "wpn_thundergun_proj_impact", self.origin ); + if ( !isDefined( self ) || !isalive( self ) ) + { + return; + } + if ( isDefined( self.thundergun_knockdown_func ) ) + { + self [[ self.thundergun_knockdown_func ]]( player, gib ); + } + else + { + self dodamage( level.zombie_vars[ "thundergun_knockdown_damage" ], player.origin, player ); + } + if ( gib ) + { + self.a.gib_ref = random( level.thundergun_gib_refs ); + self thread maps/mp/animscripts/zm_death::do_gib(); + } + self.thundergun_handle_pain_notetracks = ::handle_thundergun_pain_notetracks; + self dodamage( level.zombie_vars[ "thundergun_knockdown_damage" ], player.origin, player ); + self playsound( "fly_thundergun_forcehit" ); +} + +handle_thundergun_pain_notetracks( note ) +{ + if ( note == "zombie_knockdown_ground_impact" ) + { + playfx( level._effect[ "thundergun_knockdown_ground" ], self.origin, anglesToForward( self.angles ), anglesToUp( self.angles ) ); + self playsound( "fly_thundergun_forcehit" ); + } +} + +is_thundergun_damage() +{ + if ( isDefined( self.damageweapon ) && self.damageweapon != "thundergun_zm" && self.damageweapon == "thundergun_upgraded_zm" ) + { + if ( self.damagemod != "MOD_GRENADE" ) + { + return self.damagemod != "MOD_GRENADE_SPLASH"; + } + } +} + +enemy_killed_by_thundergun() +{ + if ( isDefined( self.thundergun_death ) ) + { + return self.thundergun_death == 1; + } +} + +thundergun_sound_thread() +{ + self endon( "disconnect" ); + self waittill( "spawned_player" ); + for ( ;; ) + { + result = self waittill_any_return( "grenade_fire", "death", "player_downed", "weapon_change", "grenade_pullback" ); + if ( !isDefined( result ) ) + { + continue; + } + else if ( result != "weapon_change" && result == "grenade_fire" && self getcurrentweapon() == "thundergun_zm" ) + { + self playloopsound( "tesla_idle", 0,25 ); + continue; + } + else + { + self notify( "weap_away" ); + self stoploopsound( 0,25 ); + } + } +} + +setup_thundergun_vox( player, fling, gib, knockdown ) +{ + if ( !isDefined( self ) || !isalive( self ) ) + { + return; + } + if ( !fling || gib && knockdown ) + { + if ( randomintrange( 1, 100 ) <= 25 ) + { + } + } + if ( fling ) + { + if ( randomintrange( 1, 100 ) <= 30 ) + { + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "thundergun" ); + } + } +} diff --git a/faction_cd_mp/maps/mp/teams/_teamset_cd.gsc b/faction_cd_mp/maps/mp/teams/_teamset_cd.gsc new file mode 100644 index 0000000..6215066 --- /dev/null +++ b/faction_cd_mp/maps/mp/teams/_teamset_cd.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "axis" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "cd"; + game[ "defenders" ] = team; + precacheshader( "faction_cd" ); + game[ "entity_headicon_" + team ] = "faction_cd"; + game[ "headicon_" + team ] = "faction_cd"; + level.teamprefix[ team ] = "vox_cd"; + level.teampostfix[ team ] = "cda"; + setdvar( "g_TeamName_" + team, &"MPUI_CD_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "cd" ); + game[ "strings" ][ team + "_win" ] = &"MP_CD_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_CD_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_CD_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_CD_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_CD_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_CD_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_TER"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_TER"; + game[ "music" ][ "victory_" + team ] = "VICTORY_TER"; + game[ "icons" ][ team ] = "faction_cd"; + game[ "voice" ][ team ] = "vox_cda_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_3"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_3_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_cd::precache(); + mpbody/class_lmg_cd::precache(); + mpbody/class_shotgun_cd::precache(); + mpbody/class_smg_cd::precache(); + mpbody/class_sniper_cd::precache(); +} diff --git a/faction_cd_mp/mpbody/class_assault_cd.gsc b/faction_cd_mp/mpbody/class_assault_cd.gsc new file mode 100644 index 0000000..18a19d7 --- /dev/null +++ b/faction_cd_mp/mpbody/class_assault_cd.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_assault_fb" ); + precachemodel( "c_mul_mp_cordis_assault_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_assault_fb" ); + self setviewmodel( "c_mul_mp_cordis_assault_viewhands" ); + heads = []; +} diff --git a/faction_cd_mp/mpbody/class_lmg_cd.gsc b/faction_cd_mp/mpbody/class_lmg_cd.gsc new file mode 100644 index 0000000..6e50af5 --- /dev/null +++ b/faction_cd_mp/mpbody/class_lmg_cd.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_lmg_fb" ); + precachemodel( "c_mul_mp_cordis_lmg_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_lmg_fb" ); + self setviewmodel( "c_mul_mp_cordis_lmg_viewhands" ); + heads = []; +} diff --git a/faction_cd_mp/mpbody/class_shotgun_cd.gsc b/faction_cd_mp/mpbody/class_shotgun_cd.gsc new file mode 100644 index 0000000..4d99eae --- /dev/null +++ b/faction_cd_mp/mpbody/class_shotgun_cd.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_shotgun_fb" ); + precachemodel( "c_mul_mp_cordis_shotgun_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_shotgun_fb" ); + self setviewmodel( "c_mul_mp_cordis_shotgun_viewhands" ); + heads = []; +} diff --git a/faction_cd_mp/mpbody/class_smg_cd.gsc b/faction_cd_mp/mpbody/class_smg_cd.gsc new file mode 100644 index 0000000..ffaa983 --- /dev/null +++ b/faction_cd_mp/mpbody/class_smg_cd.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_smg_fb" ); + precachemodel( "c_mul_mp_cordis_smg_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_smg_fb" ); + self setviewmodel( "c_mul_mp_cordis_smg_viewhands" ); + heads = []; +} diff --git a/faction_cd_mp/mpbody/class_sniper_cd.gsc b/faction_cd_mp/mpbody/class_sniper_cd.gsc new file mode 100644 index 0000000..6caaf15 --- /dev/null +++ b/faction_cd_mp/mpbody/class_sniper_cd.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_sniper_fb" ); + precachemodel( "c_mul_mp_cordis_sniper_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_sniper_fb" ); + self setviewmodel( "c_mul_mp_cordis_sniper_viewhands" ); + heads = []; +} diff --git a/faction_cd_sand_mp/maps/mp/teams/_teamset_cd_sand.gsc b/faction_cd_sand_mp/maps/mp/teams/_teamset_cd_sand.gsc new file mode 100644 index 0000000..3572318 --- /dev/null +++ b/faction_cd_sand_mp/maps/mp/teams/_teamset_cd_sand.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "axis" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "cd"; + game[ "defenders" ] = team; + precacheshader( "faction_cd" ); + game[ "entity_headicon_" + team ] = "faction_cd"; + game[ "headicon_" + team ] = "faction_cd"; + level.teamprefix[ team ] = "vox_cd"; + level.teampostfix[ team ] = "cda"; + setdvar( "g_TeamName_" + team, &"MPUI_CD_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "cd" ); + game[ "strings" ][ team + "_win" ] = &"MP_CD_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_CD_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_CD_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_CD_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_CD_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_CD_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_TER"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_TER"; + game[ "music" ][ "victory_" + team ] = "VICTORY_TER"; + game[ "icons" ][ team ] = "faction_cd"; + game[ "voice" ][ team ] = "vox_cda_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_3"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_3_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_cd_sand::precache(); + mpbody/class_lmg_cd_sand::precache(); + mpbody/class_shotgun_cd_sand::precache(); + mpbody/class_smg_cd_sand::precache(); + mpbody/class_sniper_cd_sand::precache(); +} diff --git a/faction_cd_sand_mp/mpbody/class_assault_cd_sand.gsc b/faction_cd_sand_mp/mpbody/class_assault_cd_sand.gsc new file mode 100644 index 0000000..b052612 --- /dev/null +++ b/faction_cd_sand_mp/mpbody/class_assault_cd_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_assault_ca_fb" ); + precachemodel( "c_mul_mp_cordis_assault_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_assault_ca_fb" ); + self setviewmodel( "c_mul_mp_cordis_assault_viewhands" ); + heads = []; +} diff --git a/faction_cd_sand_mp/mpbody/class_lmg_cd_sand.gsc b/faction_cd_sand_mp/mpbody/class_lmg_cd_sand.gsc new file mode 100644 index 0000000..38cc98c --- /dev/null +++ b/faction_cd_sand_mp/mpbody/class_lmg_cd_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_lmg_ca_fb" ); + precachemodel( "c_mul_mp_cordis_lmg_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_lmg_ca_fb" ); + self setviewmodel( "c_mul_mp_cordis_lmg_viewhands" ); + heads = []; +} diff --git a/faction_cd_sand_mp/mpbody/class_shotgun_cd_sand.gsc b/faction_cd_sand_mp/mpbody/class_shotgun_cd_sand.gsc new file mode 100644 index 0000000..42bc41e --- /dev/null +++ b/faction_cd_sand_mp/mpbody/class_shotgun_cd_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_shotgun_ca_fb" ); + precachemodel( "c_mul_mp_cordis_shotgun_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_shotgun_ca_fb" ); + self setviewmodel( "c_mul_mp_cordis_shotgun_viewhands" ); + heads = []; +} diff --git a/faction_cd_sand_mp/mpbody/class_smg_cd_sand.gsc b/faction_cd_sand_mp/mpbody/class_smg_cd_sand.gsc new file mode 100644 index 0000000..e5e08d8 --- /dev/null +++ b/faction_cd_sand_mp/mpbody/class_smg_cd_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_smg_ca_fb" ); + precachemodel( "c_mul_mp_cordis_smg_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_smg_ca_fb" ); + self setviewmodel( "c_mul_mp_cordis_smg_ca_viewhands" ); + heads = []; +} diff --git a/faction_cd_sand_mp/mpbody/class_sniper_cd_sand.gsc b/faction_cd_sand_mp/mpbody/class_sniper_cd_sand.gsc new file mode 100644 index 0000000..ac2503c --- /dev/null +++ b/faction_cd_sand_mp/mpbody/class_sniper_cd_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_sniper_ca_fb" ); + precachemodel( "c_mul_mp_cordis_sniper_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_sniper_ca_fb" ); + self setviewmodel( "c_mul_mp_cordis_sniper_ca_viewhands" ); + heads = []; +} diff --git a/faction_fbi_mp/maps/mp/teams/_teamset_fbi.gsc b/faction_fbi_mp/maps/mp/teams/_teamset_fbi.gsc new file mode 100644 index 0000000..828eafb --- /dev/null +++ b/faction_fbi_mp/maps/mp/teams/_teamset_fbi.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "allies" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "fbi"; + game[ "attackers" ] = team; + precacheshader( "faction_fbi" ); + game[ "entity_headicon_" + team ] = "faction_fbi"; + game[ "headicon_" + team ] = "faction_fbi"; + level.teamprefix[ team ] = "vox_hr"; + level.teampostfix[ team ] = "hrt"; + setdvar( "g_TeamName_" + team, &"MPUI_FBI_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_fbi" ); + game[ "strings" ][ team + "_win" ] = &"MP_FBI_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_FBI_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_FBI_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_FBI_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_FBI_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_FBI_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_FBI"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_FBI"; + game[ "music" ][ "victory_" + team ] = "VICTORY_FBI"; + game[ "icons" ][ team ] = "faction_fbi"; + game[ "voice" ][ team ] = "vox_fbi_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_2"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_2_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_usa_fbi::precache(); + mpbody/class_lmg_usa_fbi::precache(); + mpbody/class_shotgun_usa_fbi::precache(); + mpbody/class_smg_usa_fbi::precache(); + mpbody/class_sniper_usa_fbi::precache(); +} diff --git a/faction_fbi_mp/mpbody/class_assault_usa_fbi.gsc b/faction_fbi_mp/mpbody/class_assault_usa_fbi.gsc new file mode 100644 index 0000000..e397e6f --- /dev/null +++ b/faction_fbi_mp/mpbody/class_assault_usa_fbi.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_assault_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_assault_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_fbi_mp/mpbody/class_lmg_usa_fbi.gsc b/faction_fbi_mp/mpbody/class_lmg_usa_fbi.gsc new file mode 100644 index 0000000..1941df6 --- /dev/null +++ b/faction_fbi_mp/mpbody/class_lmg_usa_fbi.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_lmg_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_lmg_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_fbi_mp/mpbody/class_shotgun_usa_fbi.gsc b/faction_fbi_mp/mpbody/class_shotgun_usa_fbi.gsc new file mode 100644 index 0000000..44d06fd --- /dev/null +++ b/faction_fbi_mp/mpbody/class_shotgun_usa_fbi.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_shotgun_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_shotgun_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_fbi_mp/mpbody/class_smg_usa_fbi.gsc b/faction_fbi_mp/mpbody/class_smg_usa_fbi.gsc new file mode 100644 index 0000000..7f75ce2 --- /dev/null +++ b/faction_fbi_mp/mpbody/class_smg_usa_fbi.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_smg_fb" ); + precachemodel( "c_usa_mp_fbi_shortsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_smg_fb" ); + self setviewmodel( "c_usa_mp_fbi_shortsleeve_viewhands" ); + heads = []; +} diff --git a/faction_fbi_mp/mpbody/class_sniper_usa_fbi.gsc b/faction_fbi_mp/mpbody/class_sniper_usa_fbi.gsc new file mode 100644 index 0000000..42b3557 --- /dev/null +++ b/faction_fbi_mp/mpbody/class_sniper_usa_fbi.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_sniper_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_sniper_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_isa_mp/maps/mp/teams/_teamset_isa.gsc b/faction_isa_mp/maps/mp/teams/_teamset_isa.gsc new file mode 100644 index 0000000..19f6895 --- /dev/null +++ b/faction_isa_mp/maps/mp/teams/_teamset_isa.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "allies" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "isa"; + game[ "attackers" ] = team; + precacheshader( "faction_isa" ); + game[ "entity_headicon_" + team ] = "faction_isa"; + game[ "headicon_" + team ] = "faction_isa"; + level.teamprefix[ team ] = "vox_is"; + level.teampostfix[ team ] = "isa"; + setdvar( "g_TeamName_" + team, &"MPUI_ISA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "isa" ); + game[ "strings" ][ team + "_win" ] = &"MP_ISA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_ISA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_ISA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_ISA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_ISA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_ISA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_CIA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_CIA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_CIA"; + game[ "icons" ][ team ] = "faction_isa"; + game[ "voice" ][ team ] = "vox_isa_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_3"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_3_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_isa::precache(); + mpbody/class_lmg_isa::precache(); + mpbody/class_shotgun_isa::precache(); + mpbody/class_smg_isa::precache(); + mpbody/class_sniper_isa::precache(); +} diff --git a/faction_isa_mp/mpbody/class_assault_isa.gsc b/faction_isa_mp/mpbody/class_assault_isa.gsc new file mode 100644 index 0000000..9db8fa3 --- /dev/null +++ b/faction_isa_mp/mpbody/class_assault_isa.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_assault_fb" ); + precachemodel( "c_usa_mp_isa_assault_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_assault_fb" ); + self setviewmodel( "c_usa_mp_isa_assault_viewhands" ); + heads = []; +} diff --git a/faction_isa_mp/mpbody/class_lmg_isa.gsc b/faction_isa_mp/mpbody/class_lmg_isa.gsc new file mode 100644 index 0000000..35d0774 --- /dev/null +++ b/faction_isa_mp/mpbody/class_lmg_isa.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_lmg_fb" ); + precachemodel( "c_usa_mp_isa_lmg_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_lmg_fb" ); + self setviewmodel( "c_usa_mp_isa_lmg_viewhands" ); + heads = []; +} diff --git a/faction_isa_mp/mpbody/class_shotgun_isa.gsc b/faction_isa_mp/mpbody/class_shotgun_isa.gsc new file mode 100644 index 0000000..3f99d0c --- /dev/null +++ b/faction_isa_mp/mpbody/class_shotgun_isa.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_shotgun_fb" ); + precachemodel( "c_usa_mp_isa_shotgun_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_shotgun_fb" ); + self setviewmodel( "c_usa_mp_isa_shotgun_viewhands" ); + heads = []; +} diff --git a/faction_isa_mp/mpbody/class_smg_isa.gsc b/faction_isa_mp/mpbody/class_smg_isa.gsc new file mode 100644 index 0000000..3435902 --- /dev/null +++ b/faction_isa_mp/mpbody/class_smg_isa.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_smg_fb" ); + precachemodel( "c_usa_mp_isa_smg_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_smg_fb" ); + self setviewmodel( "c_usa_mp_isa_smg_viewhands" ); + heads = []; +} diff --git a/faction_isa_mp/mpbody/class_sniper_isa.gsc b/faction_isa_mp/mpbody/class_sniper_isa.gsc new file mode 100644 index 0000000..ff1d64b --- /dev/null +++ b/faction_isa_mp/mpbody/class_sniper_isa.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_sniper_fb" ); + precachemodel( "c_usa_mp_isa_sniper_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_sniper_fb" ); + self setviewmodel( "c_usa_mp_isa_sniper_viewhands" ); + heads = []; +} diff --git a/faction_isa_sand_mp/maps/mp/teams/_teamset_isa_sand.gsc b/faction_isa_sand_mp/maps/mp/teams/_teamset_isa_sand.gsc new file mode 100644 index 0000000..cacb633 --- /dev/null +++ b/faction_isa_sand_mp/maps/mp/teams/_teamset_isa_sand.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "allies" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "isa"; + game[ "attackers" ] = team; + precacheshader( "faction_isa" ); + game[ "entity_headicon_" + team ] = "faction_isa"; + game[ "headicon_" + team ] = "faction_isa"; + level.teamprefix[ team ] = "vox_is"; + level.teampostfix[ team ] = "isa"; + setdvar( "g_TeamName_" + team, &"MPUI_ISA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "isa" ); + game[ "strings" ][ team + "_win" ] = &"MP_ISA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_ISA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_ISA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_ISA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_ISA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_ISA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_CIA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_CIA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_CIA"; + game[ "icons" ][ team ] = "faction_isa"; + game[ "voice" ][ team ] = "vox_isa_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_3"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_3_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_isa_sand::precache(); + mpbody/class_lmg_isa_sand::precache(); + mpbody/class_shotgun_isa_sand::precache(); + mpbody/class_smg_isa_sand::precache(); + mpbody/class_sniper_isa_sand::precache(); +} diff --git a/faction_isa_sand_mp/mpbody/class_assault_isa_sand.gsc b/faction_isa_sand_mp/mpbody/class_assault_isa_sand.gsc new file mode 100644 index 0000000..3be0b2f --- /dev/null +++ b/faction_isa_sand_mp/mpbody/class_assault_isa_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_assault_ca_fb" ); + precachemodel( "c_usa_mp_isa_assault_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_assault_ca_fb" ); + self setviewmodel( "c_usa_mp_isa_assault_ca_viewhands" ); + heads = []; +} diff --git a/faction_isa_sand_mp/mpbody/class_lmg_isa_sand.gsc b/faction_isa_sand_mp/mpbody/class_lmg_isa_sand.gsc new file mode 100644 index 0000000..d789f2b --- /dev/null +++ b/faction_isa_sand_mp/mpbody/class_lmg_isa_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_lmg_ca_fb" ); + precachemodel( "c_usa_mp_isa_lmg_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_lmg_ca_fb" ); + self setviewmodel( "c_usa_mp_isa_lmg_ca_viewhands" ); + heads = []; +} diff --git a/faction_isa_sand_mp/mpbody/class_shotgun_isa_sand.gsc b/faction_isa_sand_mp/mpbody/class_shotgun_isa_sand.gsc new file mode 100644 index 0000000..f4ec45c --- /dev/null +++ b/faction_isa_sand_mp/mpbody/class_shotgun_isa_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_shotgun_ca_fb" ); + precachemodel( "c_usa_mp_isa_shotgun_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_shotgun_ca_fb" ); + self setviewmodel( "c_usa_mp_isa_shotgun_ca_viewhands" ); + heads = []; +} diff --git a/faction_isa_sand_mp/mpbody/class_smg_isa_sand.gsc b/faction_isa_sand_mp/mpbody/class_smg_isa_sand.gsc new file mode 100644 index 0000000..51ff032 --- /dev/null +++ b/faction_isa_sand_mp/mpbody/class_smg_isa_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_smg_ca_fb" ); + precachemodel( "c_usa_mp_isa_smg_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_smg_ca_fb" ); + self setviewmodel( "c_usa_mp_isa_smg_ca_viewhands" ); + heads = []; +} diff --git a/faction_isa_sand_mp/mpbody/class_sniper_isa_sand.gsc b/faction_isa_sand_mp/mpbody/class_sniper_isa_sand.gsc new file mode 100644 index 0000000..390993d --- /dev/null +++ b/faction_isa_sand_mp/mpbody/class_sniper_isa_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_sniper_ca_fb" ); + precachemodel( "c_usa_mp_isa_sniper_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_sniper_ca_fb" ); + self setviewmodel( "c_usa_mp_isa_sniper_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_mp/maps/mp/teams/_teamset_multiteam.gsc b/faction_multiteam_mp/maps/mp/teams/_teamset_multiteam.gsc new file mode 100644 index 0000000..ca9f41a --- /dev/null +++ b/faction_multiteam_mp/maps/mp/teams/_teamset_multiteam.gsc @@ -0,0 +1,211 @@ +#include maps/mp/teams/_teamset; + +main() +{ + maps/mp/teams/_teamset::init(); + init_seals( "allies" ); + init_pla( "axis" ); + init_fbi( "team3" ); + init_pmc( "team4" ); + init_isa( "team5" ); + init_cd( "team6" ); + init_seals( "team7" ); + init_seals( "team8" ); + precache(); +} + +precache() +{ + mpbody/class_assault_usa_seals::precache(); + mpbody/class_assault_usa_fbi::precache(); + mpbody/class_assault_rus_pmc::precache(); + mpbody/class_assault_chn_pla::precache(); + mpbody/class_assault_isa::precache(); + mpbody/class_assault_cd::precache(); +} + +init_seals( team ) +{ + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_pmc( team ) +{ + game[ team ] = "pmc"; + game[ "defenders" ] = team; + precacheshader( "faction_pmc" ); + game[ "entity_headicon_" + team ] = "faction_pmc"; + game[ "headicon_" + team ] = "faction_pmc"; + level.teamprefix[ team ] = "vox_pm"; + level.teampostfix[ team ] = "pmc"; + setdvar( "g_TeamName_" + team, &"MPUI_PMC_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "rus_pmc" ); + game[ "strings" ][ team + "_win" ] = &"MP_PMC_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PMC_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PMC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PMC_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PMC_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PMC_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PMC"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PMC"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PMC"; + game[ "icons" ][ team ] = "faction_pmc"; + game[ "voice" ][ team ] = "vox_pmc_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_pla( team ) +{ + game[ team ] = "pla"; + game[ "defenders" ] = team; + precacheshader( "faction_pla" ); + game[ "entity_headicon_" + team ] = "faction_pla"; + game[ "headicon_" + team ] = "faction_pla"; + level.teamprefix[ team ] = "vox_ch"; + level.teampostfix[ team ] = "pla"; + setdvar( "g_TeamName_" + team, &"MPUI_PLA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "chn_pla" ); + game[ "strings" ][ team + "_win" ] = &"MP_PLA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PLA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PLA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PLA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PLA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PLA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PLA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PLA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PLA"; + game[ "icons" ][ team ] = "faction_pla"; + game[ "voice" ][ team ] = "vox_pla_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_fbi( team ) +{ + game[ team ] = "fbi"; + game[ "attackers" ] = team; + precacheshader( "faction_fbi" ); + game[ "entity_headicon_" + team ] = "faction_fbi"; + game[ "headicon_" + team ] = "faction_fbi"; + level.teamprefix[ team ] = "vox_fbi"; + level.teampostfix[ team ] = "fbi"; + setdvar( "g_TeamName_" + team, &"MPUI_FBI_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_fbi" ); + game[ "strings" ][ team + "_win" ] = &"MP_FBI_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_FBI_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_FBI_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_FBI_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_FBI_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_FBI_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_FBI"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_FBI"; + game[ "music" ][ "victory_" + team ] = "VICTORY_FBI"; + game[ "icons" ][ team ] = "faction_fbi"; + game[ "voice" ][ team ] = "vox_fbi_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_isa( team ) +{ + game[ team ] = "isa"; + game[ "attackers" ] = team; + precacheshader( "faction_isa" ); + game[ "entity_headicon_" + team ] = "faction_isa"; + game[ "headicon_" + team ] = "faction_isa"; + level.teamprefix[ team ] = "vox_is"; + level.teampostfix[ team ] = "isa"; + setdvar( "g_TeamName_" + team, &"MPUI_ISA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "isa" ); + game[ "strings" ][ team + "_win" ] = &"MP_ISA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_ISA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_ISA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_ISA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_ISA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_ISA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_CIA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_CIA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_CIA"; + game[ "icons" ][ team ] = "faction_isa"; + game[ "voice" ][ team ] = "vox_isa_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_cd( team ) +{ + game[ team ] = "cd"; + game[ "attackers" ] = team; + precacheshader( "faction_cd" ); + game[ "entity_headicon_" + team ] = "faction_cd"; + game[ "headicon_" + team ] = "faction_cd"; + level.teamprefix[ team ] = "vox_cd"; + level.teampostfix[ team ] = "cda"; + setdvar( "g_TeamName_" + team, &"MPUI_CD_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "cd" ); + game[ "strings" ][ team + "_win" ] = &"MP_CD_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_CD_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_CD_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_CD_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_CD_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_CD_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_TER"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_TER"; + game[ "music" ][ "victory_" + team ] = "VICTORY_TER"; + game[ "icons" ][ team ] = "faction_cd"; + game[ "voice" ][ team ] = "vox_cda_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_cd2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} diff --git a/faction_multiteam_mp/mpbody/class_assault_cd.gsc b/faction_multiteam_mp/mpbody/class_assault_cd.gsc new file mode 100644 index 0000000..18a19d7 --- /dev/null +++ b/faction_multiteam_mp/mpbody/class_assault_cd.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_assault_fb" ); + precachemodel( "c_mul_mp_cordis_assault_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_assault_fb" ); + self setviewmodel( "c_mul_mp_cordis_assault_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_mp/mpbody/class_assault_chn_pla.gsc b/faction_multiteam_mp/mpbody/class_assault_chn_pla.gsc new file mode 100644 index 0000000..e42afea --- /dev/null +++ b/faction_multiteam_mp/mpbody/class_assault_chn_pla.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_assault_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_assault_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_mp/mpbody/class_assault_isa.gsc b/faction_multiteam_mp/mpbody/class_assault_isa.gsc new file mode 100644 index 0000000..9db8fa3 --- /dev/null +++ b/faction_multiteam_mp/mpbody/class_assault_isa.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_assault_fb" ); + precachemodel( "c_usa_mp_isa_assault_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_assault_fb" ); + self setviewmodel( "c_usa_mp_isa_assault_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_mp/mpbody/class_assault_rus_pmc.gsc b/faction_multiteam_mp/mpbody/class_assault_rus_pmc.gsc new file mode 100644 index 0000000..a702e9d --- /dev/null +++ b/faction_multiteam_mp/mpbody/class_assault_rus_pmc.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_assault_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_assault_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_mp/mpbody/class_assault_usa_fbi.gsc b/faction_multiteam_mp/mpbody/class_assault_usa_fbi.gsc new file mode 100644 index 0000000..e397e6f --- /dev/null +++ b/faction_multiteam_mp/mpbody/class_assault_usa_fbi.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_assault_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_assault_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_mp/mpbody/class_assault_usa_seals.gsc b/faction_multiteam_mp/mpbody/class_assault_usa_seals.gsc new file mode 100644 index 0000000..89219e7 --- /dev/null +++ b/faction_multiteam_mp/mpbody/class_assault_usa_seals.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_sand_mp/maps/mp/teams/_teamset_multiteam_sand.gsc b/faction_multiteam_sand_mp/maps/mp/teams/_teamset_multiteam_sand.gsc new file mode 100644 index 0000000..4166ae6 --- /dev/null +++ b/faction_multiteam_sand_mp/maps/mp/teams/_teamset_multiteam_sand.gsc @@ -0,0 +1,211 @@ +#include maps/mp/teams/_teamset; + +main() +{ + maps/mp/teams/_teamset::init(); + init_seals( "allies" ); + init_pla( "axis" ); + init_fbi( "team3" ); + init_pmc( "team4" ); + init_isa( "team5" ); + init_cd( "team6" ); + init_seals( "team7" ); + init_seals( "team8" ); + precache(); +} + +precache() +{ + mpbody/class_assault_usa_seals_sand::precache(); + mpbody/class_assault_usa_fbi_sand::precache(); + mpbody/class_assault_rus_pmc_sand::precache(); + mpbody/class_assault_chn_pla_sand::precache(); + mpbody/class_assault_isa_sand::precache(); + mpbody/class_assault_cd_sand::precache(); +} + +init_seals( team ) +{ + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_pmc( team ) +{ + game[ team ] = "pmc"; + game[ "defenders" ] = team; + precacheshader( "faction_pmc" ); + game[ "entity_headicon_" + team ] = "faction_pmc"; + game[ "headicon_" + team ] = "faction_pmc"; + level.teamprefix[ team ] = "vox_pm"; + level.teampostfix[ team ] = "pmc"; + setdvar( "g_TeamName_" + team, &"MPUI_PMC_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "rus_pmc" ); + game[ "strings" ][ team + "_win" ] = &"MP_PMC_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PMC_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PMC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PMC_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PMC_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PMC_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PMC"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PMC"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PMC"; + game[ "icons" ][ team ] = "faction_pmc"; + game[ "voice" ][ team ] = "vox_pmc_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_pla( team ) +{ + game[ team ] = "pla"; + game[ "defenders" ] = team; + precacheshader( "faction_pla" ); + game[ "entity_headicon_" + team ] = "faction_pla"; + game[ "headicon_" + team ] = "faction_pla"; + level.teamprefix[ team ] = "vox_ch"; + level.teampostfix[ team ] = "pla"; + setdvar( "g_TeamName_" + team, &"MPUI_PLA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "chn_pla" ); + game[ "strings" ][ team + "_win" ] = &"MP_PLA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PLA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PLA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PLA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PLA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PLA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PLA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PLA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PLA"; + game[ "icons" ][ team ] = "faction_pla"; + game[ "voice" ][ team ] = "vox_pla_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_fbi( team ) +{ + game[ team ] = "fbi"; + game[ "attackers" ] = team; + precacheshader( "faction_fbi" ); + game[ "entity_headicon_" + team ] = "faction_fbi"; + game[ "headicon_" + team ] = "faction_fbi"; + level.teamprefix[ team ] = "vox_hr"; + level.teampostfix[ team ] = "hrt"; + setdvar( "g_TeamName_" + team, &"MPUI_FBI_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_fbi" ); + game[ "strings" ][ team + "_win" ] = &"MP_FBI_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_FBI_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_FBI_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_FBI_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_FBI_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_FBI_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_FBI"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_FBI"; + game[ "music" ][ "victory_" + team ] = "VICTORY_FBI"; + game[ "icons" ][ team ] = "faction_fbi"; + game[ "voice" ][ team ] = "vox_fbi_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_isa( team ) +{ + game[ team ] = "isa"; + game[ "attackers" ] = team; + precacheshader( "faction_isa" ); + game[ "entity_headicon_" + team ] = "faction_isa"; + game[ "headicon_" + team ] = "faction_isa"; + level.teamprefix[ team ] = "vox_is"; + level.teampostfix[ team ] = "isa"; + setdvar( "g_TeamName_" + team, &"MPUI_ISA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "isa" ); + game[ "strings" ][ team + "_win" ] = &"MP_ISA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_ISA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_ISA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_ISA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_ISA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_ISA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_CIA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_CIA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_CIA"; + game[ "icons" ][ team ] = "faction_isa"; + game[ "voice" ][ team ] = "vox_isa_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_cd( team ) +{ + game[ team ] = "cd"; + game[ "attackers" ] = team; + precacheshader( "faction_cd" ); + game[ "entity_headicon_" + team ] = "faction_cd"; + game[ "headicon_" + team ] = "faction_cd"; + level.teamprefix[ team ] = "vox_cd"; + level.teampostfix[ team ] = "cda"; + setdvar( "g_TeamName_" + team, &"MPUI_CD_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "cd" ); + game[ "strings" ][ team + "_win" ] = &"MP_CD_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_CD_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_CD_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_CD_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_CD_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_CD_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_TER"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_TER"; + game[ "music" ][ "victory_" + team ] = "VICTORY_TER"; + game[ "icons" ][ team ] = "faction_cd"; + game[ "voice" ][ team ] = "vox_cda_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_cd2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} diff --git a/faction_multiteam_sand_mp/mpbody/class_assault_cd_sand.gsc b/faction_multiteam_sand_mp/mpbody/class_assault_cd_sand.gsc new file mode 100644 index 0000000..b052612 --- /dev/null +++ b/faction_multiteam_sand_mp/mpbody/class_assault_cd_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_assault_ca_fb" ); + precachemodel( "c_mul_mp_cordis_assault_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_assault_ca_fb" ); + self setviewmodel( "c_mul_mp_cordis_assault_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_sand_mp/mpbody/class_assault_chn_pla_sand.gsc b/faction_multiteam_sand_mp/mpbody/class_assault_chn_pla_sand.gsc new file mode 100644 index 0000000..e42afea --- /dev/null +++ b/faction_multiteam_sand_mp/mpbody/class_assault_chn_pla_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_assault_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_assault_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_sand_mp/mpbody/class_assault_isa_sand.gsc b/faction_multiteam_sand_mp/mpbody/class_assault_isa_sand.gsc new file mode 100644 index 0000000..3be0b2f --- /dev/null +++ b/faction_multiteam_sand_mp/mpbody/class_assault_isa_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_assault_ca_fb" ); + precachemodel( "c_usa_mp_isa_assault_ca_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_assault_ca_fb" ); + self setviewmodel( "c_usa_mp_isa_assault_ca_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_sand_mp/mpbody/class_assault_rus_pmc_sand.gsc b/faction_multiteam_sand_mp/mpbody/class_assault_rus_pmc_sand.gsc new file mode 100644 index 0000000..7810f7f --- /dev/null +++ b/faction_multiteam_sand_mp/mpbody/class_assault_rus_pmc_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_assault_fb" ); + precachemodel( "c_mul_mp_pmc_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_assault_fb" ); + self setviewmodel( "c_mul_mp_pmc_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_sand_mp/mpbody/class_assault_usa_fbi_sand.gsc b/faction_multiteam_sand_mp/mpbody/class_assault_usa_fbi_sand.gsc new file mode 100644 index 0000000..e397e6f --- /dev/null +++ b/faction_multiteam_sand_mp/mpbody/class_assault_usa_fbi_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_assault_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_assault_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_sand_mp/mpbody/class_assault_usa_seals_sand.gsc b/faction_multiteam_sand_mp/mpbody/class_assault_usa_seals_sand.gsc new file mode 100644 index 0000000..89219e7 --- /dev/null +++ b/faction_multiteam_sand_mp/mpbody/class_assault_usa_seals_sand.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_snow_mp/maps/mp/teams/_teamset_multiteam_snow.gsc b/faction_multiteam_snow_mp/maps/mp/teams/_teamset_multiteam_snow.gsc new file mode 100644 index 0000000..8262050 --- /dev/null +++ b/faction_multiteam_snow_mp/maps/mp/teams/_teamset_multiteam_snow.gsc @@ -0,0 +1,211 @@ +#include maps/mp/teams/_teamset; + +main() +{ + maps/mp/teams/_teamset::init(); + init_seals( "allies" ); + init_pla( "axis" ); + init_fbi( "team3" ); + init_pmc( "team4" ); + init_isa( "team5" ); + init_cd( "team6" ); + init_seals( "team7" ); + init_seals( "team8" ); + precache(); +} + +precache() +{ + mpbody/class_assault_usa_seals_snow::precache(); + mpbody/class_assault_usa_fbi_snow::precache(); + mpbody/class_assault_rus_pmc_snow::precache(); + mpbody/class_assault_chn_pla_snow::precache(); + mpbody/class_assault_isa_snow::precache(); + mpbody/class_assault_cd_snow::precache(); +} + +init_seals( team ) +{ + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_pmc( team ) +{ + game[ team ] = "pmc"; + game[ "defenders" ] = team; + precacheshader( "faction_pmc" ); + game[ "entity_headicon_" + team ] = "faction_pmc"; + game[ "headicon_" + team ] = "faction_pmc"; + level.teamprefix[ team ] = "vox_pm"; + level.teampostfix[ team ] = "pmc"; + setdvar( "g_TeamName_" + team, &"MPUI_PMC_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "rus_pmc" ); + game[ "strings" ][ team + "_win" ] = &"MP_PMC_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PMC_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PMC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PMC_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PMC_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PMC_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PMC"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PMC"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PMC"; + game[ "icons" ][ team ] = "faction_pmc"; + game[ "voice" ][ team ] = "vox_pmc_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_pla( team ) +{ + game[ team ] = "pla"; + game[ "defenders" ] = team; + precacheshader( "faction_pla" ); + game[ "entity_headicon_" + team ] = "faction_pla"; + game[ "headicon_" + team ] = "faction_pla"; + level.teamprefix[ team ] = "vox_ch"; + level.teampostfix[ team ] = "pla"; + setdvar( "g_TeamName_" + team, &"MPUI_PLA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "chn_pla" ); + game[ "strings" ][ team + "_win" ] = &"MP_PLA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PLA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PLA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PLA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PLA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PLA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PLA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PLA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PLA"; + game[ "icons" ][ team ] = "faction_pla"; + game[ "voice" ][ team ] = "vox_pla_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_fbi( team ) +{ + game[ team ] = "fbi"; + game[ "attackers" ] = team; + precacheshader( "faction_fbi" ); + game[ "entity_headicon_" + team ] = "faction_fbi"; + game[ "headicon_" + team ] = "faction_fbi"; + level.teamprefix[ team ] = "vox_hr"; + level.teampostfix[ team ] = "hrt"; + setdvar( "g_TeamName_" + team, &"MPUI_FBI_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_fbi" ); + game[ "strings" ][ team + "_win" ] = &"MP_FBI_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_FBI_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_FBI_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_FBI_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_FBI_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_FBI_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_FBI"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_FBI"; + game[ "music" ][ "victory_" + team ] = "VICTORY_FBI"; + game[ "icons" ][ team ] = "faction_fbi"; + game[ "voice" ][ team ] = "vox_fbi_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_isa( team ) +{ + game[ team ] = "isa"; + game[ "attackers" ] = team; + precacheshader( "faction_isa" ); + game[ "entity_headicon_" + team ] = "faction_isa"; + game[ "headicon_" + team ] = "faction_isa"; + level.teamprefix[ team ] = "vox_is"; + level.teampostfix[ team ] = "isa"; + setdvar( "g_TeamName_" + team, &"MPUI_ISA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "isa" ); + game[ "strings" ][ team + "_win" ] = &"MP_ISA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_ISA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_ISA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_ISA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_ISA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_ISA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_CIA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_CIA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_CIA"; + game[ "icons" ][ team ] = "faction_isa"; + game[ "voice" ][ team ] = "vox_isa_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_cd( team ) +{ + game[ team ] = "cd"; + game[ "attackers" ] = team; + precacheshader( "faction_cd" ); + game[ "entity_headicon_" + team ] = "faction_cd"; + game[ "headicon_" + team ] = "faction_cd"; + level.teamprefix[ team ] = "vox_cd"; + level.teampostfix[ team ] = "cda"; + setdvar( "g_TeamName_" + team, &"MPUI_CD_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "cd" ); + game[ "strings" ][ team + "_win" ] = &"MP_CD_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_CD_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_CD_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_CD_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_CD_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_CD_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_TER"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_TER"; + game[ "music" ][ "victory_" + team ] = "VICTORY_TER"; + game[ "icons" ][ team ] = "faction_cd"; + game[ "voice" ][ team ] = "vox_cda_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_cd2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} diff --git a/faction_multiteam_snow_mp/mpbody/class_assault_cd_snow.gsc b/faction_multiteam_snow_mp/mpbody/class_assault_cd_snow.gsc new file mode 100644 index 0000000..0295e25 --- /dev/null +++ b/faction_multiteam_snow_mp/mpbody/class_assault_cd_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_assault_snw_fb" ); + precachemodel( "c_mul_mp_cordis_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_assault_snw_fb" ); + self setviewmodel( "c_mul_mp_cordis_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_snow_mp/mpbody/class_assault_chn_pla_snow.gsc b/faction_multiteam_snow_mp/mpbody/class_assault_chn_pla_snow.gsc new file mode 100644 index 0000000..9d79aad --- /dev/null +++ b/faction_multiteam_snow_mp/mpbody/class_assault_chn_pla_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_assault_snw_fb" ); + precachemodel( "c_chn_mp_pla_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_assault_snw_fb" ); + self setviewmodel( "c_chn_mp_pla_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_snow_mp/mpbody/class_assault_isa_snow.gsc b/faction_multiteam_snow_mp/mpbody/class_assault_isa_snow.gsc new file mode 100644 index 0000000..a65c923 --- /dev/null +++ b/faction_multiteam_snow_mp/mpbody/class_assault_isa_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_assault_snw_fb" ); + precachemodel( "c_usa_mp_isa_assault_shortsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_assault_snw_fb" ); + self setviewmodel( "c_usa_mp_isa_assault_shortsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_snow_mp/mpbody/class_assault_rus_pmc_snow.gsc b/faction_multiteam_snow_mp/mpbody/class_assault_rus_pmc_snow.gsc new file mode 100644 index 0000000..4be9aec --- /dev/null +++ b/faction_multiteam_snow_mp/mpbody/class_assault_rus_pmc_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_assault_snw_fb" ); + precachemodel( "c_mul_mp_pmc_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_assault_snw_fb" ); + self setviewmodel( "c_mul_mp_pmc_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_snow_mp/mpbody/class_assault_usa_fbi_snow.gsc b/faction_multiteam_snow_mp/mpbody/class_assault_usa_fbi_snow.gsc new file mode 100644 index 0000000..a847f6e --- /dev/null +++ b/faction_multiteam_snow_mp/mpbody/class_assault_usa_fbi_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_assault_snw_fb" ); + precachemodel( "c_usa_mp_fbi_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_assault_snw_fb" ); + self setviewmodel( "c_usa_mp_fbi_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_snow_mp/mpbody/class_assault_usa_seals_snow.gsc b/faction_multiteam_snow_mp/mpbody/class_assault_usa_seals_snow.gsc new file mode 100644 index 0000000..dd0cde5 --- /dev/null +++ b/faction_multiteam_snow_mp/mpbody/class_assault_usa_seals_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_snw_fb" ); + precachemodel( "c_usa_mp_seal6_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_snw_fb" ); + self setviewmodel( "c_usa_mp_seal6_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_wet_mp/maps/mp/teams/_teamset_multiteam_wet.gsc b/faction_multiteam_wet_mp/maps/mp/teams/_teamset_multiteam_wet.gsc new file mode 100644 index 0000000..f274b5b --- /dev/null +++ b/faction_multiteam_wet_mp/maps/mp/teams/_teamset_multiteam_wet.gsc @@ -0,0 +1,211 @@ +#include maps/mp/teams/_teamset; + +main() +{ + maps/mp/teams/_teamset::init(); + init_seals( "allies" ); + init_pla( "axis" ); + init_fbi( "team3" ); + init_pmc( "team4" ); + init_isa( "team5" ); + init_cd( "team6" ); + init_seals( "team7" ); + init_seals( "team8" ); + precache(); +} + +precache() +{ + mpbody/class_assault_usa_seals_wet::precache(); + mpbody/class_assault_usa_fbi_wet::precache(); + mpbody/class_assault_rus_pmc_wet::precache(); + mpbody/class_assault_chn_pla_wet::precache(); + mpbody/class_assault_isa_wet::precache(); + mpbody/class_assault_cd_wet::precache(); +} + +init_seals( team ) +{ + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_pmc( team ) +{ + game[ team ] = "pmc"; + game[ "defenders" ] = team; + precacheshader( "faction_pmc" ); + game[ "entity_headicon_" + team ] = "faction_pmc"; + game[ "headicon_" + team ] = "faction_pmc"; + level.teamprefix[ team ] = "vox_pm"; + level.teampostfix[ team ] = "pmc"; + setdvar( "g_TeamName_" + team, &"MPUI_PMC_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "rus_pmc" ); + game[ "strings" ][ team + "_win" ] = &"MP_PMC_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PMC_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PMC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PMC_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PMC_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PMC_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PMC"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PMC"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PMC"; + game[ "icons" ][ team ] = "faction_pmc"; + game[ "voice" ][ team ] = "vox_pmc_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_pla( team ) +{ + game[ team ] = "pla"; + game[ "defenders" ] = team; + precacheshader( "faction_pla" ); + game[ "entity_headicon_" + team ] = "faction_pla"; + game[ "headicon_" + team ] = "faction_pla"; + level.teamprefix[ team ] = "vox_ch"; + level.teampostfix[ team ] = "pla"; + setdvar( "g_TeamName_" + team, &"MPUI_PLA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "chn_pla" ); + game[ "strings" ][ team + "_win" ] = &"MP_PLA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PLA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PLA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PLA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PLA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PLA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PLA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PLA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PLA"; + game[ "icons" ][ team ] = "faction_pla"; + game[ "voice" ][ team ] = "vox_pla_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +init_fbi( team ) +{ + game[ team ] = "fbi"; + game[ "attackers" ] = team; + precacheshader( "faction_fbi" ); + game[ "entity_headicon_" + team ] = "faction_fbi"; + game[ "headicon_" + team ] = "faction_fbi"; + level.teamprefix[ team ] = "vox_hr"; + level.teampostfix[ team ] = "hrt"; + setdvar( "g_TeamName_" + team, &"MPUI_FBI_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_fbi" ); + game[ "strings" ][ team + "_win" ] = &"MP_FBI_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_FBI_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_FBI_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_FBI_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_FBI_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_FBI_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_FBI"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_FBI"; + game[ "music" ][ "victory_" + team ] = "VICTORY_FBI"; + game[ "icons" ][ team ] = "faction_fbi"; + game[ "voice" ][ team ] = "vox_fbi_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_isa( team ) +{ + game[ team ] = "isa"; + game[ "attackers" ] = team; + precacheshader( "faction_isa" ); + game[ "entity_headicon_" + team ] = "faction_isa"; + game[ "headicon_" + team ] = "faction_isa"; + level.teamprefix[ team ] = "vox_is"; + level.teampostfix[ team ] = "isa"; + setdvar( "g_TeamName_" + team, &"MPUI_ISA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "isa" ); + game[ "strings" ][ team + "_win" ] = &"MP_ISA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_ISA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_ISA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_ISA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_ISA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_ISA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_CIA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_CIA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_CIA"; + game[ "icons" ][ team ] = "faction_isa"; + game[ "voice" ][ team ] = "vox_isa_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +init_cd( team ) +{ + game[ team ] = "cd"; + game[ "attackers" ] = team; + precacheshader( "faction_cd" ); + game[ "entity_headicon_" + team ] = "faction_cd"; + game[ "headicon_" + team ] = "faction_cd"; + level.teamprefix[ team ] = "vox_cd"; + level.teampostfix[ team ] = "cda"; + setdvar( "g_TeamName_" + team, &"MPUI_CD_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "cd" ); + game[ "strings" ][ team + "_win" ] = &"MP_CD_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_CD_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_CD_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_CD_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_CD_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_CD_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_TER"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_TER"; + game[ "music" ][ "victory_" + team ] = "VICTORY_TER"; + game[ "icons" ][ team ] = "faction_cd"; + game[ "voice" ][ team ] = "vox_cda_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_cd2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} diff --git a/faction_multiteam_wet_mp/mpbody/class_assault_cd_wet.gsc b/faction_multiteam_wet_mp/mpbody/class_assault_cd_wet.gsc new file mode 100644 index 0000000..1d3a022 --- /dev/null +++ b/faction_multiteam_wet_mp/mpbody/class_assault_cd_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_cordis_assault_w_fb" ); + precachemodel( "c_mul_mp_cordis_assault_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team6" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_cordis_assault_w_fb" ); + self setviewmodel( "c_mul_mp_cordis_assault_w_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_wet_mp/mpbody/class_assault_chn_pla_wet.gsc b/faction_multiteam_wet_mp/mpbody/class_assault_chn_pla_wet.gsc new file mode 100644 index 0000000..f7fea55 --- /dev/null +++ b/faction_multiteam_wet_mp/mpbody/class_assault_chn_pla_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_assault_w_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_assault_w_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_wet_mp/mpbody/class_assault_isa_wet.gsc b/faction_multiteam_wet_mp/mpbody/class_assault_isa_wet.gsc new file mode 100644 index 0000000..70859cc --- /dev/null +++ b/faction_multiteam_wet_mp/mpbody/class_assault_isa_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_isa_assault_w_fb" ); + precachemodel( "c_usa_mp_isa_assault_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team5" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_isa_assault_w_fb" ); + self setviewmodel( "c_usa_mp_isa_assault_w_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_wet_mp/mpbody/class_assault_rus_pmc_wet.gsc b/faction_multiteam_wet_mp/mpbody/class_assault_rus_pmc_wet.gsc new file mode 100644 index 0000000..b16775a --- /dev/null +++ b/faction_multiteam_wet_mp/mpbody/class_assault_rus_pmc_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_assault_w_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_assault_w_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_wet_mp/mpbody/class_assault_usa_fbi_wet.gsc b/faction_multiteam_wet_mp/mpbody/class_assault_usa_fbi_wet.gsc new file mode 100644 index 0000000..3eda7e5 --- /dev/null +++ b/faction_multiteam_wet_mp/mpbody/class_assault_usa_fbi_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_fbi_assault_w_fb" ); + precachemodel( "c_usa_mp_fbi_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team3" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_fbi_assault_w_fb" ); + self setviewmodel( "c_usa_mp_fbi_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_multiteam_wet_mp/mpbody/class_assault_usa_seals_wet.gsc b/faction_multiteam_wet_mp/mpbody/class_assault_usa_seals_wet.gsc new file mode 100644 index 0000000..9759afd --- /dev/null +++ b/faction_multiteam_wet_mp/mpbody/class_assault_usa_seals_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_w_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_w_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_pla_mp/maps/mp/teams/_teamset_pla.gsc b/faction_pla_mp/maps/mp/teams/_teamset_pla.gsc new file mode 100644 index 0000000..14cc380 --- /dev/null +++ b/faction_pla_mp/maps/mp/teams/_teamset_pla.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "axis" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "pla"; + game[ "defenders" ] = team; + precacheshader( "faction_pla" ); + game[ "entity_headicon_" + team ] = "faction_pla"; + game[ "headicon_" + team ] = "faction_pla"; + level.teamprefix[ team ] = "vox_ch"; + level.teampostfix[ team ] = "pla"; + setdvar( "g_TeamName_" + team, &"MPUI_PLA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "chn_pla" ); + game[ "strings" ][ team + "_win" ] = &"MP_PLA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PLA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PLA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PLA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PLA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PLA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PLA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PLA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PLA"; + game[ "icons" ][ team ] = "faction_pla"; + game[ "voice" ][ team ] = "vox_pla_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_chn_pla::precache(); + mpbody/class_lmg_chn_pla::precache(); + mpbody/class_shotgun_chn_pla::precache(); + mpbody/class_smg_chn_pla::precache(); + mpbody/class_sniper_chn_pla::precache(); +} diff --git a/faction_pla_mp/mpbody/class_assault_chn_pla.gsc b/faction_pla_mp/mpbody/class_assault_chn_pla.gsc new file mode 100644 index 0000000..e42afea --- /dev/null +++ b/faction_pla_mp/mpbody/class_assault_chn_pla.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_assault_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_assault_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pla_mp/mpbody/class_lmg_chn_pla.gsc b/faction_pla_mp/mpbody/class_lmg_chn_pla.gsc new file mode 100644 index 0000000..6ac3eed --- /dev/null +++ b/faction_pla_mp/mpbody/class_lmg_chn_pla.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_lmg_fb" ); + precachemodel( "c_chn_mp_pla_armorsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_lmg_fb" ); + self setviewmodel( "c_chn_mp_pla_armorsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pla_mp/mpbody/class_shotgun_chn_pla.gsc b/faction_pla_mp/mpbody/class_shotgun_chn_pla.gsc new file mode 100644 index 0000000..25ce6e4 --- /dev/null +++ b/faction_pla_mp/mpbody/class_shotgun_chn_pla.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_shotgun_fb" ); + precachemodel( "c_chn_mp_pla_armorsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_shotgun_fb" ); + self setviewmodel( "c_chn_mp_pla_armorsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pla_mp/mpbody/class_smg_chn_pla.gsc b/faction_pla_mp/mpbody/class_smg_chn_pla.gsc new file mode 100644 index 0000000..cc2d0b5 --- /dev/null +++ b/faction_pla_mp/mpbody/class_smg_chn_pla.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_smg_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_smg_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pla_mp/mpbody/class_sniper_chn_pla.gsc b/faction_pla_mp/mpbody/class_sniper_chn_pla.gsc new file mode 100644 index 0000000..aafc33d --- /dev/null +++ b/faction_pla_mp/mpbody/class_sniper_chn_pla.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_sniper_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_sniper_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pla_wet_mp/maps/mp/teams/_teamset_pla_wet.gsc b/faction_pla_wet_mp/maps/mp/teams/_teamset_pla_wet.gsc new file mode 100644 index 0000000..31339de --- /dev/null +++ b/faction_pla_wet_mp/maps/mp/teams/_teamset_pla_wet.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "axis" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "pla"; + game[ "defenders" ] = team; + precacheshader( "faction_pla" ); + game[ "entity_headicon_" + team ] = "faction_pla"; + game[ "headicon_" + team ] = "faction_pla"; + level.teamprefix[ team ] = "vox_ch"; + level.teampostfix[ team ] = "pla"; + setdvar( "g_TeamName_" + team, &"MPUI_PLA_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "chn_pla" ); + game[ "strings" ][ team + "_win" ] = &"MP_PLA_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PLA_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PLA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PLA_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PLA_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PLA_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PLA"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PLA"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PLA"; + game[ "icons" ][ team ] = "faction_pla"; + game[ "voice" ][ team ] = "vox_pla_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_chn_pla_wet::precache(); + mpbody/class_lmg_chn_pla_wet::precache(); + mpbody/class_shotgun_chn_pla_wet::precache(); + mpbody/class_smg_chn_pla_wet::precache(); + mpbody/class_sniper_chn_pla_wet::precache(); +} diff --git a/faction_pla_wet_mp/mpbody/class_assault_chn_pla_wet.gsc b/faction_pla_wet_mp/mpbody/class_assault_chn_pla_wet.gsc new file mode 100644 index 0000000..f7fea55 --- /dev/null +++ b/faction_pla_wet_mp/mpbody/class_assault_chn_pla_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_assault_w_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_assault_w_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_pla_wet_mp/mpbody/class_lmg_chn_pla_wet.gsc b/faction_pla_wet_mp/mpbody/class_lmg_chn_pla_wet.gsc new file mode 100644 index 0000000..4fb8fb1 --- /dev/null +++ b/faction_pla_wet_mp/mpbody/class_lmg_chn_pla_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_lmg_w_fb" ); + precachemodel( "c_chn_mp_pla_armorsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_lmg_w_fb" ); + self setviewmodel( "c_chn_mp_pla_armorsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_pla_wet_mp/mpbody/class_shotgun_chn_pla_wet.gsc b/faction_pla_wet_mp/mpbody/class_shotgun_chn_pla_wet.gsc new file mode 100644 index 0000000..7144177 --- /dev/null +++ b/faction_pla_wet_mp/mpbody/class_shotgun_chn_pla_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_shotgun_w_fb" ); + precachemodel( "c_chn_mp_pla_armorsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_shotgun_w_fb" ); + self setviewmodel( "c_chn_mp_pla_armorsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_pla_wet_mp/mpbody/class_smg_chn_pla_wet.gsc b/faction_pla_wet_mp/mpbody/class_smg_chn_pla_wet.gsc new file mode 100644 index 0000000..b13d34b --- /dev/null +++ b/faction_pla_wet_mp/mpbody/class_smg_chn_pla_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_smg_w_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_smg_w_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_pla_wet_mp/mpbody/class_sniper_chn_pla_wet.gsc b/faction_pla_wet_mp/mpbody/class_sniper_chn_pla_wet.gsc new file mode 100644 index 0000000..49620f3 --- /dev/null +++ b/faction_pla_wet_mp/mpbody/class_sniper_chn_pla_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_chn_mp_pla_sniper_w_fb" ); + precachemodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_chn_mp_pla_sniper_w_fb" ); + self setviewmodel( "c_chn_mp_pla_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_pmc_mp/maps/mp/teams/_teamset_pmc.gsc b/faction_pmc_mp/maps/mp/teams/_teamset_pmc.gsc new file mode 100644 index 0000000..80405c7 --- /dev/null +++ b/faction_pmc_mp/maps/mp/teams/_teamset_pmc.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "axis" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "pmc"; + game[ "defenders" ] = team; + precacheshader( "faction_pmc" ); + game[ "entity_headicon_" + team ] = "faction_pmc"; + game[ "headicon_" + team ] = "faction_pmc"; + level.teamprefix[ team ] = "vox_pm"; + level.teampostfix[ team ] = "pmc"; + setdvar( "g_TeamName_" + team, &"MPUI_PMC_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "rus_pmc" ); + game[ "strings" ][ team + "_win" ] = &"MP_PMC_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PMC_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PMC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PMC_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PMC_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PMC_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PMC"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PMC"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PMC"; + game[ "icons" ][ team ] = "faction_pmc"; + game[ "voice" ][ team ] = "vox_pmc_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_2"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_2_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_rus_pmc::precache(); + mpbody/class_lmg_rus_pmc::precache(); + mpbody/class_shotgun_rus_pmc::precache(); + mpbody/class_smg_rus_pmc::precache(); + mpbody/class_sniper_rus_pmc::precache(); +} diff --git a/faction_pmc_mp/mpbody/class_assault_rus_pmc.gsc b/faction_pmc_mp/mpbody/class_assault_rus_pmc.gsc new file mode 100644 index 0000000..a702e9d --- /dev/null +++ b/faction_pmc_mp/mpbody/class_assault_rus_pmc.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_assault_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_assault_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pmc_mp/mpbody/class_lmg_rus_pmc.gsc b/faction_pmc_mp/mpbody/class_lmg_rus_pmc.gsc new file mode 100644 index 0000000..1874b56 --- /dev/null +++ b/faction_pmc_mp/mpbody/class_lmg_rus_pmc.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_lmg_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_lmg_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pmc_mp/mpbody/class_shotgun_rus_pmc.gsc b/faction_pmc_mp/mpbody/class_shotgun_rus_pmc.gsc new file mode 100644 index 0000000..cdc2b38 --- /dev/null +++ b/faction_pmc_mp/mpbody/class_shotgun_rus_pmc.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_shotgun_fb" ); + precachemodel( "c_mul_mp_pmc_shortsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_shotgun_fb" ); + self setviewmodel( "c_mul_mp_pmc_shortsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pmc_mp/mpbody/class_smg_rus_pmc.gsc b/faction_pmc_mp/mpbody/class_smg_rus_pmc.gsc new file mode 100644 index 0000000..f5fa6e7 --- /dev/null +++ b/faction_pmc_mp/mpbody/class_smg_rus_pmc.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_smg_fb" ); + precachemodel( "c_mul_mp_pmc_shortsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_smg_fb" ); + self setviewmodel( "c_mul_mp_pmc_shortsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pmc_mp/mpbody/class_sniper_rus_pmc.gsc b/faction_pmc_mp/mpbody/class_sniper_rus_pmc.gsc new file mode 100644 index 0000000..0f29f83 --- /dev/null +++ b/faction_pmc_mp/mpbody/class_sniper_rus_pmc.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_sniper_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_sniper_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_pmc_snow_mp/maps/mp/teams/_teamset_pmc_snow.gsc b/faction_pmc_snow_mp/maps/mp/teams/_teamset_pmc_snow.gsc new file mode 100644 index 0000000..f6d53c8 --- /dev/null +++ b/faction_pmc_snow_mp/maps/mp/teams/_teamset_pmc_snow.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "axis" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "pmc"; + game[ "defenders" ] = team; + precacheshader( "faction_pmc" ); + game[ "entity_headicon_" + team ] = "faction_pmc"; + game[ "headicon_" + team ] = "faction_pmc"; + level.teamprefix[ team ] = "vox_pm"; + level.teampostfix[ team ] = "pmc"; + setdvar( "g_TeamName_" + team, &"MPUI_PMC_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_ScoresColor_" + team, "0.65 0.57 0.41" ); + setdvar( "g_FactionName_" + team, "rus_pmc" ); + game[ "strings" ][ team + "_win" ] = &"MP_PMC_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_PMC_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_PMC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_PMC_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_PMC_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_PMC_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_PMC"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_PMC"; + game[ "music" ][ "victory_" + team ] = "VICTORY_PMC"; + game[ "icons" ][ team ] = "faction_pmc"; + game[ "voice" ][ team ] = "vox_pmc_"; + setdvar( "scr_" + team, "ussr" ); + level.heli_vo[ team ][ "hit" ] = "vox_rus_0_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_axis_2"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_axis_2_carry"; + game[ "carry_icon" ][ team ] = "hudicon_spetsnaz_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_rus_pmc_snow::precache(); + mpbody/class_lmg_rus_pmc_snow::precache(); + mpbody/class_shotgun_rus_pmc_snow::precache(); + mpbody/class_smg_rus_pmc_snow::precache(); + mpbody/class_sniper_rus_pmc_snow::precache(); +} diff --git a/faction_pmc_snow_mp/mpbody/class_assault_rus_pmc_snow.gsc b/faction_pmc_snow_mp/mpbody/class_assault_rus_pmc_snow.gsc new file mode 100644 index 0000000..4be9aec --- /dev/null +++ b/faction_pmc_snow_mp/mpbody/class_assault_rus_pmc_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_assault_snw_fb" ); + precachemodel( "c_mul_mp_pmc_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_assault_snw_fb" ); + self setviewmodel( "c_mul_mp_pmc_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_pmc_snow_mp/mpbody/class_lmg_rus_pmc_snow.gsc b/faction_pmc_snow_mp/mpbody/class_lmg_rus_pmc_snow.gsc new file mode 100644 index 0000000..b97aba6 --- /dev/null +++ b/faction_pmc_snow_mp/mpbody/class_lmg_rus_pmc_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_lmg_snw_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_lmg_snw_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_pmc_snow_mp/mpbody/class_shotgun_rus_pmc_snow.gsc b/faction_pmc_snow_mp/mpbody/class_shotgun_rus_pmc_snow.gsc new file mode 100644 index 0000000..5e3c609 --- /dev/null +++ b/faction_pmc_snow_mp/mpbody/class_shotgun_rus_pmc_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_shotgun_snw_fb" ); + precachemodel( "c_mul_mp_pmc_shortsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_shotgun_snw_fb" ); + self setviewmodel( "c_mul_mp_pmc_shortsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_pmc_snow_mp/mpbody/class_smg_rus_pmc_snow.gsc b/faction_pmc_snow_mp/mpbody/class_smg_rus_pmc_snow.gsc new file mode 100644 index 0000000..19e1ee9 --- /dev/null +++ b/faction_pmc_snow_mp/mpbody/class_smg_rus_pmc_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_smg_snw_fb" ); + precachemodel( "c_mul_mp_pmc_shortsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_smg_snw_fb" ); + self setviewmodel( "c_mul_mp_pmc_shortsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_pmc_snow_mp/mpbody/class_sniper_rus_pmc_snow.gsc b/faction_pmc_snow_mp/mpbody/class_sniper_rus_pmc_snow.gsc new file mode 100644 index 0000000..152d39e --- /dev/null +++ b/faction_pmc_snow_mp/mpbody/class_sniper_rus_pmc_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_mul_mp_pmc_sniper_snw_fb" ); + precachemodel( "c_mul_mp_pmc_longsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "team4" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "axis" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_mul_mp_pmc_sniper_snw_fb" ); + self setviewmodel( "c_mul_mp_pmc_longsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_seals_mp/maps/mp/teams/_teamset_seals.gsc b/faction_seals_mp/maps/mp/teams/_teamset_seals.gsc new file mode 100644 index 0000000..ee5bf1b --- /dev/null +++ b/faction_seals_mp/maps/mp/teams/_teamset_seals.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "allies" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_usa_seals::precache(); + mpbody/class_lmg_usa_seals::precache(); + mpbody/class_shotgun_usa_seals::precache(); + mpbody/class_smg_usa_seals::precache(); + mpbody/class_sniper_usa_seals::precache(); +} diff --git a/faction_seals_mp/mpbody/class_assault_usa_seals.gsc b/faction_seals_mp/mpbody/class_assault_usa_seals.gsc new file mode 100644 index 0000000..89219e7 --- /dev/null +++ b/faction_seals_mp/mpbody/class_assault_usa_seals.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_seals_mp/mpbody/class_lmg_usa_seals.gsc b/faction_seals_mp/mpbody/class_lmg_usa_seals.gsc new file mode 100644 index 0000000..2a65ca0 --- /dev/null +++ b/faction_seals_mp/mpbody/class_lmg_usa_seals.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_lmg_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_lmg_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_seals_mp/mpbody/class_shotgun_usa_seals.gsc b/faction_seals_mp/mpbody/class_shotgun_usa_seals.gsc new file mode 100644 index 0000000..b402a97 --- /dev/null +++ b/faction_seals_mp/mpbody/class_shotgun_usa_seals.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_shotgun_fb" ); + precachemodel( "c_usa_mp_seal6_shortsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_shotgun_fb" ); + self setviewmodel( "c_usa_mp_seal6_shortsleeve_viewhands" ); + heads = []; +} diff --git a/faction_seals_mp/mpbody/class_smg_usa_seals.gsc b/faction_seals_mp/mpbody/class_smg_usa_seals.gsc new file mode 100644 index 0000000..f20866b --- /dev/null +++ b/faction_seals_mp/mpbody/class_smg_usa_seals.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_smg_fb" ); + precachemodel( "c_usa_mp_seal6_shortsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_smg_fb" ); + self setviewmodel( "c_usa_mp_seal6_shortsleeve_viewhands" ); + heads = []; +} diff --git a/faction_seals_mp/mpbody/class_sniper_usa_seals.gsc b/faction_seals_mp/mpbody/class_sniper_usa_seals.gsc new file mode 100644 index 0000000..3965805 --- /dev/null +++ b/faction_seals_mp/mpbody/class_sniper_usa_seals.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_sniper_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_sniper_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_viewhands" ); + heads = []; +} diff --git a/faction_seals_snow_mp/maps/mp/teams/_teamset_seals_snow.gsc b/faction_seals_snow_mp/maps/mp/teams/_teamset_seals_snow.gsc new file mode 100644 index 0000000..1842b5d --- /dev/null +++ b/faction_seals_snow_mp/maps/mp/teams/_teamset_seals_snow.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "allies" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_usa_seals_snow::precache(); + mpbody/class_lmg_usa_seals_snow::precache(); + mpbody/class_shotgun_usa_seals_snow::precache(); + mpbody/class_smg_usa_seals_snow::precache(); + mpbody/class_sniper_usa_seals_snow::precache(); +} diff --git a/faction_seals_snow_mp/mpbody/class_assault_usa_seals_snow.gsc b/faction_seals_snow_mp/mpbody/class_assault_usa_seals_snow.gsc new file mode 100644 index 0000000..dd0cde5 --- /dev/null +++ b/faction_seals_snow_mp/mpbody/class_assault_usa_seals_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_snw_fb" ); + precachemodel( "c_usa_mp_seal6_assault_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_snw_fb" ); + self setviewmodel( "c_usa_mp_seal6_assault_snw_viewhands" ); + heads = []; +} diff --git a/faction_seals_snow_mp/mpbody/class_lmg_usa_seals_snow.gsc b/faction_seals_snow_mp/mpbody/class_lmg_usa_seals_snow.gsc new file mode 100644 index 0000000..1e89d82 --- /dev/null +++ b/faction_seals_snow_mp/mpbody/class_lmg_usa_seals_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_lmg_snw_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_lmg_snw_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_seals_snow_mp/mpbody/class_shotgun_usa_seals_snow.gsc b/faction_seals_snow_mp/mpbody/class_shotgun_usa_seals_snow.gsc new file mode 100644 index 0000000..668d7f3 --- /dev/null +++ b/faction_seals_snow_mp/mpbody/class_shotgun_usa_seals_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_shotgun_snw_fb" ); + precachemodel( "c_usa_mp_seal6_shortsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_shotgun_snw_fb" ); + self setviewmodel( "c_usa_mp_seal6_shortsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_seals_snow_mp/mpbody/class_smg_usa_seals_snow.gsc b/faction_seals_snow_mp/mpbody/class_smg_usa_seals_snow.gsc new file mode 100644 index 0000000..60caf45 --- /dev/null +++ b/faction_seals_snow_mp/mpbody/class_smg_usa_seals_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_smg_snw_fb" ); + precachemodel( "c_usa_mp_seal6_shortsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_smg_snw_fb" ); + self setviewmodel( "c_usa_mp_seal6_shortsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_seals_snow_mp/mpbody/class_sniper_usa_seals_snow.gsc b/faction_seals_snow_mp/mpbody/class_sniper_usa_seals_snow.gsc new file mode 100644 index 0000000..92ac44e --- /dev/null +++ b/faction_seals_snow_mp/mpbody/class_sniper_usa_seals_snow.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_sniper_snw_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_snw_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_sniper_snw_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_snw_viewhands" ); + heads = []; +} diff --git a/faction_seals_wet_mp/maps/mp/teams/_teamset_seals_wet.gsc b/faction_seals_wet_mp/maps/mp/teams/_teamset_seals_wet.gsc new file mode 100644 index 0000000..11bb526 --- /dev/null +++ b/faction_seals_wet_mp/maps/mp/teams/_teamset_seals_wet.gsc @@ -0,0 +1,48 @@ + +main() +{ + init( "allies" ); + maps/mp/teams/_teamset::customteam_init(); + precache(); +} + +init( team ) +{ + maps/mp/teams/_teamset::init(); + game[ team ] = "seals"; + game[ "attackers" ] = team; + precacheshader( "faction_seals" ); + game[ "entity_headicon_" + team ] = "faction_seals"; + game[ "headicon_" + team ] = "faction_seals"; + level.teamprefix[ team ] = "vox_st"; + level.teampostfix[ team ] = "st6"; + setdvar( "g_TeamName_" + team, &"MPUI_SEALS_SHORT" ); + setdvar( "g_TeamColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_ScoresColor_" + team, "0.6 0.64 0.69" ); + setdvar( "g_FactionName_" + team, "usa_seals" ); + game[ "strings" ][ team + "_win" ] = &"MP_SEALS_WIN_MATCH"; + game[ "strings" ][ team + "_win_round" ] = &"MP_SEALS_WIN_ROUND"; + game[ "strings" ][ team + "_mission_accomplished" ] = &"MP_SEALS_MISSION_ACCOMPLISHED"; + game[ "strings" ][ team + "_eliminated" ] = &"MP_SEALS_ELIMINATED"; + game[ "strings" ][ team + "_forfeited" ] = &"MP_SEALS_FORFEITED"; + game[ "strings" ][ team + "_name" ] = &"MP_SEALS_NAME"; + game[ "music" ][ "spawn_" + team ] = "SPAWN_ST6"; + game[ "music" ][ "spawn_short" + team ] = "SPAWN_SHORT_ST6"; + game[ "music" ][ "victory_" + team ] = "VICTORY_ST6"; + game[ "icons" ][ team ] = "faction_seals"; + game[ "voice" ][ team ] = "vox_st6_"; + setdvar( "scr_" + team, "marines" ); + level.heli_vo[ team ][ "hit" ] = "vox_ops_2_kls_attackheli_hit"; + game[ "flagmodels" ][ team ] = "mp_flag_allies_1"; + game[ "carry_flagmodels" ][ team ] = "mp_flag_allies_1_carry"; + game[ "carry_icon" ][ team ] = "hudicon_marines_ctf_flag_carry"; +} + +precache() +{ + mpbody/class_assault_usa_seals_wet::precache(); + mpbody/class_lmg_usa_seals_wet::precache(); + mpbody/class_shotgun_usa_seals_wet::precache(); + mpbody/class_smg_usa_seals_wet::precache(); + mpbody/class_sniper_usa_seals_wet::precache(); +} diff --git a/faction_seals_wet_mp/mpbody/class_assault_usa_seals_wet.gsc b/faction_seals_wet_mp/mpbody/class_assault_usa_seals_wet.gsc new file mode 100644 index 0000000..9759afd --- /dev/null +++ b/faction_seals_wet_mp/mpbody/class_assault_usa_seals_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_assault_w_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "default" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_assault_w_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_seals_wet_mp/mpbody/class_lmg_usa_seals_wet.gsc b/faction_seals_wet_mp/mpbody/class_lmg_usa_seals_wet.gsc new file mode 100644 index 0000000..3bd5708 --- /dev/null +++ b/faction_seals_wet_mp/mpbody/class_lmg_usa_seals_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_lmg_w_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "mg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_lmg_w_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_seals_wet_mp/mpbody/class_shotgun_usa_seals_wet.gsc b/faction_seals_wet_mp/mpbody/class_shotgun_usa_seals_wet.gsc new file mode 100644 index 0000000..6683aeb --- /dev/null +++ b/faction_seals_wet_mp/mpbody/class_shotgun_usa_seals_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_shotgun_w_fb" ); + precachemodel( "c_usa_mp_seal6_shortsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "spread" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_shotgun_w_fb" ); + self setviewmodel( "c_usa_mp_seal6_shortsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_seals_wet_mp/mpbody/class_smg_usa_seals_wet.gsc b/faction_seals_wet_mp/mpbody/class_smg_usa_seals_wet.gsc new file mode 100644 index 0000000..2404405 --- /dev/null +++ b/faction_seals_wet_mp/mpbody/class_smg_usa_seals_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_smg_w_fb" ); + precachemodel( "c_usa_mp_seal6_shortsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "smg" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_smg_w_fb" ); + self setviewmodel( "c_usa_mp_seal6_shortsleeve_w_viewhands" ); + heads = []; +} diff --git a/faction_seals_wet_mp/mpbody/class_sniper_usa_seals_wet.gsc b/faction_seals_wet_mp/mpbody/class_sniper_usa_seals_wet.gsc new file mode 100644 index 0000000..e5ad576 --- /dev/null +++ b/faction_seals_wet_mp/mpbody/class_sniper_usa_seals_wet.gsc @@ -0,0 +1,22 @@ +#include common_scripts/utility; + +precache() +{ + precachemodel( "c_usa_mp_seal6_sniper_w_fb" ); + precachemodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + if ( level.multiteam ) + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } + else + { + game[ "set_player_model" ][ "allies" ][ "rifle" ] = ::set_player_model; + } +} + +set_player_model() +{ + self setmodel( "c_usa_mp_seal6_sniper_w_fb" ); + self setviewmodel( "c_usa_mp_seal6_longsleeve_w_viewhands" ); + heads = []; +} diff --git a/mp_bridge/aitype/enemy_dog_mp.gsc b/mp_bridge/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_bridge/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_bridge/character/character_mp_german_shepherd.gsc b/mp_bridge/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_bridge/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_bridge/maps/mp/createfx/mp_bridge_fx.gsc b/mp_bridge/maps/mp/createfx/mp_bridge_fx.gsc new file mode 100644 index 0000000..c130f65 --- /dev/null +++ b/mp_bridge/maps/mp/createfx/mp_bridge_fx.gsc @@ -0,0 +1,1405 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_fireball" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3287,39, -429,974, 52,406 ); + ent.v[ "angles" ] = ( 270, 0, -85 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 297,214, 303,426, -8,24041 ); + ent.v[ "angles" ] = ( 357, 104, 24 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -526,87, 509,596, 71,0189 ); + ent.v[ "angles" ] = ( 353,541, 132,992, -7,0747 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -220,636, -41,6506, -41,0029 ); + ent.v[ "angles" ] = ( 45,7726, 71,9174, -7,24831 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1197,56, -866,805, 36,9715 ); + ent.v[ "angles" ] = ( 357,706, 101,412, -3,90359 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -987,52, -908,542, 43,7629 ); + ent.v[ "angles" ] = ( 0, 132,332, -4,52645 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1474,17, -507,839, -65,2753 ); + ent.v[ "angles" ] = ( 0, 132,332, -4,52645 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1196,99, -858,897, 23,4491 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 304,82, 299,989, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 69 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1308,46, -578,147, -24,0032 ); + ent.v[ "angles" ] = ( 338, 36, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1471,72, -502,291, -62,1438 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 165 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1303,12, -583,675, -26,2774 ); + ent.v[ "angles" ] = ( 357,877, 104,406, -3,99843 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -219,227, 61,4696, -15,2712 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 115 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1070,78, 362,231, 2,21348 ); + ent.v[ "angles" ] = ( 359, 125, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3,01666, 315,447, 8,38729 ); + ent.v[ "angles" ] = ( 347,049, 106,934, 0,317125 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -969,86, -858,697, 0,124999 ); + ent.v[ "angles" ] = ( 359,066, 104, 0,358452 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -861,534, -546,84, 3,125 ); + ent.v[ "angles" ] = ( 359,086, 101, 0,406833 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1447,27, -380,31, -47,8503 ); + ent.v[ "angles" ] = ( 359,066, 104, 0,358452 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2090,03, -332,301, -126,659 ); + ent.v[ "angles" ] = ( 359, 125, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2244,25, -594,758, -118,482 ); + ent.v[ "angles" ] = ( 359,066, 104, 0,358452 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3009,68, -684,535, -67,9775 ); + ent.v[ "angles" ] = ( 359,384, 73, 0,788152 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1611,11, -622,403, -102,751 ); + ent.v[ "angles" ] = ( 359,191, 89, 0,58791 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -304,087, -504,391, 4,39694 ); + ent.v[ "angles" ] = ( 359,066, 104, 0,358452 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -43,9016, -285,469, -2,34247 ); + ent.v[ "angles" ] = ( 5,00119, 71,7019, -1,59772 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2355,43, -248,676, -133,492 ); + ent.v[ "angles" ] = ( 359,515, 64, 0,874684 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1300,86, 580,398, -141 ); + ent.v[ "angles" ] = ( 359,117, 97, 0,469575 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1347,43, 312,283, -128 ); + ent.v[ "angles" ] = ( 359,117, 97, 0,469575 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -697,177, 570,062, -128 ); + ent.v[ "angles" ] = ( 359,117, 97, 0,469575 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -267,935, 556,26, -127,875 ); + ent.v[ "angles" ] = ( 359,117, 97, 0,469575 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -399,711, 195,098, -75,5111 ); + ent.v[ "angles" ] = ( 359,117, 97, 0,469575 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -111,534, 802,34, -128 ); + ent.v[ "angles" ] = ( 359,171, 91, 0,5593 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3253,26, -370,641, 171,844 ); + ent.v[ "angles" ] = ( 287, 93, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_bridge_sun" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 250971, -124193, 41985 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 248,305, -59,5536, -20,8347 ); + ent.v[ "angles" ] = ( 2, 0, -16 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 256,103, -60,4754, -17,7327 ); + ent.v[ "angles" ] = ( 44,7805, 72,0951, -7,12204 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 337,308, 2,14762, -20,2256 ); + ent.v[ "angles" ] = ( 288, 90, -90 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1349,71, 458,856, -29,1047 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 34 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1285, 593,824, -21,5363 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 296 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2066,8, 491,843, -33,5513 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 341 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1942,81, 259,657, -10,8562 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 228,809, -52,7176, -33,984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 239,317, 94,7007, -43,4998 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 257 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 142,048, 22,8797, -50,4053 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 352 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 274,624, -37,7175, -39,5964 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 140 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 353,59, 52,0483, -49,5538 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -278,552, 17,7715, -44,6642 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 335 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -118,956, 9,00296, -48,3488 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 198 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -179,061, -62,165, -48,4152 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -235,95, -35,2447, -42,6025 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_spark_light_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -201,674, -23,6963, -74,732 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 344 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_spark_light02_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 233,879, -3,67637, -74,9915 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -173,005, -71,5927, -27,5974 ); + ent.v[ "angles" ] = ( 1, 0, -17 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -124,648, -131,764, -83,875 ); + ent.v[ "angles" ] = ( 45,7726, 71,9174, -7,24831 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 338,363, -49,3833, -74,2608 ); + ent.v[ "angles" ] = ( 45,7726, 71,9174, -7,24831 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -190,088, 202,991, -7,79737 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -183,412, 155,586, 16,1349 ); + ent.v[ "angles" ] = ( 23, 128, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -76,6828, -92,7573, -13,0739 ); + ent.v[ "angles" ] = ( 4,52346, 84,067, -16,0903 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -763,712, 35,9396, 97,125 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -923,31, -103,103, 100,619 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1230,9, -40,5745, 100,447 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1267,99, -319,467, -1 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1349,08, -298,166, -4 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1283,6, -289,399, -14,9277 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1381,88, -308,94, -4,9277 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1742,99, -428,07, -12,2136 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1644,6, -408,567, -16,2136 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1624,5, -463,854, -9,2859 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1711,6, -462,246, -11,2859 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2063,59, -566,517, -7,1942 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2032,2, -600,693, -6,2665 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1956,61, -584,143, -10,2665 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1965,2, -547,014, -11,1942 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1994,21, -296,235, -11,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1962,82, -330,411, -10,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1887,23, -313,861, -14,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1895,82, -276,732, -15,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1716,45, -279,037, -19,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1677,22, -335,058, -20,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1609,63, -318,542, -13,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1618,22, -281,413, -19,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1332,45, -725,071, -4,3389 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1420,95, -747,604, 4,6611 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1380,53, -780,996, -0,4111 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1231,64, -571,961, -15,4111 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1226,92, -635,447, -13 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2283,97, -313,634, -12,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2192,27, -292,598, -8,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2251,29, -271,294, -10,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2334,83, -265,579, -14,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1827,5, -472,81, -5,0017 ); + ent.v[ "angles" ] = ( 42,9744, 92,6924, 91,4886 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1938,5, -478,296, 7,99099 ); + ent.v[ "angles" ] = ( 42,9573, 91,3259, -91,4429 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1551,59, -602,519, -18,0082 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2632,27, -448,319, -17,1985 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2533,88, -428,816, -21,1985 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2525,29, -465,945, -20,2707 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2600,88, -482,495, -16,2707 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2635,98, -297,465, -15,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2537,59, -277,962, -19,4639 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2529, -315,091, -18,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2604,59, -331,641, -14,5361 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2647,61, -577,59, -15,7812 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2549,22, -558,087, -19,7812 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2540,63, -595,216, -18,8534 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2616,22, -611,766, -14,8534 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_03" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2064,8, -838,755, -40,9997 ); + ent.v[ "angles" ] = ( 19,7953, 157,841, -95,6378 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_03" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2392,28, -833,753, -44,1786 ); + ent.v[ "angles" ] = ( 19,7953, 157,841, -95,6378 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_03" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1752,42, -824,018, -44,1274 ); + ent.v[ "angles" ] = ( 19,7953, 157,841, -95,6378 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_03" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1434,22, -824,166, -41,7858 ); + ent.v[ "angles" ] = ( 19,7953, 157,841, -95,6378 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_03" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1108,45, -827,684, -21,0838 ); + ent.v[ "angles" ] = ( 19,7953, 157,841, -95,6378 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -991,361, 691,786, -31,8675 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 276,916, -259,891, 0,124998 ); + ent.v[ "angles" ] = ( 351, 94, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -263,859, -294,055, -15,5924 ); + ent.v[ "angles" ] = ( 344, 94, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -183,823, 209,21, -3,60733 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 113 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 17947, 27125,8, 2826,47 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 18817, 27334, 2822,81 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7976,36, 19568, 2818,82 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8826,64, 19288,2, 2821,47 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8131,16, 20476,1, 2825,94 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8392,81, 21361,9, 2822,99 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 17645, 27990,5, 2835,74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 17395,6, 28972,5, 2840,41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_bridge_vista_glare_red" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -22295,7, -2205,94, 4374,55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_sparks_loop_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1257,06, 416,376, -8,7138 ); + ent.v[ "angles" ] = ( 35,4891, 104,923, -6,48424 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1638,82, 129,433, -230,885 ); + ent.v[ "angles" ] = ( 354, 88, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1940,44, 135,966, -221,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1541,54, -222,874, -11,1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 261 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1826,58, -233,414, -5,10508 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 261 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2568,44, -227,074, -5,64081 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 261 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1081,41, 510,679, 61,8525 ); + ent.v[ "angles" ] = ( 356, 89,4836, 0,893179 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_sparks_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -284,623, -1,69012, -136,477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_sparks_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 143,901, 0,758762, -136,231 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1612,87, -598,284, -132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1318,19, -819,029, -129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 946,278, -823,533, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 757,6, -880,753, -139,708 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 115 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 150,162, -835,564, -127,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 160,81, -1159,38, -160,937 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 117 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 639,384, -589,062, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 304,459, -594,409, -127,002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 118,98, -591,849, -142,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 986,751, -534,93, -116,925 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1934,03, -585,504, -121,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2222,37, -552,321, -121,292 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2488, -585,132, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2243,15, -358,748, -129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2326,44, -126,125, -135,875 ); + ent.v[ "angles" ] = ( 336,984, 102,426, -6,99643 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2257,69, 134,852, 0,125 ); + ent.v[ "angles" ] = ( 357, 85, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2009,15, 287,077, 0,125 ); + ent.v[ "angles" ] = ( 357, 85, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1531,47, 235,675, 2,20929 ); + ent.v[ "angles" ] = ( 357, 85, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1449,47, 583,703, 12,6064 ); + ent.v[ "angles" ] = ( 357,016, 78,9917, 0,313907 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2370,99, 221,205, -124,784 ); + ent.v[ "angles" ] = ( 359,792, 47, 0,978463 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 449,1, -816,805, -112,44 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 115 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3207,87, -430,162, 14,5372 ); + ent.v[ "angles" ] = ( 32,7509, 63,2253, 3,90106 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3207,07, -385,791, 33,125 ); + ent.v[ "angles" ] = ( 347,294, 79,8492, 0,725055 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2788,5, 551,45, 1,5968 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 163 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2794,03, 362,049, 8,69101 ); + ent.v[ "angles" ] = ( 15,7726, 112,072, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3045,52, -485,839, -66,7537 ); + ent.v[ "angles" ] = ( 359,384, 73, 0,788152 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -915,663, 661,254, 8,44913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -919,114, 678,627, 24,2735 ); + ent.v[ "angles" ] = ( 32,7509, 63,2253, 3,90106 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1285,13, 461,515, 9,52951 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1292,33, 469,535, 25,3539 ); + ent.v[ "angles" ] = ( 32,7509, 63,2253, 3,90106 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1245,98, 447,062, -7,91256 ); + ent.v[ "angles" ] = ( 23,6846, 78,9379, 12,3128 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1272,42, 646,383, -150,665 ); + ent.v[ "angles" ] = ( 348, 94, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1244,27, 540,578, -155,457 ); + ent.v[ "angles" ] = ( 0,817454, 112,983, 2,84399 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1215,64, 675,684, -149,936 ); + ent.v[ "angles" ] = ( 0,817454, 112,983, 2,84399 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1091,26, 634,096, -149,28 ); + ent.v[ "angles" ] = ( 1,78209, 92, 2,3626 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1070,85, 520,465, -138,303 ); + ent.v[ "angles" ] = ( 17,5045, 71,4214, 1,64168 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3106,83, -432,057, -10,5019 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3102,8, -538,623, -7,49289 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2894,81, -287,074, -84,4665 ); + ent.v[ "angles" ] = ( 0,48477, 6,00488, 0,874828 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1171,12, 329,396, 9,44715 ); + ent.v[ "angles" ] = ( 31,8635, 73,9768, -5,94769 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1171,19, 320,607, 3,61259 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 113 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1792,9, 575,419, -213,677 ); + ent.v[ "angles" ] = ( 25, 88, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2289,22, 527,772, -195,875 ); + ent.v[ "angles" ] = ( 25, 88, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -109,972, 887,062, -136,875 ); + ent.v[ "angles" ] = ( 359,171, 91, 0,5593 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -110,792, 362,814, -182,875 ); + ent.v[ "angles" ] = ( 353, 88, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2716, 459,402, -27,0083 ); + ent.v[ "angles" ] = ( 357, 90, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -746,211, 121,545, 57,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -963,024, -62,8485, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 749,654, -151,681, 60,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 707,766, 54,496, 53,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1257,11, 63,5891, 61,4086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_windy_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1399,63, -685,843, -68,2654 ); + ent.v[ "angles" ] = ( 360, 262, 18 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1493,15, -699,789, -114,64 ); + ent.v[ "angles" ] = ( 43,6904, 79,2656, 0,821074 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1346,59, -725,543, -198,873 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2229,46, -43,5459, -139,875 ); + ent.v[ "angles" ] = ( 359,054, 106, 0,325543 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -216,749, 64,906, -11,0174 ); + ent.v[ "angles" ] = ( 31, 94, 0 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 332,155, 5,81922, -20,1137 ); + ent.v[ "angles" ] = ( 37, 94, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 148,372, 130,075, -20,4819 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 98 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 147,364, 126,496, -19,8173 ); + ent.v[ "angles" ] = ( 32, 94, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 55,9197, -131,945, -14,9653 ); + ent.v[ "angles" ] = ( 359,406, 66,7938, -16,6876 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -161,551, -76,5783, -15,5597 ); + ent.v[ "angles" ] = ( 31, 94, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 42,0953, -116,968, -18,6199 ); + ent.v[ "angles" ] = ( 359,066, 104, 0,358452 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1968,65, 367,964, -139,419 ); + ent.v[ "angles" ] = ( 31, 94, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1967,14, 370,761, -142,457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1619,97, 567,933, -141,466 ); + ent.v[ "angles" ] = ( 31, 94, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1620,76, 569,262, -146,503 ); + ent.v[ "angles" ] = ( 356,939, 80,3856, 90,5438 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1622,45, 559,691, -149,088 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2063,7, 415,821, -14,1888 ); + ent.v[ "angles" ] = ( 42,9573, 91,3259, -83,4429 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1899,59, 370,071, -1,71566 ); + ent.v[ "angles" ] = ( 42,9573, 91,3255, 79,5569 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2031,29, 393,986, -1,58296 ); + ent.v[ "angles" ] = ( 42,9743, 92,6922, -76,5116 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1874,21, 390,696, -5,19353 ); + ent.v[ "angles" ] = ( 42,9573, 91,325, 92,5567 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1111,82, 400,254, -13,3927 ); + ent.v[ "angles" ] = ( 42,9573, 91,325, 92,5567 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1241,31, 423,467, -1,50169 ); + ent.v[ "angles" ] = ( 42,9573, 91,325, 92,5567 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1249,41, 433,599, 3,85648 ); + ent.v[ "angles" ] = ( 42,9573, 91,325, 92,5567 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1249,12, 537,084, -156,992 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 103 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1912,96, 332,354, -91,9484 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1378,9, 351,127, -90,0603 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1353,57, 626,263, -102,965 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1680,05, 333,52, -87,4397 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2049,01, 303,002, -81,0112 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2272,69, 176,125, -100,051 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2277,97, -143,508, -93,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1041,2, 412,293, -64,6322 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -667,407, 458,397, -80 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -380,84, 491,519, -78,4981 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -116,624, 510,917, -84 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1006,47, -848,422, -84 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 749,498, -814,598, -72,0009 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1296,07, -837,271, -80 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1372,63, -594,537, -93 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1610,02, -624,65, -82,0047 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1927,89, -632,142, -75,7304 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2247,13, -542,43, -80,4307 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2248,79, -313,347, -89 ); + ent.v[ "angles" ] = ( 354, 88, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1565,62, -302,052, -11,93 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1275,59, -730,21, -9 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1052,18, -797,13, 2,86112 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1092,6, -763,738, 1,93333 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1004,66, -723,214, -1,06668 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 947,235, -740,344, -11,7278 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 977,507, -642,478, -2,06506 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1017,93, -609,086, -2,99285 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 929,428, -586,553, -5,99286 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 872,565, -585,692, -16,654 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 875,331, -836,064, -44 ); + ent.v[ "angles" ] = ( 42,9573, 91,3255, 104,557 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 676,082, -825,64, -34,9157 ); + ent.v[ "angles" ] = ( 42,9573, 91,3255, 104,557 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1217,69, -834,916, -39,7072 ); + ent.v[ "angles" ] = ( 42,9573, 91,3255, 104,557 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1814,69, -566,735, -47,4894 ); + ent.v[ "angles" ] = ( 42,9744, 92,6924, 91,4886 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2452,57, -561,735, -44,7251 ); + ent.v[ "angles" ] = ( 42,9744, 92,6924, 91,4886 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1775,47, -571,487, -47,6838 ); + ent.v[ "angles" ] = ( 42,9573, 91,3259, -91,4429 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -683,269, -69,6538, 11,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -841,069, 92,2863, 8,35446 ); + ent.v[ "angles" ] = ( 359, 229, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1013,16, -84,296, 54,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1263,97, -71,182, 54,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1264,83, -198,095, 8,125 ); + ent.v[ "angles" ] = ( 359,577, 60, 0,906646 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 234,077, -663,898, 13,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_blowing_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -742,184, -939,085, 0,125006 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_cougar_vehicle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -194,73, -195,79, -10,52 ); + ent.v[ "angles" ] = ( 358,323, 155,966, 4,60057 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_cougar_vehicle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 523,2, 568,8, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 163,8 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3175,7, -413,789, 15,7215 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3183,23, -420,654, 43,175 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3175,36, -415,694, 0,124999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -166,77, -58,2551, -50,4136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 254,499, -57,506, -44,5132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -380,459, 703,401, -21,4474 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -667,161, 703,967, -21,5752 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -126,611, 704,248, -21,6291 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_bridge_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -127,95, 407,707, -42,1471 ); + ent.v[ "angles" ] = ( 31, 90, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_bridge_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -383,837, 406,283, -42,0965 ); + ent.v[ "angles" ] = ( 31, 90, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_bridge_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -670,658, 406,34, -42,0374 ); + ent.v[ "angles" ] = ( 31, 90, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_bridge_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 184,418, 962,497, -25,9691 ); + ent.v[ "angles" ] = ( 43, 180, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_under_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -658,134, 366,129, -196,821 ); + ent.v[ "angles" ] = ( 353, 88, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_god_ray_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1007,15, -466,265, -10,875 ); + ent.v[ "angles" ] = ( 47, 90, 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1091,05, 854,894, 23,9116 ); + ent.v[ "angles" ] = ( 341, 78, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2698,07, 700,865, 13,6722 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 163 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_smoke_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2745,19, 708,526, 42,3206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 163 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_sparks_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1709,46, 484,034, -30,9105 ); + ent.v[ "angles" ] = ( 58, 350, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2194,52, -72,3029, -13,5641 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_bridge_sparks_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2122,96, 96,2786, -23,3226 ); + ent.v[ "angles" ] = ( 31,9967, 179,907, -178,265 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 775,796, 7,37119, 113,66 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 655,05, 71,7911, 113,661 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 916,724, 108,33, 113,662 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 920,176, -54,2146, 113,661 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1034,01, 69,0176, 113,652 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1258,08, 66,3518, 113,653 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_cmd_vehicle_cab" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1773,08, 459,611, -3,10805 ); + ent.v[ "angles" ] = ( 359,505, 186,6, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_cmd_vehicle_trailer" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1769,79, 469,925, -3,08127 ); + ent.v[ "angles" ] = ( 359,435, 222,803, -0,139886 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2421,68, 105,218, -24,0471 ); + ent.v[ "angles" ] = ( 29, 360, -180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -397,723, 1155,06, -29,3603 ); + ent.v[ "angles" ] = ( 51, 90, 0 ); + ent.v[ "delay" ] = -96; +} diff --git a/mp_bridge/maps/mp/mp_bridge.gsc b/mp_bridge/maps/mp/mp_bridge.gsc new file mode 100644 index 0000000..f53feeb --- /dev/null +++ b/mp_bridge/maps/mp/mp_bridge.gsc @@ -0,0 +1,202 @@ +#include maps/mp/gametypes/_deathicons; +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_bridge_fx::main(); + precachemodel( "collision_physics_128x128x10" ); + precachemodel( "collision_missile_128x128x10" ); + precachemodel( "collision_physics_64x64x10" ); + precachemodel( "collision_missile_32x32x128" ); + precachemodel( "collision_clip_32x32x10" ); + precachemodel( "p6_bri_construction_tarp" ); + maps/mp/_load::main(); + maps/mp/mp_bridge_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_bridge" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_128x128x10", "collider", ( -1190, -876, -76 ), ( 342, 2,63, -90 ) ); + barricade1 = spawn( "script_model", ( 850,5, -812,5, 0 ) ); + barricade1.angles = vectorScale( ( 0, 0, 1 ), 90 ); + barricade1 setmodel( "p6_bri_construction_tarp" ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2182, -185,5, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2310, -185,5, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2438, -185,5, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2182, -57,5, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2310, -57,5, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2438, -57,5, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2366,5, 91, -142 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1401,5, 759,5, -158,5 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1309, 726,5, -158,5 ), ( 2,4, 359,9, -91,70473 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1401,5, 634, -154,5 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1373,5, 634, -154,5 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1401,5, 559,5, -154,5 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1422, 375,5, -141,5 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1322,5, 438, -146 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1304,5, 438, -146 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1322,5, 378,5, -144 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1230, 396, -144 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1357, 248, -139 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1230, 285, -139 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1230, 248, -139 ), vectorScale( ( 0, 0, 1 ), 92,40023 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( 1370, -697, -134 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( 2432, -44, 30,5 ), ( 0, 270, -90 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( 2113,5, -44, 30,5 ), ( 0, 270, -90 ) ); + spawncollision( "collision_missile_32x32x128", "collider", ( -2292, -174, -7,5 ), vectorScale( ( 0, 0, 1 ), 270 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2219,5, -184,5, 37 ), vectorScale( ( 0, 0, 1 ), 2,9 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -2197,5, -184,5, 33 ), vectorScale( ( 0, 0, 1 ), 23,9 ) ); + spawncollision( "collision_clip_32x32x10", "collider", ( 1923,5, 553,5, 43,5 ), ( 1,265, 43,3, -90 ) ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + registerclientfield( "scriptmover", "police_car_lights", 1, 1, "int" ); + level thread destructible_lights(); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 2 ); + setdvar( "r_lightGridContrast", 0 ); + level.ragdoll_override = ::ragdoll_override; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + level thread pathing_fix(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2400", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); +} + +destructible_lights() +{ + wait 0,05; + destructibles = getentarray( "destructible", "targetname" ); + _a125 = destructibles; + _k125 = getFirstArrayKey( _a125 ); + while ( isDefined( _k125 ) ) + { + destructible = _a125[ _k125 ]; + if ( destructible.destructibledef == "veh_t6_dlc_police_car_destructible" ) + { + destructible thread destructible_think( "police_car_lights" ); + destructible setclientfield( "police_car_lights", 1 ); + } + _k125 = getNextArrayKey( _a125, _k125 ); + } +} + +destructible_think( clientfield ) +{ + self waittill_any( "death", "destructible_base_piece_death" ); + self setclientfield( clientfield, 0 ); +} + +ragdoll_override( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, deathanimduration, einflictor, ragdoll_jib, body ) +{ + if ( smeansofdeath == "MOD_FALLING" ) + { + deathanim = body getcorpseanim(); + startfrac = deathanimduration / 1000; + if ( animhasnotetrack( deathanim, "start_ragdoll" ) ) + { + times = getnotetracktimes( deathanim, "start_ragdoll" ); + if ( isDefined( times ) ) + { + startfrac = times[ 0 ]; + } + } + self.body = body; + if ( !isDefined( self.switching_teams ) ) + { + thread maps/mp/gametypes/_deathicons::adddeathicon( body, self, self.team, 5 ); + } + self thread water_spash(); + return 1; + } + return 0; +} + +water_spash() +{ + self endon( "disconnect" ); + self endon( "spawned_player" ); + self endon( "joined_team" ); + self endon( "joined_spectators" ); + trace = groundtrace( self.origin, self.origin - vectorScale( ( 0, 0, 1 ), 2048 ), 0, self.body ); + if ( trace[ "surfacetype" ] == "water" ) + { + while ( self.origin[ 2 ] > ( trace[ "position" ][ 2 ] + 5 ) ) + { + wait 0,05; + } + bone = self gettagorigin( "j_spinelower" ); + origin = ( bone[ 0 ], bone[ 1 ], trace[ "position" ][ 2 ] + 2,5 ); + self playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], origin ); + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 1; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a212 = triggers; + _k212 = getFirstArrayKey( _a212 ); + while ( isDefined( _k212 ) ) + { + trigger = _a212[ _k212 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + return 1; + } + } + _k212 = getNextArrayKey( _a212, _k212 ); + } + return 0; +} + +pathing_fix() +{ + wait 1; + nodes = getallnodes(); + disconnect_node( nodes[ 96 ] ); + disconnect_node( nodes[ 600 ] ); +} + +disconnect_node( node ) +{ + ent = spawn( "script_model", node.origin, 1 ); + ent setmodel( level.deployedshieldmodel ); + ent hide(); + ent disconnectpaths(); + ent.origin -= vectorScale( ( 0, 0, 1 ), 64 ); +} diff --git a/mp_bridge/maps/mp/mp_bridge_amb.gsc b/mp_bridge/maps/mp/mp_bridge_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_bridge/maps/mp/mp_bridge_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_bridge/maps/mp/mp_bridge_fx.gsc b/mp_bridge/maps/mp/mp_bridge_fx.gsc new file mode 100644 index 0000000..df05057 --- /dev/null +++ b/mp_bridge/maps/mp/mp_bridge_fx.gsc @@ -0,0 +1,87 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc3" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc3(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_bridge_fx::main(); +} + +precache_scripted_fx() +{ + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_carrier_smoke_center" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_center" ); + level._effect[ "fx_mp_bridge_smoke_md" ] = loadfx( "maps/mp_maps/fx_mp_bridge_smoke_md" ); + level._effect[ "fx_mp_bridge_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_bridge_smoke_sm" ); + level._effect[ "fx_mp_bridge_smoke_area" ] = loadfx( "maps/mp_maps/fx_mp_bridge_smoke_area" ); + level._effect[ "fx_mp_bridge_smoke_vista" ] = loadfx( "maps/mp_maps/fx_mp_bridge_smoke_vista" ); + level._effect[ "fx_mp_bridge_under_smoke" ] = loadfx( "maps/mp_maps/fx_mp_bridge_under_smoke" ); + level._effect[ "fx_mp_bridge_under_smoke_lg" ] = loadfx( "maps/mp_maps/fx_mp_bridge_under_smoke_lg" ); + level._effect[ "fx_mp_bridge_fire_med" ] = loadfx( "maps/mp_maps/fx_mp_bridge_fire_med" ); + level._effect[ "fx_mp_bridge_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_bridge_fire_sm" ); + level._effect[ "fx_mp_bridge_fire_fireball" ] = loadfx( "maps/mp_maps/fx_mp_bridge_fire_fireball" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin_runner" ); + level._effect[ "fx_mp_bridge_spark_light_runner" ] = loadfx( "maps/mp_maps/fx_mp_bridge_spark_light_runner" ); + level._effect[ "fx_mp_bridge_spark_light02_runner" ] = loadfx( "maps/mp_maps/fx_mp_bridge_spark_light02_runner" ); + level._effect[ "fx_mp_bridge_spark_light" ] = loadfx( "maps/mp_maps/fx_mp_bridge_spark_light" ); + level._effect[ "fx_mp_bridge_spark_loop" ] = loadfx( "maps/mp_maps/fx_mp_bridge_spark_loop" ); + level._effect[ "fx_mp_bridge_sparks_loop_sm" ] = loadfx( "maps/mp_maps/fx_mp_bridge_sparks_loop_sm" ); + level._effect[ "fx_mp_bridge_sparks_sm_runner" ] = loadfx( "maps/mp_maps/fx_mp_bridge_sparks_sm_runner" ); + level._effect[ "fx_vertigo_rectangle_light01" ] = loadfx( "light/fx_vertigo_rectangle_light01" ); + level._effect[ "fx_mp_bridge_god_ray_01" ] = loadfx( "maps/mp_maps/fx_mp_bridge_god_ray_01" ); + level._effect[ "fx_mp_bridge_god_ray_02" ] = loadfx( "maps/mp_maps/fx_mp_bridge_god_ray_02" ); + level._effect[ "fx_mp_bridge_god_ray_03" ] = loadfx( "maps/mp_maps/fx_mp_bridge_god_ray_03" ); + level._effect[ "fx_bridge_street_light" ] = loadfx( "light/fx_bridge_street_light" ); + level._effect[ "fx_vertigo_vista_glare01" ] = loadfx( "light/fx_vertigo_vista_glare01" ); + level._effect[ "fx_vertigo_vista_glare02" ] = loadfx( "light/fx_vertigo_vista_glare02" ); + level._effect[ "fx_bridge_vista_glare_red" ] = loadfx( "light/fx_bridge_vista_glare_red" ); + level._effect[ "fx_mp_light_cougar_vehicle" ] = loadfx( "maps/mp_maps/fx_mp_light_cougar_vehicle" ); + level._effect[ "fx_mp_light_cmd_vehicle_cab" ] = loadfx( "maps/mp_maps/fx_mp_light_cmd_vehicle_cab" ); + level._effect[ "fx_mp_light_cmd_vehicle_trailer" ] = loadfx( "maps/mp_maps/fx_mp_light_cmd_vehicle_trailer" ); + level._effect[ "fx_bridge_rectangle_light" ] = loadfx( "light/fx_bridge_rectangle_light" ); + level._effect[ "fx_dust_crumble_lg_runner" ] = loadfx( "dirt/fx_dust_crumble_lg_runner" ); + level._effect[ "fx_dust_crumble_windy_runner" ] = loadfx( "dirt/fx_dust_crumble_windy_runner" ); + level._effect[ "fx_mp_bridge_blowing_ash" ] = loadfx( "maps/mp_maps/fx_mp_bridge_blowing_ash" ); + level._effect[ "fx_mp_bridge_blowing_dust" ] = loadfx( "maps/mp_maps/fx_mp_bridge_blowing_dust" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_castaway_air_dust_blow" ] = loadfx( "maps/mp_maps/fx_mp_castaway_air_dust_blow" ); + level._effect[ "fx_mp_bridge_air_dust_blow" ] = loadfx( "maps/mp_maps/fx_mp_bridge_air_dust_blow" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_lf_mp_bridge_sun" ] = loadfx( "lens_flares/fx_lf_mp_bridge_sun" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin" ); + level._effect[ "fx_mp_light_police_car" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car" ); +} + +precache_fxanim_props() +{ + level.scr_anim = []; + level.scr_anim[ "fxanim_props" ] = []; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "wirespark_long" ] = %fxanim_gp_wirespark_long_anim; + level.scr_anim[ "fxanim_props" ][ "wirespark_med" ] = %fxanim_gp_wirespark_med_anim; +} + +precache_fxanim_props_dlc3() +{ + level.scr_anim[ "fxanim_props_dlc3" ] = []; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_01" ] = %fxanim_mp_bridge_wires_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_02" ] = %fxanim_mp_bridge_wires_02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_03" ] = %fxanim_mp_bridge_wires_03_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "truck_parts" ] = %viewmodel_fxanim_mp_bridge_truck_parts_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "truck_wires" ] = %fxanim_mp_bridge_truck_wires_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "control_wires" ] = %fxanim_mp_bridge_control_wires_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_billboard" ] = %fxanim_mp_bridge_wires_billboard_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_generator" ] = %fxanim_mp_bridge_wires_generator_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_road_hole" ] = %fxanim_mp_bridge_wires_road_hole_anim; +} diff --git a/mp_carrier/aitype/enemy_dog_mp.gsc b/mp_carrier/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_carrier/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_carrier/character/character_mp_german_shepherd.gsc b/mp_carrier/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_carrier/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_carrier/maps/mp/createart/mp_carrier_art.gsc b/mp_carrier/maps/mp/createart/mp_carrier_art.gsc new file mode 100644 index 0000000..cc71997 --- /dev/null +++ b/mp_carrier/maps/mp/createart/mp_carrier_art.gsc @@ -0,0 +1,25 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_carrier", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_carrier/maps/mp/createfx/mp_carrier_fx.gsc b/mp_carrier/maps/mp/createfx/mp_carrier_fx.gsc new file mode 100644 index 0000000..f02ae64 --- /dev/null +++ b/mp_carrier/maps/mp/createfx/mp_carrier_fx.gsc @@ -0,0 +1,885 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake01" ); + ent.v[ "origin" ] = ( -58,2015, -18360,2, -714,482 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake01" ); + ent.v[ "origin" ] = ( -10700,7, 16079,5, -669,519 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_med" ); + ent.v[ "origin" ] = ( -21482,5, -2505,56, -694,797 ); + ent.v[ "angles" ] = ( 357, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_med" ); + ent.v[ "origin" ] = ( -10481,6, 20165,4, -710,126 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake01" ); + ent.v[ "origin" ] = ( -9126,13, -13552,4, -715,212 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake01" ); + ent.v[ "origin" ] = ( 8665,18, 13595,2, -700,893 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_embers" ); + ent.v[ "origin" ] = ( -3854,6, 79,8424, 183,125 ); + ent.v[ "angles" ] = ( 272, 90, -111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_center_sm" ); + ent.v[ "origin" ] = ( -1319,65, -363,628, 64,3916 ); + ent.v[ "angles" ] = ( 302,901, 135,003, -145,086 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white" ); + ent.v[ "origin" ] = ( -513,153, 1362,69, -324,875 ); + ent.v[ "angles" ] = ( 272,603, 130,638, -139,606 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white" ); + ent.v[ "origin" ] = ( 782,881, -1511,68, -455,222 ); + ent.v[ "angles" ] = ( 276,155, 62,3059, -53,7455 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista" ); + ent.v[ "origin" ] = ( -15694,8, 16261,5, -290,759 ); + ent.v[ "angles" ] = ( 275,026, 184,097, -4,82657 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_sm" ); + ent.v[ "origin" ] = ( 6505,5, 13349,9, -328,171 ); + ent.v[ "angles" ] = ( 271,414, 42, 134,991 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_sm" ); + ent.v[ "origin" ] = ( -12455,3, -13247, -470,402 ); + ent.v[ "angles" ] = ( 273, 87, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_signal_lights" ); + ent.v[ "origin" ] = ( -5473,25, 905,82, 209,125 ); + ent.v[ "angles" ] = ( 270, 7,12502, -84,1249 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_center" ); + ent.v[ "origin" ] = ( -3977,28, 46,9893, 55,2842 ); + ent.v[ "angles" ] = ( 280,413, 148,311, -150 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_center" ); + ent.v[ "origin" ] = ( -4941,86, -87,4292, 56,2784 ); + ent.v[ "angles" ] = ( 288,143, 211,092, 145,879 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -3969,86, 78,2687, 74,125 ); + ent.v[ "angles" ] = ( 278,062, 262,855, 97,0749 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -5021,34, -113,987, 68 ); + ent.v[ "angles" ] = ( 293,034, 343,215, 18,1473 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -4937,9, 17,0403, 30,7431 ); + ent.v[ "angles" ] = ( 273, 90, 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -5060,28, 146,711, 29,8151 ); + ent.v[ "angles" ] = ( 297,457, 339,072, -1,6175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -5367,53, 133,109, 34,8895 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -5390,14, 63,707, 32,0963 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -5409,74, 68,626, 32 ); + ent.v[ "angles" ] = ( 283,892, 191,934, 179,103 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -5377,72, 140,05, 35,7386 ); + ent.v[ "angles" ] = ( 284,984, 176,097, -172,506 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -5076,63, -71,1425, 75,5114 ); + ent.v[ "angles" ] = ( 320,933, 100,085, -125,612 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -5080,25, -59,0195, 78,5789 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -4091,42, 131,545, 50,4025 ); + ent.v[ "angles" ] = ( 276,611, 296,668, 45,7822 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -4030,94, 131,781, 44,125 ); + ent.v[ "angles" ] = ( 273, 90, 79 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -4445, -195,563, 30,3438 ); + ent.v[ "angles" ] = ( 275,972, 84,4913, 71,4936 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -4603,88, -155,65, 30,9479 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -4598,65, 261,54, 53,6646 ); + ent.v[ "angles" ] = ( 272,126, 137,547, -170,002 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -4281,06, 44,5, 44,125 ); + ent.v[ "angles" ] = ( 273, 90, 79 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -4609,3, 278,458, 48,332 ); + ent.v[ "angles" ] = ( 273, 90, 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -4428,7, -211,233, 36 ); + ent.v[ "angles" ] = ( 274,224, 167,837, 168,144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -4453,47, -192,678, 35 ); + ent.v[ "angles" ] = ( 298,931, 143,841, -170,31 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "origin" ] = ( -4785,97, 42,2405, 115,005 ); + ent.v[ "angles" ] = ( 64,8322, 222,596, 82,9304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "origin" ] = ( -4806,01, -18,3941, 132,944 ); + ent.v[ "angles" ] = ( 40,9317, 51,6052, -86,0274 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -4606,44, 274,965, 59,9653 ); + ent.v[ "angles" ] = ( 280,318, 298,276, 54,5878 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -5128,75, -82,0912, 41,6681 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -4929,69, -96,3975, 63 ); + ent.v[ "angles" ] = ( 293,034, 343,215, 18,1473 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white" ); + ent.v[ "origin" ] = ( -3959,06, 1892,55, -305,286 ); + ent.v[ "angles" ] = ( 272,236, 54,426, -57,4434 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white" ); + ent.v[ "origin" ] = ( -3317,06, -2486,78, -148,666 ); + ent.v[ "angles" ] = ( 272,236, 54,426, -57,4434 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -4011,45, -38,307, 44,125 ); + ent.v[ "angles" ] = ( 271,008, 95,957, 93,0456 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_embers" ); + ent.v[ "origin" ] = ( -3868,3, 1,7955, 179,57 ); + ent.v[ "angles" ] = ( 270, 0, 14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_embers" ); + ent.v[ "origin" ] = ( -5019,26, -69,3119, 183,125 ); + ent.v[ "angles" ] = ( 270, 0, -12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_embers" ); + ent.v[ "origin" ] = ( -4976,18, -169,25, 197,125 ); + ent.v[ "angles" ] = ( 270, 359,987, 2,01273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -8535,18, -13083,5, -776,479 ); + ent.v[ "angles" ] = ( 6, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( 162,964, -17807,9, -763,41 ); + ent.v[ "angles" ] = ( 2,99634, 159,996, -0,157169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -10291,5, 15930,1, -780,849 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 205 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( 8435,41, 13172,4, -832,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -4281,19, 91,9115, 61,2291 ); + ent.v[ "angles" ] = ( 356,963, 131,232, 1,89006 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -4280,21, 94,8366, 49,8955 ); + ent.v[ "angles" ] = ( 276,977, 176,134, 159,98 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -5077,41, -71,4887, 77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 61 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -4591,18, 226,715, 66 ); + ent.v[ "angles" ] = ( 332, 356, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_sprinkle_water" ); + ent.v[ "origin" ] = ( -4120,79, -1860,87, 14,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_sprinkle_water" ); + ent.v[ "origin" ] = ( -4720,88, -1708,38, 3,875 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_bottom" ); + ent.v[ "origin" ] = ( -4710,57, -1712,12, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_bottom" ); + ent.v[ "origin" ] = ( -4727,65, -1696,49, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -4105,71, -1846,54, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -4135,09, -1856,9, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -4709,19, -1716,29, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -4732,58, -1689,17, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_xsm" ); + ent.v[ "origin" ] = ( -13732,3, 15785,8, -30,112 ); + ent.v[ "angles" ] = ( 274, 8, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_xsm" ); + ent.v[ "origin" ] = ( -10752,1, -13197, -318,155 ); + ent.v[ "angles" ] = ( 283, 345, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -1371,09, -357,367, 46,3916 ); + ent.v[ "angles" ] = ( 336,341, 174,239, 4,35777 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -2200,05, 405,969, 15,125 ); + ent.v[ "angles" ] = ( 278, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -2228,46, 398,769, 54,8563 ); + ent.v[ "angles" ] = ( 290,215, 354,817, 5,71139 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -2463,6, 789,889, 53,125 ); + ent.v[ "angles" ] = ( 290,215, 354,817, 10,7115 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -2094,03, 538,268, 51,125 ); + ent.v[ "angles" ] = ( 275,972, 84,4895, 99,4953 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -2465,97, 773,06, 44,125 ); + ent.v[ "angles" ] = ( 284,008, 149,965, -149,654 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -2365,74, 785,716, 93,523 ); + ent.v[ "angles" ] = ( 290,215, 354,817, 10,7115 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -2455,27, 745,334, 59,7645 ); + ent.v[ "angles" ] = ( 275,972, 84,4895, 99,4953 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( -3973,7, -1130,53, 1381,58 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( -3972,11, -1898,07, 1381,59 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( -4835,98, -1513,69, 827,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -3447,69, -1683,97, -23,875 ); + ent.v[ "angles" ] = ( 271, 256,006, 76,9945 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -4020,17, -1905,87, -19,2877 ); + ent.v[ "angles" ] = ( 270, 0, -21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -4236,28, -1904,52, -15,7601 ); + ent.v[ "angles" ] = ( 270, 358,457, -19,4571 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -4459,57, -1908, -18,5915 ); + ent.v[ "angles" ] = ( 270, 357,973, -20,9727 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -4675,08, -1908,77, -18,4708 ); + ent.v[ "angles" ] = ( 270, 358,457, -22,4571 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -4556,52, -1970,96, -23,8727 ); + ent.v[ "angles" ] = ( 276, 76, -76 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_med" ); + ent.v[ "origin" ] = ( -2702,43, 1868,7, -120,875 ); + ent.v[ "angles" ] = ( 273, 274, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -3427,92, -81,8574, 21,9565 ); + ent.v[ "angles" ] = ( 317,146, 175,806, 2,41347 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -3422,85, -69,953, 31,0785 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( -2969,28, -62,7099, 177,277 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_whisp" ); + ent.v[ "origin" ] = ( -2234,61, 191,542, 33,2623 ); + ent.v[ "angles" ] = ( 275,972, 84,4895, 99,4953 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -2254,46, 191,494, 30,2707 ); + ent.v[ "angles" ] = ( 274,68, 313,059, 51,9166 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_hose_water" ); + ent.v[ "origin" ] = ( -5944,17, 176,554, 46,125 ); + ent.v[ "angles" ] = ( 270, 0, -178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -5352,85, 1117,35, 93,125 ); + ent.v[ "angles" ] = ( 327,422, 149,504, 72,9211 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -5517,17, 949,536, 92,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -4846,19, 926,685, 110,143 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -4266,9, -1344,87, 102,125 ); + ent.v[ "angles" ] = ( 25,0027, 269,016, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -4292,1, -369,65, 44,125 ); + ent.v[ "angles" ] = ( 288,292, 349,876, 9,59762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "origin" ] = ( -6044,17, -971,258, 142,232 ); + ent.v[ "angles" ] = ( 64,8322, 222,596, 82,9304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5063,26, 861,135, 159,591 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5061,54, 925,1, 158,584 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5061,25, 986,927, 158,588 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5150,78, 988,019, 158,252 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5151,44, 860,562, 159,255 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5148,66, 927,492, 158,247 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5234,71, 985,008, 159,256 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5232,74, 861,248, 159,259 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5231,04, 926,214, 159,251 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5311,23, 986,513, 159,253 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5310,36, 862,11, 159,256 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_tube_light_sq" ); + ent.v[ "origin" ] = ( -5311,74, 925,849, 159,248 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -2990,27, -1425,42, -23,5496 ); + ent.v[ "angles" ] = ( 345,698, 169,704, 7,42529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -2990,66, -1431,45, -25,7327 ); + ent.v[ "angles" ] = ( 288,484, 346,765, 27,5501 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -3008,45, -1519,56, -58,1315 ); + ent.v[ "angles" ] = ( 284,555, 358,91, 27,2706 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -2200,53, 181,707, 10,1593 ); + ent.v[ "angles" ] = ( 317,146, 175,806, 2,41347 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -2228,89, 187,158, 5,48325 ); + ent.v[ "angles" ] = ( 345, 173, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -2893,2, -45,4313, 148,287 ); + ent.v[ "angles" ] = ( 358,281, 50,0353, -179,306 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -2974,98, 15,7562, 149,692 ); + ent.v[ "angles" ] = ( 358,281, 50,0353, -179,306 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -2968,33, 14,4817, 147,436 ); + ent.v[ "angles" ] = ( 274,028, 270,507, 14,9761 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -2892,41, -53,2338, 149,018 ); + ent.v[ "angles" ] = ( 274,028, 270,507, 14,9761 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -2557,05, 726,475, 109,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -1865,89, 31,8837, 48,125 ); + ent.v[ "angles" ] = ( 294, 0, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -2719,39, -628,071, 115,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -3654,59, -1058,95, 89,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -3624,6, -557,147, 80,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -4939,88, -470,674, 64,125 ); + ent.v[ "angles" ] = ( 272, 270,003, 70,9956 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -5515,04, -558,374, 99,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -5346,74, 428,328, 100,767 ); + ent.v[ "angles" ] = ( 273,082, 143,357, -154,327 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -5810,05, 342,903, 88,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -5736,39, -359,219, 61,0693 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -5616,28, 692,708, 94,2869 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -3296,67, 547,707, 119,245 ); + ent.v[ "angles" ] = ( 270, 356,906, 36,094 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -4274,38, 119,286, 44,125 ); + ent.v[ "angles" ] = ( 281,169, 309,125, 13,1377 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -5288,9, -147,045, 93,125 ); + ent.v[ "angles" ] = ( 271,104, 287,171, 70,8336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -5202,3, 218,401, 45,9961 ); + ent.v[ "angles" ] = ( 274,176, 288,61, 38,9491 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -4136,17, -659,741, 69,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -2952,7, 30,9951, 70,9518 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -4381,43, -1054,36, 65,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -4878,93, 60,5723, 33 ); + ent.v[ "angles" ] = ( 286,386, 156,261, 177,678 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -4880,41, 72,9994, 43,8322 ); + ent.v[ "angles" ] = ( 288,292, 347,876, 9,5976 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_sm" ); + ent.v[ "origin" ] = ( -3953,09, -104,214, 44,125 ); + ent.v[ "angles" ] = ( 276,567, 39,3156, -67,3963 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_sm" ); + ent.v[ "origin" ] = ( -3939,66, -107,473, 48,9528 ); + ent.v[ "angles" ] = ( 315,281, 349,535, 1,14706 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_sm" ); + ent.v[ "origin" ] = ( -3459,76, -1670,08, -21,875 ); + ent.v[ "angles" ] = ( 271, 256,006, 76,9945 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_med" ); + ent.v[ "origin" ] = ( -2673,19, 1344,67, -290,875 ); + ent.v[ "angles" ] = ( 275,644, 321,987, 39,8366 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_xlg" ); + ent.v[ "origin" ] = ( -6531,17, 1097,36, -283,067 ); + ent.v[ "angles" ] = ( 275,981, 184,506, -175,494 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_xlg" ); + ent.v[ "origin" ] = ( -6582,02, -1250,14, -278,134 ); + ent.v[ "angles" ] = ( 272,184, 107,998, -126,968 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -8588,57, -12766,9, -561,241 ); + ent.v[ "angles" ] = ( 270, 0,205568, -0,205568 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -14091,9, -13489,7, -452,354 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -6462,06, -17808,7, -435,959 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( 11,2148, -16553,5, -273,229 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -21214,4, -2214, -630,674 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -10149,3, 15391,4, -421,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -18681,2, 15370,4, -106,849 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( 8291,97, 12459,5, -448,972 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( 3323,2, 13603,8, -484,159 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_mist" ); + ent.v[ "origin" ] = ( -9888,85, 19843,6, -638,009 ); + ent.v[ "angles" ] = ( 279, 4, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_carrier_sun1" ); + ent.v[ "origin" ] = ( 38623,1, 90590,2, 8650,31 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_med" ); + ent.v[ "origin" ] = ( -4564,92, -1544,95, -450,125 ); + ent.v[ "angles" ] = ( 271,157, 149,399, -144,41 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_med" ); + ent.v[ "origin" ] = ( -5265,77, 1602,43, -346,726 ); + ent.v[ "angles" ] = ( 288,437, 267,003, 93,1525 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_xsm" ); + ent.v[ "origin" ] = ( 4387,92, 13115,7, -544,612 ); + ent.v[ "angles" ] = ( 274, 188, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_xsm" ); + ent.v[ "origin" ] = ( -12050,2, 15687,4, -393,525 ); + ent.v[ "angles" ] = ( 300,846, 79,0048, 111,848 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_xsm" ); + ent.v[ "origin" ] = ( -753,66, -18091,5, -395,443 ); + ent.v[ "angles" ] = ( 277, 345, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_burning_vista_xsm" ); + ent.v[ "origin" ] = ( -1519,06, -17954,7, -575,988 ); + ent.v[ "angles" ] = ( 283, 345, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white" ); + ent.v[ "origin" ] = ( -1081,07, -1444,35, -443,202 ); + ent.v[ "angles" ] = ( 273,103, 190,141, 175,406 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white" ); + ent.v[ "origin" ] = ( -3253,04, 1420,7, -509,43 ); + ent.v[ "angles" ] = ( 272,994, 322,174, 37,7963 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_white_med" ); + ent.v[ "origin" ] = ( -6055,61, -1461,02, -262,926 ); + ent.v[ "angles" ] = ( 271,157, 149,394, -169,406 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_med" ); + ent.v[ "origin" ] = ( -1293,77, -285,233, 60,3013 ); + ent.v[ "angles" ] = ( 290,215, 354,817, 5,71139 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_area" ); + ent.v[ "origin" ] = ( -1819,96, -281,825, 80,125 ); + ent.v[ "angles" ] = ( 270, 359,818, -0,818171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -1373,5, -313,755, 45,125 ); + ent.v[ "angles" ] = ( 280,383, 227,744, 115,753 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush_splash_sm" ); + ent.v[ "origin" ] = ( -4720,53, -1707,86, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush_splash_sm" ); + ent.v[ "origin" ] = ( -4116,44, -1857,15, -75,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -522,152, 899,132, -728,155 ); + ent.v[ "angles" ] = ( 357,444, 176,534, 24,7667 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -1604,54, 905,903, -748,42 ); + ent.v[ "angles" ] = ( 357,444, 176,534, 24,7667 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( 541,632, -1017,3, -716 ); + ent.v[ "angles" ] = ( 3,22013, 186,887, -6,00497 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -540,782, -1112,97, -714 ); + ent.v[ "angles" ] = ( 2,99797, 174,365, -16,2623 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -1469,87, -1083,49, -738,966 ); + ent.v[ "angles" ] = ( 2,83823, 176,778, -15,2345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_smoke_fire_lg" ); + ent.v[ "origin" ] = ( -4942,81, -69,6983, 79,0716 ); + ent.v[ "angles" ] = ( 278,528, 290,839, 72,1579 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_vista_wake_side" ); + ent.v[ "origin" ] = ( -485,978, -17870,5, -765,265 ); + ent.v[ "angles" ] = ( 2,99634, 159,996, -0,157169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_hazard_light" ); + ent.v[ "origin" ] = ( -2310,63, -376,682, 94,4275 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_hazard_light" ); + ent.v[ "origin" ] = ( -2309,65, -246,131, 94,9715 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_carrier_hazard_light" ); + ent.v[ "origin" ] = ( -2309,75, 320,981, 94,0247 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; +} diff --git a/mp_carrier/maps/mp/mp_carrier.gsc b/mp_carrier/maps/mp/mp_carrier.gsc new file mode 100644 index 0000000..fe82c8d --- /dev/null +++ b/mp_carrier/maps/mp/mp_carrier.gsc @@ -0,0 +1,105 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + maps/mp/mp_carrier_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_carrier_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_carrier" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + level thread water_trigger_init(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); +} + +water_trigger_init() +{ + wait 3; + triggers = getentarray( "trigger_hurt", "classname" ); + _a53 = triggers; + _k53 = getFirstArrayKey( _a53 ); + while ( isDefined( _k53 ) ) + { + trigger = _a53[ _k53 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + trigger thread water_trigger_think(); + } + _k53 = getNextArrayKey( _a53, _k53 ); + } +} + +water_trigger_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) ) + { + trace = worldtrace( entity.origin + vectorScale( ( 0, 0, 1 ), 30 ), entity.origin - vectorScale( ( 0, 0, 1 ), 256 ) ); + if ( trace[ "surfacetype" ] == "none" ) + { + entity playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], entity.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + } + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 0,4; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a101 = triggers; + _k101 = getFirstArrayKey( _a101 ); + while ( isDefined( _k101 ) ) + { + trigger = _a101[ _k101 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + trace = worldtrace( self.origin + vectorScale( ( 0, 0, 1 ), 30 ), self.origin - vectorScale( ( 0, 0, 1 ), 256 ) ); + return trace[ "surfacetype" ] == "none"; + } + } + _k101 = getNextArrayKey( _a101, _k101 ); + } + return 0; +} diff --git a/mp_carrier/maps/mp/mp_carrier_amb.gsc b/mp_carrier/maps/mp/mp_carrier_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_carrier/maps/mp/mp_carrier_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_carrier/maps/mp/mp_carrier_fx.gsc b/mp_carrier/maps/mp/mp_carrier_fx.gsc new file mode 100644 index 0000000..87b3a8f --- /dev/null +++ b/mp_carrier/maps/mp/mp_carrier_fx.gsc @@ -0,0 +1,72 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_util_fx() +{ +} + +precache_scripted_fx() +{ + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin_runner" ); + level._effect[ "fx_mp_carrier_spark_bounce_runner" ] = loadfx( "maps/mp_maps/fx_mp_carrier_spark_bounce_runner" ); + level._effect[ "fx_mp_smk_plume_lg_blk" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_lg_blk" ); + level._effect[ "fx_mp_smk_plume_lg_blk_carrier" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_lg_blk_carrier" ); + level._effect[ "fx_mp_carrier_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_sm" ); + level._effect[ "fx_mp_carrier_smoke_med" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_med" ); + level._effect[ "fx_mp_carrier_smoke_lg" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_lg" ); + level._effect[ "fx_mp_carrier_embers" ] = loadfx( "maps/mp_maps/fx_mp_carrier_embers" ); + level._effect[ "fx_mp_carrier_smoke_xlg" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_xlg" ); + level._effect[ "fx_mp_carrier_smoke_area" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_area" ); + level._effect[ "fx_mp_carrier_smoke_white" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_white" ); + level._effect[ "fx_mp_carrier_burning_vista" ] = loadfx( "maps/mp_maps/fx_mp_carrier_burning_vista" ); + level._effect[ "fx_mp_carrier_burning_vista_sm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_burning_vista_sm" ); + level._effect[ "fx_mp_carrier_burning_vista_xsm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_burning_vista_xsm" ); + level._effect[ "fx_mp_carrier_burning_vista_mist" ] = loadfx( "maps/mp_maps/fx_mp_carrier_burning_vista_mist" ); + level._effect[ "fx_mp_carrier_smoke_whisp" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_whisp" ); + level._effect[ "fx_mp_carrier_smoke_center" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_center" ); + level._effect[ "fx_mp_carrier_smoke_center_sm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_center_sm" ); + level._effect[ "fx_mp_carrier_smoke_white_sm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_white_sm" ); + level._effect[ "fx_mp_carrier_smoke_white_med" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_white_med" ); + level._effect[ "fx_mp_fumes_vent_xsm_int" ] = loadfx( "maps/mp_maps/fx_mp_fumes_vent_xsm_int" ); + level._effect[ "fx_mp_carrier_smoke_white_xlg" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_white_xlg" ); + level._effect[ "fx_mp_carrier_smoke_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_fire_sm" ); + level._effect[ "fx_mp_carrier_smoke_fire_med" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_fire_med" ); + level._effect[ "fx_mp_carrier_smoke_fire_lg" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_fire_lg" ); + level._effect[ "fx_mp_carrier_vista_wake01" ] = loadfx( "maps/mp_maps/fx_mp_carrier_vista_wake01" ); + level._effect[ "fx_mp_carrier_vista_wake_med" ] = loadfx( "maps/mp_maps/fx_mp_carrier_vista_wake_med" ); + level._effect[ "fx_mp_carrier_vista_wake_side" ] = loadfx( "maps/mp_maps/fx_mp_carrier_vista_wake_side" ); + level._effect[ "fx_mp_slums_sprinkle_water" ] = loadfx( "maps/mp_maps/fx_mp_slums_sprinkle_water" ); + level._effect[ "fx_wall_water_bottom" ] = loadfx( "water/fx_wall_water_bottom" ); + level._effect[ "fx_water_splash_detail" ] = loadfx( "water/fx_water_splash_detail" ); + level._effect[ "fx_carrier_hose_water" ] = loadfx( "water/fx_carrier_hose_water" ); + level._effect[ "fx_water_fire_sprinkler_gush_splash_sm" ] = loadfx( "water/fx_water_fire_sprinkler_gush_splash_sm" ); + level._effect[ "fx_mp_carrier_signal_lights" ] = loadfx( "maps/mp_maps/fx_mp_carrier_signal_lights" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_light_beacon_red_blink_fst" ] = loadfx( "light/fx_light_beacon_red_blink_fst_sm" ); + level._effect[ "fx_carrier_tube_light_sq" ] = loadfx( "light/fx_carrier_tube_light_sq" ); + level._effect[ "fx_carrier_hazard_light" ] = loadfx( "light/fx_carrier_hazard_light" ); + level._effect[ "fx_lf_mp_carrier_sun1" ] = loadfx( "lens_flares/fx_lf_mp_carrier_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "towing_crane" ] = %fxanim_mp_carrier_towing_crane_anim; + level.scr_anim[ "fxanim_props" ][ "sparking_wires_med" ] = %fxanim_gp_wirespark_med_anim; +} + +main() +{ + precache_util_fx(); + precache_createfx_fx(); + precache_scripted_fx(); + precache_fxanim_props(); + maps/mp/createfx/mp_carrier_fx::main(); + maps/mp/createart/mp_carrier_art::main(); +} diff --git a/mp_castaway/aitype/enemy_dog_mp.gsc b/mp_castaway/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_castaway/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_castaway/character/character_mp_german_shepherd.gsc b/mp_castaway/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_castaway/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_castaway/maps/mp/createfx/mp_castaway_fx.gsc b/mp_castaway/maps/mp/createfx/mp_castaway_fx.gsc new file mode 100644 index 0000000..fd6499f --- /dev/null +++ b/mp_castaway/maps/mp/createfx/mp_castaway_fx.gsc @@ -0,0 +1,1605 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2309,11, 658,607, 55,2184 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 139 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2272,99, 607,501, 55,2496 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2296,89, 524,59, 53,2357 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 247 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 683,492, 2632,41, 50,1331 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 652,088, 2707,02, 50,0117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 35 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 614,457, 2759,75, 50,3346 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 40 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 560,507, 2810,95, 48,8594 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 479,506, 2807,22, 51,5955 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 444,544, 2838,1, 50,824 ); + ent.v[ "angles" ] = ( 0,515095, 51, 0,857321 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1200,17, -938,649, 45 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1270,16, -997,653, 48,7685 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 201 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1211,3, -1085,04, 50,4368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 238 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1114,59, -1044,34, 47,3283 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1140,62, -964,823, 49,4685 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 178,984, -1295,63, 49 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 232 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 252,374, -1322,76, 53 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 280 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 679,633, -1398,22, 48,2879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 212 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 718,309, -1423,61, 49,0928 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2447,31, 615,365, 48,3262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 615,983, 644,331, 161,413 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1384,3, 234,944, 149,107 ); + ent.v[ "angles" ] = ( 353, 186, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1358,43, 75,9958, 140,416 ); + ent.v[ "angles" ] = ( 353, 186, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1304,63, 126,641, 155,685 ); + ent.v[ "angles" ] = ( 353, 186, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1080,89, 57,8276, 199,926 ); + ent.v[ "angles" ] = ( 353, 186, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 929,338, 170,667, 246,904 ); + ent.v[ "angles" ] = ( 350,735, 208,306, -3,77909 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 898,177, 17,1387, 248,148 ); + ent.v[ "angles" ] = ( 0,121878, 95,0073, 6,99893 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 408,851, 338,904, 118,73 ); + ent.v[ "angles" ] = ( 358,192, 110,893, 6,76373 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 117,157, 779,618, 65,4429 ); + ent.v[ "angles" ] = ( 353, 186, 0 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 419,306, 386,397, 46,3514 ); + ent.v[ "angles" ] = ( 353,01, 182,978, 0,368177 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 483,953, -1992,45, 54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 454,158, -1889,45, 53 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,344, -1826,58, 52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 24 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 350,834, -1785,55, 50 ); + ent.v[ "angles" ] = ( 358,502, 51,9515, 3,71014 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 294,91, -1804,61, 50 ); + ent.v[ "angles" ] = ( 356,469, 148,058, -1,88022 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 281,548, -1874,87, 51 ); + ent.v[ "angles" ] = ( 358,062, 181,059, -3,49978 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 285,764, -1941,87, 50 ); + ent.v[ "angles" ] = ( 359,513, 203,016, -3,97025 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 311,079, -2018,78, 50 ); + ent.v[ "angles" ] = ( 359,237, 199,026, -3,92671 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 332,755, -2094,82, 50 ); + ent.v[ "angles" ] = ( 359,652, 205,012, -3,9848 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 510,576, -2065,47, 57 ); + ent.v[ "angles" ] = ( 1,23519, 12,0409, 3,80544 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 903,136, 649,689, 683,568 ); + ent.v[ "angles" ] = ( 305,237, 85,0031, -101,997 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 697,361, 505,702, 78,7322 ); + ent.v[ "angles" ] = ( 283, 180, 180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 459,608, 400,383, 37,9355 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 459,42, 71,9871, 93,4523 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1477,47, -609,772, 84,0656 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 345,448, 2841,06, 49,9863 ); + ent.v[ "angles" ] = ( 359,758, 95,9965, 0,97045 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 261,543, 2798,68, 48,7692 ); + ent.v[ "angles" ] = ( 359,234, 131,994, -0,357036 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 192,976, 2734,03, 50,509 ); + ent.v[ "angles" ] = ( 359,234, 131,994, -0,357036 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 154,584, 2654,46, 49,7827 ); + ent.v[ "angles" ] = ( 359,684, 174,993, -0,783479 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1117,63, 2781,93, 45,016 ); + ent.v[ "angles" ] = ( 359,156, 103,991, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1172,89, 2741,97, 46,7767 ); + ent.v[ "angles" ] = ( 0,527199, 162,982, -0,700591 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1174,03, 2672,8, 43,0072 ); + ent.v[ "angles" ] = ( 0,597542, 168,982, -0,641649 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1184,68, 2607,73, 44,1291 ); + ent.v[ "angles" ] = ( 0,527199, 162,982, -0,700591 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1213,17, 2530,47, 43,6948 ); + ent.v[ "angles" ] = ( 0,690559, 177,982, -0,540274 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 725,925, -216,535, 122,866 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1137,86, -768,984, 110,756 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 525,403, 743,275, 61,7535 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 514,801, 956,026, 67,7127 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -836,681, 1281,28, 280,915 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 283,776, 1827,24, 217,074 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -100,279, 1284,75, 144,805 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1041,7, 321,277, 263,484 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1160,74, 639,345, 235,517 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1301,81, 878,466, 275,84 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1170,13, 1194,03, 241,53 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 838,773, 1587,88, 239,274 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1187,61, 1678,82, 238,115 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1584,97, 1668,01, 51,4792 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 111 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1633,07, 1733,07, 52,9506 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1672,07, 1802,49, 50,5894 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 145 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1725,54, 1835,75, 48,6745 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1776,39, 1809,99, 49,0012 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 57 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1816,72, 1773,24, 46,2076 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1852,81, 1735,57, 43,2828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 35 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1859,23, 1694,72, 47,3971 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1826,63, 1645,81, 46,147 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 322 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1793,66, 1574,6, 51,2513 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 335 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1751,58, 1520,38, 49,7867 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 308 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1711,8, 1453,04, 51,327 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 322 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_god_ray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -74,8562, -510,961, 387,453 ); + ent.v[ "angles" ] = ( 42,5524, 297,699, 79,7769 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_god_ray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -117,168, -452,747, 387,378 ); + ent.v[ "angles" ] = ( 45,8322, 299,768, 81,4295 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_god_ray_lg_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -418,075, 1331,5, 422,592 ); + ent.v[ "angles" ] = ( 8,16497, 318,371, 92,6577 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_god_ray_lg_02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -491,755, 1267,15, 348,38 ); + ent.v[ "angles" ] = ( 8,16497, 318,371, 92,6577 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_god_ray_lg_r" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -467,022, -520,02, 290,269 ); + ent.v[ "angles" ] = ( 42,786, 310,926, -148,287 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -579,984, 1367,04, 293,438 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 305 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -82,7526, -529,294, 274,845 ); + ent.v[ "angles" ] = ( 40,9649, 305,354, -1,01489 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -97,8313, -574,901, 312,97 ); + ent.v[ "angles" ] = ( 40,9654, 305,377, -1,99895 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_castaway_sun" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -56272,1, 107451, 79521,1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_cave_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 54,1245, -734,099, 268,991 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_cave_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 22,9793, -776,739, 265,759 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1710,32, 651,483, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1648,56, 135,829, 81,21 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1054,4, 1289,39, 211,954 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1118,29, 613,617, 193,518 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -775,772, 216,542, 177,267 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -136,925, 115,584, 62,116 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 159,333, 1744,39, 135,427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1170,86, 1627,08, 95,7976 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1409,94, 1224,27, 89,4698 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 315,539, 2201,44, 80,9044 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 886,006, 2096,7, 66,5365 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 50,0848, 2068,83, 109,332 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -807,146, 1831,56, 143,896 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1050,72, -840,773, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,058, 1278,75, 71,3407 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1812,58, 1785,9, 50,125 ); + ent.v[ "angles" ] = ( 271,424, 340,025, 11,9623 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1865,22, 1720,12, 52,2316 ); + ent.v[ "angles" ] = ( 271,424, 340,029, 95,9585 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 991,153, -1175,54, 58,3031 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_vista_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4331,99, 762,78, 134,357 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_vista_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4418,72, 2131,36, 146,511 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_vista_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2514,2, -4640,24, 115,631 ); + ent.v[ "angles" ] = ( 359,234, 64, 0,643204 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4283,13, 2017,94, 49,6744 ); + ent.v[ "angles" ] = ( 270,431, 286,973, -104,935 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4175,98, 1753,47, 56,1265 ); + ent.v[ "angles" ] = ( 272,589, 88,4222, 92,6185 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2517,09, 2208,19, 49,7463 ); + ent.v[ "angles" ] = ( 273,144, 225,996, 2,03693 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3027,37, 614,118, 49,2681 ); + ent.v[ "angles" ] = ( 270,431, 287,096, -55,0586 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2355,81, -3277,15, 60,1393 ); + ent.v[ "angles" ] = ( 272,883, 5,44351, -164,431 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3552,49, -2941,4, 51,0849 ); + ent.v[ "angles" ] = ( 272,883, 5,44328, -101,43 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 670,956, 2563,2, 47,8433 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 980,204, 2518,46, 53,9728 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 22 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 938,81, 2541,44, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 880,878, 2554,81, 48,2297 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 98 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3175, -728,283, 57,6881 ); + ent.v[ "angles" ] = ( 274,181, 349,567, -88,5148 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_vista_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2725,72, -530,151, 65,4903 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_vista_mist02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4547,33, -1513,11, 201,485 ); + ent.v[ "angles" ] = ( 359,134, 17, -0,500026 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3817,9, -143,819, 50,0749 ); + ent.v[ "angles" ] = ( 270,431, 287,145, -50,1074 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_rock_splash01_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3119,82, 1755,6, 50,975 ); + ent.v[ "angles" ] = ( 273,144, 225,997, -30,964 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1963,71, 2617,47, 50,125 ); + ent.v[ "angles" ] = ( 359,51, 339,982, 0,727229 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1936,18, 2736,76, 49,125 ); + ent.v[ "angles" ] = ( 359,437, 345,982, 0,672048 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1926,81, 2979,34, 49,2804 ); + ent.v[ "angles" ] = ( 359,51, 339,982, 0,727229 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1804,89, 3301,43, 52,8538 ); + ent.v[ "angles" ] = ( 359,51, 339,982, 0,727229 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1938,55, 3563,25, 52,379 ); + ent.v[ "angles" ] = ( 359,391, 349,982, 0,631129 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2088,25, 2088,35, 54,3652 ); + ent.v[ "angles" ] = ( 359,51, 339,982, 0,727229 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2059,35, 2246,16, 51,8481 ); + ent.v[ "angles" ] = ( 359,309, 73,9886, -0,539343 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2383,93, 1928,65, 52,0728 ); + ent.v[ "angles" ] = ( 359,123, 35,9855, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2252,66, 1992,58, 51,9542 ); + ent.v[ "angles" ] = ( 0,609476, 261,989, 0,630286 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2772,8, 579,394, 49,5426 ); + ent.v[ "angles" ] = ( 359,139, 24,9843, 0,167899 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2740,71, 719,049, 51,2474 ); + ent.v[ "angles" ] = ( 359,281, 70,9886, -0,502435 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2640,21, 485,421, 50,125 ); + ent.v[ "angles" ] = ( 359,3, 358,982, 0,528118 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2657,59, 273,709, 54,5476 ); + ent.v[ "angles" ] = ( 359,282, 0,982195, 0,503365 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2069,53, -286,611, 47,7132 ); + ent.v[ "angles" ] = ( 358,27, 45,9926, -0,651979 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_vista_mist02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3051,52, -3756,48, 90,985 ); + ent.v[ "angles" ] = ( 359,707, 59,9986, -0,957575 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1583,22, 1546,36, 59,8251 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1615,71, 917,809, 57,5445 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1444,29, 326,517, 61,6153 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1308,58, -254,807, 56,5357 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 37,348, -811,309, 68 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -265,716, -459,817, 89,6134 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 68,6026, -510,946, 69,8698 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1332,65, 486,003, 140,383 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1222,12, -554,443, 46,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 133 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1274,49, -625,496, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 133 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1205,02, -674,093, 53,2369 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 212 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1138,75, -743,154, 45,79 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 297 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1556,04, -653,317, 45,1044 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 16 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -540,755, 1332,93, 240,053 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -421,004, 1862,47, 145,818 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 34,3818, -1064,4, 69,3073 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -124,506, -53,8282, 85,3477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 672,816, 2009,48, 156,599 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 264,245, 2341,58, 84,092 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 293,076, 2008,2, 120,677 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 644,024, 2506,68, 246,802 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1844,73, 1295,98, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 202 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1864,94, 1231,61, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 202 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1897,02, 1179,02, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1963,6, 1115,58, 49,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 237 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1994,46, 1048,3, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_mist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1221,34, 718,416, 256,468 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -685,64, -361,793, 114,682 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -898,057, 1352,82, 266,194 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 843,007, 2156,72, 131,335 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1143,45, 314,325, 254,818 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1372,73, 704,764, 185,365 ); + ent.v[ "angles" ] = ( 7,8362, 75,8857, -1,60495 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1289,6, -268,921, 184,556 ); + ent.v[ "angles" ] = ( 353, 103, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1359,07, -763,425, 157,154 ); + ent.v[ "angles" ] = ( 3,0027, 101,013, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1202,26, -889,747, 117,217 ); + ent.v[ "angles" ] = ( 358,396, 169,204, 1,18583 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 675,987, -619,385, 89,358 ); + ent.v[ "angles" ] = ( 358,259, 134,273, 1,16002 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -476,405, -496,256, 166,411 ); + ent.v[ "angles" ] = ( 5,02932, 327,214, 4,87513 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -629,191, -182,071, 193,012 ); + ent.v[ "angles" ] = ( 349,912, 108,923, 0,69036 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1095,31, 1047,42, 259,667 ); + ent.v[ "angles" ] = ( 359,813, 75,1664, 3,27994 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -638,842, 1453,98, 292,847 ); + ent.v[ "angles" ] = ( 350,729, 318,194, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,719, 1529,27, 177,87 ); + ent.v[ "angles" ] = ( 8,79165, 317,407, 3,95414 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 37,1285, 1416,17, 195,027 ); + ent.v[ "angles" ] = ( 2,44562, 260,037, -2,73182 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 574,74, 235,379, 166,746 ); + ent.v[ "angles" ] = ( 7,84506, 94,5444, -4,28343 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -60,0989, 321,93, 116,073 ); + ent.v[ "angles" ] = ( 2,63238, 78,3364, 3,42619 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -147,278, 153,523, 127,703 ); + ent.v[ "angles" ] = ( 348,838, 165,987, 1,72505 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1318,25, 1379,81, 146,382 ); + ent.v[ "angles" ] = ( 358,313, 139,682, 6,84143 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -23,8215, 1976,21, 184,377 ); + ent.v[ "angles" ] = ( 2,4379, 174,24, 7,14616 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -564,44, 2073,1, 163,818 ); + ent.v[ "angles" ] = ( 351,289, 260,576, 5,01022 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1085,09, 1607,01, 154,424 ); + ent.v[ "angles" ] = ( 1,35144, 148,083, 6,39748 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 26,4004, 819,807, 56,9765 ); + ent.v[ "angles" ] = ( 282, 180, 180 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 277,47, 475,201, 145,352 ); + ent.v[ "angles" ] = ( 282, 180, 180 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1605,55, -811,994, 497,718 ); + ent.v[ "angles" ] = ( 327,627, 101,061, 25,6804 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1649,46, -269,168, 64,7911 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1175,08, -157,254, 165,817 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1322,77, 399,876, 136,252 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1737,81, 39,7418, 67,3698 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1021,88, -1452,84, 46,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1071,46, -1442,36, 47,3262 ); + ent.v[ "angles" ] = ( 0, 320, -1 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1676,72, -930,024, 49,0604 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 212 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1692,53, -919,158, 48,125 ); + ent.v[ "angles" ] = ( 359,513, 12,9703, 7,98311 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1633,76, -852,426, 47,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 209 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1667,86, -859,828, 46,006 ); + ent.v[ "angles" ] = ( 359,513, 12,9703, 7,98311 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2149,55, 55,7322, 46,9984 ); + ent.v[ "angles" ] = ( 357,638, 192,29, -4,06977 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2208,14, 44,9981, 46,3903 ); + ent.v[ "angles" ] = ( 4,04907, 339,249, 6,90291 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2089,79, -47,3551, 42,6614 ); + ent.v[ "angles" ] = ( 354,805, 156,274, -1,6893 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2107,24, -55,0931, 46,125 ); + ent.v[ "angles" ] = ( 4,75181, 323,238, -0,3888 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2230,3, -238,416, 45,2701 ); + ent.v[ "angles" ] = ( 358,275, 177,123, 2,18927 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2290,49, -344,137, 48,125 ); + ent.v[ "angles" ] = ( 356,075, 185,175, 0,559793 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2461,16, 27,2183, 50,125 ); + ent.v[ "angles" ] = ( 357,232, 186,143, 3,77498 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2032,55, -438,654, 46,5852 ); + ent.v[ "angles" ] = ( 356,279, 109,157, 2,98296 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2046,15, -492,046, 48,341 ); + ent.v[ "angles" ] = ( 3,96658, 294,162, 0,352762 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1698,24, -555,11, 43,7283 ); + ent.v[ "angles" ] = ( 355,199, 356,609, -1,73468 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1769,16, 1052,96, 43,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1781,79, 1020,35, 47,349 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1912,35, 749,293, 48,5828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 198 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1938,87, 740,911, 46,028 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 9 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1964,2, 214,067, 83,8798 ); + ent.v[ "angles" ] = ( 357,5, 13,0028, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2574,17, -296,451, 118,125 ); + ent.v[ "angles" ] = ( 352,689, 182,975, -1,78804 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_oil_slick" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2577,72, -178,835, 50,4495 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_oil_slick" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3223,19, -258,061, 50,7101 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 335 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2595,33, -321,244, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 314,213, -653,71, 408,651 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 105 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -366,252, -279,695, 471,791 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -706,855, 742,915, 524,258 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -549,139, 1179,75, 606,192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -371,368, 1517,9, 740,172 ); + ent.v[ "angles" ] = ( 16, 123, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 435,937, 2301,62, 476,874 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1021,81, 2627,13, 306,963 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 806,351, 1194,83, 444,228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_leaf_debris" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 744,553, 1215,07, 405,218 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 238,687, 1704,33, 142,445 ); + ent.v[ "angles" ] = ( 359, 171, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -15,391, 1565,59, 145,964 ); + ent.v[ "angles" ] = ( 0,939825, 331, -0,342114 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -367,136, 2096,07, 110,942 ); + ent.v[ "angles" ] = ( 359,066, 150, 0,358453 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1255,13, 800,127, 192,665 ); + ent.v[ "angles" ] = ( 0,956449, 333,994, -0,292432 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -910,904, 157,83, 190,127 ); + ent.v[ "angles" ] = ( 0,866139, 21, 0,500124 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 169,499, 57,7871, 31,9389 ); + ent.v[ "angles" ] = ( 354,501, 231,076, -0,870136 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 643,582, -278,676, 68,6005 ); + ent.v[ "angles" ] = ( 359, 171, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1100,65, 293,445, 200,434 ); + ent.v[ "angles" ] = ( 0,848171, 23,0071, 0,530028 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1399,24, 847,12, 111,835 ); + ent.v[ "angles" ] = ( 0,71944, 35,0075, 0,694792 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1171,49, 1508,18, 102,993 ); + ent.v[ "angles" ] = ( 359,593, 105, 0,913701 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1046,55, 2070,23, 72,8744 ); + ent.v[ "angles" ] = ( 359,066, 150, 0,358453 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 192,797, 631,766, 51,5905 ); + ent.v[ "angles" ] = ( 359,293, 216,007, -0,707151 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 658,266, 578,374, 59,5491 ); + ent.v[ "angles" ] = ( 359,003, 166,001, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 223,59, 1017,97, 79,7395 ); + ent.v[ "angles" ] = ( 359,879, 249,002, -0,989253 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -714,883, 365,172, 189,552 ); + ent.v[ "angles" ] = ( 359,844, 247,003, -0,984433 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -650,443, 2481,78, 68,7245 ); + ent.v[ "angles" ] = ( 0,785374, 24,0074, 0,613706 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 649,077, -816,789, 104,771 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 628,067, -821,498, 77,6018 ); + ent.v[ "angles" ] = ( 0,731455, 34,0075, 0,682129 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_oil_slick" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4506,97, 613,694, 50,521 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_oil_slick" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4677,73, 1584,5, 50,6497 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 28 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_air_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 456,549, -367,336, 60,8297 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 11 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 622,357, 383,587, 367,488 ); + ent.v[ "angles" ] = ( 22, 125, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 945,815, 221,19, 389,016 ); + ent.v[ "angles" ] = ( 335, 173, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 973,544, 123,743, 345,518 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1074,53, 48,7958, 301,559 ); + ent.v[ "angles" ] = ( 270, 0, 168 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 562,035, 333,608, 306,298 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 130 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1540,41, -717,016, 206,544 ); + ent.v[ "angles" ] = ( 292, 129, -180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area_white" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 614,773, 2,37351, 140,966 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 289,563, 280,174, 254,439 ); + ent.v[ "angles" ] = ( 335, 173, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_geo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 809,077, 649,277, 571,571 ); + ent.v[ "angles" ] = ( 336,351, 343,514, -5,51342 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_wing_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 844,331, 602,781, 584,35 ); + ent.v[ "angles" ] = ( 3,54735, 138,447, -38,0217 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_wing_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 895,564, 638,798, 606,144 ); + ent.v[ "angles" ] = ( 330,022, 100,868, -5,28882 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 763,184, 549,24, 541,905 ); + ent.v[ "angles" ] = ( 335, 173, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 721,982, 317,193, 328,821 ); + ent.v[ "angles" ] = ( 65,8061, 116,887, 13,0833 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 775,675, 404,245, 275,493 ); + ent.v[ "angles" ] = ( 282, 180, 180 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 718,213, 317,547, 330,973 ); + ent.v[ "angles" ] = ( 30,979, 94,667, -1,20133 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 817,258, 656,163, 518,532 ); + ent.v[ "angles" ] = ( 20,8712, 82,8833, 70,6872 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1975,26, 216,495, 84,4666 ); + ent.v[ "angles" ] = ( 357,5, 13,0028, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1986,06, 219,124, 84,9937 ); + ent.v[ "angles" ] = ( 357,5, 13,0028, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1997,03, 221,369, 85,742 ); + ent.v[ "angles" ] = ( 357,5, 13,0028, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2008,09, 224,006, 86,1653 ); + ent.v[ "angles" ] = ( 357,5, 13,0028, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1734,11, 1026,56, 77,7137 ); + ent.v[ "angles" ] = ( 355,746, 13,0267, -0,406129 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1745,13, 1028,99, 78,7474 ); + ent.v[ "angles" ] = ( 355,746, 13,0267, -0,406129 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1755,91, 1031,62, 79,7136 ); + ent.v[ "angles" ] = ( 355,746, 13,0267, -0,406129 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1766,85, 1033,86, 80,8061 ); + ent.v[ "angles" ] = ( 355,746, 13,0267, -0,406129 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_case_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1777,9, 1036,5, 81,6768 ); + ent.v[ "angles" ] = ( 355,746, 13,0267, -0,406129 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 882,603, 106,26, 277,833 ); + ent.v[ "angles" ] = ( 10, 162, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3011,39, -58,7442, 57,9464 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 725,92, 314,638, 278,164 ); + ent.v[ "angles" ] = ( 351,812, 355,293, -50,1739 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 726,984, 313,314, 336,555 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_crate_smoke01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2693,46, -297,146, 75,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_crate_smoke02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3099,2, -91,7459, 53,125 ); + ent.v[ "angles" ] = ( 271, 89,9983, 90,0017 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3078,1, -54,123, 53,125 ); + ent.v[ "angles" ] = ( 352,526, 175,918, -0,878975 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1615,84, -883,632, 218,378 ); + ent.v[ "angles" ] = ( 29,4765, 253,686, 77,7512 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1516,16, -649,656, 160,702 ); + ent.v[ "angles" ] = ( 7,09684, 226,314, 73,0255 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_tunnel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1003,37, 69,7438, 331,074 ); + ent.v[ "angles" ] = ( 19,9873, 166,128, 0,727747 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 398,995, 126,994, 70,4241 ); + ent.v[ "angles" ] = ( 347,339, 346,67, 26,9729 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 550,884, 82,2239, 113,698 ); + ent.v[ "angles" ] = ( 347,339, 346,67, 26,9729 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 630,746, 269,288, 125,675 ); + ent.v[ "angles" ] = ( 345,129, 344,341, -38,499 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_spark_lite_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 580,19, 181,503, 247,392 ); + ent.v[ "angles" ] = ( 71,0171, 347,997, 6,33576 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_elec_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 580,439, 182,457, 250,489 ); + ent.v[ "angles" ] = ( 37, 171, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1488,2, 669,906, 90,2442 ); + ent.v[ "angles" ] = ( 353, 186, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_wing_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 812,629, 627,89, 553,533 ); + ent.v[ "angles" ] = ( 351,857, 123,431, -37,413 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1627,62, -810,653, 165,283 ); + ent.v[ "angles" ] = ( 356,263, 115,595, 35,0689 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1398,74, 63,0482, 260,166 ); + ent.v[ "angles" ] = ( 50,9031, 162,76, 16,6978 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_spark_lite_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1388,12, 253,376, 159,581 ); + ent.v[ "angles" ] = ( 337,622, 149,92, 7,45446 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_geo2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1608,56, -804,815, 117,896 ); + ent.v[ "angles" ] = ( 279,867, 282,937, -81,0539 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_geo2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1653,53, -925,349, 261,106 ); + ent.v[ "angles" ] = ( 275,865, 309,6, -104,784 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_wing_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1657,65, -911,035, 301,159 ); + ent.v[ "angles" ] = ( 294,971, 88,7115, -67,751 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_wing02_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1668,31, -902,987, 346,094 ); + ent.v[ "angles" ] = ( 323,815, 72,2649, -43,3432 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_dlite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 353,223, 239,318, 111 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_dlite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1617,86, -776,196, 121,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1645,96, -883,578, 103,125 ); + ent.v[ "angles" ] = ( 334,112, 152,202, 77,6777 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_only_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 721,202, 317,821, 268,065 ); + ent.v[ "angles" ] = ( 352, 180, 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 859,665, 33,1026, 292,615 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 71 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1077,61, 73,2924, 305,191 ); + ent.v[ "angles" ] = ( 358, 352, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 330,109, 225,233, 222,364 ); + ent.v[ "angles" ] = ( 24,3835, 3,69784, -54,0505 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -245,273, 481,307, 317,562 ); + ent.v[ "angles" ] = ( 342,909, 59,1376, 5,73361 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -521,874, 810,496, 516,415 ); + ent.v[ "angles" ] = ( 342,909, 59,1376, 5,73361 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -318,097, 849,494, 403,923 ); + ent.v[ "angles" ] = ( 357,727, 24,9655, 14,0332 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -354,891, 1133,95, 577,005 ); + ent.v[ "angles" ] = ( 10,0753, 356,012, 13,3962 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -345,574, 783,929, 402,468 ); + ent.v[ "angles" ] = ( 9,70932, 24,265, 16,6651 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 338,456, 295,858, 101,714 ); + ent.v[ "angles" ] = ( 35, 309, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 362,308, 322,893, 104,366 ); + ent.v[ "angles" ] = ( 35, 309, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 386,935, 317,799, 109,218 ); + ent.v[ "angles" ] = ( 35, 309, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 348,293, 309,392, 101,893 ); + ent.v[ "angles" ] = ( 35, 309, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_fire_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 324,774, 291,899, 100,042 ); + ent.v[ "angles" ] = ( 35, 309, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 714,98, 27,7596, 174,521 ); + ent.v[ "angles" ] = ( 347,339, 346,67, 26,9729 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 148,69, 420,161, 116,878 ); + ent.v[ "angles" ] = ( 28, 168, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_castaway_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 212,423, 446,098, 130,426 ); + ent.v[ "angles" ] = ( 22, 76, 0 ); + ent.v[ "delay" ] = -92; +} diff --git a/mp_castaway/maps/mp/mp_castaway.gsc b/mp_castaway/maps/mp/mp_castaway.gsc new file mode 100644 index 0000000..b5bc9f8 --- /dev/null +++ b/mp_castaway/maps/mp/mp_castaway.gsc @@ -0,0 +1,56 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_castaway_fx::main(); + precachemodel( "collision_physics_64x64x10" ); + precachemodel( "collision_clip_64x64x10" ); + precachemodel( "collision_physics_128x128x10" ); + precachemodel( "p6_cas_rock_medium_02_trimmed" ); + maps/mp/_load::main(); + maps/mp/mp_castaway_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_castaway" ); + setdvar( "compassmaxrange", "2100" ); + setdvar( "bg_dog_swim_enabled", 1 ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_64x64x10", "collider", ( -1181, 1602, 242 ), ( 9,8, 270, 106 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -1181, 1635, 242 ), ( 9,81, 270, 106 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -1174, 1602, 197 ), ( 360, 270, 90 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -1174, 1635, 197 ), ( 360, 270, 90 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -329, 656, 123 ), ( 359,424, 286,385, 127,196 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -342, 699, 124 ), ( 354,888, 295,033, 125,723 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -707, 2358, 145 ), vectorScale( ( 0, 1, 0 ), 90 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 407,5, 518, 103 ), vectorScale( ( 0, 1, 0 ), 270 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 381, 552, 103 ), ( 270, 65,4, 6,57 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 343, 559, 103 ), ( 270, 112,8, 0 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 370,5, 526, 128,5 ), vectorScale( ( 0, 1, 0 ), 66,2 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 357, 525, 129,5 ), vectorScale( ( 0, 1, 0 ), 23 ) ); + rock1 = spawn( "script_model", ( 373,607, 484,974, 42,6 ) ); + rock1.angles = ( 350,899, 243,975, 4,02471 ); + rock1 setmodel( "p6_cas_rock_medium_02_trimmed" ); + spawncollision( "collision_physics_64x64x10", "collider", ( 479,5, 270, 75 ), ( 346,453, 344,758, 4,31137 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( 477,5, 270, 76 ), ( 349,833, 342,352, 15,9726 ) ); + spawncollision( "collision_physics_128x128x10", "collider", ( 1503, 186, 121 ), ( 16,2357, 331,376, -70,4431 ) ); + spawncollision( "collision_physics_128x128x10", "collider", ( 1571, 147, 97 ), ( 16,2357, 331,376, -70,4431 ) ); + level.levelkothdisable = []; + level.levelkothdisable[ level.levelkothdisable.size ] = spawn( "trigger_radius", ( 281,5, 443,5, 161 ), 0, 50, 50 ); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2200", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); + ss.hq_objective_influencer_radius = 3000; +} diff --git a/mp_castaway/maps/mp/mp_castaway_amb.gsc b/mp_castaway/maps/mp/mp_castaway_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_castaway/maps/mp/mp_castaway_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_castaway/maps/mp/mp_castaway_fx.gsc b/mp_castaway/maps/mp/mp_castaway_fx.gsc new file mode 100644 index 0000000..9397466 --- /dev/null +++ b/mp_castaway/maps/mp/mp_castaway_fx.gsc @@ -0,0 +1,101 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc3" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc3(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_castaway_fx::main(); +} + +precache_scripted_fx() +{ + level._effect[ "water_splash_sm" ] = loadfx( "bio/player/fx_player_water_splash_mp_sm" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_castaway_crate_fire" ] = loadfx( "maps/mp_maps/fx_mp_castaway_crate_fire" ); + level._effect[ "fx_mp_castaway_oil_slick" ] = loadfx( "maps/mp_maps/fx_mp_castaway_oil_slick" ); + level._effect[ "fx_mp_castaway_splash_md" ] = loadfx( "maps/mp_maps/fx_mp_castaway_splash_md" ); + level._effect[ "fx_mp_castaway_rock_splash01_runner" ] = loadfx( "maps/mp_maps/fx_mp_castaway_rock_splash01_runner" ); + level._effect[ "fx_mp_castaway_cave_drip" ] = loadfx( "maps/mp_maps/fx_mp_castaway_cave_drip" ); + level._effect[ "fx_xtreme_water_hit_mp_castaway" ] = loadfx( "impacts/fx_xtreme_water_hit_mp_castaway" ); + level._effect[ "fx_mp_slums_dark_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke_sm" ); + level._effect[ "fx_mp_castaway_fire_md" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_md" ); + level._effect[ "fx_mp_castaway_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_sm" ); + level._effect[ "fx_mp_castaway_fire_lg" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_lg" ); + level._effect[ "fx_smk_smolder_gray_slow_dark" ] = loadfx( "smoke/fx_smk_smolder_gray_slow_dark" ); + level._effect[ "fx_mp_studio_smoke_area" ] = loadfx( "maps/mp_maps/fx_mp_studio_smoke_area" ); + level._effect[ "fx_mp_castaway_smoke_area" ] = loadfx( "maps/mp_maps/fx_mp_castaway_smoke_area" ); + level._effect[ "fx_mp_castaway_wing_fire" ] = loadfx( "maps/mp_maps/fx_mp_castaway_wing_fire" ); + level._effect[ "fx_mp_castaway_fire_geo" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_geo" ); + level._effect[ "fx_mp_castaway_fire_geo2" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_geo2" ); + level._effect[ "fx_mp_castaway_crate_smoke01" ] = loadfx( "maps/mp_maps/fx_mp_castaway_crate_smoke01" ); + level._effect[ "fx_mp_castaway_crate_smoke02" ] = loadfx( "maps/mp_maps/fx_mp_castaway_crate_smoke02" ); + level._effect[ "fx_mp_castaway_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_castaway_smoke_sm" ); + level._effect[ "fx_mp_castaway_smoke_tunnel" ] = loadfx( "maps/mp_maps/fx_mp_castaway_smoke_tunnel" ); + level._effect[ "fx_mp_castaway_elec_fire" ] = loadfx( "maps/mp_maps/fx_mp_castaway_elec_fire" ); + level._effect[ "fx_mp_castaway_smoke_area_white" ] = loadfx( "maps/mp_maps/fx_mp_castaway_smoke_area_white" ); + level._effect[ "fx_mp_castaway_wing02_smoke" ] = loadfx( "maps/mp_maps/fx_mp_castaway_wing02_smoke" ); + level._effect[ "fx_mp_castaway_fire_only_sm" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_only_sm" ); + level._effect[ "fx_mp_castaway_smoke_blow" ] = loadfx( "maps/mp_maps/fx_mp_castaway_smoke_blow" ); + level._effect[ "fx_mp_castaway_fire_drip" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_drip" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_insects_flies_dragonflies" ] = loadfx( "bio/insects/fx_insects_flies_dragonflies" ); + level._effect[ "fx_insects_butterfly_flutter" ] = loadfx( "bio/insects/fx_insects_butterfly_flutter" ); + level._effect[ "fx_mp_castaway_fire_int" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_int" ); + level._effect[ "fx_mp_castaway_god_ray_lg" ] = loadfx( "maps/mp_maps/fx_mp_castaway_god_ray_lg" ); + level._effect[ "fx_mp_castaway_god_ray_lg_r" ] = loadfx( "maps/mp_maps/fx_mp_castaway_god_ray_lg_r" ); + level._effect[ "fx_mp_castaway_god_ray_lg_02" ] = loadfx( "maps/mp_maps/fx_mp_castaway_god_ray_lg_02" ); + level._effect[ "fx_mp_castaway_fire_dlite" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_dlite" ); + level._effect[ "fx_mp_castaway_fire_dlite02" ] = loadfx( "maps/mp_maps/fx_mp_castaway_fire_dlite02" ); + level._effect[ "fx_mp_castaway_case_lite" ] = loadfx( "maps/mp_maps/fx_mp_castaway_case_lite" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_castaway_air_dust" ] = loadfx( "maps/mp_maps/fx_mp_castaway_air_dust" ); + level._effect[ "fx_mp_castaway_air_mist" ] = loadfx( "maps/mp_maps/fx_mp_castaway_air_mist" ); + level._effect[ "fx_mp_castaway_air_dust_blow" ] = loadfx( "maps/mp_maps/fx_mp_castaway_air_dust_blow" ); + level._effect[ "fx_mp_castaway_leaf_debris" ] = loadfx( "maps/mp_maps/fx_mp_castaway_leaf_debris" ); + level._effect[ "fx_mp_castaway_vista_mist" ] = loadfx( "maps/mp_maps/fx_mp_castaway_vista_mist" ); + level._effect[ "fx_mp_castaway_vista_mist02" ] = loadfx( "maps/mp_maps/fx_mp_castaway_vista_mist02" ); + level._effect[ "fx_mp_carrier_spark_bounce_runner" ] = loadfx( "maps/mp_maps/fx_mp_carrier_spark_bounce_runner" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin_runner" ); + level._effect[ "fx_mp_castaway_spark_lite_runner" ] = loadfx( "maps/mp_maps/fx_mp_castaway_spark_lite_runner" ); + level._effect[ "fx_lf_mp_castaway_sun" ] = loadfx( "lens_flares/fx_lf_mp_castaway_sun" ); +} + +precache_fxanim_props() +{ + level.scr_anim = []; + level.scr_anim[ "fxanim_props" ] = []; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "river_debris_barrel" ] = %fxanim_angola_river_debris_barrel_anim; + level.scr_anim[ "fxanim_props" ][ "shark_fins" ] = %fxanim_mp_stu_shark_fins_anim; +} + +precache_fxanim_props_dlc3() +{ + level.scr_anim[ "fxanim_props_dlc3" ] = []; + level.scr_anim[ "fxanim_props_dlc3" ][ "speed_boat" ] = %viewmodel_fxanim_mp_cast_speed_boat_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "zodiac_boats" ] = %viewmodel_fxanim_mp_cast_zodiac_boats_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "palm_tree_float" ] = %viewmodel_fxanim_mp_cast_palm_tree_float_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "fish_grp_01" ] = %fxanim_mp_cast_fish_grp_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "floating_boxes" ] = %fxanim_mp_cast_floating_boxes_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "raft_ropes" ] = %fxanim_mp_cast_raft_ropes_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "floating_seaweed" ] = %fxanim_mp_cast_seaweed_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "floating_boxes_fx" ] = %fxanim_mp_cast_floating_boxes_fx_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "crab_blue_01_01" ] = %fxanim_mp_cast_crab_blue_01_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "crab_blue_01_02" ] = %fxanim_mp_cast_crab_blue_01_02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "crab_blue_02_01" ] = %fxanim_mp_cast_crab_blue_02_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "crab_blue_02_02" ] = %fxanim_mp_cast_crab_blue_02_02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "crab_blue_03_01" ] = %fxanim_mp_cast_crab_blue_03_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "crab_blue_03_02" ] = %fxanim_mp_cast_crab_blue_03_02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "hammock" ] = %fxanim_mp_cast_hammock_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "vine_cluster" ] = %fxanim_gp_vine_cluster_anim; +} diff --git a/mp_concert/aitype/enemy_dog_mp.gsc b/mp_concert/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_concert/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_concert/character/character_mp_german_shepherd.gsc b/mp_concert/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_concert/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_concert/maps/mp/createfx/mp_concert_fx.gsc b/mp_concert/maps/mp/createfx/mp_concert_fx.gsc new file mode 100644 index 0000000..c4e6770 --- /dev/null +++ b/mp_concert/maps/mp/createfx/mp_concert_fx.gsc @@ -0,0 +1,1240 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createloopeffect( "fx_pigeon_panic_flight_med" ); + ent.v[ "origin" ] = ( -1349,51, 3293,57, 401,947 ); + ent.v[ "angles" ] = ( 345, 36, 0 ); + ent.v[ "type" ] = "loopfx"; + ent.v[ "delay" ] = 15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md_xslw" ); + ent.v[ "origin" ] = ( -898,217, 114,965, -63,4905 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 134 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md_xslw" ); + ent.v[ "origin" ] = ( -1935,19, 144,112, -68,8491 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md_xslw" ); + ent.v[ "origin" ] = ( -943,246, 661,499, -64 ); + ent.v[ "angles" ] = ( 359,067, 96, -0,35803 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_red" ); + ent.v[ "origin" ] = ( 226,178, 959,617, 448,072 ); + ent.v[ "angles" ] = ( 53,6561, 215,248, -150,351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_red" ); + ent.v[ "origin" ] = ( -102,867, 1037,12, 438,545 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_red" ); + ent.v[ "origin" ] = ( -244,747, 962,45, 453,965 ); + ent.v[ "angles" ] = ( 56,1299, 332,501, -29,2417 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_purple" ); + ent.v[ "origin" ] = ( 28,5034, 1068,91, 438,319 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_purple" ); + ent.v[ "origin" ] = ( -122,511, 1051,59, 438,814 ); + ent.v[ "angles" ] = ( 72,5492, 77,1467, 76,5485 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_purple" ); + ent.v[ "origin" ] = ( 135,081, 1020,73, 438,951 ); + ent.v[ "angles" ] = ( 70,7408, 249,832, -111,661 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -196,034, 996,132, 456,007 ); + ent.v[ "angles" ] = ( 45,2742, 347,156, -9,20152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 93,325, 1033,02, 460,204 ); + ent.v[ "angles" ] = ( 64,0992, 230,2, 14,6467 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -50,9279, 1068,33, 438,34 ); + ent.v[ "angles" ] = ( 62,4253, 328,492, -28,5179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 270,198, 943,826, 440,327 ); + ent.v[ "angles" ] = ( 22,1841, 218,096, 13,7881 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 382,499, 1013,47, 228 ); + ent.v[ "angles" ] = ( 335,422, 136,481, 22,3923 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 376,196, 940,998, 226,125 ); + ent.v[ "angles" ] = ( 325,854, 143,528, 19,2049 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 373,942, 871,326, 226,125 ); + ent.v[ "angles" ] = ( 322,141, 161,291, -3,25927 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -385,981, 1016,74, 228 ); + ent.v[ "angles" ] = ( 333,28, 42,0694, -30,0419 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -385,862, 947,273, 227,425 ); + ent.v[ "angles" ] = ( 331,495, 29,8018, -22,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -388,713, 875,995, 225,725 ); + ent.v[ "angles" ] = ( 319,226, 6,46376, -5,27376 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -288,754, 725,154, 231,821 ); + ent.v[ "angles" ] = ( 311,886, 18,6557, -18,6134 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md_xslw" ); + ent.v[ "origin" ] = ( -2169,73, 268,128, -58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( -247,451, 687,737, 228,506 ); + ent.v[ "angles" ] = ( 304,274, 31,0757, -28,4085 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_red_static" ); + ent.v[ "origin" ] = ( 104,946, 629,17, 313,6 ); + ent.v[ "angles" ] = ( 324,696, 105,959, 27,117 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_red_static" ); + ent.v[ "origin" ] = ( -114,225, 628,368, 315 ); + ent.v[ "angles" ] = ( 329,497, 75,3379, 5,86822 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue_static" ); + ent.v[ "origin" ] = ( 132,338, 635,198, 337,149 ); + ent.v[ "angles" ] = ( 334,021, 16,7312, -7,68143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue_static" ); + ent.v[ "origin" ] = ( -133,435, 623,897, 336 ); + ent.v[ "angles" ] = ( 337,181, 165,402, 2,96132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 277,498, 724,9, 230,926 ); + ent.v[ "angles" ] = ( 303,359, 162,87, 4,62987 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_can_light_blue" ); + ent.v[ "origin" ] = ( 245,173, 686,562, 229,167 ); + ent.v[ "angles" ] = ( 300,568, 156,516, -5,53957 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( 341,825, 3346,31, 841,6 ); + ent.v[ "angles" ] = ( 25,7968, 292,527, -171,827 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( 581,824, 3301,88, 846,233 ); + ent.v[ "angles" ] = ( 25,0505, 247,816, -178,142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( 125,915, 3379,94, 837,668 ); + ent.v[ "angles" ] = ( 35,6227, 267,612, -175,96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( -198,117, 3371,76, 841,42 ); + ent.v[ "angles" ] = ( 20,7763, 244,643, -179,732 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( -426,269, 3348,57, 838,398 ); + ent.v[ "angles" ] = ( 33,2519, 280,54, -179,082 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( -715,339, 3277,37, 840,672 ); + ent.v[ "angles" ] = ( 38,9751, 297,917, -174,776 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( -1185,1, 3058,42, 850,224 ); + ent.v[ "angles" ] = ( 40,1107, 338,227, 178,436 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_stadium_lg" ); + ent.v[ "origin" ] = ( -937,583, 3177,55, 840,959 ); + ent.v[ "angles" ] = ( 25,4236, 328,98, 179,275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_orange" ); + ent.v[ "origin" ] = ( -1133,98, 2326,99, 72,8739 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_blue" ); + ent.v[ "origin" ] = ( -1101,35, 2351,52, 72,8739 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 309 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_blue" ); + ent.v[ "origin" ] = ( -1593,45, 1727,43, 72,7615 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_orange" ); + ent.v[ "origin" ] = ( -1610,29, 1690,88, 73,1204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 338 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_orange" ); + ent.v[ "origin" ] = ( 919,399, 2612,68, 71,4912 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_orange" ); + ent.v[ "origin" ] = ( 890,027, 2555,77, 70,5969 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_blue" ); + ent.v[ "origin" ] = ( 904,523, 2583,87, 70,775 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bath_hygiene_box_glow" ); + ent.v[ "origin" ] = ( 1300,71, 2509,78, 75,1152 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 51 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bath_hygiene_box_glow" ); + ent.v[ "origin" ] = ( 1325,55, 2489,65, 76,0037 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 51 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_patio_flame_lamp_heat" ); + ent.v[ "origin" ] = ( 1800,69, 290,215, 85,0224 ); + ent.v[ "angles" ] = ( 270, 0,162772, 178,837 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_patio_flame_lamp_heat" ); + ent.v[ "origin" ] = ( 1612,38, -90,3902, 84,6835 ); + ent.v[ "angles" ] = ( 270, 0, -91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_patio_flame_lamp_heat" ); + ent.v[ "origin" ] = ( 1887,94, -88,0555, 88,0549 ); + ent.v[ "angles" ] = ( 270, 0, -91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_patio_flame_lamp_heat" ); + ent.v[ "origin" ] = ( 1156,94, 91,5999, 88,3432 ); + ent.v[ "angles" ] = ( 270, 0,162772, 178,837 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 1020,6, -49,4309, -23,3453 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 100 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_leaves_falling_red" ); + ent.v[ "origin" ] = ( -2565,25, 809,052, 271,777 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 69 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_leaves_falling_red" ); + ent.v[ "origin" ] = ( -1384,17, 9,54169, 299,013 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 105 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_leaves_falling_orange" ); + ent.v[ "origin" ] = ( -1427,58, -293,833, 234,852 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_leaves_falling_red" ); + ent.v[ "origin" ] = ( -1320, -66,6965, 232,855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_leaves_falling_orange" ); + ent.v[ "origin" ] = ( -2554,68, 1642,96, 300,736 ); + ent.v[ "angles" ] = ( 350, 69, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -1847,22, 220,991, -64,5093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -1478,77, 234,774, -59,0955 ); + ent.v[ "angles" ] = ( 0,671664, 125,998, -0,746423 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -1246,9, 162,695, -61,687 ); + ent.v[ "angles" ] = ( 358,051, 139,997, 0,562438 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -2122,86, 509,215, -62,1621 ); + ent.v[ "angles" ] = ( 358,317, 114,093, -1,69736 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -1317,29, -250,222, -71,875 ); + ent.v[ "angles" ] = ( 359,993, 174,005, -0,209221 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1840,21, 1143,27, 205,318 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1712,1, 1144,93, 227,351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276,5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1583,81, 1144,35, 240,12 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1456,06, 1143,63, 244,2 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1456,72, 975,162, 244,3 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1456,92, 815,969, 244,4 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1584,95, 815,243, 239,208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1712,68, 815,754, 227,255 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1840,16, 816,277, 205,934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1839,22, 975,293, 206,287 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1711,76, 976,348, 226,465 ); + ent.v[ "angles" ] = ( 277,5, 0, 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1584,08, 975,739, 239,11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1471,53, 655,493, 244,123 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1455,94, 496,228, 244,223 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1598,85, 655,584, 239,218 ); + ent.v[ "angles" ] = ( 271, 0, -6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1584,49, 496,314, 238,237 ); + ent.v[ "angles" ] = ( 271, 0, -6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1712,06, 496,298, 226,178 ); + ent.v[ "angles" ] = ( 278,995, 354,662, -0,668452 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1726,69, 654,404, 226,243 ); + ent.v[ "angles" ] = ( 278,995, 354,662, -0,668452 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 927,798, -394,828, -21,4837 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -68,2444, -524,337, -61,9811 ); + ent.v[ "angles" ] = ( 359,2, 94, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -673,489, -488,407, -61,2224 ); + ent.v[ "angles" ] = ( 358, 94, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -908,163, -12,3734, -61,9838 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -1313,93, 1546,51, 128,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -1278,01, 1627,62, 129,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -1228,57, 1718,44, 129,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -1163,06, 1813,75, 129,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -1087,3, 1907,09, 129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -1004,91, 1995,94, 129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -920,186, 2069,7, 129,3 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( 414,082, 1948,13, 129,745 ); + ent.v[ "angles" ] = ( 32,5734, 119,859, 16,481 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( 435,322, 1939,09, 129,614 ); + ent.v[ "angles" ] = ( 40,5569, 71,1905, -11,6191 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( 454,017, 1929,44, 129,595 ); + ent.v[ "angles" ] = ( 47,6973, 52,1184, -22,5697 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_fluorescent_overhead_bright" ); + ent.v[ "origin" ] = ( 415,946, 2171,76, 136,875 ); + ent.v[ "angles" ] = ( 90, 180, -157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_fluorescent_overhead_bright" ); + ent.v[ "origin" ] = ( 532,648, 2118,55, 136,875 ); + ent.v[ "angles" ] = ( 90, 180, -157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -1971,73, -358,639, -71,875 ); + ent.v[ "angles" ] = ( 359,817, 115,005, -0,101827 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -2257,32, -421,283, -71,875 ); + ent.v[ "angles" ] = ( 359,821, 72,0047, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -2123,45, 164,139, -66,0718 ); + ent.v[ "angles" ] = ( 358, 88, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -1009,56, 740,799, -61,5655 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_sprinkler_drip_physics" ); + ent.v[ "origin" ] = ( 638,996, 1767,82, -36,7845 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 282 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_sprinkler_drip_physics" ); + ent.v[ "origin" ] = ( -1220,27, 1714,29, 128,46 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_neon_open_sign" ); + ent.v[ "origin" ] = ( -1439,33, 2217,11, 112,888 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 320 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow_yellowish" ); + ent.v[ "origin" ] = ( -985,482, 2298,16, 144,153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow_yellowish" ); + ent.v[ "origin" ] = ( -1529,56, 1592,28, 144,013 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 69 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow_yellowish" ); + ent.v[ "origin" ] = ( 1448,06, 419,174, 140,541 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow_yellowish" ); + ent.v[ "origin" ] = ( 1497,66, 1236,43, 140,07 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow" ); + ent.v[ "origin" ] = ( 1616,52, 2169,05, 130,338 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow" ); + ent.v[ "origin" ] = ( 1035, 2735,99, 131,535 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 330 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_hand_dryer_glow" ); + ent.v[ "origin" ] = ( 1274,88, 2323,22, 80,9101 ); + ent.v[ "angles" ] = ( 330, 52, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_hand_dryer_glow" ); + ent.v[ "origin" ] = ( 1299,92, 2302,92, 80,9368 ); + ent.v[ "angles" ] = ( 330, 52, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_hand_dryer_glow" ); + ent.v[ "origin" ] = ( 1528,01, 2119,58, 81,379 ); + ent.v[ "angles" ] = ( 330, 52, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_hand_dryer_glow" ); + ent.v[ "origin" ] = ( 1502,97, 2139,88, 81,3522 ); + ent.v[ "angles" ] = ( 330, 52, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bathroom_monitor_glow" ); + ent.v[ "origin" ] = ( 1535,31, 2552,02, 96,9927 ); + ent.v[ "angles" ] = ( 348, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bathroom_monitor_glow" ); + ent.v[ "origin" ] = ( 1591,47, 2506,38, 96,4801 ); + ent.v[ "angles" ] = ( 348, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bathroom_monitor_glow" ); + ent.v[ "origin" ] = ( 1647,33, 2461,11, 96,3226 ); + ent.v[ "angles" ] = ( 348, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bathroom_monitor_glow" ); + ent.v[ "origin" ] = ( 1703,45, 2415,78, 96,6997 ); + ent.v[ "angles" ] = ( 348, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_bathroom_monitor_glow" ); + ent.v[ "origin" ] = ( 1759,38, 2370,45, 96,5913 ); + ent.v[ "angles" ] = ( 348, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( 1518,02, 2384,72, 124,864 ); + ent.v[ "angles" ] = ( 40, 94, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( 1541,95, 2366,98, 124,806 ); + ent.v[ "angles" ] = ( 33,5876, 50,8703, -6,19034 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( 1562,74, 2348,43, 125,055 ); + ent.v[ "angles" ] = ( 31,7214, 11,4415, -3,24704 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 2260,15, 1627,25, 24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 2076,11, 1482,05, 24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 1942,86, 1457,43, 24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 1881,36, 1819,78, 24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1485,69, 1646,44, 166,227 ); + ent.v[ "angles" ] = ( 86,7275, 153,841, 176,177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1313,56, 1702,64, 142,449 ); + ent.v[ "angles" ] = ( 86,7274, 153,841, -176,823 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1601,79, 1701,06, 180,42 ); + ent.v[ "angles" ] = ( 86,7274, 153,842, 179,177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1467,81, 1933,32, 179,5 ); + ent.v[ "angles" ] = ( 86,7274, 153,841, -172,823 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1362,45, 1866,78, 164,32 ); + ent.v[ "angles" ] = ( 88,6878, 164,707, -161,035 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1051,48, 2042,75, 142,222 ); + ent.v[ "angles" ] = ( 86,7274, 153,841, -160,823 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1227,57, 2041,63, 167,312 ); + ent.v[ "angles" ] = ( 86,7274, 153,841, -164,823 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1334,29, 2108,83, 180,264 ); + ent.v[ "angles" ] = ( 86,7274, 153,841, -163,823 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1155,85, 2296,8, 180,727 ); + ent.v[ "angles" ] = ( 86,9256, 136,057, -177,581 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( -1065,66, 2206,19, 165,435 ); + ent.v[ "angles" ] = ( 89,0626, 305,69, -7,95183 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( -1204,97, 2316,67, 157,531 ); + ent.v[ "angles" ] = ( 20,4373, 280,11, -4,93528 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( -1188,33, 2331,68, 157,328 ); + ent.v[ "angles" ] = ( 28,4413, 309,469, -4,11697 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( -1172,66, 2345,06, 157,79 ); + ent.v[ "angles" ] = ( 25,8376, 342,076, 5,31963 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( -1594,59, 1808,22, 157,955 ); + ent.v[ "angles" ] = ( 23,3245, 9,46662, 9,60153 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( -1614,91, 1770,33, 157,684 ); + ent.v[ "angles" ] = ( 20,6662, 293,305, -3,8135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_track_light" ); + ent.v[ "origin" ] = ( -1604,43, 1789,55, 156,921 ); + ent.v[ "angles" ] = ( 28,4412, 319,469, -4,11695 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1186,45, 2751,39, 136,945 ); + ent.v[ "angles" ] = ( 86,7387, 62,9516, -166,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1384,88, 2591,56, 138,375 ); + ent.v[ "angles" ] = ( 88,6042, 82,4164, -147,099 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1586,41, 2429,23, 139,375 ); + ent.v[ "angles" ] = ( 88,8774, 187,046, -42,4822 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1465,85, 2266,87, 136,375 ); + ent.v[ "angles" ] = ( 89,0517, 199,162, -32,3586 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1359,8, 2514,99, 136,375 ); + ent.v[ "angles" ] = ( 89,0517, 199,162, -32,3586 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1258,69, 2601,13, 138,375 ); + ent.v[ "angles" ] = ( 89,0517, 199,162, -32,3586 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed" ); + ent.v[ "origin" ] = ( 1093,41, 2676,11, 136,775 ); + ent.v[ "angles" ] = ( 89,0516, 199,162, 58,6408 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( 1151,07, 2615,28, 136,775 ); + ent.v[ "angles" ] = ( 89,0516, 199,162, 58,6408 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ceiling_recessed_short" ); + ent.v[ "origin" ] = ( 1391,95, 2415,95, 137,575 ); + ent.v[ "angles" ] = ( 89,0516, 199,162, 58,6408 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_sprinkler_drip_physics" ); + ent.v[ "origin" ] = ( 1525,74, 2382,47, 49,6964 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_sprinkler_drip_physics" ); + ent.v[ "origin" ] = ( 1696,66, 2408,8, 45,3473 ); + ent.v[ "angles" ] = ( 89, 180, -57 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -2051,52, 1062,76, 24 ); + ent.v[ "angles" ] = ( 359,567, 71,0595, -0,508649 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( 1598,24, -28,9399, 0,125 ); + ent.v[ "angles" ] = ( 341,589, 125,471, 108,652 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_concert_sun" ); + ent.v[ "origin" ] = ( -123326, 16214, 24084 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1401,48, 518,774, 157,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1401,22, 654,584, 157,175 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 1158,39, 1969,04, 166,428 ); + ent.v[ "angles" ] = ( 90, 0, 49 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 1052,3, 2081,28, 166,382 ); + ent.v[ "angles" ] = ( 90, 0, 43 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 933,055, 2183,92, 166,375 ); + ent.v[ "angles" ] = ( 90, 0, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 1026,63, 2313,69, 178,071 ); + ent.v[ "angles" ] = ( 90, 0, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 1160,05, 2200,94, 177,45 ); + ent.v[ "angles" ] = ( 90, 0, 44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 1282,81, 2072,3, 178,445 ); + ent.v[ "angles" ] = ( 90, 0, 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 594,147, 2380,49, 165,473 ); + ent.v[ "angles" ] = ( 90, 180, -157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 695,924, 2511,93, 177,562 ); + ent.v[ "angles" ] = ( 90, 180, -157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_spread_1s" ); + ent.v[ "origin" ] = ( 631,339, 2367,65, 27 ); + ent.v[ "angles" ] = ( 328,934, 168,707, -77,4483 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_1s" ); + ent.v[ "origin" ] = ( 598,337, 2351,86, 49 ); + ent.v[ "angles" ] = ( 329,859, 182,49, -91,6652 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( 830,122, 2224,34, -29 ); + ent.v[ "angles" ] = ( 343,195, 134,207, 100,062 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_short_1s" ); + ent.v[ "origin" ] = ( 549,608, 2323,99, 29 ); + ent.v[ "angles" ] = ( 327,281, 180,329, -83,6047 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_wide_1s" ); + ent.v[ "origin" ] = ( 2039,82, 1198,2, 33,125 ); + ent.v[ "angles" ] = ( 335,277, 157,123, -55,0407 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( 1715,98, 77,9118, -18,875 ); + ent.v[ "angles" ] = ( 337,834, 151,778, 136,172 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 394,151, 201,36, 114,81 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 396,866, 108,737, 114,626 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 266,427, 108,836, 114,695 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 266,979, 201,657, 114,163 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_short_1s" ); + ent.v[ "origin" ] = ( 23,5171, 1029,3, -57 ); + ent.v[ "angles" ] = ( 341,776, 185,65, -90,7827 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 8,75947, 109,346, 114,496 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 139,199, 109,247, 114,127 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 9,31147, 202,167, 113,964 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 136,484, 201,87, 114,311 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -366,449, 12,2591, 113,936 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -490,844, 11,6303, 114,457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -490,519, -85,3038, 114,478 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -367,962, -85,0923, 114,459 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -701,47, 948,397, -118 ); + ent.v[ "angles" ] = ( 330,435, 162,335, -80,0646 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -666,823, 945,4, -38 ); + ent.v[ "angles" ] = ( 330,435, 162,335, -107,065 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -1296,1, 1434,01, -94 ); + ent.v[ "angles" ] = ( 330,435, 162,335, 90,9353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( -1668,91, 1468,81, 81 ); + ent.v[ "angles" ] = ( 6,76034, 30,1075, 1,82019 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( -1005,7, 505,867, -39 ); + ent.v[ "angles" ] = ( 359,536, 36,0461, -0,491171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( -967,662, 530,119, -37,0119 ); + ent.v[ "angles" ] = ( 1,93877, 151,124, 3,67815 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -692,796, 478,937, -123,564 ); + ent.v[ "angles" ] = ( 338,905, 169,305, 83,6134 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_wide_1s" ); + ent.v[ "origin" ] = ( -533,778, 236,463, -113,875 ); + ent.v[ "angles" ] = ( 326,062, 175,535, 29,4534 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_dust_motes_xsm_short" ); + ent.v[ "origin" ] = ( -698,578, 244,436, -36,9706 ); + ent.v[ "angles" ] = ( 306,462, 170,025, 18,105 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_dust_motes_xsm_short" ); + ent.v[ "origin" ] = ( -411,823, 423,772, 53,3709 ); + ent.v[ "angles" ] = ( 329,795, 165,243, 19,3202 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_spread_1s" ); + ent.v[ "origin" ] = ( -381,716, 439,186, 0 ); + ent.v[ "angles" ] = ( 330,346, 159,396, -123,487 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_spread_1s" ); + ent.v[ "origin" ] = ( -398,133, 374,117, -3,04389 ); + ent.v[ "angles" ] = ( 328,633, 154,645, -135,435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_short_1s" ); + ent.v[ "origin" ] = ( -438,938, 478,051, 60,8636 ); + ent.v[ "angles" ] = ( 331,363, 166,986, -126,031 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( 61,6318, 2580,51, 76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( -481,2, 2496,29, 81 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( 1046,07, 1905,4, 54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 103 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( -412,616, 2536,8, 44 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 78 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( -1201,6, -286,67, -25,875 ); + ent.v[ "angles" ] = ( 355,892, 140,796, 1,67287 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( -1636,01, -193,472, 9,125 ); + ent.v[ "angles" ] = ( 358,206, 96,7923, 1,05661 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -2149,42, 508,981, 1,47507 ); + ent.v[ "angles" ] = ( 338,088, 160,576, 86,975 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -2246,31, 538,827, -75,4825 ); + ent.v[ "angles" ] = ( 336,091, 160,691, 85,9302 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_dust_motes_xsm_short" ); + ent.v[ "origin" ] = ( -205,55, 672,252, 60 ); + ent.v[ "angles" ] = ( 314,884, 310,617, 143,299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_dust_motes_xsm_short" ); + ent.v[ "origin" ] = ( -325,491, 380,432, 19,125 ); + ent.v[ "angles" ] = ( 308,258, 132,621, 21,6228 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( -64,8068, 1131,3, -54,0058 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( 195,287, 1558,04, -58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( -285,1, 1529, -58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( -765,279, 1221,25, -49 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_smk_field_md" ); + ent.v[ "origin" ] = ( -311,368, -460,534, -38,9531 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_lg_spread_1s" ); + ent.v[ "origin" ] = ( -892,485, -325,185, -152,805 ); + ent.v[ "angles" ] = ( 329,267, 170,449, 103,906 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( 174,972, 367,875, -40,2769 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_light_ray_sun_md_wide_1s" ); + ent.v[ "origin" ] = ( 1006,87, 2178,07, 44 ); + ent.v[ "angles" ] = ( 330,877, 171,735, 124,957 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( 992,676, 2055,13, 79 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( 1041,64, 2091,38, 57 ); + ent.v[ "angles" ] = ( 3,89792, 91,0306, 0,90132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( 1468,05, 24,2235, 57,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( 1448,46, -4,94705, 65,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( 1361,27, 147,256, 33,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( 1225,76, 137,601, 54,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( 293,812, -647,991, -25,9943 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_fountain_middle" ); + ent.v[ "origin" ] = ( 2561,43, 2105,29, 9 ); + ent.v[ "angles" ] = ( 270, 0, -50 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -10; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_fountain_sides" ); + ent.v[ "origin" ] = ( 2345,44, 2327,04, 10,5205 ); + ent.v[ "angles" ] = ( 270, 1,68468, -21,6846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_fountain_sides" ); + ent.v[ "origin" ] = ( 2619, 1791,64, 11,6013 ); + ent.v[ "angles" ] = ( 270, 0, -67 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( 404,329, -7,8116, -64,3441 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 133 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -518,291, 1059,17, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -232,748, 1050,48, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_fountain_middle" ); + ent.v[ "origin" ] = ( 2470,7, 2231,16, 11,3533 ); + ent.v[ "angles" ] = ( 270, 0, -50 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -6; + ent = maps/mp/_utility::createoneshoteffect( "fx_concert_fountain_middle" ); + ent.v[ "origin" ] = ( 2612,39, 1956,03, 11,2229 ); + ent.v[ "angles" ] = ( 270, 0, -50 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -6; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_fireplace_md2" ); + ent.v[ "origin" ] = ( 1678,51, 169,766, 67,1178 ); + ent.v[ "angles" ] = ( 271, 180, 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1761,27, 1215,55, 159,247 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276,5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1808,53, 1216,58, 159,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276,5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1856,37, 1216,15, 159,248 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276,5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -963,89, 1681,53, 85,5611 ); + ent.v[ "angles" ] = ( 72,0012, 141,169, 177,161 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow_yellowish" ); + ent.v[ "origin" ] = ( 191,353, 685,718, 1,3389 ); + ent.v[ "angles" ] = ( 317,37, 59,8108, -5,50809 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign_glow_yellowish" ); + ent.v[ "origin" ] = ( -37,5779, 574,312, 1,07672 ); + ent.v[ "angles" ] = ( 340,454, 244,649, 7,83269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -2380,42, 882,398, -37,6809 ); + ent.v[ "angles" ] = ( 351,32, 114,302, -1,71628 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_ground_windy" ); + ent.v[ "origin" ] = ( -2667,92, 11,7197, -95,359 ); + ent.v[ "angles" ] = ( 355,534, 86,1613, 2,57025 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1158,77, 2875,69, 139,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1210,7, 2832,73, 139,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1263,23, 2790,23, 139,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1315,51, 2747,73, 139,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1368,9, 2706,13, 139,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1423,78, 2664,28, 138,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( 1476,78, 2622,88, 138,875 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_motes_blowing_sm" ); + ent.v[ "origin" ] = ( 125,307, 590,666, -70,1511 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 137 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_vend_machine_sm_orange" ); + ent.v[ "origin" ] = ( -1067,43, 2379,17, 73,2374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 306 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; +} diff --git a/mp_concert/maps/mp/mp_concert.gsc b/mp_concert/maps/mp/mp_concert.gsc new file mode 100644 index 0000000..a500023 --- /dev/null +++ b/mp_concert/maps/mp/mp_concert.gsc @@ -0,0 +1,136 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + maps/mp/mp_concert_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_concert_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_concert" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level.remotemotarviewup = 18; + level thread water_trigger_init(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2300", reset_dvars ); +} + +water_trigger_init() +{ + wait 3; + triggers = getentarray( "trigger_hurt", "classname" ); + _a61 = triggers; + _k61 = getFirstArrayKey( _a61 ); + while ( isDefined( _k61 ) ) + { + trigger = _a61[ _k61 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + trigger thread water_trigger_think(); + } + _k61 = getNextArrayKey( _a61, _k61 ); + } + triggers = getentarray( "water_killbrush", "targetname" ); + _a73 = triggers; + _k73 = getFirstArrayKey( _a73 ); + while ( isDefined( _k73 ) ) + { + trigger = _a73[ _k73 ]; + trigger thread player_splash_think(); + _k73 = getNextArrayKey( _a73, _k73 ); + } +} + +player_splash_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) && isalive( entity ) ) + { + self thread trigger_thread( entity, ::player_water_fx ); + } + } +} + +player_water_fx( player, endon_condition ) +{ + maxs = self.origin + self getmaxs(); + if ( maxs[ 2 ] > 60 ) + { + maxs += vectorScale( ( 0, 0, 1 ), 10 ); + } + origin = ( player.origin[ 0 ], player.origin[ 1 ], maxs[ 2 ] ); + playfx( level._effect[ "water_splash_sm" ], origin ); +} + +water_trigger_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) ) + { + entity playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], entity.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 0,4; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a138 = triggers; + _k138 = getFirstArrayKey( _a138 ); + while ( isDefined( _k138 ) ) + { + trigger = _a138[ _k138 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + return 1; + } + } + _k138 = getNextArrayKey( _a138, _k138 ); + } + return 0; +} diff --git a/mp_concert/maps/mp/mp_concert_amb.gsc b/mp_concert/maps/mp/mp_concert_amb.gsc new file mode 100644 index 0000000..ca29353 --- /dev/null +++ b/mp_concert/maps/mp/mp_concert_amb.gsc @@ -0,0 +1,24 @@ +#include common_scripts/utility; +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ + level thread instruments_init(); +} + +instruments_init() +{ + inst_trigs = getentarray( "snd_instrument", "targetname" ); + array_thread( inst_trigs, ::play_instrument ); +} + +play_instrument() +{ + while ( 1 ) + { + self waittill( "damage" ); + self playsound( self.script_noteworthy ); + wait 0,1; + } +} diff --git a/mp_concert/maps/mp/mp_concert_fx.gsc b/mp_concert/maps/mp/mp_concert_fx.gsc new file mode 100644 index 0000000..39a1785 --- /dev/null +++ b/mp_concert/maps/mp/mp_concert_fx.gsc @@ -0,0 +1,95 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_concert_fx::main(); +} + +precache_scripted_fx() +{ + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_lf_mp_concert_sun" ] = loadfx( "lens_flares/fx_lf_mp_concert_sun" ); + level._effect[ "fx_pigeon_panic_flight_med" ] = loadfx( "bio/animals/fx_pigeon_panic_flight_med" ); + level._effect[ "fx_leaves_ground_wind" ] = loadfx( "foliage/fx_leaves_ground_wind" ); + level._effect[ "fx_sand_gust_ground_sm" ] = loadfx( "dirt/fx_sand_gust_ground_sm" ); + level._effect[ "fx_sand_gust_ground_md_xslw" ] = loadfx( "dirt/fx_sand_gust_ground_md_xslw" ); + level._effect[ "fx_concert_leaves_falling_red" ] = loadfx( "foliage/fx_concert_leaves_falling_red" ); + level._effect[ "fx_concert_leaves_falling_orange" ] = loadfx( "foliage/fx_concert_leaves_falling_orange" ); + level._effect[ "fx_leaves_ground_windy" ] = loadfx( "foliage/fx_leaves_ground_windy" ); + level._effect[ "fx_patio_flame_lamp_heat" ] = loadfx( "props/fx_patio_flame_lamp_heat" ); + level._effect[ "fx_water_sprinkler_drip_physics" ] = loadfx( "water/fx_water_sprinkler_drip_physics" ); + level._effect[ "fx_fire_fireplace_md2" ] = loadfx( "fire/fx_fire_fireplace_md2" ); + level._effect[ "fx_smk_linger_lit" ] = loadfx( "smoke/fx_concert_smk_linger_lit" ); + level._effect[ "fx_concert_smk_field_md" ] = loadfx( "smoke/fx_concert_smk_field_md" ); + level._effect[ "fx_light_floodlight_sqr_cool_xlg" ] = loadfx( "light/fx_light_floodlight_sqr_cool_xlg" ); + level._effect[ "fx_light_buoy_red_blink" ] = loadfx( "light/fx_light_buoy_red_blink" ); + level._effect[ "fx_light_floodlight_stadium_lg" ] = loadfx( "light/fx_light_floodlight_stadium_lg" ); + level._effect[ "fx_light_stagelight_wht" ] = loadfx( "light/fx_light_stagelight_wht" ); + level._effect[ "fx_concert_can_light_blue" ] = loadfx( "light/fx_concert_can_light_blue" ); + level._effect[ "fx_concert_can_light_blue_static" ] = loadfx( "light/fx_concert_can_light_blue_static" ); + level._effect[ "fx_concert_can_light_purple" ] = loadfx( "light/fx_concert_can_light_purple" ); + level._effect[ "fx_concert_can_light_red" ] = loadfx( "light/fx_concert_can_light_red" ); + level._effect[ "fx_concert_can_light_red_static" ] = loadfx( "light/fx_concert_can_light_red_static" ); + level._effect[ "fx_light_spotlight_md_cool" ] = loadfx( "light/fx_light_spotlight_md_cool" ); + level._effect[ "fx_light_baracade_yellow" ] = loadfx( "light/fx_light_baracade_yellow" ); + level._effect[ "fx_light_fluorescent_overhead_bright" ] = loadfx( "light/fx_light_fluorescent_overhead_bright" ); + level._effect[ "fx_light_flourescent_ceiling_panel_2" ] = loadfx( "light/fx_light_flourescent_ceiling_panel_2" ); + level._effect[ "fx_track_light" ] = loadfx( "light/fx_track_light" ); + level._effect[ "fx_light_button_yellow_on" ] = loadfx( "light/fx_light_button_yellow_on" ); + level._effect[ "fx_light_vend_machine_sm_orange" ] = loadfx( "light/fx_light_vend_machine_sm_orange" ); + level._effect[ "fx_light_vend_machine_sm_blue" ] = loadfx( "light/fx_light_vend_machine_sm_blue" ); + level._effect[ "fx_concert_bathroom_monitor_glow" ] = loadfx( "light/fx_concert_bathroom_monitor_glow" ); + level._effect[ "fx_concert_bath_hygiene_box_glow" ] = loadfx( "light/fx_concert_bath_hygiene_box_glow" ); + level._effect[ "fx_concert_hand_dryer_glow" ] = loadfx( "light/fx_concert_hand_dryer_glow" ); + level._effect[ "fx_light_com_utility_cool" ] = loadfx( "light/fx_light_com_utility_cool" ); + level._effect[ "fx_light_exit_sign_glow" ] = loadfx( "light/fx_light_exit_sign_glow" ); + level._effect[ "fx_light_recessed_cool" ] = loadfx( "light/fx_light_recessed_cool" ); + level._effect[ "fx_light_recessed_wrm" ] = loadfx( "light/fx_light_recessed_wrm" ); + level._effect[ "fx_light_hanging_modern" ] = loadfx( "light/fx_light_hanging_modern" ); + level._effect[ "fx_light_neon_open_sign" ] = loadfx( "light/fx_light_neon_open_sign" ); + level._effect[ "fx_concert_light_ceiling_recessed_short" ] = loadfx( "light/fx_concert_light_ceiling_recessed_short" ); + level._effect[ "fx_concert_light_ceiling_recessed" ] = loadfx( "light/fx_concert_light_ceiling_recessed" ); + level._effect[ "fx_light_exit_sign_glow_yellowish" ] = loadfx( "light/fx_light_exit_sign_glow_yellowish" ); + level._effect[ "fx_light_flour_glow_v_shape_cool" ] = loadfx( "light/fx_light_flour_glow_v_shape_cool" ); + level._effect[ "fx_light_flour_glow_v_shape_cool_sm" ] = loadfx( "light/fx_light_flour_glow_v_shape_cool_sm" ); + level._effect[ "fx_concert_light_ray_sun_lg_spread_1s" ] = loadfx( "light/fx_concert_light_ray_sun_lg_spread_1s" ); + level._effect[ "fx_concert_light_ray_sun_md_1s" ] = loadfx( "light/fx_concert_light_ray_sun_md_1s" ); + level._effect[ "fx_concert_light_ray_sun_md_short_1s" ] = loadfx( "light/fx_concert_light_ray_sun_md_short_1s" ); + level._effect[ "fx_concert_light_ray_sun_md_spread_1s" ] = loadfx( "light/fx_concert_light_ray_sun_md_spread_1s" ); + level._effect[ "fx_concert_light_ray_sun_md_wide_1s" ] = loadfx( "light/fx_concert_light_ray_sun_md_wide_1s" ); + level._effect[ "fx_concert_light_ray_sun_window_1s" ] = loadfx( "light/fx_concert_light_ray_sun_window_1s" ); + level._effect[ "fx_light_dust_motes_xsm_short" ] = loadfx( "light/fx_concert_dust_motes_xsm_short" ); + level._effect[ "fx_light_dust_motes_sm" ] = loadfx( "light/fx_light_dust_motes_sm" ); + level._effect[ "fx_dust_motes_blowing_sm" ] = loadfx( "debris/fx_dust_motes_blowing_sm" ); + level._effect[ "fx_concert_fountain_sides" ] = loadfx( "water/fx_concert_fountain_sides" ); + level._effect[ "fx_concert_fountain_middle" ] = loadfx( "water/fx_concert_fountain_middle" ); + level._effect[ "fx_insects_butterfly_flutter_radial2" ] = loadfx( "bio/insects/fx_insects_butterfly_flutter_radial2" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "london_eye" ] = %fxanim_mp_con_london_eye_anim; +} + +precache_fxanim_props_dlc() +{ + level.scr_anim[ "fxanim_props_dlc" ][ "wires_stage_rear" ] = %fxanim_mp_con_wires_stage_rear_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "wires_stage_scaffold" ] = %fxanim_mp_con_wires_stage_scaffold_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "wires_seats_scaffold" ] = %fxanim_mp_con_wires_seats_scaffold_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "river_boats" ] = %fxanim_mp_con_boat_link_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "wires_stage_right" ] = %fxanim_mp_con_wires_stage_right_anim; +} diff --git a/mp_dig/aitype/enemy_dog_mp.gsc b/mp_dig/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_dig/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_dig/character/character_mp_german_shepherd.gsc b/mp_dig/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_dig/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_dig/maps/mp/createfx/mp_dig_fx.gsc b/mp_dig/maps/mp/createfx/mp_dig_fx.gsc new file mode 100644 index 0000000..7e48de3 --- /dev/null +++ b/mp_dig/maps/mp/createfx/mp_dig_fx.gsc @@ -0,0 +1,1730 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -975,73, -682,379, 51,1027 ); + ent.v[ "angles" ] = ( 270,883, 173,792, -175,177 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -442,653, -1235,4, 64,2364 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 121,313, -686,781, 49,5086 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 129,259, 340,491, 52,1854 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -291,945, 1067,71, 48,3673 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -654,739, 1262,91, 96,0455 ); + ent.v[ "angles" ] = ( 271,081, 83,1622, -84,3737 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 771,471, -959,553, 41,3816 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -150,143, -1124,88, 48,2339 ); + ent.v[ "angles" ] = ( 273,25, 68,7368, -70,2869 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -984,748, 313,495, 51,0594 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1308,08, 636,018, 41,0502 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1308,91, 299,631, 46,7513 ); + ent.v[ "angles" ] = ( 357,949, 269,471, -0,139436 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1453,27, -1389,48, 71,947 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -455,187, 296,714, 4,60001 ); + ent.v[ "angles" ] = ( 270,13, 34,2417, -29,4542 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2008,97, -168,12, 310,786 ); + ent.v[ "angles" ] = ( 87,7569, 199,254, 17,5658 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1069,13, 86,0965, 267,875 ); + ent.v[ "angles" ] = ( 88,9043, 323,553, 144,846 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1167,5, -391,909, 46,391 ); + ent.v[ "angles" ] = ( 358,953, 269,383, 0,866636 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1385,91, -386,256, 48,1052 ); + ent.v[ "angles" ] = ( 359,949, 269,501, 0,860007 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1358,06, 127,957, 48,4917 ); + ent.v[ "angles" ] = ( 359,948, 269,536, 0,859066 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1675,14, 130,724, 81 ); + ent.v[ "angles" ] = ( 358,991, 262,521, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1667,36, -224,431, 80,4604 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 0,859211 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -981,79, -915,064, 48,2275 ); + ent.v[ "angles" ] = ( 359,938, 266,623, -0,137793 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -303,34, -415,977, 50,7424 ); + ent.v[ "angles" ] = ( 0,765307, 259,487, -0,975561 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -764,705, -882,303, 46,4442 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 0,859211 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -444,67, -92,0192, 45,5844 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -712,43, 626,698, 47,3168 ); + ent.v[ "angles" ] = ( 359,948, 269,519, -0,140769 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -944,994, 757,274, 47,77 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 0,859211 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,052, 402,837, 48,9847 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -125,63, 151,183, 46,4389 ); + ent.v[ "angles" ] = ( 0,130779, 227,595, -1,17077 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 582,65, 542,296, 46,0211 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 425,887, 263,578, 49,2162 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,140792 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 530,395, -65,4206, 45,0844 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,140788 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 198,044, -351,214, 45,5127 ); + ent.v[ "angles" ] = ( 1,94424, 269,671, 2,86038 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 171,534, 27,1388, 49,854 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -2,14079 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1103,69, 823,073, 123 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 1,85921 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1018,38, 325,428, 120,796 ); + ent.v[ "angles" ] = ( 357,919, 271,507, -1,17763 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 949,245, -86,4016, 120 ); + ent.v[ "angles" ] = ( 359,887, 266,572, -1,13692 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1018,23, -335,311, 122,491 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,140792 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 977,613, -1074,53, 121 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,140792 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 91,8562, -1289,38, 57,745 ); + ent.v[ "angles" ] = ( 359,945, 269,52, -0,107685 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1209,94, -1480,36, 72,3 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1647,7, -1512,51, 75,9932 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -1,14079 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1465, -1152,35, 50,6657 ); + ent.v[ "angles" ] = ( 358,153, 267,511, 0,897194 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1471,32, -748,424, 40,6138 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1760, -764,091, 83 ); + ent.v[ "angles" ] = ( 0, 267,556, 1,89389 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1646,32, -472,952, 78,4257 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 0,859211 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1107,6, 54,0699, 37,6219 ); + ent.v[ "angles" ] = ( 359,801, 272,531, 0,747811 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1267,56, -714,212, 46,3197 ); + ent.v[ "angles" ] = ( 357,949, 269,471, 2,86057 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1253,58, -895,33, 44,3465 ); + ent.v[ "angles" ] = ( 0,945345, 269,621, 1,85912 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1020,8, -1206,86, 49,8449 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -224,186, -431,846, 51,4973 ); + ent.v[ "angles" ] = ( 358,659, 299,542, 1,94962 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -975,899, 1193,7, 37,5132 ); + ent.v[ "angles" ] = ( 357,98, 267,47, -2,06838 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1269,92, 1286,3, 40,8719 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1475,66, 1192,44, 72,625 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1699,99, 1455,44, 33,0763 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1073,47, 1221,27, 40,937 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 923,303, 163,749, 328,984 ); + ent.v[ "angles" ] = ( 88,9042, 323,554, 141,847 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 915,939, -29,2198, 302,891 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 913,955, -440,54, 245,281 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1116,28, 339,866, 282,891 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 568,512, -472,726, 220,998 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -864,392, -1125,99, 185,998 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -150,687, 710,23, 46,6714 ); + ent.v[ "angles" ] = ( 359,947, 269,623, 1,85701 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1469,65, -908,833, 42,673 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1511,61, 402,533, 81 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1707,32, 516,114, 83 ); + ent.v[ "angles" ] = ( 359,252, 263,528, 1,95341 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1755,23, -42,2177, 82 ); + ent.v[ "angles" ] = ( 359,408, 260,532, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1470,57, 861,328, 88,625 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1225,04, 890,366, 90,125 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -128,653, -828,434, 46,159 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12097,5, 1256,43, -536,39 ); + ent.v[ "angles" ] = ( 359,888, 267,789, -2,10462 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8767,93, -4166,24, -1331,77 ); + ent.v[ "angles" ] = ( 2,99625, 270,677, -2,11048 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -6951,2, -7860,92, -334,799 ); + ent.v[ "angles" ] = ( 359,888, 267,789, -2,10462 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3569,52, -10851,6, 334,967 ); + ent.v[ "angles" ] = ( 359,888, 267,789, -2,10462 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -442,389, -638,749, 2,40001 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -18121,5, -7663,97, -863,272 ); + ent.v[ "angles" ] = ( 359,888, 267,789, -2,10462 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1777,02, 331,411, 82 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1712,06, -941,167, 80 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1691,64, -391,157, 77,996 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1669,09, -29,8378, 88,225 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1739,31, 510,762, 80 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,14079 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -727,853, -974,935, 41,5098 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1109,1, -925,888, 40,2306 ); + ent.v[ "angles" ] = ( 359,947, 269,571, 2,85873 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -90,9172, -943,541, 43,1525 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 541,239, -671,262, 47,9328 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 709, -141,581, 81,8557 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1028,07, -776,791, 120,465 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1027,42, 579,538, 135,1 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 603,89, 567,279, 46,7686 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,14079 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 450,735, 361,061, 45,8586 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -744,916, 653,466, 46,999 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1109,28, 567,716, 46,0958 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1240,78, 109,233, 45,5401 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1401,13, 265,756, 80,5352 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -931,289, 1173,87, 36,9994 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1441,9, 1533,16, 30,7975 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1217,39, 1374,92, 32,3827 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1632,42, 1876,16, 104 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -137,432, 600,148, 51,6498 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 393,219, -380,601, 42,4149 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1271,31, -452,637, 47,8861 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1100,93, 250,476, 157,061 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -710,217, 656,387, 92,0435 ); + ent.v[ "angles" ] = ( 357,802, 272,47, 2,74941 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -133,639, 689,767, 105,909 ); + ent.v[ "angles" ] = ( 355,953, 269,337, 0,868661 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 458,637, 419,364, 106,269 ); + ent.v[ "angles" ] = ( 357,953, 269,367, 0,867047 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1036,83, 731,826, 200 ); + ent.v[ "angles" ] = ( 356,951, 269,421, -0,137209 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1031,53, -699,946, 169 ); + ent.v[ "angles" ] = ( 359,947, 269,571, 0,858728 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 81,4832, -844,086, 132,785 ); + ent.v[ "angles" ] = ( 354,953, 269,321, 2,86987 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1675,49, -265,352, 131,125 ); + ent.v[ "angles" ] = ( 354,953, 269,321, 2,86987 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1100,16, -60,6596, 100,96 ); + ent.v[ "angles" ] = ( 355,11, 266,314, 3,13037 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 675,183, 710,305, 128,792 ); + ent.v[ "angles" ] = ( 354,953, 269,321, 2,86987 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1237,52, -1440,27, 166,125 ); + ent.v[ "angles" ] = ( 357,949, 269,472, -3,13944 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -381,467, -329,471, 120,739 ); + ent.v[ "angles" ] = ( 354,953, 269,321, -1,13013 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -693,051, -694,344, 115,509 ); + ent.v[ "angles" ] = ( 354,953, 269,321, 2,86987 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4102,85, -1085,76, 288,98 ); + ent.v[ "angles" ] = ( 359,888, 267,789, -2,10462 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1116,78, -619,99, 313,501 ); + ent.v[ "angles" ] = ( 88,9041, 323,555, 145,848 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 915,666, -263,719, 323,486 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 125,188, 217,013, 153,71 ); + ent.v[ "angles" ] = ( 88,9044, 323,551, 105,844 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,807, 840,367, 47,6264 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 831,69, 117,031, -33,2341 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 820,294, -65,3089, -36,8615 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 832,56, -269,661, -34,5599 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -1,14079 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 818,498, -109,025, -38,5274 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_dig_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -778139, -2182370, 1005360 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1323,21, -357,37, 118,457 ); + ent.v[ "angles" ] = ( 354,901, 266,31, -0,863788 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 669,13, -587,953, 92,4911 ); + ent.v[ "angles" ] = ( 359,947, 269,571, 2,85874 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1675,16, -1388,57, 116 ); + ent.v[ "angles" ] = ( 357,953, 269,367, 0,867048 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1661,14, 495,875, 136,125 ); + ent.v[ "angles" ] = ( 355,464, 260,304, 0,624617 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -429,544, -52,0209, 150,475 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 343,584, 702,894, 159,215 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1262,1, -1061,89, 152,575 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 134,492, -537,847, 144,595 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_godray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -653,831, -1789,85, 240,524 ); + ent.v[ "angles" ] = ( 19,6942, 77,2253, 80,3946 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 543,913, -1129,57, 261,248 ); + ent.v[ "angles" ] = ( 87,8034, 195,382, -73,3072 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 778,685, -1139,08, 268,117 ); + ent.v[ "angles" ] = ( 88,9044, 323,555, 53,8487 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 857,281, -1182,28, 121 ); + ent.v[ "angles" ] = ( 358,801, 182,493, 1,20042 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 836,518, -242,665, 54,0575 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 837,238, -8,02314, 56,6063 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 724,74, -143,945, 47,875 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1126,91, -166,919, 357,385 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1175,88, -479,894, 349,311 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1113,42, -83,2409, 335,375 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1089,74, -594,583, 151,575 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -162,782, 1517,97, 280,856 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1149,51, 721,408, 204,167 ); + ent.v[ "angles" ] = ( 87,9176, 317,422, 96,7181 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -255,126, 866,64, 166,274 ); + ent.v[ "angles" ] = ( 87,9176, 317,422, 96,7181 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -63,0658, 915,085, 205,502 ); + ent.v[ "angles" ] = ( 87,287, 270,346, 49,6781 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 666,956, 460,414, 111,737 ); + ent.v[ "angles" ] = ( 89,5803, 354,513, 135,775 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 54,7197, -1593,84, 231,446 ); + ent.v[ "angles" ] = ( 89,5803, 354,513, 136,774 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1260,73, 1587,88, 137,292 ); + ent.v[ "angles" ] = ( 88,2757, 228,508, 9,77534 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -431,035, 1056,25, 167,487 ); + ent.v[ "angles" ] = ( 89,2419, 241,45, 22,714 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -958,992, 497,061, 132,004 ); + ent.v[ "angles" ] = ( 89,2419, 241,449, 22,7132 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -971,242, -1755,72, 249,997 ); + ent.v[ "angles" ] = ( 87,6807, 31,4895, 172,747 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_flood_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -38,7034, -1621,39, 84,7233 ); + ent.v[ "angles" ] = ( 339,971, 268,587, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1,90754, 898,943, 256,875 ); + ent.v[ "angles" ] = ( 88,2757, 228,508, 9,77534 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1441,62, 963,417, 216,875 ); + ent.v[ "angles" ] = ( 88,2756, 228,508, 134,776 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1498,6, 722,401, 214,875 ); + ent.v[ "angles" ] = ( 88,2756, 228,508, 42,7757 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1147,27, 836,246, 205,875 ); + ent.v[ "angles" ] = ( 88,2757, 228,508, 9,77534 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -607,801, -432,14, 49,5 ); + ent.v[ "angles" ] = ( 357,838, 294,507, 1,14724 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -700,377, 423,074, 43,498 ); + ent.v[ "angles" ] = ( 357,099, 321,524, 0,931568 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -363,255, 549,215, 48,4972 ); + ent.v[ "angles" ] = ( 359,465, 251,531, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -143,952, 1012,57, 155,425 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -518,783, 738,786, 183,035 ); + ent.v[ "angles" ] = ( 0,412715, 241,558, 1,0184 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1661,03, 585,476, 196 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1652,04, -51,402, 195,331 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1654,67, -656,996, 177,377 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1659,15, -1273,91, 175,998 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 85,4724, -889,655, 137,183 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 999,48, -345,859, 206 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 0,859211 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1062,8, 841,45, 219,278 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 629,767, 690,701, 156,481 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 460,46, 391,275, 153,13 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 360,776, 43,45, 149,764 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -143,863, -649,091, 153,709 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -414,27, -464,434, 105,02 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_birds" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1883,91, -6707,73, -1902,99 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_birds" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2134,69, 6130,38, -1397,21 ); + ent.v[ "angles" ] = ( 344,774, 280,496, 5,89231 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -817,262, 1597,98, 320,641 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1045,73, 1597,97, 319,932 ); + ent.v[ "angles" ] = ( 88,9045, 323,551, 102,845 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 47,0497, -1422,71, 129,296 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,14079 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -653,318, -1477,99, 169,972 ); + ent.v[ "angles" ] = ( 358,948, 269,521, 2,85921 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 649,691, -608,587, 136,677 ); + ent.v[ "angles" ] = ( 359,948, 269,536, 0,859066 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -850,343, 878,057, 120,551 ); + ent.v[ "angles" ] = ( 359,073, 275,521, -1,24449 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_mote" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -436,727, 510,041, 106,495 ); + ent.v[ "angles" ] = ( 1,05096, 274,478, -1,22816 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 94,3003, -885,913, 54,0664 ); + ent.v[ "angles" ] = ( 358,772, 270,589, -1,64526 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 425,107, -356,602, 45,5697 ); + ent.v[ "angles" ] = ( 358,476, 273,461, -1,33844 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 725,922, -15,7982, 94 ); + ent.v[ "angles" ] = ( 359,895, 266,534, 18,6991 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 645,512, -65,1457, 69,4701 ); + ent.v[ "angles" ] = ( 359,268, 265,266, 18,6996 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 75,7466, 732,118, 45,9536 ); + ent.v[ "angles" ] = ( 0,946264, 269,447, -2,14072 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 792,792, 521,818, 45,5704 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -1,14079 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 648,168, 813,298, 51,7547 ); + ent.v[ "angles" ] = ( 358,734, 257,521, -0,897129 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 934,35, 847,926, 85,8486 ); + ent.v[ "angles" ] = ( 1,54767, 266,846, 31,9675 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -91,6783, -72,5055, 166,449 ); + ent.v[ "angles" ] = ( 359,46, 259,533, 2,9983 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -680,881, -322,319, 165,462 ); + ent.v[ "angles" ] = ( 1,09127, 290,635, 0,451672 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -247,309, -303,674, 163,697 ); + ent.v[ "angles" ] = ( 1,84825, 257,637, -0,458686 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1285,1, -1310,03, 190,252 ); + ent.v[ "angles" ] = ( 1,181, 268,631, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -611,207, -1471,89, 176,07 ); + ent.v[ "angles" ] = ( 1,09127, 290,635, 0,451672 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -549,428, 1552,88, 231,447 ); + ent.v[ "angles" ] = ( 1,11342, 287,634, 0,393934 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1707,48, 741,902, 214,38 ); + ent.v[ "angles" ] = ( 10,091, 290,707, 3,45868 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -557,063, -111,396, 163,761 ); + ent.v[ "angles" ] = ( 359,745, 321,533, -0,476057 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 958,125, 74,4883, 263,291 ); + ent.v[ "angles" ] = ( 88,9043, 323,553, 144,846 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1364,68, -76,8785, 47,3894 ); + ent.v[ "angles" ] = ( 359,952, 270,466, -0,175114 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1074,96, -1447,93, 217,732 ); + ent.v[ "angles" ] = ( 351,896, 266,302, -0,931192 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -81,2507, -1451,58, 175,088 ); + ent.v[ "angles" ] = ( 358,871, 310,609, 0,797744 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -963,608, -838,785, 184,791 ); + ent.v[ "angles" ] = ( 1,17098, 275,632, 0,153807 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -437,997, -1016,67, 168,033 ); + ent.v[ "angles" ] = ( 1,17098, 275,632, 0,153807 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -926,055, -561,612, 159,214 ); + ent.v[ "angles" ] = ( 1,1061, 247,626, -0,414009 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -847,896, -471,799, 162,992 ); + ent.v[ "angles" ] = ( 0,508757, 332,636, 1,06585 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 900,209, 639,011, 235,326 ); + ent.v[ "angles" ] = ( 1,17088, 260,63, -0,154546 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 478,409, 699,351, 171,698 ); + ent.v[ "angles" ] = ( 0,702775, 321,637, 0,949207 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -661,673, 1163,88, 194,785 ); + ent.v[ "angles" ] = ( 1,18062, 266,631, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 85,5207, 461,021, 142,501 ); + ent.v[ "angles" ] = ( 1,18062, 266,631, -2,0313 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 227,509, 698,279, 152,342 ); + ent.v[ "angles" ] = ( 1,14039, 251,628, -0,305606 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 586,755, 903,875, 161,163 ); + ent.v[ "angles" ] = ( 1,17742, 272,632, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -883,915, 194,031, 165,5 ); + ent.v[ "angles" ] = ( 359,813, 354,661, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1827,71, 1674,85, 139,561 ); + ent.v[ "angles" ] = ( 2,64617, 335,639, -0,955142 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1842,24, 228,424, 190,943 ); + ent.v[ "angles" ] = ( 0,735804, 280,643, -2,71529 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2022,71, 142,335, 273,779 ); + ent.v[ "angles" ] = ( 2,59258, 332,636, -1,09231 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1438,32, -283,568, 140,871 ); + ent.v[ "angles" ] = ( 358,851, 269,41, 0,634039 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1036,47, -483,024, 158,574 ); + ent.v[ "angles" ] = ( 359,497, 187,342, 8,15861 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1107,15, 377,637, 137,291 ); + ent.v[ "angles" ] = ( 3,63692, 322,033, -1,89879 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 0,806075, 198,02, 167,9 ); + ent.v[ "angles" ] = ( 359,741, 183,63, 2,8839 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1108,73, 956,181, 194,268 ); + ent.v[ "angles" ] = ( 1,92927, 287,316, -0,347119 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1491,47, 1049,1, 213,516 ); + ent.v[ "angles" ] = ( 10,0616, 290,487, -1,70858 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2021,66, -418,366, 258,403 ); + ent.v[ "angles" ] = ( 7,04448, 343,978, -3,21619 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1883,88, -882,392, 149,33 ); + ent.v[ "angles" ] = ( 359,792, 314,423, -2,31977 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -829,753, -1471,98, 173,135 ); + ent.v[ "angles" ] = ( 354,278, 269,322, -1,12202 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1376,66, -61,512, 171,625 ); + ent.v[ "angles" ] = ( 358,839, 267,487, -1,09878 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1332,8, 58,874, 228,047 ); + ent.v[ "angles" ] = ( 358,731, 261,486, -0,971446 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1452,51, -92,7596, 313,78 ); + ent.v[ "angles" ] = ( 0,544976, 205,626, -1,04779 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1122,77, -316,76, 243,233 ); + ent.v[ "angles" ] = ( 0,413229, 198,627, -1,10639 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1219,04, 503,105, 249,642 ); + ent.v[ "angles" ] = ( 0,295325, 192,629, -1,14351 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1669,12, -1210,67, 80 ); + ent.v[ "angles" ] = ( 358,89, 266,521, -1,08417 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2001,38, -287,672, 287,781 ); + ent.v[ "angles" ] = ( 2,59258, 332,636, -1,09231 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 360,513, 590,086, 43,9797 ); + ent.v[ "angles" ] = ( 0,502629, 284,474, 0,918724 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -780,043, -55,2936, 238,556 ); + ent.v[ "angles" ] = ( 0,945547, 269,621, 2,85912 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -84,3017, -13,1354, 259,847 ); + ent.v[ "angles" ] = ( 0,945547, 269,621, 2,85912 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -818,997, -64,3306, 163,757 ); + ent.v[ "angles" ] = ( 358,963, 268,521, 0,87744 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -340,637, 1415,26, 98,2628 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -2,14079 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -607,594, 1445,38, 97,2966 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -2,14079 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1796,13, 215,671, 129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 280 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1555,5, 461,776, 147,516 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1220,86, 362,402, 99,7544 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -446,422, 253,146, 73,2718 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -213,107, 412,098, 75,2223 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 227 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -385,082, 251,864, 47,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -699,216, -715,091, 85,9836 ); + ent.v[ "angles" ] = ( 359, 260,017, -1 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 167,585, -791,978, 124,497 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 261 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -897,901, -895,305, 91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 684,925, -793,659, 145,478 ); + ent.v[ "angles" ] = ( 357,775, 245,029, -0,707484 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 584,827, -828,038, 41,6965 ); + ent.v[ "angles" ] = ( 1,71852, 268,325, -5,28397 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 302,475, -247,251, 85,7498 ); + ent.v[ "angles" ] = ( 359,072, 264,018, -1,06732 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 92,3654, -208,68, 101,001 ); + ent.v[ "angles" ] = ( 359,754, 295,012, -1,39269 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1078,87, 545,001, 164,504 ); + ent.v[ "angles" ] = ( 359,072, 264,018, -1,06732 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1056,77, -249,934, 163,863 ); + ent.v[ "angles" ] = ( 359,072, 264,018, -1,06732 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 956,673, -32,5662, 164,959 ); + ent.v[ "angles" ] = ( 359,086, 274,019, -0,161166 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 249,666, -596,808, 148,796 ); + ent.v[ "angles" ] = ( 359,072, 264,018, -1,06732 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 683,971, 486,11, 161,286 ); + ent.v[ "angles" ] = ( 359,072, 264,018, 0,932685 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -224,668, 848,046, 92,9363 ); + ent.v[ "angles" ] = ( 359,072, 264,018, 0,932685 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -377,868, 1427,86, 143,875 ); + ent.v[ "angles" ] = ( 359,025, 267,018, 0,88285 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1195,32, 1214,04, 86,7745 ); + ent.v[ "angles" ] = ( 359,072, 264,018, 0,932685 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1574,97, 1523,24, 74,625 ); + ent.v[ "angles" ] = ( 359,058, 266,018, -0,100112 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1500,7, 1592,14, 76,9619 ); + ent.v[ "angles" ] = ( 358,862, 279,019, 0,660769 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1793,15, -566,822, 131 ); + ent.v[ "angles" ] = ( 359,922, 274,032, 0,809581 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1716,18, -1098,13, 123,5 ); + ent.v[ "angles" ] = ( 358,965, 271,018, 0,812661 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1462,64, -631,445, 99,9975 ); + ent.v[ "angles" ] = ( 359,923, 274,032, 0,809605 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 188,737, -1117,3, 153,943 ); + ent.v[ "angles" ] = ( 0,176856, 256,034, 0,793804 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1774,75, 1527,49, 71,625 ); + ent.v[ "angles" ] = ( 359,156, 287,02, -0,431177 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -764,655, 1141,59, 87,9259 ); + ent.v[ "angles" ] = ( 359,058, 266,018, -0,100112 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1239,63, -73,4638, 160,742 ); + ent.v[ "angles" ] = ( 357,949, 266,804, 25,922 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1459,88, -281,93, 316,143 ); + ent.v[ "angles" ] = ( 0,544976, 205,626, -1,04779 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 823,542, 313,234, 52,0039 ); + ent.v[ "angles" ] = ( 359,072, 264,018, 0,932685 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 830,694, 227,968, 14,4987 ); + ent.v[ "angles" ] = ( 19,932, 271,818, -0,463749 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1035,84, -797,458, 162,958 ); + ent.v[ "angles" ] = ( 359,054, 263,018, -1,05096 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -69,6524, 899,951, 96,897 ); + ent.v[ "angles" ] = ( 359, 260,018, -1 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1138,29, 671,473, 83,5 ); + ent.v[ "angles" ] = ( 359,11, 266,018, -1,09904 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1035,15, 783,365, 64,4414 ); + ent.v[ "angles" ] = ( 359,169, 269,017, -1,14411 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1847,65, 670,064, 126,339 ); + ent.v[ "angles" ] = ( 359,601, 293,014, -0,388734 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -905,637, 473,749, 83 ); + ent.v[ "angles" ] = ( 357,263, 321,092, -0,897471 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -702,686, 170,007, 90,5329 ); + ent.v[ "angles" ] = ( 358,352, 326,077, -1,13201 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -989,89, -352,779, 100,273 ); + ent.v[ "angles" ] = ( 358,686, 240,042, 2,56371 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -949,251, -812,154, 180,768 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_gas_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1380,25, 610,338, 182,788 ); + ent.v[ "angles" ] = ( 359,375, 19,951, 8,97843 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_gas_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1108,34, 230,326, 160,706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8758,18, -2601,51, 1789,17 ); + ent.v[ "angles" ] = ( 358,945, 240,805, -1,8246 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1777,36, -5350,6, 244,209 ); + ent.v[ "angles" ] = ( 358,702, 232,807, -1,65996 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1860,58, -5040,41, 57,0436 ); + ent.v[ "angles" ] = ( 359,778, 264,792, -2,09578 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3650,01, 2824,46, 343,516 ); + ent.v[ "angles" ] = ( 2,70279, 262,684, -2,08911 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5223,45, 3715,88, 1175,8 ); + ent.v[ "angles" ] = ( 4,05135, 238,826, 4,86698 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3037,07, 5817,13, 1213 ); + ent.v[ "angles" ] = ( 358,316, 217,806, -1,26734 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1680,86, 2881,89, 111,145 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3002,88, 2118,22, -9,59973 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 237 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3479,83, -186,319, -269,401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -6203,93, 1556,99, -66,1765 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -15649, -1649,3, -1111 ); + ent.v[ "angles" ] = ( 359,888, 267,789, -2,10462 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1426,06, -2082,68, 27,4772 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 212 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1044,48, 2369,78, 305,75 ); + ent.v[ "angles" ] = ( 360, 317, -3 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -9343,47, -2046,97, -1305,17 ); + ent.v[ "angles" ] = ( 3,44027, 285,694, -1,26256 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4950,48, -927,538, -319,972 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_close" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4000,32, -4003,76, 63,2383 ); + ent.v[ "angles" ] = ( 7, 289, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_vista_dust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9576,57, -8049,61, 1798,74 ); + ent.v[ "angles" ] = ( 358,589, 228,808, -1,56547 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -132,897, 1020,79, 48,591 ); + ent.v[ "angles" ] = ( 0, 266,575, 2,90993 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1267,21, -1107,79, 37,4418 ); + ent.v[ "angles" ] = ( 352,827, 272,212, 2,09263 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1207,49, -73,5797, 39,7421 ); + ent.v[ "angles" ] = ( 271,109, 2,68804, -3,90122 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 147,253, -1602,43, 75 ); + ent.v[ "angles" ] = ( 271,109, 2,68804, -3,90122 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -877,604, -1665, 72 ); + ent.v[ "angles" ] = ( 271,109, 2,68804, -3,90122 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1729,02, -1693,4, 73,9989 ); + ent.v[ "angles" ] = ( 271,109, 2,68804, -3,90122 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1768,6, -420,735, 80,4995 ); + ent.v[ "angles" ] = ( 271,109, 2,68804, -3,90122 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -809,158, 195,222, 48,2225 ); + ent.v[ "angles" ] = ( 271,109, 2,68804, -3,90122 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -194,057, 295,056, 127,152 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1334,78, 1486,89, 130,006 ); + ent.v[ "angles" ] = ( 356,963, 293,476, -1,22082 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2024,96, -256,793, 301,886 ); + ent.v[ "angles" ] = ( 88,6934, 211,131, 30,4356 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 18,8065, 873,257, 56,4626 ); + ent.v[ "angles" ] = ( 2,94584, 269,721, -0,140539 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1365,13, 1549,66, 30,8293 ); + ent.v[ "angles" ] = ( 0,944308, 266,469, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_floor_swirl_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 374,262, 818,93, 56,3473 ); + ent.v[ "angles" ] = ( 270,13, 34,2431, -35,4556 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6,3894, -673,185, 97,5047 ); + ent.v[ "angles" ] = ( 358,74, 242,015, -0,64204 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -9,49943, -632,315, 131,625 ); + ent.v[ "angles" ] = ( 358,74, 242,015, -0,64204 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -878,104, -711,226, 95,2438 ); + ent.v[ "angles" ] = ( 359,358, 278,016, -1,26004 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -846,985, -646,685, 115,913 ); + ent.v[ "angles" ] = ( 358,751, 187,002, 0,664114 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -323,034, -128,45, 164,125 ); + ent.v[ "angles" ] = ( 358,634, 230,013, -0,365972 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -319,125, -214,761, 164,922 ); + ent.v[ "angles" ] = ( 358,617, 227,012, -0,293967 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -557,213, -161,625, 171,036 ); + ent.v[ "angles" ] = ( 359,926, 302,01, -1,41222 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -878,347, 346,759, 96,1744 ); + ent.v[ "angles" ] = ( 357,589, 336,104, -1,57558 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1403,9, 408,837, 83,5629 ); + ent.v[ "angles" ] = ( 357,22, 318,089, -0,752899 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1014,59, -369,348, 71,6979 ); + ent.v[ "angles" ] = ( 359,394, 225,057, -0,183771 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1583,7, -684,076, 80 ); + ent.v[ "angles" ] = ( 359,479, 334,037, -0,386453 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1108,27, -1026,02, 91 ); + ent.v[ "angles" ] = ( 359,385, 316,036, -0,206509 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1809,69, -1509,75, 128,469 ); + ent.v[ "angles" ] = ( 358,52, 322,024, 0,82962 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1529,5, -1519,1, 117,215 ); + ent.v[ "angles" ] = ( 0,930588, 228,046, 0,418486 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -319,891, -1143,88, 89,2982 ); + ent.v[ "angles" ] = ( 359,502, 199,017, -0,210622 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -548,541, -401,24, 48,4856 ); + ent.v[ "angles" ] = ( 359,103, 277,026, -0,530978 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -688,887, -590,416, 48,1295 ); + ent.v[ "angles" ] = ( 359,504, 308,026, -0,917323 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -199,19, -698,89, 49,1078 ); + ent.v[ "angles" ] = ( 359,254, 202,017, -0,269819 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9,95442, 443,757, 128,125 ); + ent.v[ "angles" ] = ( 359,504, 308,026, -0,917323 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7,38482, 327,405, 97,125 ); + ent.v[ "angles" ] = ( 359,504, 308,026, -0,917323 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 195,711, -1324,31, 144,091 ); + ent.v[ "angles" ] = ( 359,449, 257,013, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -870,122, 963,313, 84,6703 ); + ent.v[ "angles" ] = ( 359,169, 269,017, -1,14411 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -725,204, 817,853, 48,6131 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 299 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1032,52, 75,7198, 175,878 ); + ent.v[ "angles" ] = ( 359,958, 272,414, -0,139393 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1071,17, -892,618, 120 ); + ent.v[ "angles" ] = ( 358,948, 269,521, -0,140792 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_pill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 682,348, 487,427, 155,49 ); + ent.v[ "angles" ] = ( 88,9042, 323,553, 142,846 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -509,583, -1615,77, 117,2 ); + ent.v[ "angles" ] = ( 0,930588, 228,046, 0,418486 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -742,329, -1525,19, 72 ); + ent.v[ "angles" ] = ( 359,945, 269,52, -0,107685 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -53,5563, -1520,48, 73 ); + ent.v[ "angles" ] = ( 359,945, 269,52, -0,107685 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -439,636, -1518,94, 72 ); + ent.v[ "angles" ] = ( 359,945, 269,52, -0,107685 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dig_dust_fall_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -155,602, 1176,58, 226,688 ); + ent.v[ "angles" ] = ( 88,6728, 321,83, 103,094 ); + ent.v[ "delay" ] = -82; +} diff --git a/mp_dig/maps/mp/mp_dig.gsc b/mp_dig/maps/mp/mp_dig.gsc new file mode 100644 index 0000000..02b6e98 --- /dev/null +++ b/mp_dig/maps/mp/mp_dig.gsc @@ -0,0 +1,52 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_dig_fx::main(); + precachemodel( "collision_clip_wall_32x32x10" ); + precachemodel( "p6_dig_brick_03" ); + maps/mp/_load::main(); + maps/mp/mp_dig_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_dig" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + brick1 = spawn( "script_model", ( -5,6285, 604,473, 39,05 ) ); + brick1.angles = ( 359,199, 90,0129, -0,822672 ); + brick2 = spawn( "script_model", ( -12,63, 604,47, 39,05 ) ); + brick2.angles = ( 359,199, 90,0129, -0,822672 ); + brick3 = spawn( "script_model", ( -5,63, 614,97, 39,05 ) ); + brick3.angles = ( 359,199, 90,0129, -0,822672 ); + brick4 = spawn( "script_model", ( -12,63, 614,97, 39,05 ) ); + brick4.angles = ( 359,199, 90,0129, -0,822672 ); + brick5 = spawn( "script_model", ( -5,63, 629,47, 39,55 ) ); + brick5.angles = ( 359,199, 90,0129, -0,822672 ); + brick6 = spawn( "script_model", ( -12,63, 629,47, 39,55 ) ); + brick6.angles = ( 359,199, 90,0129, -0,822672 ); + brick1 setmodel( "p6_dig_brick_03" ); + brick2 setmodel( "p6_dig_brick_03" ); + brick3 setmodel( "p6_dig_brick_03" ); + brick4 setmodel( "p6_dig_brick_03" ); + brick5 setmodel( "p6_dig_brick_03" ); + brick6 setmodel( "p6_dig_brick_03" ); + spawncollision( "collision_clip_wall_32x32x10", "collider", ( -1404, -1126, 46,5 ), vectorScale( ( 0, 1, 0 ), 90 ) ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2300", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); +} diff --git a/mp_dig/maps/mp/mp_dig_amb.gsc b/mp_dig/maps/mp/mp_dig_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_dig/maps/mp/mp_dig_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_dig/maps/mp/mp_dig_fx.gsc b/mp_dig/maps/mp/mp_dig_fx.gsc new file mode 100644 index 0000000..3c0d169 --- /dev/null +++ b/mp_dig/maps/mp/mp_dig_fx.gsc @@ -0,0 +1,59 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc4" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc4(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_dig_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_lf_mp_dig_sun1" ] = loadfx( "lens_flares/fx_lf_mp_dig_sun1" ); + level._effect[ "fx_mp_dig_floor_swirl_sm" ] = loadfx( "maps/mp_maps/fx_mp_dig_floor_swirl_sm" ); + level._effect[ "fx_mp_dig_floor_swirl_lg" ] = loadfx( "maps/mp_maps/fx_mp_dig_floor_swirl_lg" ); + level._effect[ "fx_mp_dig_dust" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust" ); + level._effect[ "fx_mp_dig_dust_fall" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_fall" ); + level._effect[ "fx_mp_dig_dust_fall_2" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_fall_2" ); + level._effect[ "fx_mp_dig_dust_fall_3" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_fall_3" ); + level._effect[ "fx_mp_dig_dust_floor" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_floor" ); + level._effect[ "fx_mp_dig_dust_floor_fall" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_floor_fall" ); + level._effect[ "fx_mp_dig_dust_fall_pill" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_fall_pill" ); + level._effect[ "fx_mp_dig_vista_dust" ] = loadfx( "maps/mp_maps/fx_mp_dig_vista_dust" ); + level._effect[ "fx_mp_dig_vista_dust_sm" ] = loadfx( "maps/mp_maps/fx_mp_dig_vista_dust_sm" ); + level._effect[ "fx_mp_dig_vista_dust_close" ] = loadfx( "maps/mp_maps/fx_mp_dig_vista_dust_close" ); + level._effect[ "fx_mp_dig_heat_distort" ] = loadfx( "maps/mp_maps/fx_mp_dig_heat_distort" ); + level._effect[ "fx_mp_dig_dust_lg" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_lg" ); + level._effect[ "fx_mp_dig_vista_birds" ] = loadfx( "maps/mp_maps/fx_mp_dig_vista_birds" ); + level._effect[ "fx_mp_dig_godray" ] = loadfx( "maps/mp_maps/fx_mp_dig_godray" ); + level._effect[ "fx_mp_dig_godray_wide" ] = loadfx( "maps/mp_maps/fx_mp_dig_godray_wide" ); + level._effect[ "fx_mp_dig_flood_light" ] = loadfx( "maps/mp_maps/fx_mp_dig_flood_light" ); + level._effect[ "fx_mp_dig_dust_mote" ] = loadfx( "maps/mp_maps/fx_mp_dig_dust_mote" ); + level._effect[ "fx_mp_dig_gas_drip" ] = loadfx( "maps/mp_maps/fx_mp_dig_gas_drip" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "roaches" ] = %fxanim_gp_roaches_anim; +} + +precache_fxanim_props_dlc4() +{ + level.scr_anim[ "fxanim_props_dlc4" ][ "wires_yellow_01" ] = %fxanim_mp_dig_wires_yellow_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wires_yellow_02" ] = %fxanim_mp_dig_wires_yellow_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wires_yellow_03" ] = %fxanim_mp_dig_wires_yellow_03_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "ropes_01" ] = %fxanim_mp_dig_ropes_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "fuel_pipe" ] = %fxanim_mp_dig_fuel_pipe_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wires_yellow_04" ] = %fxanim_mp_dig_wires_yellow_04_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wires_yellow_05" ] = %fxanim_mp_dig_wires_yellow_05_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wires_yellow_06" ] = %fxanim_mp_dig_wires_yellow_06_anim; +} diff --git a/mp_dockside/aitype/enemy_dog_mp.gsc b/mp_dockside/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_dockside/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_dockside/character/character_mp_german_shepherd.gsc b/mp_dockside/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_dockside/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_dockside/maps/mp/animscripts/traverse/ladder_down.gsc b/mp_dockside/maps/mp/animscripts/traverse/ladder_down.gsc new file mode 100644 index 0000000..5c4ed06 --- /dev/null +++ b/mp_dockside/maps/mp/animscripts/traverse/ladder_down.gsc @@ -0,0 +1,8 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ +/# + assert( 0, "Not supposed to be used in MP" ); +#/ +} diff --git a/mp_dockside/maps/mp/animscripts/traverse/ladder_up.gsc b/mp_dockside/maps/mp/animscripts/traverse/ladder_up.gsc new file mode 100644 index 0000000..5c4ed06 --- /dev/null +++ b/mp_dockside/maps/mp/animscripts/traverse/ladder_up.gsc @@ -0,0 +1,8 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ +/# + assert( 0, "Not supposed to be used in MP" ); +#/ +} diff --git a/mp_dockside/maps/mp/animscripts/traverse/mantle_over_96.gsc b/mp_dockside/maps/mp/animscripts/traverse/mantle_over_96.gsc new file mode 100644 index 0000000..5c4ed06 --- /dev/null +++ b/mp_dockside/maps/mp/animscripts/traverse/mantle_over_96.gsc @@ -0,0 +1,8 @@ +#include maps/mp/animscripts/traverse/shared; + +main() +{ +/# + assert( 0, "Not supposed to be used in MP" ); +#/ +} diff --git a/mp_dockside/maps/mp/createart/mp_dockside_art.gsc b/mp_dockside/maps/mp/createart/mp_dockside_art.gsc new file mode 100644 index 0000000..20068a2 --- /dev/null +++ b/mp_dockside/maps/mp/createart/mp_dockside_art.gsc @@ -0,0 +1,41 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 501,064; + half_dist = 5397,69; + half_height = 765,766; + base_height = 3,88835; + fog_r = 0,721569; + fog_g = 0,803922; + fog_b = 0,929412; + fog_scale = 2,76409; + sun_col_r = 1; + sun_col_g = 1; + sun_col_b = 1; + sun_dir_x = 0,41452; + sun_dir_y = 0,909807; + sun_dir_z = 0,0206221; + sun_start_ang = 0; + sun_stop_ang = 104,831; + time = 0; + max_fog_opacity = 0,91391; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); + visionsetnaked( "mp_dockside", 0 ); +} diff --git a/mp_dockside/maps/mp/createfx/mp_dockside_fx.gsc b/mp_dockside/maps/mp/createfx/mp_dockside_fx.gsc new file mode 100644 index 0000000..67fe8d0 --- /dev/null +++ b/mp_dockside/maps/mp/createfx/mp_dockside_fx.gsc @@ -0,0 +1,1926 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_xlg" ); + ent.v[ "origin" ] = ( -1196,31, 2393,9, -58 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1392,19, 2727,22, -68 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -317,102, 3210,62, -76 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1812,71, 2051,63, -66 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1347,49, 1812,61, -67,7311 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -856,07, 3419,19, -70 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1451,53, 3397,2, -67 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1403,35, 1248,77, -60 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1501,3, 809,035, -61,3792 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -943,4, 1872,01, -68 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -502,979, -1358,92, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -128,841, -1475,65, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( -1113,42, 1495,64, 490,065 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 32 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1202,77, 1624,12, 569,508 ); + ent.v[ "angles" ] = ( 21,8842, 353,537, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -1196,97, 1669,24, 573,787 ); + ent.v[ "angles" ] = ( 22,8361, 350,276, -69,5269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1186,17, 1711,59, 570,53 ); + ent.v[ "angles" ] = ( 20,7275, 347,127, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1165,3, 1795,59, 570,857 ); + ent.v[ "angles" ] = ( 20,6211, 344,991, 42,6715 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1178,68, 1752,83, 572,612 ); + ent.v[ "angles" ] = ( 22,6177, 344,865, -3,37474 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1151,1, 1839,58, 566,652 ); + ent.v[ "angles" ] = ( 22,2412, 339,474, 114,741 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1136,24, 1879,54, 568,856 ); + ent.v[ "angles" ] = ( 22,0453, 337,327, 39,002 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -1120,03, 1922,3, 570,717 ); + ent.v[ "angles" ] = ( 22,5096, 334,963, 36,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1095,56, 1959,49, 572,078 ); + ent.v[ "angles" ] = ( 22,5096, 334,963, 21,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1076,98, 1997,38, 567,94 ); + ent.v[ "angles" ] = ( 22,3351, 329,141, 86,813 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1055,33, 2034,7, 573,634 ); + ent.v[ "angles" ] = ( 23,9179, 327,423, 18,1561 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1032,53, 2069,64, 569,864 ); + ent.v[ "angles" ] = ( 24,226, 326,381, 17,7311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1004,58, 2104,9, 572,731 ); + ent.v[ "angles" ] = ( 24,527, 325,334, 17,2989 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -383,448, 2484,96, 568,869 ); + ent.v[ "angles" ] = ( 24,226, 280,381, 17,731 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -425,076, 2471,21, 572,639 ); + ent.v[ "angles" ] = ( 23,9179, 281,423, 18,156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -466,903, 2460,57, 565,945 ); + ent.v[ "angles" ] = ( 22,3351, 283,141, 86,813 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -509,838, 2446,41, 568,083 ); + ent.v[ "angles" ] = ( 22,5096, 288,963, 21,0884 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -630,911, 2404,43, 565,657 ); + ent.v[ "angles" ] = ( 22,2411, 293,474, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -592,766, 2421,1, 568,861 ); + ent.v[ "angles" ] = ( 22,8209, 292,01, 39,2624 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -550,703, 2439,03, 569,722 ); + ent.v[ "angles" ] = ( 22,5095, 288,963, 36,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -670,502, 2384,66, 569,862 ); + ent.v[ "angles" ] = ( 20,621, 298,991, 42,6714 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -710,558, 2364,58, 571,617 ); + ent.v[ "angles" ] = ( 22,6177, 298,865, -3,3747 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -747,834, 2341,21, 569,536 ); + ent.v[ "angles" ] = ( 20,7275, 301,127, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -784,594, 2317,79, 572,792 ); + ent.v[ "angles" ] = ( 22,836, 304,276, -69,5267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -819,878, 2292,5, 567,513 ); + ent.v[ "angles" ] = ( 21,8842, 307,537, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 401,444, 2292,79, 573,226 ); + ent.v[ "angles" ] = ( 24,2259, 236,381, 17,7311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( 366,185, 2319,33, 567,359 ); + ent.v[ "angles" ] = ( 24,226, 236,381, 17,7311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 330,49, 2342,78, 571,129 ); + ent.v[ "angles" ] = ( 23,9179, 237,423, 70,156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 290,711, 2366,15, 566,435 ); + ent.v[ "angles" ] = ( 22,3351, 239,141, 86,8129 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 252,817, 2384,73, 570,573 ); + ent.v[ "angles" ] = ( 22,5096, 244,963, 21,0884 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 131,137, 2441,19, 565,147 ); + ent.v[ "angles" ] = ( 22,2411, 249,474, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 172,872, 2425,41, 567,351 ); + ent.v[ "angles" ] = ( 22,0452, 247,327, 39,0018 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( 215,629, 2409,2, 569,212 ); + ent.v[ "angles" ] = ( 22,5095, 244,963, 36,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 88,922, 2454,47, 569,352 ); + ent.v[ "angles" ] = ( 20,621, 254,991, 42,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 49,0408, 2467,01, 571,107 ); + ent.v[ "angles" ] = ( 22,6177, 254,865, -3,37468 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 4,98394, 2477,33, 569,025 ); + ent.v[ "angles" ] = ( 20,7275, 257,127, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -37,4259, 2486,14, 572,282 ); + ent.v[ "angles" ] = ( 22,836, 260,276, -69,5267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -82,552, 2491,94, 567,003 ); + ent.v[ "angles" ] = ( 21,8842, 263,537, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 778,018, 1627,01, 573,828 ); + ent.v[ "angles" ] = ( 24,5269, 189,334, 17,299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( 772,22, 1671,78, 568,961 ); + ent.v[ "angles" ] = ( 24,226, 190,381, 17,7311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 764,253, 1713,74, 567,731 ); + ent.v[ "angles" ] = ( 23,9178, 191,423, 18,156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 753,902, 1755,63, 568,037 ); + ent.v[ "angles" ] = ( 22,335, 193,141, 86,8128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 740,948, 1795,79, 571,175 ); + ent.v[ "angles" ] = ( 22,5096, 198,963, 21,0884 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 697,035, 1922,54, 566,749 ); + ent.v[ "angles" ] = ( 22,2411, 203,475, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 714,673, 1881,56, 568,953 ); + ent.v[ "angles" ] = ( 22,0452, 201,327, 39,0017 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 732,007, 1842,46, 573,814 ); + ent.v[ "angles" ] = ( 22,5095, 198,963, 36,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 677,262, 1962,14, 570,954 ); + ent.v[ "angles" ] = ( 20,621, 208,991, 42,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 655,823, 2002,03, 571,709 ); + ent.v[ "angles" ] = ( 22,6177, 208,865, -3,37461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 635,399, 2038,4, 570,628 ); + ent.v[ "angles" ] = ( 20,7274, 211,127, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 612,274, 2075,02, 573,884 ); + ent.v[ "angles" ] = ( 22,836, 214,276, -69,5265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 585,13, 2107,27, 568,605 ); + ent.v[ "angles" ] = ( 21,8841, 217,537, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 587,926, 886,6, 571,956 ); + ent.v[ "angles" ] = ( 24,5268, 145,334, 17,2989 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 615,459, 923,626, 570,09 ); + ent.v[ "angles" ] = ( 24,226, 146,381, 17,7311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 638,877, 959,346, 574,859 ); + ent.v[ "angles" ] = ( 23,9178, 147,423, 18,156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 661,828, 996,999, 565,166 ); + ent.v[ "angles" ] = ( 22,335, 149,141, 86,8128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 680,991, 1035,84, 567,303 ); + ent.v[ "angles" ] = ( 22,5095, 154,963, 21,0884 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( 735,571, 1156,24, 567,878 ); + ent.v[ "angles" ] = ( 22,2411, 159,475, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 721,069, 1117,22, 570,082 ); + ent.v[ "angles" ] = ( 20,7781, 158,989, 39,6085 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 748,85, 1198,45, 568,083 ); + ent.v[ "angles" ] = ( 20,621, 164,991, 42,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 762,231, 1241,22, 573,838 ); + ent.v[ "angles" ] = ( 22,6176, 164,865, -3,37463 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 771,711, 1282,39, 571,756 ); + ent.v[ "angles" ] = ( 20,7274, 167,127, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 777,815, 1326,23, 572,013 ); + ent.v[ "angles" ] = ( 22,836, 170,276, -69,5266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 787,204, 1370,39, 569,734 ); + ent.v[ "angles" ] = ( 21,884, 173,537, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -78,6389, 506,104, 573,822 ); + ent.v[ "angles" ] = ( 24,5268, 99,3342, 17,2989 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -32,8782, 512,019, 568,955 ); + ent.v[ "angles" ] = ( 24,2259, 100,381, 17,731 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 9,08425, 519,986, 571,725 ); + ent.v[ "angles" ] = ( 23,9178, 101,423, 18,1559 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 53,954, 530,635, 567,031 ); + ent.v[ "angles" ] = ( 22,335, 103,141, 86,8127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 97,6821, 545,773, 568,169 ); + ent.v[ "angles" ] = ( 22,5095, 108,963, 21,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 217,887, 587,204, 568,743 ); + ent.v[ "angles" ] = ( 22,241, 113,474, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 176,018, 569,098, 568,947 ); + ent.v[ "angles" ] = ( 22,0451, 111,327, 39,0015 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 137,545, 552,907, 571,808 ); + ent.v[ "angles" ] = ( 22,5095, 108,963, 36,0882 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 257,478, 606,977, 570,948 ); + ent.v[ "angles" ] = ( 20,621, 118,991, 42,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( 295,805, 628,004, 572,703 ); + ent.v[ "angles" ] = ( 22,6176, 118,865, -3,37466 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 331,949, 651,248, 569,622 ); + ent.v[ "angles" ] = ( 20,7274, 121,127, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 371,982, 673,14, 573,878 ); + ent.v[ "angles" ] = ( 22,8359, 124,276, -69,5266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( 406,854, 699,14, 568,599 ); + ent.v[ "angles" ] = ( 21,884, 127,537, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -819,273, 699,451, 573,722 ); + ent.v[ "angles" ] = ( 24,5268, 55,3342, 17,2988 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -782,246, 671,917, 568,855 ); + ent.v[ "angles" ] = ( 24,2259, 56,3813, 17,731 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -746,526, 648,499, 573,625 ); + ent.v[ "angles" ] = ( 23,9178, 57,4231, 18,1559 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -709,207, 626,849, 567,932 ); + ent.v[ "angles" ] = ( 22,335, 59,1408, 86,8126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -668,036, 605,971, 569,069 ); + ent.v[ "angles" ] = ( 22,5095, 64,9632, 21,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -549,633, 551,805, 566,644 ); + ent.v[ "angles" ] = ( 22,241, 69,4745, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -590,273, 568,17, 566,848 ); + ent.v[ "angles" ] = ( 22,045, 67,3267, 39,0015 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -634,126, 583,801, 570,709 ); + ent.v[ "angles" ] = ( 22,5095, 64,9632, 36,0882 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -508,114, 539,581, 566,849 ); + ent.v[ "angles" ] = ( 20,621, 74,9912, 42,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -464,456, 525,712, 574,604 ); + ent.v[ "angles" ] = ( 22,6176, 74,865, -3,37468 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -423,479, 515,665, 570,522 ); + ent.v[ "angles" ] = ( 20,7274, 77,1267, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -381,07, 506,858, 573,779 ); + ent.v[ "angles" ] = ( 22,836, 80,2762, -69,5266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -335,944, 501,058, 568,5 ); + ent.v[ "angles" ] = ( 21,884, 83,5368, -116,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1199,14, 1366,08, 570,377 ); + ent.v[ "angles" ] = ( 24,5268, 9,33421, 17,2988 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1197,13, 1320,59, 570,51 ); + ent.v[ "angles" ] = ( 23,273, 10,0498, 76,5974 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1183,46, 1277,11, 571,28 ); + ent.v[ "angles" ] = ( 23,9178, 11,4231, 18,1559 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1173,41, 1239,21, 568,587 ); + ent.v[ "angles" ] = ( 22,335, 13,1408, 86,8125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1160,27, 1198,06, 569,724 ); + ent.v[ "angles" ] = ( 22,5095, 18,9633, 21,0883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1116,54, 1072,29, 567,298 ); + ent.v[ "angles" ] = ( 22,241, 23,4745, 114,742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1132,99, 1110,53, 569,502 ); + ent.v[ "angles" ] = ( 22,045, 21,3267, 70,0014 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1152,22, 1155,3, 571,363 ); + ent.v[ "angles" ] = ( 22,5095, 18,9631, -118,912 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1096,77, 1032,7, 571,504 ); + ent.v[ "angles" ] = ( 20,621, 28,9912, 42,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_dim" ); + ent.v[ "origin" ] = ( -1076,69, 992,648, 573,259 ); + ent.v[ "angles" ] = ( 22,6176, 28,8649, -3,37469 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw" ); + ent.v[ "origin" ] = ( -1054,9, 956,443, 571,177 ); + ent.v[ "angles" ] = ( 20,7274, 31,1267, 134,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1032,33, 920,65, 574,433 ); + ent.v[ "angles" ] = ( 22,836, 34,2762, -69,5266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -1001,13, 883,661, 568,154 ); + ent.v[ "angles" ] = ( 21,884, 37,5368, -120,313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( -847,394, 2137,64, 489,622 ); + ent.v[ "angles" ] = ( 33,0554, 317,415, 0,853006 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( -208,764, 590,058, 489,779 ); + ent.v[ "angles" ] = ( 33, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( -849,126, 855,53, 489,355 ); + ent.v[ "angles" ] = ( 32, 45, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( -209,68, 2402,38, 489,14 ); + ent.v[ "angles" ] = ( 31, 272, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( 435,405, 2136,45, 487,917 ); + ent.v[ "angles" ] = ( 33, 225, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( 698,671, 1493,53, 488,689 ); + ent.v[ "angles" ] = ( 34, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_xlg" ); + ent.v[ "origin" ] = ( 433,218, 855,982, 487,856 ); + ent.v[ "angles" ] = ( 33, 134, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 657,203, -268,636, 372,511 ); + ent.v[ "angles" ] = ( 82, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 720,705, -333,589, 374,931 ); + ent.v[ "angles" ] = ( 82, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 783,719, -270,39, 372,949 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 721,163, -206,596, 374,979 ); + ent.v[ "angles" ] = ( 82, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_xlg" ); + ent.v[ "origin" ] = ( 711,273, -261,805, -34,9065 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_xlg" ); + ent.v[ "origin" ] = ( -1247,72, -275,608, -65 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 920,707, 3153,72, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1001,56, 2154,67, -94 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_sm" ); + ent.v[ "origin" ] = ( 518,367, 782,125, 1029,08 ); + ent.v[ "angles" ] = ( 274, 269,002, 89,9984 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_sm" ); + ent.v[ "origin" ] = ( -923,581, 769,005, 1027,52 ); + ent.v[ "angles" ] = ( 272, 269,007, 89,9931 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_sm" ); + ent.v[ "origin" ] = ( -937,245, 2209,03, 1027,9 ); + ent.v[ "angles" ] = ( 274, 269,002, 89,9984 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_sm" ); + ent.v[ "origin" ] = ( 504,156, 2225,33, 1030,66 ); + ent.v[ "angles" ] = ( 274, 269,002, 89,9984 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( -1053,81, 594,818, 586,314 ); + ent.v[ "angles" ] = ( 34, 45, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( -1109,4, 651,148, 587,036 ); + ent.v[ "angles" ] = ( 34, 45, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_red_slw_md" ); + ent.v[ "origin" ] = ( -999,924, 656,052, 418,186 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( -1109,96, 2342,51, 586,228 ); + ent.v[ "angles" ] = ( 35, 315, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( -1054,25, 2398,07, 586,383 ); + ent.v[ "angles" ] = ( 35, 315, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( 638,506, 2397,49, 577,727 ); + ent.v[ "angles" ] = ( 38,9929, 222,713, -0,809685 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( 694,081, 2342,03, 586,592 ); + ent.v[ "angles" ] = ( 38,9929, 222,713, -0,809685 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( 693,879, 649,554, 586,359 ); + ent.v[ "angles" ] = ( 34, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_red_md" ); + ent.v[ "origin" ] = ( 638,392, 594,139, 586,436 ); + ent.v[ "angles" ] = ( 34, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_red_slw_md" ); + ent.v[ "origin" ] = ( -998,339, 2312,53, 374,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_red_slw_md" ); + ent.v[ "origin" ] = ( 603,147, 2326,46, 387,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_red_slw_md" ); + ent.v[ "origin" ] = ( 627,347, 664,624, 426,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_spotlight_cool_lg" ); + ent.v[ "origin" ] = ( -235,826, 2195,56, 437,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_spotlight_cool_lg" ); + ent.v[ "origin" ] = ( -843,196, 1061,05, 424 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_spotlight_cool_lg" ); + ent.v[ "origin" ] = ( -826,93, 1909,9, 422,877 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_spotlight_cool_lg" ); + ent.v[ "origin" ] = ( 431,613, 1757,29, 413,098 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_spotlight_cool_lg" ); + ent.v[ "origin" ] = ( 30,6163, 865,449, 431,439 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 288,13, 1627,16, -99,0382 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 330,328, 890,242, -67,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -96,48, 1416,18, -98,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 699,762, 381,274, -68 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 184,843, -133,136, -22 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1716,89, -25,0355, -63,9433 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -422,001, -864,637, -68 ); + ent.v[ "angles" ] = ( 0, 4, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( -342,466, 2490,04, 573,474 ); + ent.v[ "angles" ] = ( 22,616, 278,69, 17,0413 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_lg" ); + ent.v[ "origin" ] = ( 701,395, 1076,2, 572,538 ); + ent.v[ "angles" ] = ( 22,5095, 154,963, 34,0882 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 135,617, 2769,89, -83,4701 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 489,001, 4166,83, 303,96 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 487,281, 4211,37, 304,973 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 961,518, 4166,37, 304,975 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 959,798, 4210,92, 305,988 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 1440,42, 4162,7, 306,965 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 1438,7, 4207,24, 307,978 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 1441,3, 5022,68, 304,971 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 1439,58, 5067,22, 305,984 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 963,77, 5029,13, 305,982 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 962,05, 5073,68, 306,995 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 484,601, 5026,98, 304,969 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 482,881, 5071,53, 305,982 ); + ent.v[ "angles" ] = ( 270,361, 56,6429, 33,1621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 965,362, 4181,98, -42,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 1445,05, 4196,62, -47,7932 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 501,531, 4205,47, -53,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 965,173, 5044,51, -51,5937 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 1448,05, 5045,2, -43,3537 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 497,463, 5054,02, -45,4584 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1144,89, 4631,49, -75,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 624,269, 4627,73, -75,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 327,546, 5241,17, 259,969 ); + ent.v[ "angles" ] = ( 270,361, 146,654, 33,151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( 283,004, 5239,46, 259,982 ); + ent.v[ "angles" ] = ( 270,361, 146,654, 33,151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( -186,377, 5247,94, 253,971 ); + ent.v[ "angles" ] = ( 270,361, 146,654, 33,151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( -230,919, 5246,22, 254,984 ); + ent.v[ "angles" ] = ( 270,361, 146,654, 33,151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 712,801, 187,057, 23,6697 ); + ent.v[ "angles" ] = ( 286, 315, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 799,233, 189,931, 24,2237 ); + ent.v[ "angles" ] = ( 290, 224, -10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1128,95, 188,415, 23,1149 ); + ent.v[ "angles" ] = ( 286,272, 217,765, -10,3437 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1214,12, 190,058, 23,5743 ); + ent.v[ "angles" ] = ( 288, 294, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1516,21, 575,703, 23,6455 ); + ent.v[ "angles" ] = ( 287,029, 220,627, 3,38233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1515,08, 490,491, 22,3967 ); + ent.v[ "angles" ] = ( 288, 135, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1516,63, 2415,88, 23,3788 ); + ent.v[ "angles" ] = ( 285,022, 130,119, 93,8562 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1515,43, 2501,1, 24,0062 ); + ent.v[ "angles" ] = ( 284,312, 219,223, -11,8548 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1214,05, 2801,86, 23,6049 ); + ent.v[ "angles" ] = ( 288,027, 39,233, -3,07457 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( -1127,82, 2802,74, 24,4448 ); + ent.v[ "angles" ] = ( 291, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 1098,06, 576,058, 24,0008 ); + ent.v[ "angles" ] = ( 290, 314, -10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 1098,99, 490,925, 23,4468 ); + ent.v[ "angles" ] = ( 286, 45, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 1099,48, 2502,21, 25,2732 ); + ent.v[ "angles" ] = ( 290, 314, -10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 1098,76, 2415,95, 24,7192 ); + ent.v[ "angles" ] = ( 286, 45, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 711,778, 2801,74, 23,7588 ); + ent.v[ "angles" ] = ( 290, 48, -10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 796,818, 2804,61, 23,2048 ); + ent.v[ "angles" ] = ( 286, 139, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( -989,577, 4136,14, 193,02 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( -1386,97, 4133,27, 192,994 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( -1783,6, 4132,88, 193,078 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( -585,927, 4538,58, 193,017 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( -587,061, 4934,51, 192,821 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( -589,031, 5330,63, 193,223 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1124,87, 1947,62, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1221,75, 1949,18, 187,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1316,51, 1809,37, 184,875 ); + ent.v[ "angles" ] = ( 88,5858, 45,0032, 44,9944 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1221,66, 1810,25, 184,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1125,41, 1808,29, 183,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1005,2, 1946,42, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 909,21, 1945,53, 187,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 812,952, 1945,77, 188,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 718,132, 1946,42, 187,875 ); + ent.v[ "angles" ] = ( 88,5858, 225,005, -135,004 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -4971,84, 3250,3, 1781,75 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -5413,76, 3271,35, 1783,84 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -5021,75, 1975,9, 2036,01 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -5453,25, 1977,28, 2037,28 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( -161,96, 3497,47, -46 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( -203,248, 3537,53, 301,983 ); + ent.v[ "angles" ] = ( 270,361, 148,656, 33,1491 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_dbl_oval_street_wrm" ); + ent.v[ "origin" ] = ( -158,793, 3540,8, 300,97 ); + ent.v[ "angles" ] = ( 270,361, 148,656, 33,1491 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 623,1, 1866,99, 187,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 621,453, 1772,64, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 621,137, 1676,61, 187,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 622,111, 1339,74, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 621,906, 1244,42, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 622,025, 1147,75, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_yellow" ); + ent.v[ "origin" ] = ( 623,767, 1051,07, 186,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1940,38, 5312,95, -87,1833 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1812,24, 4740,63, -68,0085 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1864,09, 4252,85, -64,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 2336,02, 4532,84, -67,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 2326, 3147,16, -66,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( 391,517, 3346,46, -34,2983 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( 442,87, 3171,7, 102,733 ); + ent.v[ "angles" ] = ( 6, 270,995, -0,105097 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 875,986, 1190,52, 62,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 193 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 522,242, 3158,98, 101,707 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_wrm_dbl_md" ); + ent.v[ "origin" ] = ( 546,232, 3237,18, 69,3488 ); + ent.v[ "angles" ] = ( 270, 0, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_wrm_dbl_md" ); + ent.v[ "origin" ] = ( 870,223, 1212,2, 20,8481 ); + ent.v[ "angles" ] = ( 270, 0, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1163,91, -52,8334, -62 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 68,4461, 3960,75, -76 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1255,43, 924,871, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1219,57, 471,547, -67 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 291 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -494,754, 96,894, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 113 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -113,811, -963,833, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 201,508, -590,635, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 407,257, 35,9362, -20 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 362,036, -134,284, -20,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 237 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 776,155, 601,597, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 211 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 1008,73, 618,736, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 1000,96, 2584,14, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 244 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -397,282, 3543,68, -34,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 115 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -531,878, 3684,01, -35,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 298 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1007,22, 3495,58, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 779,277, -257,199, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1110,31, 672,304, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 280 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -982,131, 2516,85, -74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -886,575, 2884,5, -70,0427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1334,43, -289,85, 374,343 ); + ent.v[ "angles" ] = ( 82, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1270,47, -227,81, 374,811 ); + ent.v[ "angles" ] = ( 82, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1207,92, -291,604, 373,781 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1270,93, -354,802, 374,763 ); + ent.v[ "angles" ] = ( 82, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 895,044, 1857,07, -97,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 1071,47, 1817,2, -97,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 164 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 843,086, 1381,56, -97,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 346 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_roof_lg" ); + ent.v[ "origin" ] = ( 4501,78, 7413,04, 1927,14 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_roof_lg" ); + ent.v[ "origin" ] = ( 6260,38, 7570,06, 1913,19 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -125,078, 780,255, -65 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_spotlight_sm_cool" ); + ent.v[ "origin" ] = ( 1315,93, 1948,99, 185,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -4966,11, 3679,84, 966,278 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -5500,58, 3680,94, 968,368 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_dockside_sun1" ); + ent.v[ "origin" ] = ( -11746,2, -36458,7, 12001,6 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_white_static" ); + ent.v[ "origin" ] = ( -925,644, 2223,33, 1000,05 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_white_static" ); + ent.v[ "origin" ] = ( 516,945, 2211,21, 1000,45 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_white_static" ); + ent.v[ "origin" ] = ( -939,476, 779,961, 999,573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_white_static" ); + ent.v[ "origin" ] = ( 504,803, 768,376, 1000,34 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3395,36, 4909,93, 630,355 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3387,86, 5090,35, 632,565 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3391,27, 5271,22, 632,031 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3396,79, 5452,17, 632,539 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3396,49, 5630,97, 629,682 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3817,4, 5637,1, 632,27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3820,24, 5455,5, 637,128 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3817,21, 5274,74, 632,62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3816,92, 5093,35, 635,153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_green_static" ); + ent.v[ "origin" ] = ( -3819,63, 4912,76, 631,943 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( -2991,28, 3023,03, 284,902 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( -4515,23, 3017,3, 277,482 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( -3751,42, 3024,34, 285,461 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1321,73, 430,243, -68 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 136,264, -1311,71, -114,266 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1032,16, -1377,82, -67,3127 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1339,95, 148,534, -63,0499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1349,04, -415,785, -99,3848 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 886,759, 2696,88, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 483,095, 2668,57, -81,2681 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 294,378, 1961,82, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -398,28, 1756,36, -93,5527 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1238,89, 2389,27, 372,212 ); + ent.v[ "angles" ] = ( 82, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1174,8, 2327,25, 373,633 ); + ent.v[ "angles" ] = ( 81, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1112,56, 2391,5, 372,651 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -1174,57, 2456,3, 373,681 ); + ent.v[ "angles" ] = ( 82, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 991,116, 1525,73, -97,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 195 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( 665,838, 1975,22, 570,487 ); + ent.v[ "angles" ] = ( 20,621, 208,991, 2,6713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( 19,6306, 2470,73, 569,924 ); + ent.v[ "angles" ] = ( 20,7275, 257,127, 179,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( 708,308, 1098,73, 566,596 ); + ent.v[ "angles" ] = ( 22,5095, 154,963, 4,08816 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( 314,154, 2346,74, 573,259 ); + ent.v[ "angles" ] = ( 20,3603, 247,522, -178,021 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( -725,299, 2346,83, 567,03 ); + ent.v[ "angles" ] = ( 22,6177, 298,865, -0,374699 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( -1143,93, 1856,34, 568,304 ); + ent.v[ "angles" ] = ( 22,2771, 340,554, 178,15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( 42,3137, 524,267, 565,598 ); + ent.v[ "angles" ] = ( 21,3355, 103,107, 1,79994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( 356,595, 663,473, 568,415 ); + ent.v[ "angles" ] = ( 20,7274, 121,126, 177,356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( -451,7, 533,035, 568,485 ); + ent.v[ "angles" ] = ( 23,6173, 74,8388, -1,38497 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( -1143,25, 1130,4, 571,421 ); + ent.v[ "angles" ] = ( 22,045, 21,3267, -179,999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_rnd_cool_glw_add" ); + ent.v[ "origin" ] = ( -1013,76, 2087,99, 568,857 ); + ent.v[ "angles" ] = ( 24,2705, 324,188, -1,16975 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1022,23, 761,633, -68 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -6680,89, 3677,54, 969,725 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -6146,42, 3676,44, 967,635 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -6152,15, 3246,9, 1783,11 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -6594,07, 3267,95, 1785,2 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -6202,06, 1972,5, 2037,37 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -6633,56, 1973,88, 2038,64 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( -210,766, 7415,62, 257,964 ); + ent.v[ "angles" ] = ( 89,639, 33,3501, -146,845 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 301,306, 7421,98, 254,979 ); + ent.v[ "angles" ] = ( 89,639, 33,3501, -146,845 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( -233,549, 5246,54, -85,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_lg" ); + ent.v[ "origin" ] = ( 283,745, 5245,8, -79,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( 1200,01, 1394,21, 189,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( 861,946, 1345,03, 189,875 ); + ent.v[ "angles" ] = ( 89,9651, 89,9915, 178,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -7863,79, 3686,07, 971,216 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -7329,32, 3684,97, 969,126 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -7776,97, 3276,48, 1786,69 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -7335,05, 3255,43, 1784,6 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -7816,46, 1982,41, 2040,13 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_la2_light_beacon_red_blink" ); + ent.v[ "origin" ] = ( -7384,96, 1981,03, 2038,86 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 430,003, -1219,77, -141,265 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 3949,61, 1016,28, 276,485 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 5553,59, 1179,68, 267,402 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 2540,14, 1173,91, 286,472 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 2353,73, 1962,99, 286,476 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 2356,84, 3151,28, 284,388 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 2346,68, 4532,12, 276,47 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12718,5, -1189,61, -26,9752 ); + ent.v[ "angles" ] = ( 305,012, 103,257, 1,4279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 17,6232, 4607,21, -66 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( 1677,06, -163,032, -142,73 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1158,61, -228,973, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 129 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1182,1, -239,807, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 329 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -440,237, 147,977, 373,718 ); + ent.v[ "angles" ] = ( 82, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -504,197, 85,937, 373,249 ); + ent.v[ "angles" ] = ( 82, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -440,695, 20,9839, 373,67 ); + ent.v[ "angles" ] = ( 82, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( -377,681, 84,183, 373,688 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_xlg" ); + ent.v[ "origin" ] = ( -438,079, 71,8697, -67 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12603, -1881,62, 12,7116 ); + ent.v[ "angles" ] = ( 319,001, 285,138, 178,914 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12610, -8307,93, 29,8517 ); + ent.v[ "angles" ] = ( 319,001, 285,138, 178,914 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12732, -7581,47, -19,8351 ); + ent.v[ "angles" ] = ( 305,012, 103,257, 1,4279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12595,5, -14704,3, 27,9472 ); + ent.v[ "angles" ] = ( 319,001, 285,138, 178,914 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12717,5, -13977,8, -21,7396 ); + ent.v[ "angles" ] = ( 305,012, 103,257, 1,4279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12668,3, 4444,37, 37,4362 ); + ent.v[ "angles" ] = ( 319,001, 285,138, 178,914 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( -214,553, 6293,06, 263,477 ); + ent.v[ "angles" ] = ( 89,639, 33,3501, -146,845 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_vista_lg" ); + ent.v[ "origin" ] = ( 304,836, 6295,48, 263,465 ); + ent.v[ "angles" ] = ( 89,639, 33,3501, -146,845 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -17,8422, -663,502, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 339 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 229,096, -758,193, 373,901 ); + ent.v[ "angles" ] = ( 82, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 165,594, -693,24, 371,481 ); + ent.v[ "angles" ] = ( 82, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 292,11, -694,995, 371,919 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 229,554, -631,201, 373,949 ); + ent.v[ "angles" ] = ( 81, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_xlg" ); + ent.v[ "origin" ] = ( 231,992, -712,323, -37 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -285,562, -704,659, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 296 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -501,458, 62,6035, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 994,85, -42,6779, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 322 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 1227,8, 1194,16, -57,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 194 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 710,785, 3211,23, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 296 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_sm_md" ); + ent.v[ "origin" ] = ( -1930,68, 2829,1, -53,1636 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_bridge_accent_vista" ); + ent.v[ "origin" ] = ( -12704,2, -20397,6, 66,2259 ); + ent.v[ "angles" ] = ( 305,012, 103,257, 1,4279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 1030,74, 1025,95, -97,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 1044,27, 3214,15, 371,673 ); + ent.v[ "angles" ] = ( 82, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 1044,73, 3341,14, 372,721 ); + ent.v[ "angles" ] = ( 82, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 1107,29, 3277,35, 369,691 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "origin" ] = ( 980,771, 3279,1, 373,253 ); + ent.v[ "angles" ] = ( 82, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_lit_overhead_wrm_xlg" ); + ent.v[ "origin" ] = ( 1056,81, 3282,64, -43,1649 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( 805,401, 1035,3, 63,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_slw_flat" ); + ent.v[ "origin" ] = ( -1367,26, 1275,32, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 17 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 415,432, 3138,61, 101,427 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 840,362, 1692,12, 32,4214 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1046,82, 1180,38, 33,4896 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; +} diff --git a/mp_dockside/maps/mp/mp_dockside.gsc b/mp_dockside/maps/mp/mp_dockside.gsc new file mode 100644 index 0000000..3d3cdce --- /dev/null +++ b/mp_dockside/maps/mp/mp_dockside.gsc @@ -0,0 +1,188 @@ +#include maps/mp/mp_dockside_crane; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_dockside_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_dockside_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_dockside" ); + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + setdvar( "sm_sunsamplesizenear", 0,39 ); + setdvar( "sm_sunshadowsmall", 1 ); + if ( getgametypesetting( "allowMapScripting" ) ) + { + level maps/mp/mp_dockside_crane::init(); + } + else + { + crate_triggers = getentarray( "crate_kill_trigger", "targetname" ); + i = 0; + while ( i < crate_triggers.size ) + { + crate_triggers[ i ] delete(); + i++; + } + } + setheliheightpatchenabled( "war_mode_heli_height_lock", 0 ); + level thread water_trigger_init(); + rts_remove(); +/# + level thread devgui_dockside(); + execdevgui( "devgui_mp_dockside" ); +#/ +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2700", reset_dvars ); +} + +water_trigger_init() +{ + wait 3; + triggers = getentarray( "trigger_hurt", "classname" ); + _a80 = triggers; + _k80 = getFirstArrayKey( _a80 ); + while ( isDefined( _k80 ) ) + { + trigger = _a80[ _k80 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + trigger thread water_trigger_think(); + } + _k80 = getNextArrayKey( _a80, _k80 ); + } +} + +water_trigger_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) ) + { + entity playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], entity.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 0,4; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a126 = triggers; + _k126 = getFirstArrayKey( _a126 ); + while ( isDefined( _k126 ) ) + { + trigger = _a126[ _k126 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + return 1; + } + } + _k126 = getNextArrayKey( _a126, _k126 ); + } + return 0; +} + +rts_remove() +{ + removes = getentarray( "rts_only", "targetname" ); + _a145 = removes; + _k145 = getFirstArrayKey( _a145 ); + while ( isDefined( _k145 ) ) + { + remove = _a145[ _k145 ]; + if ( isDefined( remove ) ) + { + remove delete(); + } + _k145 = getNextArrayKey( _a145, _k145 ); + } +} + +devgui_dockside() +{ +/# + setdvar( "devgui_notify", "" ); + for ( ;; ) + { + wait 0,5; + devgui_string = getDvar( "devgui_notify" ); + switch( devgui_string ) + { + case "": + break; + case "crane_print_dvars": + crane_print_dvars(); + break; + default: + } + if ( getDvar( "devgui_notify" ) != "" ) + { + setdvar( "devgui_notify", "" ); + } +#/ + } + } +} + +crane_print_dvars() +{ +/# + dvars = []; + dvars[ dvars.size ] = "scr_crane_claw_move_time"; + dvars[ dvars.size ] = "scr_crane_crate_lower_time"; + dvars[ dvars.size ] = "scr_crane_crate_raise_time"; + dvars[ dvars.size ] = "scr_crane_arm_y_move_time"; + dvars[ dvars.size ] = "scr_crane_arm_z_move_time"; + dvars[ dvars.size ] = "scr_crane_claw_drop_speed"; + dvars[ dvars.size ] = "scr_crane_claw_drop_time_min"; + _a199 = dvars; + _k199 = getFirstArrayKey( _a199 ); + while ( isDefined( _k199 ) ) + { + dvar = _a199[ _k199 ]; + print( dvar + ": " ); + println( getDvar( dvar ) ); + _k199 = getNextArrayKey( _a199, _k199 ); +#/ + } +} diff --git a/mp_dockside/maps/mp/mp_dockside_amb.gsc b/mp_dockside/maps/mp/mp_dockside_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_dockside/maps/mp/mp_dockside_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_dockside/maps/mp/mp_dockside_crane.gsc b/mp_dockside/maps/mp/mp_dockside_crane.gsc new file mode 100644 index 0000000..dd984d1 --- /dev/null +++ b/mp_dockside/maps/mp/mp_dockside_crane.gsc @@ -0,0 +1,770 @@ +#include maps/mp/killstreaks/_supplydrop; +#include maps/mp/gametypes/_gameobjects; +#include maps/mp/gametypes/ctf; +#include maps/mp/gametypes/_weaponobjects; +#include maps/mp/killstreaks/_rcbomb; +#include maps/mp/_tacticalinsertion; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + precachemodel( "p6_dockside_container_lrg_white" ); + crane_dvar_init(); + level.crate_models = []; + level.crate_models[ 0 ] = "p6_dockside_container_lrg_red"; + level.crate_models[ 1 ] = "p6_dockside_container_lrg_blue"; + level.crate_models[ 2 ] = "p6_dockside_container_lrg_white"; + level.crate_models[ 3 ] = "p6_dockside_container_lrg_orange"; + claw = getent( "claw_base", "targetname" ); + claw.z_upper = claw.origin[ 2 ]; + claw thread sound_wires_move(); + arms_y = getentarray( "claw_arm_y", "targetname" ); + arms_z = getentarray( "claw_arm_z", "targetname" ); + claw.arms = arraycombine( arms_y, arms_z, 1, 0 ); + _a32 = arms_z; + _k32 = getFirstArrayKey( _a32 ); + while ( isDefined( _k32 ) ) + { + arm_z = _a32[ _k32 ]; + arm_y = getclosest( arm_z.origin, arms_y ); + arm_z.parent = arm_y; + _k32 = getNextArrayKey( _a32, _k32 ); + } + _a39 = arms_y; + _k39 = getFirstArrayKey( _a39 ); + while ( isDefined( _k39 ) ) + { + arm_y = _a39[ _k39 ]; + arm_y.parent = claw; + _k39 = getNextArrayKey( _a39, _k39 ); + } + claw claw_link_arms( "claw_arm_y" ); + claw claw_link_arms( "claw_arm_z" ); + crates = getentarray( "crate", "targetname" ); + array_thread( crates, ::sound_pit_move ); + crate_data = []; + i = 0; + while ( i < crates.size ) + { + crates[ i ] disconnectpaths(); + data = spawnstruct(); + data.origin = crates[ i ].origin; + data.angles = crates[ i ].angles; + crate_data[ i ] = data; + i++; + } + rail = getent( "crane_rail", "targetname" ); + rail thread sound_ring_move(); + rail.roller = getent( "crane_roller", "targetname" ); + rail.roller.wheel = getent( "crane_wheel", "targetname" ); + claw.wires = getentarray( "crane_wire", "targetname" ); + claw.z_wire_max = rail.roller.wheel.origin[ 2 ] - 50; + _a73 = claw.wires; + _k73 = getFirstArrayKey( _a73 ); + while ( isDefined( _k73 ) ) + { + wire = _a73[ _k73 ]; + wire linkto( claw ); + if ( wire.origin[ 2 ] > claw.z_wire_max ) + { + wire ghost(); + } + _k73 = getNextArrayKey( _a73, _k73 ); + } + placements = getentarray( "crate_placement", "targetname" ); + _a85 = placements; + _k85 = getFirstArrayKey( _a85 ); + while ( isDefined( _k85 ) ) + { + placement = _a85[ _k85 ]; + placement.angles += vectorScale( ( 0, 0, 1 ), 90 ); + crates[ crates.size ] = spawn( "script_model", placement.origin ); + _k85 = getNextArrayKey( _a85, _k85 ); + } + triggers = getentarray( "crate_kill_trigger", "targetname" ); + _a93 = crates; + _k93 = getFirstArrayKey( _a93 ); + while ( isDefined( _k93 ) ) + { + crate = _a93[ _k93 ]; + crate.kill_trigger = getclosest( crate.origin, triggers ); + crate.kill_trigger.origin = crate.origin - vectorScale( ( 0, 0, 1 ), 5 ); + crate.kill_trigger enablelinkto(); + crate.kill_trigger linkto( crate ); + if ( crate.model != "" ) + { + crate.kill_trigger.active = 1; + } + else + { + crate.kill_trigger.active = 0; + } + _k93 = getNextArrayKey( _a93, _k93 ); + } + trigger = getclosest( claw.origin, triggers ); + trigger enablelinkto(); + trigger linkto( claw ); + trigger.active = 1; + placements = array_randomize( placements ); + level thread crane_think( claw, rail, crates, crate_data, placements ); +} + +crane_dvar_init() +{ + set_dvar_float_if_unset( "scr_crane_claw_move_time", "5" ); + set_dvar_float_if_unset( "scr_crane_crate_lower_time", "5" ); + set_dvar_float_if_unset( "scr_crane_crate_raise_time", "5" ); + set_dvar_float_if_unset( "scr_crane_arm_y_move_time", "3" ); + set_dvar_float_if_unset( "scr_crane_arm_z_move_time", "3" ); + set_dvar_float_if_unset( "scr_crane_claw_drop_speed", "25" ); + set_dvar_float_if_unset( "scr_crane_claw_drop_time_min", "5" ); +} + +wire_render() +{ + self endon( "movedone" ); + for ( ;; ) + { + wait 0,05; + _a139 = self.wires; + _k139 = getFirstArrayKey( _a139 ); + while ( isDefined( _k139 ) ) + { + wire = _a139[ _k139 ]; + if ( wire.origin[ 2 ] > self.z_wire_max ) + { + wire ghost(); + } + else + { + wire show(); + } + _k139 = getNextArrayKey( _a139, _k139 ); + } + } +} + +crane_think( claw, rail, crates, crate_data, placements ) +{ + wait 1; + claw arms_open(); + for ( ;; ) + { + i = 0; + while ( i < ( crates.size - placements.size ) ) + { + crate = getclosest( crate_data[ i ].origin, crates ); + rail crane_move( claw, crate_data[ i ], -318 ); + level notify( "wires_move" ); + claw claw_crate_grab( crate, 318 ); + lower = 1; + target = ( i + 1 ) % ( crates.size - placements.size ); + target_crate = getclosest( crate_data[ target ].origin, crates ); + while ( cointoss() ) + { + placement_index = 0; + while ( placement_index < placements.size ) + { + placement = placements[ placement_index ]; + if ( !isDefined( placement.crate ) ) + { + lower = 0; + break; + } + else + { + placement_index++; + } + } + } + if ( !lower ) + { + z_dist = crate.origin[ 2 ] - placement.origin[ 2 ] - 33; + rail crane_move( claw, placement, z_dist * -1 ); + level notify( "wires_move" ); + placement.crate = crate; + } + else + { + rail crane_move( claw, crate_data[ target ], -181 ); + level notify( "wires_move" ); + } + claw claw_crate_move( crate ); + if ( lower ) + { + crate crate_lower( target_crate, crate_data[ target ] ); + } + crate = target_crate; + target = ( i + 2 ) % ( crates.size - placements.size ); + target_crate = getclosest( crate_data[ target ].origin, crates ); + if ( !lower ) + { + crate = crates[ 3 + placement_index ]; + crate.origin = target_crate.origin - vectorScale( ( 0, 0, 1 ), 137 ); + crate.angles = target_crate.angles; + wait 0,25; + claw waittill( "movedone" ); + } + crate crate_raise( target_crate, crate_data[ target ] ); + rail crane_move( claw, crate_data[ target ], -181 ); + level notify( "wires_move" ); + claw claw_crate_grab( target_crate, 181 ); + crate = target_crate; + target = ( i + 3 ) % ( crates.size - placements.size ); + rail crane_move( claw, crate_data[ target ], -318 ); + level notify( "wires_move" ); + claw claw_crate_drop( crate, crate_data[ target ] ); + i++; + } + } +} + +crane_move( claw, desired, z_dist ) +{ + self.roller linkto( self ); + self.roller.wheel linkto( self.roller ); + claw linkto( self.roller.wheel ); + goal = ( desired.origin[ 0 ], desired.origin[ 1 ], self.origin[ 2 ] ); + dir = vectornormalize( goal - self.origin ); + angles = vectorToAngle( dir ); + angles = ( self.angles[ 0 ], angles[ 1 ] + 90, self.angles[ 2 ] ); + yawdiff = absangleclamp360( self.angles[ 1 ] - angles[ 1 ] ); + time = yawdiff / 25; + self rotateto( angles, time, time * 0,35, time * 0,45 ); + self thread physics_move(); + level notify( "wires_stop" ); + level notify( "ring_move" ); + self waittill( "rotatedone" ); + self.roller unlink(); + goal = ( desired.origin[ 0 ], desired.origin[ 1 ], self.roller.origin[ 2 ] ); + diff = distance2d( goal, self.roller.origin ); + speed = getDvarFloat( #"C39D2ABF" ); + time = diff / speed; + if ( time < getDvarFloat( #"F60036C0" ) ) + { + time = getDvarFloat( #"F60036C0" ); + } + self.roller moveto( goal, time, time * 0,25, time * 0,25 ); + self.roller thread physics_move(); + goal = ( desired.origin[ 0 ], desired.origin[ 1 ], self.roller.wheel.origin[ 2 ] ); + self.roller.wheel unlink(); + self.roller.wheel moveto( goal, time, time * 0,25, time * 0,25 ); + self.roller.wheel rotateto( desired.angles + vectorScale( ( 0, 0, 1 ), 90 ), time, time * 0,25, time * 0,25 ); + claw.z_initial = claw.origin[ 2 ]; + claw unlink(); + claw rotateto( desired.angles, time, time * 0,25, time * 0,25 ); + claw.goal = ( goal[ 0 ], goal[ 1 ], claw.origin[ 2 ] + z_dist ); + claw.time = time; + claw moveto( claw.goal, time, time * 0,25, time * 0,25 ); + level notify( "ring_stop" ); +} + +physics_move() +{ + self endon( "rotatedone" ); + self endon( "movedone" ); + for ( ;; ) + { + wait 0,05; + crates = getentarray( "care_package", "script_noteworthy" ); + _a318 = crates; + _k318 = getFirstArrayKey( _a318 ); + while ( isDefined( _k318 ) ) + { + crate = _a318[ _k318 ]; + if ( crate istouching( self ) ) + { + crate physicslaunch( crate.origin, ( 0, 0, 1 ) ); + } + _k318 = getNextArrayKey( _a318, _k318 ); + } + } +} + +claw_crate_grab( crate, z_dist ) +{ + self thread wire_render(); + self waittill( "movedone" ); + level notify( "wires_stop" ); + self playsound( "amb_crane_arms_b" ); + self claw_z_arms( -33 ); + self playsound( "amb_crane_arms" ); + self arms_close( crate ); + crate movez( 33, getDvarFloat( #"92CC26F1" ) ); + self claw_z_arms( 33 ); + crate linkto( self ); + self movez( z_dist, getDvarFloat( #"33ED9F5F" ) ); + self thread wire_render(); + level notify( "wires_move" ); + self waittill( "movedone" ); + self playsound( "amb_crane_arms" ); +} + +sound_wires_move() +{ + while ( 1 ) + { + level waittill( "wires_move" ); + self playsound( "amb_crane_wire_start" ); + self playloopsound( "amb_crane_wire_lp" ); + level waittill( "wires_stop" ); + self playsound( "amb_crane_wire_end" ); + wait 0,1; + self stoploopsound( 0,2 ); + } +} + +sound_ring_move() +{ + while ( 1 ) + { + level waittill( "ring_move" ); + self playsound( "amb_crane_ring_start" ); + self playloopsound( "amb_crane_ring_lp" ); + level waittill( "ring_stop" ); + self playsound( "amb_crane_ring_end" ); + wait 0,1; + self stoploopsound( 0,2 ); + } +} + +sound_pit_move() +{ + while ( 1 ) + { + level waittill( "pit_move" ); + self playsound( "amb_crane_pit_start" ); + self playloopsound( "amb_crane_pit_lp" ); + level waittill( "pit_stop" ); + self playsound( "amb_crane_pit_end" ); + self stoploopsound( 0,2 ); + wait 0,2; + } +} + +claw_crate_move( crate, claw ) +{ + self thread wire_render(); + self waittill( "movedone" ); + crate unlink(); + self playsound( "amb_crane_arms_b" ); + level notify( "wires_stop" ); + crate movez( -33, getDvarFloat( #"92CC26F1" ) ); + self claw_z_arms( -33 ); + self playsound( "amb_crane_arms_b" ); + playfxontag( level._effect[ "crane_dust" ], crate, "tag_origin" ); + crate playsound( "amb_crate_drop" ); + self arms_open(); + level notify( "wires_move" ); + self claw_z_arms( 33 ); + z_dist = self.z_initial - self.origin[ 2 ]; + self movez( z_dist, getDvarFloat( #"33ED9F5F" ) ); + self thread wire_render(); +} + +claw_crate_drop( target, data ) +{ + target thread crate_drop_think( self ); + self thread wire_render(); + self waittill( "claw_movedone" ); + target unlink(); + level notify( "wires_stop" ); + self playsound( "amb_crane_arms_b" ); + target movez( -33, getDvarFloat( #"92CC26F1" ) ); + self claw_z_arms( -33 ); + playfxontag( level._effect[ "crane_dust" ], target, "tag_origin" ); + self playsound( "amb_crate_drop" ); + target notify( "claw_done" ); + self playsound( "amb_crane_arms" ); + self arms_open(); + level notify( "wires_move" ); + target.origin = data.origin; + self claw_z_arms( 33 ); + self playsound( "amb_crane_arms" ); + self movez( 318, getDvarFloat( #"33ED9F5F" ) ); + self thread wire_render(); + self waittill( "movedone" ); +} + +crate_lower( lower, data ) +{ + z_dist = abs( self.origin[ 2 ] - lower.origin[ 2 ] ); + self movez( z_dist * -1, getDvarFloat( #"CFA0F999" ) ); + lower movez( z_dist * -1, getDvarFloat( #"CFA0F999" ) ); + level notify( "pit_move" ); + lower waittill( "movedone" ); + level notify( "pit_stop" ); + lower ghost(); + self.origin = data.origin; + wait 0,25; +} + +crate_raise( upper, data ) +{ + self crate_set_random_model( upper ); + self.kill_trigger.active = 1; + self.origin = ( data.origin[ 0 ], data.origin[ 1 ], self.origin[ 2 ] ); + self.angles = data.angles; + wait 0,2; + self show(); + z_dist = abs( upper.origin[ 2 ] - self.origin[ 2 ] ); + self movez( z_dist, getDvarFloat( #"B4D4D064" ) ); + upper movez( z_dist, getDvarFloat( #"B4D4D064" ) ); + level notify( "wires_stop" ); + level notify( "pit_move" ); + upper thread raise_think(); +} + +raise_think() +{ + self waittill( "movedone" ); + level notify( "pit_stop" ); +} + +crate_set_random_model( other ) +{ + models = array_randomize( level.crate_models ); + _a513 = models; + _k513 = getFirstArrayKey( _a513 ); + while ( isDefined( _k513 ) ) + { + model = _a513[ _k513 ]; + if ( model == other.model ) + { + } + else + { + self setmodel( model ); + return; + } + _k513 = getNextArrayKey( _a513, _k513 ); + } +} + +arms_open() +{ + self claw_move_arms( -15 ); + self playsound( "amb_crane_arms" ); +} + +arms_close( crate ) +{ + self claw_move_arms( 15, crate ); + self playsound( "amb_crane_arms" ); +} + +claw_link_arms( name ) +{ + _a541 = self.arms; + _k541 = getFirstArrayKey( _a541 ); + while ( isDefined( _k541 ) ) + { + arm = _a541[ _k541 ]; + if ( arm.targetname == name ) + { + arm linkto( arm.parent ); + } + _k541 = getNextArrayKey( _a541, _k541 ); + } +} + +claw_unlink_arms( name ) +{ + _a552 = self.arms; + _k552 = getFirstArrayKey( _a552 ); + while ( isDefined( _k552 ) ) + { + arm = _a552[ _k552 ]; + if ( arm.targetname == name ) + { + arm unlink(); + } + _k552 = getNextArrayKey( _a552, _k552 ); + } +} + +claw_move_arms( dist, crate ) +{ + claw_unlink_arms( "claw_arm_y" ); + arms = []; + _a566 = self.arms; + _k566 = getFirstArrayKey( _a566 ); + while ( isDefined( _k566 ) ) + { + arm = _a566[ _k566 ]; + if ( arm.targetname == "claw_arm_y" ) + { + arms[ arms.size ] = arm; + forward = anglesToForward( arm.angles ); + arm.goal = arm.origin + vectorScale( forward, dist ); + arm moveto( arm.goal, getDvarFloat( #"0D6F71B0" ) ); + } + _k566 = getNextArrayKey( _a566, _k566 ); + } + if ( dist > 0 ) + { + wait ( getDvarFloat( #"0D6F71B0" ) / 2 ); + _a583 = self.arms; + _k583 = getFirstArrayKey( _a583 ); + while ( isDefined( _k583 ) ) + { + arm = _a583[ _k583 ]; + if ( arm.targetname == "claw_arm_y" ) + { + arm moveto( arm.goal, 0,1 ); + self playsound( "amb_crane_arms_b" ); + } + _k583 = getNextArrayKey( _a583, _k583 ); + } + wait 0,05; + playfxontag( level._effect[ "crane_spark" ], crate, "tag_origin" ); + self playsound( "amb_arms_latch" ); + } +/# + assert( arms.size == 4 ); +#/ + waittill_multiple_ents( arms[ 0 ], "movedone", arms[ 1 ], "movedone", arms[ 2 ], "movedone", arms[ 3 ], "movedone" ); + self claw_link_arms( "claw_arm_y" ); +} + +claw_z_arms( z ) +{ + claw_unlink_arms( "claw_arm_z" ); + arms = []; + _a609 = self.arms; + _k609 = getFirstArrayKey( _a609 ); + while ( isDefined( _k609 ) ) + { + arm = _a609[ _k609 ]; + if ( arm.targetname == "claw_arm_z" ) + { + arms[ arms.size ] = arm; + arm movez( z, getDvarFloat( #"92CC26F1" ) ); + } + _k609 = getNextArrayKey( _a609, _k609 ); + } +/# + assert( arms.size == 4 ); +#/ + waittill_multiple_ents( arms[ 0 ], "movedone", arms[ 1 ], "movedone", arms[ 2 ], "movedone", arms[ 3 ], "movedone" ); + self claw_link_arms( "claw_arm_z" ); +} + +crate_drop_think( claw ) +{ + self endon( "claw_done" ); + claw thread claw_drop_think(); + corpse_delay = 0; + for ( ;; ) + { + wait 0,2; + entities = getdamageableentarray( self.origin, 200 ); + _a637 = entities; + _k637 = getFirstArrayKey( _a637 ); + while ( isDefined( _k637 ) ) + { + entity = _a637[ _k637 ]; + if ( !entity istouching( self.kill_trigger ) ) + { + } + else if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + } + else + { + if ( !isalive( entity ) ) + { + break; + } + else if ( isDefined( entity.targetname ) ) + { + if ( entity.targetname == "talon" ) + { + entity notify( "death" ); + break; + } + else if ( entity.targetname == "rcbomb" ) + { + entity maps/mp/killstreaks/_rcbomb::rcbomb_force_explode(); + break; + } + else if ( entity.targetname == "riotshield_mp" ) + { + entity dodamage( 1, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + break; + } + } + else if ( isDefined( entity.helitype ) && entity.helitype == "qrdrone" ) + { + watcher = entity.owner maps/mp/gametypes/_weaponobjects::getweaponobjectwatcher( "qrdrone" ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + break; + } + else + { + if ( entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + break; + } + else if ( !isDefined( entity.owner ) ) + { + break; + } + else if ( entity.name == "proximity_grenade_mp" ) + { + watcher = entity.owner getwatcherforweapon( entity.name ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( !isweaponequipment( entity.name ) ) + { + break; + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + break; + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( entity.classname == "auto_turret" ) + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + break; + } + else + { + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + if ( isplayer( entity ) ) + { + claw thread claw_drop_pause(); + corpse_delay = getTime() + 3000; + } + } + } + } + _k637 = getNextArrayKey( _a637, _k637 ); + } + self destroy_supply_crates(); + if ( getTime() > corpse_delay ) + { + self destroy_corpses(); + } + if ( level.gametype == "ctf" ) + { + _a743 = level.flags; + _k743 = getFirstArrayKey( _a743 ); + while ( isDefined( _k743 ) ) + { + flag = _a743[ _k743 ]; + if ( flag.visuals[ 0 ] istouching( self.kill_trigger ) ) + { + flag maps/mp/gametypes/ctf::returnflag(); + } + _k743 = getNextArrayKey( _a743, _k743 ); + } + } + else if ( level.gametype == "sd" && !level.multibomb ) + { + if ( level.sdbomb.visuals[ 0 ] istouching( self.kill_trigger ) ) + { + level.sdbomb maps/mp/gametypes/_gameobjects::returnhome(); + } + } + } +} + +claw_drop_think() +{ + self endon( "claw_pause" ); + self waittill( "movedone" ); + self notify( "claw_movedone" ); +} + +claw_drop_pause() +{ + self notify( "claw_pause" ); + self endon( "claw_pause" ); + z_diff = abs( self.goal[ 2 ] - self.origin[ 2 ] ); + frac = z_diff / 318; + time = self.time * frac; + if ( time <= 0 ) + { + return; + } + self moveto( self.origin, 0,01 ); + wait 3; + self thread claw_drop_think(); + self moveto( self.goal, time ); +} + +destroy_supply_crates() +{ + crates = getentarray( "care_package", "script_noteworthy" ); + _a797 = crates; + _k797 = getFirstArrayKey( _a797 ); + while ( isDefined( _k797 ) ) + { + crate = _a797[ _k797 ]; + if ( distancesquared( crate.origin, self.origin ) < 40000 ) + { + if ( crate istouching( self ) ) + { + playfx( level._supply_drop_explosion_fx, crate.origin ); + playsoundatposition( "wpn_grenade_explode", crate.origin ); + wait 0,1; + crate maps/mp/killstreaks/_supplydrop::cratedelete(); + } + } + _k797 = getNextArrayKey( _a797, _k797 ); + } +} + +destroy_corpses() +{ + corpses = getcorpsearray(); + i = 0; + while ( i < corpses.size ) + { + if ( distancesquared( corpses[ i ].origin, self.origin ) < 40000 ) + { + corpses[ i ] delete(); + } + i++; + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} diff --git a/mp_dockside/maps/mp/mp_dockside_fx.gsc b/mp_dockside/maps/mp/mp_dockside_fx.gsc new file mode 100644 index 0000000..19a8419 --- /dev/null +++ b/mp_dockside/maps/mp/mp_dockside_fx.gsc @@ -0,0 +1,70 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_util_fx() +{ +} + +precache_scripted_fx() +{ + level._effect[ "crane_spark" ] = loadfx( "maps/mp_maps/fx_mp_container_lrg_spark_runner" ); + level._effect[ "crane_dust" ] = loadfx( "maps/mp_maps/fx_mp_container_lrg_dust_kickup" ); + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_light_flour_dbl_oval_street_wrm" ] = loadfx( "light/fx_light_flour_dbl_oval_street_wrm" ); + level._effect[ "fx_light_floodlight_sqr_wrm" ] = loadfx( "light/fx_light_floodlight_sqr_wrm" ); + level._effect[ "fx_light_floodlight_sqr_cool_xlg" ] = loadfx( "light/fx_light_floodlight_sqr_cool_xlg" ); + level._effect[ "fx_light_floodlight_rnd_cool_glw_add" ] = loadfx( "light/fx_light_floodlight_rnd_cool_glw_add" ); + level._effect[ "fx_light_floodlight_rnd_cool_glw" ] = loadfx( "light/fx_light_floodlight_rnd_cool_glw" ); + level._effect[ "fx_light_floodlight_rnd_cool_glw_dim" ] = loadfx( "light/fx_light_floodlight_rnd_cool_glw_dim" ); + level._effect[ "fx_light_floodlight_rnd_cool_glw_lg" ] = loadfx( "light/fx_light_floodlight_rnd_cool_glw_lg" ); + level._effect[ "fx_light_floodlight_rnd_red_md" ] = loadfx( "light/fx_light_floodlight_rnd_red_md" ); + level._effect[ "fx_la2_light_beacon_red_blink" ] = loadfx( "light/fx_light_beacon_red_blink_fst" ); + level._effect[ "fx_light_beacon_red_blink_sm" ] = loadfx( "light/fx_light_beacon_red_blink_fst_sm" ); + level._effect[ "fx_light_spotlight_sm_cool" ] = loadfx( "light/fx_light_spotlight_sm_cool" ); + level._effect[ "fx_light_spotlight_sm_yellow" ] = loadfx( "light/fx_light_spotlight_sm_yellow" ); + level._effect[ "fx_light_flour_glow_wrm_dbl_md" ] = loadfx( "light/fx_light_flour_glow_wrm_dbl_md" ); + level._effect[ "fx_light_floodlight_sqr_wrm_vista_lg" ] = loadfx( "light/fx_light_floodlight_sqr_wrm_vista_lg" ); + level._effect[ "fx_light_beacon_white_static" ] = loadfx( "light/fx_light_beacon_white_static" ); + level._effect[ "fx_light_beacon_green_static" ] = loadfx( "light/fx_light_beacon_green_static" ); + level._effect[ "fx_light_buoy_red_blink" ] = loadfx( "light/fx_light_buoy_red_blink" ); + level._effect[ "fx_light_flourescent_ceiling_panel" ] = loadfx( "light/fx_light_flourescent_ceiling_panel" ); + level._effect[ "fx_light_bridge_accent_vista" ] = loadfx( "light/fx_light_bridge_accent_vista" ); + level._effect[ "fx_light_container_yellow" ] = loadfx( "light/fx_light_container_yellow" ); + level._effect[ "fx_fog_lit_spotlight_cool_lg" ] = loadfx( "fog/fx_fog_lit_spotlight_cool_lg" ); + level._effect[ "fx_fog_lit_overhead_wrm_lg" ] = loadfx( "fog/fx_fog_lit_overhead_wrm_lg" ); + level._effect[ "fx_fog_lit_overhead_wrm_xlg" ] = loadfx( "fog/fx_fog_lit_overhead_wrm_xlg" ); + level._effect[ "fx_fog_street_cool_slw_sm_md" ] = loadfx( "fog/fx_fog_street_cool_slw_md" ); + level._effect[ "fx_fog_street_red_slw_md" ] = loadfx( "fog/fx_fog_street_red_slw_md" ); + level._effect[ "fx_fog_street_red_slw_md" ] = loadfx( "fog/fx_fog_street_red_slw_md" ); + level._effect[ "fx_paper_interior_short_slw_flat" ] = loadfx( "debris/fx_paper_interior_short_slw_flat" ); + level._effect[ "fx_mp_steam_pipe_md" ] = loadfx( "maps/mp_maps/fx_mp_steam_pipe_md" ); + level._effect[ "fx_mp_steam_pipe_roof_lg" ] = loadfx( "maps/mp_maps/fx_mp_steam_pipe_roof_lg" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_lf_dockside_sun1" ] = loadfx( "lens_flares/fx_lf_dockside_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "buoy_fast" ] = %fxanim_gp_buoy_fast_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "roofvent_rotate" ] = %fxanim_gp_roofvent_anim; + level.scr_anim[ "fxanim_props" ][ "wire_coil_large" ] = %fxanim_gp_wire_coil_lrg_anim; + level.scr_anim[ "fxanim_props" ][ "crane_wires" ] = %fxanim_mp_dockside_crane_wires_anim; +} + +main() +{ + precache_util_fx(); + precache_createfx_fx(); + precache_scripted_fx(); + maps/mp/createfx/mp_dockside_fx::main(); + maps/mp/createart/mp_dockside_art::main(); +} diff --git a/mp_downhill/aitype/enemy_dog_mp.gsc b/mp_downhill/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_downhill/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_downhill/character/character_mp_german_shepherd.gsc b/mp_downhill/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_downhill/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_downhill/maps/mp/createfx/mp_downhill_fx.gsc b/mp_downhill/maps/mp/createfx/mp_downhill_fx.gsc new file mode 100644 index 0000000..e7b2297 --- /dev/null +++ b/mp_downhill/maps/mp/createfx/mp_downhill_fx.gsc @@ -0,0 +1,1210 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 133,375, -5,34215, 877,533 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1998,94, 2158,12, 1077,11 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -449,442, -2203,93, 700,03 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -426,364, 2274,74, 1349,82 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -223,697, 4703,82, 1933,47 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1936,73, -2114,57, 719,902 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4163,83, 123,975, 1025,13 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_downhill_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 867779, 561100, 331556 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 193,997, -136,364, 1051,86 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -478,055, 1074,51, 1160,29 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 454,421, 1651,06, 1191,99 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -325,464, -429,28, 1131,98 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -415,925, -1053, 1132,11 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -764,707, 140,646, 1177,78 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 435,931, -803,126, 1017,33 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -230,454, 1943,47, 1307,57 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 406,352, 2828,09, 1257,33 ); + ent.v[ "angles" ] = ( 357,96, 27,1585, 0,985233 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 923,453, -493,063, 864 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1141,63, 310,36, 872,932 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 849,591, 850,551, 969,446 ); + ent.v[ "angles" ] = ( 1,05687, 21,2262, 1,50624 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 386,753, 1344,88, 1040,31 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 551,468, 1845,34, 1076,4 ); + ent.v[ "angles" ] = ( 4,53429, 3,33529, 1,7347 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 15,1171, 1835,55, 1135,13 ); + ent.v[ "angles" ] = ( 346,543, 2,78417, 1,7781 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1616,47, 2052,04, 1076,67 ); + ent.v[ "angles" ] = ( 8,76031, 339,212, -0,675696 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1837,61, 1425,88, 955,218 ); + ent.v[ "angles" ] = ( 359,327, 321,144, 2,93372 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,3217, 1240,81, 1054,23 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -418,751, -1875,78, 998,104 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 139,027, -2070,9, 1000,7 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1354,87, -2409,72, 981,762 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 654,999, -1126,52, 919,776 ); + ent.v[ "angles" ] = ( 359,637, 332,169, 2,23605 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 923,692, 794,697, 1173,83 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 218,937, 2053,55, 1389,35 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1453,59, 1210,07, 1250,16 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 815,324, 2920,84, 1306,66 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1508,76, -1228,44, 979 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2464,62, 852,563, 1240,45 ); + ent.v[ "angles" ] = ( 1,63363, 271,221, 2,43436 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1980,06, 1025,63, 1099,67 ); + ent.v[ "angles" ] = ( 1,67585, 270,221, -2,59451 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2187,71, 1024,32, 1094,62 ); + ent.v[ "angles" ] = ( 0,827282, 269,15, 0,223167 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2202,12, 1306,39, 1128 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1856,86, 1328,48, 1102,72 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,644, 1888,75, 1252,77 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -16,2058, 1282,03, 1264,72 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -336,402, 933,058, 1242,15 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2154,45, -3084,66, 1329,49 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1559,57, -3149,43, 1357,83 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1669,24, -2420,26, 1125,03 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1937,83, -1923,31, 1172,31 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 746,937, 197,116, 1113,17 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 374,949, -54,9061, 1187,47 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -80,1495, 1741,7, 1496,77 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 436,211, 1352,59, 1214,04 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -452,059, 374,623, 1401,57 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 171,224, 2663,16, 1311,71 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1427,18, 1926,9, 1307,18 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1765,79, 848,236, 1240,48 ); + ent.v[ "angles" ] = ( 1,67585, 270,221, 2,40549 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1193,18, 1621,68, 1206,21 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1130,34, 1954,21, 1107,66 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2125,7, -1979,06, 1167,55 ); + ent.v[ "angles" ] = ( 1,67585, 270,221, 2,40549 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2226,35, -1740,68, 1073,91 ); + ent.v[ "angles" ] = ( 2,37483, 179,15, -1,71904 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 987,444, 1312,97, 1227,95 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5255,33, -977,547, 3438,55 ); + ent.v[ "angles" ] = ( 6,33399, 10,3685, 1,54754 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 38,2037, 6632,99, 3021,47 ); + ent.v[ "angles" ] = ( 359,872, 326,174, 2,2617 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3369,01, -761,123, 281,148 ); + ent.v[ "angles" ] = ( 354,878, 9,98566, 4,46215 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2936,15, 9999,98, 5087,96 ); + ent.v[ "angles" ] = ( 358,095, 20,155, 1,22655 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4576,26, 3783,29, 3303,55 ); + ent.v[ "angles" ] = ( 358,31, 11,1532, 1,50948 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -631,043, -5101,02, 2196,66 ); + ent.v[ "angles" ] = ( 358,537, 3,15321, 1,72991 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3965,18, -6361,25, 3574,31 ); + ent.v[ "angles" ] = ( 358,629, 0,153771, 1,80424 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree_trunk" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -323,432, 316,851, 1182,98 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -900,942, -411,588, 1109,9 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 511,839, -2223,83, 997,526 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 430,311, 2097,83, 1270,62 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -337,188, 2261,88, 1258,11 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1827,39, 2592,9, 1297,61 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2567,47, 741,202, 1254,07 ); + ent.v[ "angles" ] = ( 2,46154, 182,152, -1,59238 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2611,3, 396,492, 1287,17 ); + ent.v[ "angles" ] = ( 2,34448, 178,15, -1,76024 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2635,4, -652,197, 1262,17 ); + ent.v[ "angles" ] = ( 2,72011, 193,16, -1,09324 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 409,056, 55,5577, 1003,42 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 296,31, 515,057, 1134,22 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 356,211, -1761,38, 1068,6 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1216,24, -2442,25, 1166,56 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1511,44, -1629,14, 1093,09 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1309,88, 1535,08, 1060,65 ); + ent.v[ "angles" ] = ( 11,1797, 318,619, 2,30121 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 466,668, 460,941, 938,123 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1419,23, -364,171, 948,125 ); + ent.v[ "angles" ] = ( 358,661, 359,155, 1,82765 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1426,08, 6,67645, 948,125 ); + ent.v[ "angles" ] = ( 358,598, 1,15425, 1,77983 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -166,698, -1034,34, 1002,19 ); + ent.v[ "angles" ] = ( 359,37, 338,164, 0,186178 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 96,4079, 1006,08, 1063,36 ); + ent.v[ "angles" ] = ( 359,508, 313,163, 0,43495 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 885,626, 2832,35, 1120,04 ); + ent.v[ "angles" ] = ( 359,359, 342,164, 0,141807 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1891,53, 926,751, 980,125 ); + ent.v[ "angles" ] = ( 359,344, 357,165, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 487,703, -1876,89, 985,229 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 834,764, -2235,15, 998,155 ); + ent.v[ "angles" ] = ( 359,143, 345,16, 2,09711 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1792,89, -1261,08, 979 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2130,1, 889,507, 980,125 ); + ent.v[ "angles" ] = ( 359,344, 357,165, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1522,83, 1353,26, 957,942 ); + ent.v[ "angles" ] = ( 11,3082, 342,697, 2,54679 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 581,958, 2436,96, 1116,75 ); + ent.v[ "angles" ] = ( 4,19798, 312,177, -2,43931 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -78,6568, 2329,14, 1133,45 ); + ent.v[ "angles" ] = ( 2,64915, 39,3607, 4,06897 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -470,108, 679,654, 1047,88 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -622,366, 72,4226, 1041,11 ); + ent.v[ "angles" ] = ( 1,53569, 3,24449, 1,7299 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -368,044, -760,344, 1003 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -420,306, -1367,64, 1013,5 ); + ent.v[ "angles" ] = ( 357,758, 61,1823, -0,324509 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -182,288, -1756,27, 990,025 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -315,44, -2228,77, 1068,15 ); + ent.v[ "angles" ] = ( 0,577335, 308,187, 2,1906 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 940,706, 1,28605, 864 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 872,031, 2018,07, 1102,33 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 614,674, 1229,82, 999,067 ); + ent.v[ "angles" ] = ( 359,254, 342,162, 2,13906 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1010,95, -2726,94, 1080,63 ); + ent.v[ "angles" ] = ( 358,537, 3,15393, 1,72984 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1816,96, -2047, 963,769 ); + ent.v[ "angles" ] = ( 1,2465, 12,2182, 1,01012 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2177,3, -1551,91, 943,888 ); + ent.v[ "angles" ] = ( 358,014, 24,1571, 1,09067 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1025,07, -1006,48, 1043,29 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 706,18, -929,546, 1017,17 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 503,834, -486,672, 1038,16 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 521,162, 228,735, 999,126 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 302,551, 481,838, 1105,92 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 610,011, 792,877, 1097,72 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 863,729, 431,026, 1109,34 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 636,94, 1114,79, 1159,23 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -88,0855, 1460,74, 1230,48 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -634,428, 637,099, 1214,09 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -391,113, 463,396, 1147,96 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -886,303, 1,38922, 1125,59 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -544,257, -760,221, 1118,25 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1173,86, 1156,29, 1203,78 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1655,82, 1467,16, 1105,7 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2089,68, 1406, 1092,32 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1645,25, 968,65, 1126,79 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1323,78, 1287,47, 1124,46 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_cab" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1363,4, 2188,74, 1260,3 ); + ent.v[ "angles" ] = ( 356,538, 3,09346, 1,73243 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 276,732, 2380,02, 1369,72 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -354,282, 2148,51, 1467,1 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -381,992, 1274,87, 1299,48 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -708,297, -2091,71, 1181,89 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -596,686, -1194,15, 1164,64 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -157,242, 1030,1, 1117,93 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1059,42, 675,513, 1064,58 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1018,67, -746,573, 953,209 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1020,55, -1217,3, 889,763 ); + ent.v[ "angles" ] = ( 359,637, 332,169, 2,23605 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 693,863, -1551,61, 927,084 ); + ent.v[ "angles" ] = ( 3,73787, 47,2118, 0,542629 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 44,0911, -2411,15, 1039,43 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fireplace" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1066,96, 2517,95, 1149,5 ); + ent.v[ "angles" ] = ( 0,133474, 251,257, -3,87103 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2312,39, 399,054, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2200,55, 399,141, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2096,03, 399,254, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1974,95, 399,414, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1851,77, 399,771, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1852,5, 463,5, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1974,82, 462,981, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2094,88, 462,975, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2200,66, 463,016, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2312,19, 462,762, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2303,93, -781,302, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2305,45, -904,668, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2192,33, -903,989, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2097,81, -883,571, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2011,76, -883,877, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2191,82, -781,484, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2089,85, -783,01, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2011,65, -782,511, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1978,49, -839,11, 1115,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 278,092, -1101,68, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 161,825, -1297,6, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 92,0782, -1476,99, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 443,609, -1333,61, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 488,087, -1220,59, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 368,551, -1172,89, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 326,685, -1277,27, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -116,315, -1391,98, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -43,9783, -1213,74, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 39,7999, -1005,56, 1152,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1790,77, -205,07, 948,125 ); + ent.v[ "angles" ] = ( 271,08, 262,778, 88,0555 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2177,36, -174,114, 948,125 ); + ent.v[ "angles" ] = ( 271,08, 262,776, 98,058 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2101,41, -1221,15, 979 ); + ent.v[ "angles" ] = ( 271,08, 262,779, 148,055 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2084,5, 658,438, 980,125 ); + ent.v[ "angles" ] = ( 271,08, 262,784, -26,9509 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 408,348, -1251,89, 1001,13 ); + ent.v[ "angles" ] = ( 271,08, 262,817, -67,9835 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 86,268, -1267,83, 1001,13 ); + ent.v[ "angles" ] = ( 271,08, 262,822, 85,0124 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1143, 2586,38, 1121,13 ); + ent.v[ "angles" ] = ( 271,08, 262,821, 70,0133 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1508,71, 2249,91, 1238,1 ); + ent.v[ "angles" ] = ( 1,80913, 163,149, -2,30697 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1578,75, 2460,43, 1238,3 ); + ent.v[ "angles" ] = ( 1,80913, 163,149, -2,30697 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 26,8042, 2451,76, 1157,3 ); + ent.v[ "angles" ] = ( 271,08, 262,781, 115,052 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -322,301, 1087,85, 1053,43 ); + ent.v[ "angles" ] = ( 271,08, 262,781, 115,052 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 777,519, -1280,39, 911,202 ); + ent.v[ "angles" ] = ( 271,08, 262,781, 115,052 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2625,78, -943,44, 1244,06 ); + ent.v[ "angles" ] = ( 2,72011, 193,16, -1,09324 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 398,75, -2443,2, 1290,53 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1069,39, -2753,15, 1235,67 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 848,941, -1354,51, 1104,33 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -278,664, -750,49, 1192 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -515,328, 191,997, 1231,45 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1777,41, 2059,88, 1267,29 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_sparkle" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -574,991, -226,423, 1215,86 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1149,09, -3494,59, 1048,33 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3808,74, -229,33, 491,322 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3410,68, -857,913, 666,425 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_fall_lrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3118,8, 830,037, 739,166 ); + ent.v[ "angles" ] = ( 3,61633, 0,304357, 1,38836 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_chimney_smk" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 973,97, 2289,52, 1430,13 ); + ent.v[ "angles" ] = ( 3,84463, 346,276, 0,471081 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_chimney_smk" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 982,429, 2312,26, 1427,13 ); + ent.v[ "angles" ] = ( 3,83583, 347,279, 0,538205 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_cab" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1627,19, 2617,83, 1248,27 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1072,49, 1658,17, 1291,28 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_indoor_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1561,29, -1227,59, 980,125 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_indoor_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1866,9, 988,567, 986,784 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1646,47, -359,951, 948,125 ); + ent.v[ "angles" ] = ( 358,661, 359,155, 1,82765 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust_in" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1674,35, 11,2574, 948,125 ); + ent.v[ "angles" ] = ( 358,661, 359,155, 1,82765 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1406,38, -359,648, 908,236 ); + ent.v[ "angles" ] = ( 8,33318, 179,839, -1,27273 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1406,38, -239,787, 908,002 ); + ent.v[ "angles" ] = ( 8,33318, 179,839, -1,27273 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1406,38, -119,613, 908,238 ); + ent.v[ "angles" ] = ( 8,33318, 179,839, -1,27273 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1406,38, 0,412315, 907,838 ); + ent.v[ "angles" ] = ( 8,33318, 179,839, -1,27273 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1574,79, -180,783, 1119,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_gust_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 473,997, -1072,84, 1048,57 ); + ent.v[ "angles" ] = ( 0,218968, 245,166, 0,619146 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_gust_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1355,33, -175,545, 1037,8 ); + ent.v[ "angles" ] = ( 359,351, 3,16585, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1678,3, -180,314, 1119,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2015,64, 264,619, 1180,21 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1888,97, 136,73, 1188,11 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2143,68, 136,317, 1188,13 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2272,55, 265,331, 1180,15 ); + ent.v[ "angles" ] = ( 89,8489, 208,295, 118,462 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1887,87, -566,393, 1184,05 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2143,85, -566,255, 1184,12 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2015,53, -439,599, 1192,13 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2270,44, -439,761, 1192,17 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_exhaust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 358,026, -1990,64, 1095,12 ); + ent.v[ "angles" ] = ( 321,283, 270,331, 175,143 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_tractor_lights_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 347,43, -1927,12, 1094,76 ); + ent.v[ "angles" ] = ( 2,22721, 83,0522, -85,0494 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2105,72, 710,106, 1111,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2042,17, 709,166, 1111,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2043, 616,468, 1111,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2105,56, 617,483, 1111,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1995,95, 813,341, 1099,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2239,02, 610,7, 1099,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1062,85, 2800,7, 1383,2 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3134,86, 5575,85, 1549,71 ); + ent.v[ "angles" ] = ( 359,637, 332,169, 2,23601 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1342,11, 2359,19, 1228,64 ); + ent.v[ "angles" ] = ( 24,6264, 348,684, -95,1904 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1109, 2435,82, 1228,51 ); + ent.v[ "angles" ] = ( 23,5964, 258,043, -86,9467 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1225,53, 2782,71, 1348,42 ); + ent.v[ "angles" ] = ( 23,7446, 76,4452, -89,157 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1241,31, 2637,99, 1354,94 ); + ent.v[ "angles" ] = ( 27,8118, 342,937, -91,1599 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1406,7, 2714,78, 1356,6 ); + ent.v[ "angles" ] = ( 19,8132, 343,109, -91,0903 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2139,45, 510,474, 1099,88 ); + ent.v[ "angles" ] = ( 89,8489, 208,281, 117,448 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1500,73, 1779,02, 1191,03 ); + ent.v[ "angles" ] = ( 358,537, 3,15394, 1,72984 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1140,7, -1375,47, 1073,94 ); + ent.v[ "angles" ] = ( 357,96, 27,1585, 0,985233 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_snow_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1233,53, -1472,97, 1194,58 ); + ent.v[ "angles" ] = ( 357,96, 27,1585, 0,985233 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_fog_vista_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6996,67, -6729,04, 2128 ); + ent.v[ "angles" ] = ( 357,896, 31,1598, 0,840536 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_tractor_lights_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 337,479, -1925,65, 1094,93 ); + ent.v[ "angles" ] = ( 2,22721, 83,0522, -85,0494 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_tractor_lights_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 327,318, -1924,57, 1095,58 ); + ent.v[ "angles" ] = ( 2,22721, 83,0522, -87,0494 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_tractor_lights" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 303,17, -1912,78, 1029,25 ); + ent.v[ "angles" ] = ( 30,3378, 105,823, -79,3862 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_tractor_lights" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 363,658, -1920,33, 1024,77 ); + ent.v[ "angles" ] = ( 34,2894, 64,0893, -90,15 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_downhill_exhaust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 301,073, -1984,63, 1099,41 ); + ent.v[ "angles" ] = ( 321,283, 270,331, 175,143 ); + ent.v[ "delay" ] = -68; +} diff --git a/mp_downhill/maps/mp/mp_downhill.gsc b/mp_downhill/maps/mp/mp_downhill.gsc new file mode 100644 index 0000000..2b61c24 --- /dev/null +++ b/mp_downhill/maps/mp/mp_downhill.gsc @@ -0,0 +1,52 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_downhill_fx::main(); + precachemodel( "collision_physics_64x64x64" ); + precachemodel( "collision_clip_32x32x32" ); + precachemodel( "collision_clip_64x64x64" ); + precachemodel( "collision_physics_cylinder_32x128" ); + precachemodel( "collision_missile_32x32x128" ); + precachemodel( "collision_clip_64x64x64" ); + maps/mp/_load::main(); + maps/mp/mp_downhill_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_downhill" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_64x64x64", "collider", ( 969,01, -2355,43, 1014,87 ), ( 2,23119, 12,5057, -9,9556 ) ); + spawncollision( "collision_physics_64x64x64", "collider", ( 954,068, -2352,16, 1001,08 ), ( 3,17067, 17,931, -9,69974 ) ); + spawncollision( "collision_physics_64x64x64", "collider", ( 942,933, -2359,71, 1031,9 ), ( 3,17067, 17,931, -9,69974 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( 368, -1378, 1015 ), vectorScale( ( 0, 0, 0 ), 24,9 ) ); + spawncollision( "collision_clip_64x64x64", "collider", ( 1268,5, -2518, 1062 ), vectorScale( ( 0, 0, 0 ), 349 ) ); + spawncollision( "collision_clip_64x64x64", "collider", ( 1122,5, 583,5, 959,5 ), vectorScale( ( 0, 0, 0 ), 41,2 ) ); + spawncollision( "collision_clip_32x32x32", "collider", ( 1895, -1428,5, 948 ), ( 0, 0, 0 ) ); + spawncollision( "collision_missile_32x32x128", "collider", ( 2431,5, -174, 1209,5 ), ( 0, 318,4, 90 ) ); + spawncollision( "collision_clip_64x64x64", "collider", ( 318, 1509, 1105 ), ( 0, 34,4, 90 ) ); + precachemodel( "fxanim_mp_downhill_cable_car_mod" ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level.cablecarlightsfx = loadfx( "maps/mp_maps/fx_mp_downhill_cablecar_lights" ); + level thread maps/mp/mp_downhill_cablecar::main(); + level.remotemotarviewleft = 40; + level.remotemotarviewright = 40; + level.remotemotarviewup = 15; + level.remotemotarviewdown = 65; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); +} diff --git a/mp_downhill/maps/mp/mp_downhill_amb.gsc b/mp_downhill/maps/mp/mp_downhill_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_downhill/maps/mp/mp_downhill_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_downhill/maps/mp/mp_downhill_cablecar.gsc b/mp_downhill/maps/mp/mp_downhill_cablecar.gsc new file mode 100644 index 0000000..bfe5d16 --- /dev/null +++ b/mp_downhill/maps/mp/mp_downhill_cablecar.gsc @@ -0,0 +1,791 @@ +#include maps/mp/killstreaks/_supplydrop; +#include maps/mp/gametypes/_gameobjects; +#include maps/mp/gametypes/ctf; +#include maps/mp/gametypes/_weaponobjects; +#include maps/mp/killstreaks/_rcbomb; +#include maps/mp/_tacticalinsertion; +#include maps/mp/gametypes/_hostmigration; +#include maps/mp/_events; +#include maps/mp/killstreaks/_airsupport; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.cablecartrack = []; + level.trackdistancestops = []; + level.distancetofirstrotate = 0; + precacheitem( "gondola_mp" ); + level.gondolasounds = []; + level.gondolasounds[ "tower_start" ] = "veh_cable_car_roller_cross"; + level.gondolasounds[ "rollers_start" ] = "veh_cable_car_start"; + level.gondolasounds[ "slow_down" ] = "veh_cable_car_stop"; + level.gondolaloopsounds = []; + level.gondolaloopsounds[ "start" ] = "veh_cable_car_move_loop"; + level.gondolaloopsounds[ "rollers_start" ] = "veh_cable_car_move_loop"; + level.gondolaloopsounds[ "rollers_end" ] = ""; + tracklength = createcablecarpath(); +/# + assert( level.trackdistancestops.size == 2 ); +#/ + if ( level.trackdistancestops.size == 2 ) + { + velocity = getdvarfloatdefault( "scr_cable_car_velocity", 100 ); + bottomoftracklength = level.trackdistancestops[ 1 ] - level.trackdistancestops[ 0 ]; + topoftracklength = tracklength - bottomoftracklength; +/# + assert( topoftracklength < bottomoftracklength ); +#/ + extratrackrequired = bottomoftracklength - topoftracklength; + extratimerequired = extratrackrequired / velocity; + level.cablecartrack[ level.cablecartrack.size - 1 ].movetime = extratimerequired; + level.cablecartrack[ level.cablecartrack.size - 1 ].rotate = 1; + tracklength = bottomoftracklength * 2; + } + else + { + return; + } + cablecars = getentarray( "cablecar", "targetname" ); + cablecarkilltrigger = getentarray( "cable_car_kill_trigger", "targetname" ); +/# + assert( isDefined( cablecars ) ); +#/ +/# + assert( isDefined( cablecarkilltrigger ) ); +#/ + level.cablecardefaultangle = cablecars[ 0 ].angles; + distancebetweencars = tracklength / cablecars.size; + if ( getgametypesetting( "allowMapScripting" ) ) + { + currentdistanceforcar = 0; + } + else + { + currentdistanceforcar = distancebetweencars * 0,8; + } + i = 0; + while ( i < cablecars.size ) + { + cablecar = cablecars[ i ]; + cablecar thread waitthenplayfx( 0,1, level.cablecarlightsfx, "tag_origin" ); + cablecar.killtrigger = getclosest( cablecar.origin, cablecarkilltrigger ); +/# + assert( isDefined( cablecar.killtrigger ) ); +#/ + cablecar.killtrigger enablelinkto(); + cablecar.killtrigger linkto( cablecar ); + cablecar setpointontrack( currentdistanceforcar, tracklength ); + currentdistanceforcar += distancebetweencars; +/# + debug_star( cablecar.origin, 120000, ( 0, 0, 1 ) ); +#/ + grip = spawn( "script_model", cablecar.origin ); + if ( cablecar.nextnodeindex >= ( level.cablecartrack.size - 1 ) ) + { + grip.angles = vectorToAngle( level.cablecartrack[ cablecar.nextnodeindex - 1 ].origin - level.cablecartrack[ cablecar.nextnodeindex ].origin ); + } + else + { + if ( is_true( level.cablecartrack[ cablecar.nextnodeindex ].pause ) ) + { + carnode = level.cablecartrack[ cablecar.nextnodeindex + 2 ]; + } + else + { + carnode = level.cablecartrack[ cablecar.nextnodeindex ]; + } + grip.angles = vectorToAngle( carnode.origin - cablecar.origin ); + } + grip.origin -= ( 0, cos( grip.angles[ 1 ] ) * -12, 8 ); + grip setmodel( "dh_cable_car_top_piece" ); + cablecar.grip = grip; + if ( getgametypesetting( "allowMapScripting" ) ) + { + level thread cablecarrun( cablecar ); + i++; + continue; + } + else + { + cablecar.origin += ( 0, cos( cablecar.angles[ 1 ] ) * -15, -66,6 ); + cablecar disconnectpaths(); + } + i++; + } +} + +waitthenplayfx( time, fxnum, tag ) +{ + self endon( "death" ); + wait time; + for ( ;; ) + { + playfxontag( fxnum, self, tag ); + level waittill( "host_migration_end" ); + } +} + +setpointontrack( distancealongtrack, tracklength ) +{ + pointontrack = level.cablecartrack[ 0 ].origin; + while ( distancealongtrack > tracklength ) + { + distancealongtrack = tracklength * -1; + } + remainingdistance = distancealongtrack; + i = 0; + while ( i < level.cablecartrack.size ) + { + cablecartracknode = level.cablecartrack[ i ]; + currentnodeisstop = is_true( cablecartracknode.pause ); + if ( currentnodeisstop ) + { + velocity = getdvarfloatdefault( "scr_cable_car_velocity", 100 ); + remainingdistance -= 3 * velocity; + if ( remainingdistance <= 0 ) + { + pointontrack = cablecartracknode.origin; + self.nextnodeindex = i; + self.needtopauseatstart = remainingdistance / velocity; + break; + } + } + else nextnodeisstop = 0; + if ( level.cablecartrack.size > ( i + 1 ) ) + { + nextnodeisstop = is_true( level.cablecartrack[ i + 1 ].pause ); + } + currentnodeisstop = 0; + if ( is_true( cablecartracknode.pause ) ) + { + currentnodeisstop = 1; + } + distance = cablecartracknode.stepdistance; + if ( nextnodeisstop || currentnodeisstop ) + { + distance *= 2; + } + if ( !isDefined( distance ) ) + { + pointontrack = cablecartracknode.origin; + self.nextnodeindex = i; + break; + } + else if ( remainingdistance < distance ) + { + if ( distance > 0 ) + { + ratio = remainingdistance / distance; + pointontrack = getpointonline( cablecartracknode.origin, level.cablecartrack[ i + 1 ].origin, ratio ); + } + self.nextnodeindex = i; + break; + } + else + { + remainingdistance -= distance; + i++; + } + } + self.angles = level.cablecardefaultangle; + if ( distancealongtrack < level.distancetofirstrotate ) + { + self.angles += vectorScale( ( 0, 0, 1 ), 180 ); + } + self.origin = pointontrack; +} + +createcablecarpath( cablecar ) +{ + currentnode = getent( "cable_down_start", "targetname" ); + startorigin = currentnode.origin; + velocity = getdvarfloatdefault( "scr_cable_car_velocity", 100 ); + tracklength = 0; + previousnode = undefined; + movetime = -1; + while ( isDefined( currentnode ) ) + { + cablecarnodestruct = spawnstruct(); + cablecarnodestruct.origin = currentnode.origin; + level.cablecartrack[ level.cablecartrack.size ] = cablecarnodestruct; + if ( isDefined( currentnode.target ) ) + { + nextnode = getent( currentnode.target, "targetname" ); + } + if ( !isDefined( nextnode ) ) + { + break; + } + else + { + stepdistance = distance( currentnode.origin, nextnode.origin ); + cablecarnodestruct.stepdistance = stepdistance; + movetime = stepdistance / velocity; +/# + assert( movetime > 0 ); +#/ + pauseratio = 1; + if ( isDefined( nextnode.script_noteworthy ) && nextnode.script_noteworthy == "stop" ) + { + pauseratio *= 2; + } + if ( isDefined( currentnode.script_noteworthy ) ) + { + if ( currentnode.script_noteworthy == "stop" ) + { + cablecarnodestruct.pause = 1; + tracklength += velocity * 3; + level.trackdistancestops[ level.trackdistancestops.size ] = tracklength; + pauseratio *= 2; + break; + } + else if ( currentnode.script_noteworthy == "rotate" ) + { + cablecarnodestruct.rotate = 1; + break; + } + else if ( currentnode.script_noteworthy == "forceorigin" ) + { + cablecarnodestruct.forceorigin = 1; + break; + } + else + { + if ( isDefined( level.gondolasounds[ currentnode.script_noteworthy ] ) ) + { + cablecarnodestruct.playsound = level.gondolasounds[ currentnode.script_noteworthy ]; + } + if ( isDefined( level.gondolaloopsounds[ currentnode.script_noteworthy ] ) ) + { + cablecarnodestruct.playloopsound = level.gondolaloopsounds[ currentnode.script_noteworthy ]; + } + } + } + tracklength += stepdistance * pauseratio; + if ( is_true( cablecarnodestruct.rotate ) ) + { + level.distancetofirstrotate = tracklength; + } + cablecarnodestruct.movetime = movetime; + previousnode = currentnode; + currentnode = nextnode; + nextnode = undefined; + } + } + return tracklength; +} + +watchpronetouch() +{ + for ( ;; ) + { + self waittill( "touch", entity ); + if ( isplayer( entity ) ) + { + if ( entity.origin[ 2 ] < 940 ) + { + if ( entity getstance() == "prone" ) + { + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_HIT_BY_OBJECT", 0, "gondola_mp" ); + } + } + } + } +} + +cablecarrun( cablecar ) +{ + nextnodeindex = cablecar.nextnodeindex; + cablecar thread watchpronetouch(); + cablecar thread cablecar_move_think( cablecar.killtrigger, 1 ); + cablecar thread cablecar_ai_watch(); + cablecar.ismoving = 1; + grip = cablecar.grip; + firstmove = 1; + cablecar.hidden = 0; + grip.forceangles = 0; + if ( isDefined( cablecar.needtopauseatstart ) ) + { + if ( cablecar.needtopauseatstart > 0 ) + { + wait cablecar.needtopauseatstart; + } + } + for ( ;; ) + { + i = nextnodeindex; + while ( i < level.cablecartrack.size ) + { + nextnode = level.cablecartrack[ i + 1 ]; + if ( !isDefined( nextnode ) ) + { + nextnode = level.cablecartrack[ 0 ]; + } + currentnode = level.cablecartrack[ i ]; + acceltime = 0; + deceltime = 0; + currentmovetime = currentnode.movetime; + if ( isDefined( nextnode.pause ) || isDefined( currentnode ) && isDefined( currentnode.pause ) ) + { + currentmovetime *= 2; + if ( isDefined( nextnode.pause ) ) + { + deceltime = currentmovetime - 0,1; + } + if ( isDefined( currentnode ) && isDefined( currentnode.pause ) ) + { + acceltime = currentmovetime - 0,1; + } + } +/# + debug_star( nextnode.origin, ( 0, 0, 1 ), 1000 ); +#/ + if ( isDefined( currentnode ) ) + { + if ( isDefined( currentnode.playsound ) ) + { + cablecar playsound( currentnode.playsound ); + } + if ( isDefined( currentnode.playloopsound ) ) + { + cablecar stoploopsound(); + cablecar playsound( "veh_cable_car_leave" ); + if ( currentnode.playloopsound != "" ) + { + cablecar playloopsound( currentnode.playloopsound ); + } + } + } + if ( isDefined( currentnode.rotate ) ) + { + cablecar hide(); + grip hide(); + cablecar.hidden = 1; + cablecar.origin += vectorScale( ( 0, 0, 1 ), 1000 ); + if ( cablecar.angles[ 1 ] > 360 ) + { + cablecar.angles -= vectorScale( ( 0, 0, 1 ), 180 ); + break; + } + else + { + cablecar.angles += vectorScale( ( 0, 0, 1 ), 180 ); + } + } + if ( isDefined( currentnode ) && isDefined( nextnode ) ) + { + angles = vectorToAngle( currentnode.origin - nextnode.origin ); + grip.nextangles = angles; + if ( grip.forceangles == 1 ) + { + grip.forceangles = 0; + grip.angles = grip.nextangles; + break; + } + else + { + grip rotateto( grip.nextangles, 0,9 ); + } + } + if ( firstmove == 1 ) + { + firstmovedistance = distance( cablecar.origin, nextnode.origin ); + velocity = getdvarfloatdefault( "scr_cable_car_velocity", 100 ); + timetomove = firstmovedistance / velocity; + if ( timetomove > 0 ) + { + cablecar moveto( nextnode.origin + ( 0, cos( cablecar.angles[ 1 ] ) * -15, -66,6 ), timetomove ); + grip moveto( nextnode.origin - ( 0, cos( cablecar.angles[ 1 ] ) * -12, 8 ), timetomove ); + wait timetomove; + } + } + else + { + heightoffset = -66,6; + if ( is_true( cablecar.hidden ) ) + { + heightoffset += -1000; + } + if ( deceltime > 0 ) + { + cablecar thread prettyslowdown( currentmovetime - deceltime ); + } + grip thread hostmigrationawaremoveto( nextnode.origin - ( 0, cos( cablecar.angles[ 1 ] ) * -12, 8 ), currentmovetime, acceltime, deceltime, currentmovetime - 0,05 ); + cablecar hostmigrationawaremoveto( nextnode.origin + ( 0, cos( cablecar.angles[ 1 ] ) * -15, heightoffset ), currentmovetime, acceltime, deceltime, currentmovetime - 0,05 ); + } + if ( cablecar.hidden == 1 ) + { + cablecar.hidden = 0; + if ( is_true( cablecar.hidden ) ) + { + cablecar.origin -= vectorScale( ( 0, 0, 1 ), 1000 ); + } + cablecar show(); + grip show(); + grip.forceangles = 1; + } + firstmove = 0; + if ( isDefined( nextnode.pause ) ) + { + cablecar.ismoving = 0; + grip thread hostmigrationawaremoveto( nextnode.origin - ( 0, cos( cablecar.angles[ 1 ] ) * -12, 8 ), 300, 0, 0, 3 ); + cablecar hostmigrationawaremoveto( nextnode.origin + ( 0, cos( cablecar.angles[ 1 ] ) * -15, -66,6 ), 300, 0, 0, 3 ); + cablecar notify( "started_moving" ); + cablecar thread prettyspeedup(); + cablecar.ismoving = 1; + } + if ( isDefined( nextnode.forceorigin ) ) + { + cablecar.origin = nextnode.origin + ( 0, cos( cablecar.angles[ 1 ] ) * -15, -66,6 ); + grip.origin = nextnode.origin - ( 0, cos( cablecar.angles[ 1 ] ) * -12, 8 ); + } + i++; + } + nextnodeindex = 0; + } +} + +hostmigrationawaremoveto( origin, movetime, acceltime, deceltime, waittime ) +{ + starttime = getTime(); + self moveto( origin, movetime, acceltime, deceltime ); + waitcompleted = self waitendonmigration( waittime ); + if ( !isDefined( waitcompleted ) ) + { + endtime = getTime(); + maps/mp/gametypes/_hostmigration::waittillhostmigrationdone(); + mstimedifference = ( starttime + ( waittime * 1000 ) ) - endtime; + if ( mstimedifference > 500 ) + { + wait ( mstimedifference / 1000 ); + } + } +} + +waitendonmigration( time ) +{ + level endon( "host_migration_begin" ); + wait time; + return 1; +} + +prettyslowdown( waittime ) +{ + if ( waittime > 0 ) + { + wait waittime; + } + self stoploopsound(); + self playsound( level.gondolasounds[ "slow_down" ] ); + originalangle = self.angles; + swingtime = getdvarfloatdefault( "scr_cable_swing_time", 1,5 ); + swingbacktime = getdvarfloatdefault( "scr_cable_swing_back_time", 1,5 ); + swingangle = getdvarfloatdefault( "scr_cable_swing_angle", 2 ); + self rotateto( ( originalangle[ 0 ] + swingangle, originalangle[ 1 ], originalangle[ 2 ] ), swingtime, swingtime / 2, swingtime / 2 ); + self waittill( "rotatedone" ); + self rotateto( ( originalangle[ 0 ], originalangle[ 1 ], originalangle[ 2 ] ), swingbacktime, swingbacktime / 2, swingbacktime / 2 ); + self waittill( "rotatedone" ); +} + +prettyspeedup() +{ + self stoploopsound(); + self playsound( level.gondolasounds[ "rollers_start" ] ); + self playloopsound( level.gondolaloopsounds[ "start" ] ); + originalangle = self.angles; + swingtime = getdvarfloatdefault( "scr_cable_swing_time_up", 1 ); + swingbacktime = getdvarfloatdefault( "scr_cable_swing_back_time_up", 1,5 ); + swingangle = getdvarfloatdefault( "scr_cable_swing_angle_up", 2 ); + self rotateto( ( originalangle[ 0 ] - swingangle, originalangle[ 1 ], originalangle[ 2 ] ), swingtime, swingtime / 2, swingtime / 2 ); + self waittill( "rotatedone" ); + self rotateto( ( originalangle[ 0 ], originalangle[ 1 ], originalangle[ 2 ] ), swingbacktime, swingbacktime / 2, swingbacktime / 2 ); + self waittill( "rotatedone" ); +} + +cablecar_ai_watch() +{ + self endon( "death" ); + self endon( "delete" ); + for ( ;; ) + { + wait 1; + while ( isDefined( self.nodes ) ) + { + i = 0; + while ( i < self.nodes.size ) + { + node = self.nodes[ i ]; + _a574 = level.teams; + _k574 = getFirstArrayKey( _a574 ); + while ( isDefined( _k574 ) ) + { + team = _a574[ _k574 ]; + node setdangerous( team, 0 ); + _k574 = getNextArrayKey( _a574, _k574 ); + } + i++; + } + } + dir = vectornormalize( anglesToForward( self.angles ) ); + dangerorigin = self.origin - ( dir * 196 ); + nodes = getnodesinradius( dangerorigin, 256, 0, 196 ); + i = 0; + while ( i < nodes.size ) + { + node = nodes[ i ]; + _a587 = level.teams; + _k587 = getFirstArrayKey( _a587 ); + while ( isDefined( _k587 ) ) + { + team = _a587[ _k587 ]; + node setdangerous( team, 1 ); + _k587 = getNextArrayKey( _a587, _k587 ); + } + i++; + } + if ( nodes.size > 0 ) + { + self.nodes = nodes; + continue; + } + else + { + self.nodes = undefined; + } + } +} + +cablecar_move_think( kill_trigger, checkmoving ) +{ + self endon( "death" ); + self endon( "delete" ); + self.disablefinalkillcam = 1; + destroycorpses = 0; + for ( ;; ) + { + wait 0,05; + pixbeginevent( "cablecar_move_think" ); + if ( checkmoving ) + { + if ( self.ismoving == 0 ) + { + self waittill( "started_moving" ); + } + } + entities = getdamageableentarray( self.origin, 200 ); + _a626 = entities; + _k626 = getFirstArrayKey( _a626 ); + while ( isDefined( _k626 ) ) + { + entity = _a626[ _k626 ]; + if ( isDefined( entity.targetname ) && entity.targetname == "cablecar" ) + { + } + else + { + if ( !entity istouching( kill_trigger ) ) + { + break; + } + else if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + break; + } + else + { + if ( !isalive( entity ) ) + { + break; + } + else if ( isDefined( entity.targetname ) ) + { + if ( entity.targetname == "talon" ) + { + entity notify( "death" ); + break; + } + else if ( entity.targetname == "rcbomb" ) + { + entity maps/mp/killstreaks/_rcbomb::rcbomb_force_explode(); + break; + } + else if ( entity.targetname == "riotshield_mp" ) + { + entity dodamage( 1, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_HIT_BY_OBJECT", 0, "gondola_mp" ); + break; + } + } + else if ( isDefined( entity.helitype ) && entity.helitype == "qrdrone" ) + { + watcher = entity.owner maps/mp/gametypes/_weaponobjects::getweaponobjectwatcher( "qrdrone" ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + break; + } + else + { + if ( entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + break; + } + else if ( !isDefined( entity.owner ) ) + { + break; + } + else if ( entity.name == "proximity_grenade_mp" ) + { + watcher = entity.owner getwatcherforweapon( entity.name ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( !isweaponequipment( entity.name ) ) + { + break; + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + break; + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( entity.classname == "remote_drone" ) + { + break; + } + else if ( entity.classname == "auto_turret" ) + { + if ( isDefined( entity.carried ) && entity.carried == 1 ) + { + break; + } + else + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + break; + } + else + { + if ( isplayer( entity ) ) + { + if ( entity getstance() == "prone" ) + { + if ( entity isonground() == 0 ) + { + destroycorpses = 1; + } + } + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_HIT_BY_OBJECT", 0, "gondola_mp" ); + break; + } + else + { + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + } + } + } + } + } + _k626 = getNextArrayKey( _a626, _k626 ); + } + if ( destroycorpses == 1 ) + { + destroycorpses = 0; + self destroy_corpses(); + } + self destroy_supply_crates(); + if ( level.gametype == "ctf" ) + { + _a755 = level.flags; + _k755 = getFirstArrayKey( _a755 ); + while ( isDefined( _k755 ) ) + { + flag = _a755[ _k755 ]; + if ( flag.curorigin != flag.trigger.baseorigin && flag.visuals[ 0 ] istouching( kill_trigger ) ) + { + flag maps/mp/gametypes/ctf::returnflag(); + } + _k755 = getNextArrayKey( _a755, _k755 ); + } + } + else if ( level.gametype == "sd" && !level.multibomb ) + { + if ( level.sdbomb.visuals[ 0 ] istouching( kill_trigger ) ) + { + level.sdbomb maps/mp/gametypes/_gameobjects::returnhome(); + } + } + pixendevent(); + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +destroy_supply_crates() +{ + crates = getentarray( "care_package", "script_noteworthy" ); + _a807 = crates; + _k807 = getFirstArrayKey( _a807 ); + while ( isDefined( _k807 ) ) + { + crate = _a807[ _k807 ]; + if ( distancesquared( crate.origin, self.origin ) < 40000 ) + { + if ( crate istouching( self ) ) + { + playfx( level._supply_drop_explosion_fx, crate.origin ); + playsoundatposition( "wpn_grenade_explode", crate.origin ); + wait 0,1; + crate maps/mp/killstreaks/_supplydrop::cratedelete(); + } + } + _k807 = getNextArrayKey( _a807, _k807 ); + } +} + +destroy_corpses() +{ + corpses = getcorpsearray(); + i = 0; + while ( i < corpses.size ) + { + if ( distancesquared( corpses[ i ].origin, self.origin ) < 40000 ) + { + corpses[ i ] delete(); + } + i++; + } +} diff --git a/mp_downhill/maps/mp/mp_downhill_fx.gsc b/mp_downhill/maps/mp/mp_downhill_fx.gsc new file mode 100644 index 0000000..63a6ac9 --- /dev/null +++ b/mp_downhill/maps/mp/mp_downhill_fx.gsc @@ -0,0 +1,54 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_downhill_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_lf_mp_downhill_sun1" ] = loadfx( "lens_flares/fx_lf_mp_downhill_sun1" ); + level._effect[ "fx_mp_downhill_snow_fall_lrg" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_fall_lrg" ); + level._effect[ "fx_mp_downhill_snow_indoor_lg" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_indoor_lg" ); + level._effect[ "fx_mp_downhill_snow_gust" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_gust" ); + level._effect[ "fx_mp_downhill_snow_gust_floor" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_gust_floor" ); + level._effect[ "fx_mp_downhill_snow_gust_cab" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_gust_cab" ); + level._effect[ "fx_mp_downhill_snow_gust_in" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_gust_in" ); + level._effect[ "fx_mp_downhill_snow_tree" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_tree" ); + level._effect[ "fx_mp_downhill_snow_tree_trunk" ] = loadfx( "maps/mp_maps/fx_mp_downhill_snow_tree_trunk" ); + level._effect[ "fx_mp_downhill_water_drips" ] = loadfx( "maps/mp_maps/fx_mp_downhill_water_drips" ); + level._effect[ "fx_mp_downhill_sparkle" ] = loadfx( "maps/mp_maps/fx_mp_downhill_sparkle" ); + level._effect[ "fx_mp_downhill_fog_vista" ] = loadfx( "maps/mp_maps/fx_mp_downhill_fog_vista" ); + level._effect[ "fx_mp_downhill_fog_vista_wide" ] = loadfx( "maps/mp_maps/fx_mp_downhill_fog_vista_wide" ); + level._effect[ "fx_mp_downhill_fog_vista_light" ] = loadfx( "maps/mp_maps/fx_mp_downhill_fog_vista_light" ); + level._effect[ "fx_mp_downhill_fireplace" ] = loadfx( "maps/mp_maps/fx_mp_downhill_fireplace" ); + level._effect[ "fx_mp_downhill_light_sml" ] = loadfx( "maps/mp_maps/fx_mp_downhill_light_sml" ); + level._effect[ "fx_mp_downhill_fog_int" ] = loadfx( "maps/mp_maps/fx_mp_downhill_fog_int" ); + level._effect[ "fx_mp_downhill_fog_int_3" ] = loadfx( "maps/mp_maps/fx_mp_downhill_fog_int_3" ); + level._effect[ "fx_mp_downhill_chimney_smk" ] = loadfx( "maps/mp_maps/fx_mp_downhill_chimney_smk" ); + level._effect[ "fx_mp_downhill_light_lg" ] = loadfx( "maps/mp_maps/fx_mp_downhill_light_lg" ); + level._effect[ "fx_mp_downhill_gust_window" ] = loadfx( "maps/mp_maps/fx_mp_downhill_gust_window" ); + level._effect[ "fx_mp_downhill_exhaust" ] = loadfx( "maps/mp_maps/fx_mp_downhill_exhaust" ); + level._effect[ "fx_mp_downhill_tractor_lights" ] = loadfx( "maps/mp_maps/fx_mp_downhill_tractor_lights" ); + level._effect[ "fx_mp_downhill_tractor_lights_sm" ] = loadfx( "maps/mp_maps/fx_mp_downhill_tractor_lights_sm" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "wirespark_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "teardrop_flag" ] = %fxanim_gp_teardrop_flag_loop_anim; + level.scr_anim[ "fxanim_props" ][ "windsock" ] = %fxanim_gp_windsock_anim; + level.scr_anim[ "fxanim_props" ][ "quad_chair" ] = %viewmodel_fxanim_mp_downhill_quad_chair_loop_anim; + level.scr_anim[ "fxanim_props" ][ "xmas_lights" ] = %fxanim_gp_xmas_lights_anim; + level.scr_anim[ "fxanim_props" ][ "standing_skiis" ] = %fxanim_mp_downhill_standing_skiis_loop_anim; + level.scr_anim[ "fxanim_props" ][ "standing_skiis_02" ] = %fxanim_mp_downhill_standing_skiis_loop_02_anim; +} diff --git a/mp_drone/aitype/enemy_dog_mp.gsc b/mp_drone/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_drone/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_drone/character/character_mp_german_shepherd.gsc b/mp_drone/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_drone/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_drone/maps/mp/createart/mp_drone_art.gsc b/mp_drone/maps/mp/createart/mp_drone_art.gsc new file mode 100644 index 0000000..d8fc802 --- /dev/null +++ b/mp_drone/maps/mp/createart/mp_drone_art.gsc @@ -0,0 +1,25 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_drone", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_drone/maps/mp/createfx/mp_drone_fx.gsc b/mp_drone/maps/mp/createfx/mp_drone_fx.gsc new file mode 100644 index 0000000..b38a12f --- /dev/null +++ b/mp_drone/maps/mp/createfx/mp_drone_fx.gsc @@ -0,0 +1,2375 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 936,438, -2,6611, 660,016 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 1576,16, 1062,87, 566,274 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 1364,58, 3231,84, 876,975 ); + ent.v[ "angles" ] = ( 298, 270, 80 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 1264,63, 2234,28, 626,041 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( -75,2249, 2832,58, 732,129 ); + ent.v[ "angles" ] = ( 277,7, 320,203, 41,0979 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( -120,827, 314,976, 77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam" ); + ent.v[ "origin" ] = ( -1748,31, 492,452, 590,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam" ); + ent.v[ "origin" ] = ( -1722,62, 300,426, 590,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam" ); + ent.v[ "origin" ] = ( -1707,88, 81,193, 588,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam" ); + ent.v[ "origin" ] = ( -1719,61, -114,235, 586,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -621,085, -811,156, 247,628 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 200,984, -825,445, 95,0018 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -88,0372, -1140,5, 105 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( -124,628, 215,759, 76 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( -1378,86, -1845,46, 364,596 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( 238,365, 2005,43, 452,125 ); + ent.v[ "angles" ] = ( 2, 179,964, 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 14,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1167,35, 2885,71, 356,443 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1026,42, 2757,99, 287,41 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 892,973, 3020,42, 374,985 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 331,855, 2952,62, 398,803 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -439,986, 2903,38, 375,882 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -212,347, 2820,35, 375,646 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 168,041, 2807,25, 384,028 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -99,0851, 2545,89, 219,093 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 786,317, 2626,1, 287,2 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1086,38, 2456,84, 311,791 ); + ent.v[ "angles" ] = ( 288, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1404,22, 1679,23, 100,893 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1366,4, 1275,45, 98,609 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1069,28, 1100,08, 95,3746 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1443,34, 952,134, 84,514 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1084,44, 621,997, 107,667 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 837,47, -215,239, 89,8274 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 628,449, -326,045, 69,42 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 984,61, 962,721, 106,203 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 671,179, 1676,49, 168,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 292,574, 2176,81, 227,701 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 43,5211, 2115,94, 187,833 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 162,877, -824,592, -39,9999 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -40,4221, -974,386, -40 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 942,157, 3179,8, 354,051 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1216,36, 2985,81, 316,41 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 165,524, 2936,85, 341,609 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1135,3, 1214,31, 52,6228 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 269,25, -641,443, -46 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -69,4102, -1219,08, -40 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -255,296, -1518,57, -9,75282 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 273,049, 1495,92, 115,005 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -688,697, -592,297, -31,4556 ); + ent.v[ "angles" ] = ( 273,163, 341,584, 18,4425 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -281,909, 1533,35, 161,491 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 329,743, 1481,06, 168,389 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -267,701, 1124,94, 180,258 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -660,08, -1691,72, 84,4303 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -352,785, -1541,7, 59,1158 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -389,985, -1061,99, 16,625 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -369,875, 465,705, 212,526 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 54,4449, -871,147, 102 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_dockside_sun1" ); + ent.v[ "origin" ] = ( -30123,6, -97927,8, 52705,6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( 810,467, 2996,84, 404,111 ); + ent.v[ "angles" ] = ( 88, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( 1474,57, 1323,38, 169,253 ); + ent.v[ "angles" ] = ( 74,8702, 277,421, -82,3157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( -581,299, 2614,92, 231,156 ); + ent.v[ "angles" ] = ( 16,9291, 335,75, 90,2583 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -1159,65, -1199,87, 98,8739 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1012,18, 3264,64, 379,602 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1137,33, 3388,99, 379,152 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( 929,839, -179,398, 100,186 ); + ent.v[ "angles" ] = ( 74,8702, 277,421, -82,3157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 856,788, 2333,85, 259,687 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -709,457, 2393,01, 222,766 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -537,272, 2158,15, 201,425 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -203,026, 1234,09, 201,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -193,172, 1392,02, 203,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -188,745, 2184,17, 170,27 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -2465,88, -1493,51, 80,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -1933,92, -1983,78, 65 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -1253,42, -1430,2, 78,2332 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( -1021,39, -2169,52, 78 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 1208,59, 3181,33, 656,054 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 1357,76, 3469,78, 856,617 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 918,708, 3521,55, 537 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 1157,79, 2436,14, 567,6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 94,9131, 910,115, 240,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -110,435, -1027,16, 20 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_cool_ground" ); + ent.v[ "origin" ] = ( -679,49, -381,524, 73,5888 ); + ent.v[ "angles" ] = ( 22,3234, 296,509, 96,2364 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_cool_ground" ); + ent.v[ "origin" ] = ( 986,019, 3510,31, 299,076 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 751,287, 235,978, 66,7407 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 595,931, 458,623, 70,6824 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_cool_ground" ); + ent.v[ "origin" ] = ( 258,914, -420,17, 87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( 1359,69, 2254,33, 274,057 ); + ent.v[ "angles" ] = ( 88, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_cool_slw_md" ); + ent.v[ "origin" ] = ( -501,592, 1924,29, 167,25 ); + ent.v[ "angles" ] = ( 14,5458, 37,6824, -93,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 112,923, -930,589, 14,5377 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -62,7229, -1036,85, 15 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 183,942, -798,378, -5,9982 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -63,2585, -1040,96, 7 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_button_flash" ); + ent.v[ "origin" ] = ( -1066,95, -717,465, 304,065 ); + ent.v[ "angles" ] = ( 90, 344,864, 74,8637 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( 1038,51, 5096,17, 535,6 ); + ent.v[ "angles" ] = ( 358,797, 165,491, -4,97454 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( 2895,63, 2452,31, 1249,44 ); + ent.v[ "angles" ] = ( 355,147, 101,372, -18,0588 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( 2750,27, 433,283, 1075,13 ); + ent.v[ "angles" ] = ( 2,69095, 78,7488, -11,2181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -379,52, 4019,43, 832,58 ); + ent.v[ "angles" ] = ( 359,91, 180,661, -35,2304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_drone" ); + ent.v[ "origin" ] = ( 985,224, 3013,91, 307,517 ); + ent.v[ "angles" ] = ( 314,223, 207,013, 164,712 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_drone" ); + ent.v[ "origin" ] = ( -267,905, 2599,46, 211,263 ); + ent.v[ "angles" ] = ( 327,889, 225,861, 151,596 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_cool_ground" ); + ent.v[ "origin" ] = ( 182,228, -202,018, 98,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_cool_ground" ); + ent.v[ "origin" ] = ( 47,9025, -1660,82, 190 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "origin" ] = ( 296,229, -584,168, 116,212 ); + ent.v[ "angles" ] = ( 18, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_02" ); + ent.v[ "origin" ] = ( 795,571, -1035,49, 406,993 ); + ent.v[ "angles" ] = ( 90, 22,5361, 112,536 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -951,827, 1111,64, 312,742 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -455,056, -407,494, 240,668 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -363,63, 59,9479, 211,875 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -170,645, 694,161, 409,218 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -8,12653, 2556,85, 170,687 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1027,93, 2150,25, 210,548 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1463,13, 1383,41, 105,641 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1531,32, 969,233, 165,095 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1399,83, 737,859, 80,812 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 998,477, 1466, 60,3866 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 917,195, -300,343, 45,699 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -144,907, 1110,06, 113 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -410,128, -1378,22, 246,225 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -445,276, -1340,9, 246,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -446,794, -910,811, 246,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( -88,3861, -569,169, 164 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( -241,005, -572,039, 162 ); + ent.v[ "angles" ] = ( 270, 317,82, 42,1801 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( 2626,25, -915,518, 1098,13 ); + ent.v[ "angles" ] = ( 353,326, 77,7307, -10,7992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -2009,5, 3711,1, 1273,66 ); + ent.v[ "angles" ] = ( 345,806, 236,473, -33,1638 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( 455,961, 1432,85, 180,481 ); + ent.v[ "angles" ] = ( 360, 180, 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( 743,509, -1106,1, 406,125 ); + ent.v[ "angles" ] = ( 44, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( 983,192, -1113,26, 409,282 ); + ent.v[ "angles" ] = ( 25, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 312,372, -1045,85, 255,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -117,875, 926,303, 445,15 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 135,226, 934,289, 382,872 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 127,912, 1358,65, 433,532 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 196,399, 1405,13, 289,44 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 543, 1489,62, 242,926 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 715,455, 1488,13, 245,379 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 180,354, 821,355, 256,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -120,999, 908,161, 239,458 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 295,524, -543,985, 381,949 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1250,25, 2990,51, 717,439 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 541,356, 2930,26, 658,93 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 388,62, 2946,18, 642,458 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -1141,79, -805,362, 407,125 ); + ent.v[ "angles" ] = ( 271, 270,034, 1,96582 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -1872,27, -1062,45, 288,726 ); + ent.v[ "angles" ] = ( 271, 270,034, 1,96582 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -2351,54, -1041,53, 386,588 ); + ent.v[ "angles" ] = ( 271, 270,034, 1,96582 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 173,628, -1099,77, 352,573 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -1453,68, -1649,88, 288,301 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -186,552, -1384,11, 200,671 ); + ent.v[ "angles" ] = ( 271, 270,034, 1,96582 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,114, 1368,8, 312,82 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -873,069, 1111,28, 312,606 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -962,185, 1381,91, 210,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -869,748, 1384,6, 214,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -881,925, 1199,53, 211,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( -909,713, 1295,16, 322,125 ); + ent.v[ "angles" ] = ( 81,2173, 10,8219, -163,631 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1089,45, 856,28, 242,851 ); + ent.v[ "angles" ] = ( 90, 335,053, 63,0534 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1077,15, 855,461, 242,899 ); + ent.v[ "angles" ] = ( 90, 335,053, 63,0534 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1091,1, 932,185, 243,851 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1075,83, 933,024, 243,899 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1216,03, 934,751, 243,851 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1201,85, 934,303, 243,899 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1215,18, 853,927, 242,851 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1201,5, 852,116, 242,899 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1472,5, 853,894, 242,851 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1459,25, 853,221, 242,899 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1472,84, 933,865, 243,851 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1460,58, 933,391, 243,899 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( -1255,09, 891,965, 254,875 ); + ent.v[ "angles" ] = ( 84,7532, 287,105, -160,732 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -106,876, -963,107, 291,72 ); + ent.v[ "angles" ] = ( 270, 2,663, -59,663 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -99,8857, -953,949, 292,839 ); + ent.v[ "angles" ] = ( 0,982226, 314, 0,190924 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_light_flash" ); + ent.v[ "origin" ] = ( -68,1748, -998,306, 315,877 ); + ent.v[ "angles" ] = ( 292, 311, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_light_flash" ); + ent.v[ "origin" ] = ( -102,632, -958,564, 267,823 ); + ent.v[ "angles" ] = ( 70,9676, 127,919, -2,06949 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -211,357, -915,039, 271,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -171,842, -915,727, 271,106 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -1341,07, 1494,98, 223,68 ); + ent.v[ "angles" ] = ( 0, 90, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -1450,12, 934,889, 197,89 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_sm" ); + ent.v[ "origin" ] = ( -1445,62, 854,937, 199,464 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -588,447, 363,689, 334,125 ); + ent.v[ "angles" ] = ( 358, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -577,538, 98,5362, 337,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( 514,313, 1737,05, 183,941 ); + ent.v[ "angles" ] = ( 356,237, 354,329, 13,1112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 840,379, 931,497, 199,505 ); + ent.v[ "angles" ] = ( 90, 5,37647, -84,6235 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 840,094, 986,568, 163,298 ); + ent.v[ "angles" ] = ( 90, 5,37647, -84,6235 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 840,274, 872,125, 163,532 ); + ent.v[ "angles" ] = ( 90, 5,37647, -84,6235 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 840,347, 909,422, 138,801 ); + ent.v[ "angles" ] = ( 90, 5,37647, -84,6235 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 840,692, 1018,43, 155,828 ); + ent.v[ "angles" ] = ( 90, 5,37647, -84,6235 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 504,147, 854,314, 203,839 ); + ent.v[ "angles" ] = ( 360, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 503,59, 915,612, 165,927 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 503,256, 993,559, 139,897 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 503,976, 825,379, 163,447 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( 503,579, 1027,38, 165,556 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "origin" ] = ( -144,882, -976,606, 55,1214 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "origin" ] = ( -72,7487, -790,111, 55,6851 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "origin" ] = ( 93,5639, -1032,85, 55,4228 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "origin" ] = ( 81,6291, -716,454, 54,9085 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 8445,78, 958,823, 2149,85 ); + ent.v[ "angles" ] = ( 352,952, 114,495, -4,16587 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 1254,54, -14270,6, 2243,52 ); + ent.v[ "angles" ] = ( 2,85125, 355,893, -2,20701 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -881,677, -5322,52, 988,223 ); + ent.v[ "angles" ] = ( 354,9, 350,148, 6,12797 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -442,949, -4356,99, 181,056 ); + ent.v[ "angles" ] = ( 359,137, 357,637, 5,97365 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -3719,41, -6052,14, 2,67401 ); + ent.v[ "angles" ] = ( 1,07069, 320,916, -3,44259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -13253,2, -3694,15, 686,953 ); + ent.v[ "angles" ] = ( 357,698, 264,004, -2,77475 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 6668,92, -2797,05, 1506,1 ); + ent.v[ "angles" ] = ( 351,784, 73,6003, -14,7163 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 5876,86, 4782,68, 2355,99 ); + ent.v[ "angles" ] = ( 359,409, 143,109, -24,2684 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -2045,8, 9335,17, 2539,13 ); + ent.v[ "angles" ] = ( 358,641, 176,831, -20,9591 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -5789,17, -5598,86, -163,943 ); + ent.v[ "angles" ] = ( 359,208, 290,973, -3,51671 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 4655,55, -7769,33, 430,5 ); + ent.v[ "angles" ] = ( 0,337525, 53,9827, -9,32073 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 129,424, 258,73, 237,501 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 315,32, -230,312, 243,753 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 204,931, -400,728, 365,862 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 1978,2, -7432,89, 80,51 ); + ent.v[ "angles" ] = ( 0,337525, 53,9827, -9,32073 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -5377,6, 8554,05, 2315 ); + ent.v[ "angles" ] = ( 1,00764, 230,546, -14,7827 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -3235,45, -9347,85, 639,106 ); + ent.v[ "angles" ] = ( 2,85125, 355,893, -2,20701 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -661,517, -2184,93, 187,236 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -456,644, -1950,35, 235,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -726,787, 372,143, 433,015 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -597,895, 429,579, 433,998 ); + ent.v[ "angles" ] = ( 88, 359,998, 179,998 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -854,533, 372,085, 433,992 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -983,071, 368,003, 433,001 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -984,857, -49,7102, 431,508 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -856,609, -50,5221, 432,502 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -728,253, -48,6357, 432,504 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -599,712, -48,5372, 432,5 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -830,456, 194,635, 184,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -1132,19, 194,944, 96,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -1180,67, 894,292, 106,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -911,741, 1768,21, 138,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -1271,18, 1419,71, 158,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( 219,151, 616,294, 374,517 ); + ent.v[ "angles" ] = ( 2, 179,964, 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 14,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -915,636, -386,854, 419,125 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -915,21, -463,176, 417,926 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -788,358, -463,829, 418,928 ); + ent.v[ "angles" ] = ( 359, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -786,844, -385,015, 418,922 ); + ent.v[ "angles" ] = ( 359, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( -791,683, -424,114, 436,875 ); + ent.v[ "angles" ] = ( 331,01, 355,552, 175,795 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -2962,86, -168,376, 239,125 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( -2894,13, 611,254, 236,125 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_yellow" ); + ent.v[ "origin" ] = ( -547,259, 803,78, 417,681 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_yellow" ); + ent.v[ "origin" ] = ( -668,379, 808,104, 417,668 ); + ent.v[ "angles" ] = ( 90, 351,756, 171,756 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_yellow" ); + ent.v[ "origin" ] = ( -786,674, 804,643, 417,754 ); + ent.v[ "angles" ] = ( 90, 351,756, 171,756 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_yellow" ); + ent.v[ "origin" ] = ( -908,996, 803,995, 417,771 ); + ent.v[ "angles" ] = ( 90, 351,756, 171,756 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 1987,28, 7081,2, 1214,18 ); + ent.v[ "angles" ] = ( 355,425, 167,348, -18,467 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -43,3369, -784,125, 1,99582 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -884,958, 1674,59, 259,69 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -454,995, -953,707, 197,141 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -450,125, -1215,63, 203,761 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -117,876, 661,942, 444,521 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 165,658, 1396,33, 420,678 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -40,1639, 935,789, 241,837 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -451,895, -527,453, 243,232 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 454,881, 2830,52, 771,77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 1400,95, 2056,99, 598,402 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 841,906, 1,72622, 676,081 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_mangrove_lg_dark" ); + ent.v[ "origin" ] = ( 689,201, 3590,49, 1074,97 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 135,99, 3,5803, 245,314 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -1254,88, -1838,53, 287,22 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -1254,88, -2109,35, 286,939 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -677,85, -838,797, 196,603 ); + ent.v[ "angles" ] = ( 271, 270,034, 1,96582 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 574,721, -537,327, 351,63 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 889,648, -473,876, 369,575 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 550,125, 182,958, 245,884 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 503,078, -104,937, 250,466 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 506,105, -374,441, 251,652 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 664,315, 717,955, 370,84 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -46,5185, -998,717, 96,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -60,7794, -1226,01, 103,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -904,953, 1599,53, 205,125 ); + ent.v[ "angles" ] = ( 359,582, 275,986, 3,97881 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -906,186, 906,694, 158,125 ); + ent.v[ "angles" ] = ( 0,864256, 183,097, -1,57232 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1301,26, -549,577, 154,125 ); + ent.v[ "angles" ] = ( 4, 181,003, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1866, -902,506, 181,125 ); + ent.v[ "angles" ] = ( 4,03909, 90,7342, -3,59119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -559,245, 964,368, 331,125 ); + ent.v[ "angles" ] = ( 359,582, 275,986, 3,97881 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -930,002, 933,654, 327,125 ); + ent.v[ "angles" ] = ( 359,582, 275,986, 3,97881 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -623,971, -438,744, 330,125 ); + ent.v[ "angles" ] = ( 0,990275, 183,995, 0,278846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1021,67, -1041,28, 306,125 ); + ent.v[ "angles" ] = ( 0,995139, 177,004, -0,209229 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 236,535, -1049,11, 294,125 ); + ent.v[ "angles" ] = ( 2,02093, 5,97057, -0,418091 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 755,44, -795,417, 311,125 ); + ent.v[ "angles" ] = ( 3,99512, 176,993, -0,209707 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 561,06, 1463,5, 173,125 ); + ent.v[ "angles" ] = ( 2,30191, 295,197, 2,55832 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -621,524, 1863,79, 189,25 ); + ent.v[ "angles" ] = ( 0,682676, 202,968, -0,43804 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1470,28, 877,346, 136,125 ); + ent.v[ "angles" ] = ( 1,6415, 268,119, 0,72425 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1459,77, -488,147, 131,125 ); + ent.v[ "angles" ] = ( 358,358, 88,1195, -0,724284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_ring_console_runner" ); + ent.v[ "origin" ] = ( 730,148, -801,732, 275,307 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_ring_console_runner" ); + ent.v[ "origin" ] = ( 723,6, -751,447, 275,971 ); + ent.v[ "angles" ] = ( 270, 1,02303, 168,977 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -6; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_drone" ); + ent.v[ "origin" ] = ( 593,267, 2985,65, 282,35 ); + ent.v[ "angles" ] = ( 314,223, 207,013, 164,712 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2461,5, -2325,44, 1363,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2413,14, -2325,3, 1075,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2993,38, -2327,89, 1075,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2940,83, -2321,29, 1366,18 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -687,439, -1392,45, 92,4524 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -873,388, -1569,18, 107,33 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1024,86, -1229,66, 83,407 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -6284,61, 10620,2, 4105,17 ); + ent.v[ "angles" ] = ( 1,00764, 230,546, -14,7827 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( 3107,53, 12415,2, 3433,09 ); + ent.v[ "angles" ] = ( 359,361, 176,513, -17,9065 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2713,62, -481,406, 2158,91 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_blue_light_flash" ); + ent.v[ "origin" ] = ( 184,522, -943,573, 465,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2681,76, -513,98, 1659,86 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2686,94, -5971,79, 1159,37 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -3254,8, -5969,08, 1155 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -3204,28, -5968,16, 1441,38 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2734,42, -5971,58, 1441,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_button_flash" ); + ent.v[ "origin" ] = ( -1022,9, 720,225, 300,173 ); + ent.v[ "angles" ] = ( 359, 180, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_ring_console_runner" ); + ent.v[ "origin" ] = ( -1019,7, 700,575, 301,161 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -7; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 125,875, 237,939, 239,24 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_ground" ); + ent.v[ "origin" ] = ( -163,926, 958,558, 114,726 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_ground" ); + ent.v[ "origin" ] = ( -163,704, 639,642, 113,797 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_ground" ); + ent.v[ "origin" ] = ( -766,908, -786,082, -23,6831 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_ground" ); + ent.v[ "origin" ] = ( 202,334, -494,846, -29,897 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( -2016,27, -1050,73, 67 ); + ent.v[ "angles" ] = ( 326, 267, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -978,614, -625,191, 410,046 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -949,153, -625,427, 410,878 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1007,35, -624,938, 410,85 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -853,005, -625,187, 410,836 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -823,602, -625,134, 410,999 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -881,906, -624,554, 410,861 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -721,986, -322,659, 448,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -600,388, -321,699, 448,389 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -597,396, -516,086, 448,429 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -723,185, -516,122, 448,441 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -983,077, -321,208, 448,474 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -981,561, -515,324, 448,466 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_ground" ); + ent.v[ "origin" ] = ( 954,967, 759,387, 59,0158 ); + ent.v[ "angles" ] = ( 275, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1154,67, -239,638, 267,525 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 963,38, 116,635, 173,138 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 496,346, 2737,08, 298,94 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 456,052, 2205,88, 185,731 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1121,3, 2751,93, 294,687 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -1488,9, -1596,99, 112 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 861,716, 932,432, 328,489 ); + ent.v[ "angles" ] = ( 4, 178,997, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 611,028, 795,51, 158,806 ); + ent.v[ "angles" ] = ( 358,633, 70,045, -3,75949 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -59,5565, -1193,75, 25,8188 ); + ent.v[ "angles" ] = ( 0, 90,9979, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -3755,95, -9603,46, 1571,11 ); + ent.v[ "angles" ] = ( 270, 0,421275, 1,57871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -3286,26, -9590,47, 1571,66 ); + ent.v[ "angles" ] = ( 270, 0,421275, 1,57871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -3238,8, -9589,03, 1289,1 ); + ent.v[ "angles" ] = ( 270, 0,421275, 1,57871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -3806,41, -9606,13, 1284,73 ); + ent.v[ "angles" ] = ( 270, 0,421275, 1,57871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -389,543, -968,941, 45,43 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -409,87, -1192,24, 77,6814 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2915,85, 582,787, 256,524 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "origin" ] = ( -2960,76, -135,903, 259,909 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_drone2" ); + ent.v[ "origin" ] = ( -1477,26, 440,517, 89,4437 ); + ent.v[ "angles" ] = ( 308, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,236, 1241,7, 312,473 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -951,889, 1242,73, 313,431 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -953,056, 1368,28, 312,412 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -951,243, 1496,61, 312,439 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -951,362, 1624,56, 313,447 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,966, 1496,88, 312,52 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,338, 1624,35, 312,54 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -1340,84, 1479,48, 163,788 ); + ent.v[ "angles" ] = ( 270, 309,768, -39,768 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_pc_panel_heli" ); + ent.v[ "origin" ] = ( -1007,96, 1308,56, 169,669 ); + ent.v[ "angles" ] = ( 0, 90, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_ring_console_runner" ); + ent.v[ "origin" ] = ( -1020,76, 667,062, 301,169 ); + ent.v[ "angles" ] = ( 270, 0,255783, -177,256 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_button_flash" ); + ent.v[ "origin" ] = ( -1016,96, 669,05, 300,371 ); + ent.v[ "angles" ] = ( 0, 179, -89,8826 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam" ); + ent.v[ "origin" ] = ( -1822,66, -1035,77, 353,86 ); + ent.v[ "angles" ] = ( 353,017, 265,97, 0,490713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam" ); + ent.v[ "origin" ] = ( -1929,89, -1022,11, 359,408 ); + ent.v[ "angles" ] = ( 353,017, 265,97, 0,490713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -952,002, 1481,48, 312,577 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,617, 1480,68, 313,451 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -875,283, 1609,12, 311,013 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -952,024, 1610,95, 313,525 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,928, 1352,16, 313,001 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -872,054, 1223,13, 313,13 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -952,927, 1352,59, 312,212 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -874,153, 1098,93, 312,002 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -952,295, 1098,67, 313,014 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1074,48, 1471,09, 282,029 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1059,8, 1471,35, 282,107 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1059,17, 1392,64, 282,038 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1076,86, 1392,31, 282,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1187,14, 1394,76, 281,465 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1204,82, 1394,43, 282,387 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1314,01, 1392,53, 281,541 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1330,39, 1393,16, 281,463 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1313,21, 1473,16, 282,542 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1330,89, 1472,83, 283,464 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1185,12, 1471,61, 282,54 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1202,8, 1471,29, 282,462 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -952,029, 1225,24, 313,999 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1331,01, 853,498, 242,032 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1345,19, 853,946, 242,984 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1329,88, 934,157, 242,527 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1344,06, 934,606, 242,479 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -948,181, 933,051, 242,523 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -962,284, 933,495, 243,475 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -819,362, 933,69, 242,527 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -833,543, 934,138, 242,479 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -819,8, 854,203, 242,03 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -833,981, 854,651, 242,982 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -948,683, 854,554, 242,025 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -962,117, 854,527, 241,977 ); + ent.v[ "angles" ] = ( 90, 2, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "origin" ] = ( -6810,74, -2265,67, -1022,36 ); + ent.v[ "angles" ] = ( 357,698, 264,004, -2,77475 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -2991,83, -3206,12, 153,808 ); + ent.v[ "angles" ] = ( 356,909, 333,223, 7,3457 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 263,835, 927,725, 403,213 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 263,658, 1010,4, 402,739 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( 623,76, -1103,02, 404,754 ); + ent.v[ "angles" ] = ( 45, 90, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( -912,102, 1170,65, 310,491 ); + ent.v[ "angles" ] = ( 60,002, 179,893, 179,998 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( -1131,35, 1435,54, 288,503 ); + ent.v[ "angles" ] = ( 79,644, 99,761, -172,7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 733,578, 946,591, 240,928 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 734,355, 889,922, 241,904 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 605,725, 888,408, 242,922 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 606,575, 949,938, 241,919 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 638,731, -535,378, 22,6499 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_hvac_steam_md" ); + ent.v[ "origin" ] = ( 209,196, -127,299, 191,188 ); + ent.v[ "angles" ] = ( 359, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_skinny" ); + ent.v[ "origin" ] = ( 678,362, 1171,87, 216,125 ); + ent.v[ "angles" ] = ( 90, 22,5361, 112,536 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_skinny" ); + ent.v[ "origin" ] = ( 415,825, 832,303, 366,397 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_rapid" ); + ent.v[ "origin" ] = ( -649,15, 836,622, 304,125 ); + ent.v[ "angles" ] = ( 270, 0, -179,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_rapid" ); + ent.v[ "origin" ] = ( -649,2, 836,448, 331,749 ); + ent.v[ "angles" ] = ( 270, 0, -179,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_rapid" ); + ent.v[ "origin" ] = ( -649,2, 809,854, 331,58 ); + ent.v[ "angles" ] = ( 270, 0, -179,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_rapid" ); + ent.v[ "origin" ] = ( -649,199, 849,558, 341,199 ); + ent.v[ "angles" ] = ( 270, 0, -179,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_rapid" ); + ent.v[ "origin" ] = ( -649,198, 823,159, 341,093 ); + ent.v[ "angles" ] = ( 270, 0, -179,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_rapid" ); + ent.v[ "origin" ] = ( -649,194, 810,015, 304,436 ); + ent.v[ "angles" ] = ( 270, 0, -179,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -1287,83, 905,122, 393,987 ); + ent.v[ "angles" ] = ( 90, 0, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -1136,99, 901,405, 393,648 ); + ent.v[ "angles" ] = ( 90, 0, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_ring_console_runner" ); + ent.v[ "origin" ] = ( -563,921, -396,323, 302,507 ); + ent.v[ "angles" ] = ( 270, 1,02303, 168,977 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_ring_console_runner" ); + ent.v[ "origin" ] = ( -566,368, -443,58, 301,843 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -990,768, 5498,91, 1464,19 ); + ent.v[ "angles" ] = ( 358,797, 165,491, -4,97454 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -1859,18, -730,723, 232,806 ); + ent.v[ "angles" ] = ( 90, 359,66, -0,340199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -1353,12, -542,779, 232,406 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue_4" ); + ent.v[ "origin" ] = ( -1604,83, -541,29, 232,631 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "origin" ] = ( -1859,57, -857,978, 232,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "origin" ] = ( -1861,98, -924,381, 230,928 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista_lg" ); + ent.v[ "origin" ] = ( 9644,56, 7823,23, 6680,54 ); + ent.v[ "angles" ] = ( 359,234, 123,905, -28,9793 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista_lg" ); + ent.v[ "origin" ] = ( -13542,6, 16523,3, 9830,55 ); + ent.v[ "angles" ] = ( 1,71905, 218,249, -20,9778 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista_lg" ); + ent.v[ "origin" ] = ( 276,66, 16767,7, 5623,09 ); + ent.v[ "angles" ] = ( 356,208, 178,737, -11,4733 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 297,245, -565,136, 97,0805 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 299,902, -701,637, 23,9968 ); + ent.v[ "angles" ] = ( 0,209195, 92,9928, -3,99514 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1013,72, 4127,44, 293,127 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 708,264, 3949,28, 393,346 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista_lg" ); + ent.v[ "origin" ] = ( 9232, -2215,96, 2746,91 ); + ent.v[ "angles" ] = ( 337,685, 77,4872, -18,9982 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -1354,08, -2307,16, 110 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( -6931,43, -2303,66, 214,174 ); + ent.v[ "angles" ] = ( 0,706331, 305,471, 7,93499 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1148,24, 4659,96, 319,632 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_drone_interior_steam" ); + ent.v[ "origin" ] = ( 743,524, -956,336, 409,645 ); + ent.v[ "angles" ] = ( 37,9905, 261,041, -5,39119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 766,946, -1247,2, 304,182 ); + ent.v[ "angles" ] = ( 7,05027, 168,986, -0,201279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 962,284, -868,168, 261,124 ); + ent.v[ "angles" ] = ( 24,7563, 93,1528, 1,67565 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 1743,82, 617,397, 251,999 ); + ent.v[ "angles" ] = ( 270, 8,74616, -76,7461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -364,257, 247,23, 219,875 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 433,7, 660,709, 247,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 613,776, 692,465, 371,516 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -506,822, 1883,44, 265,412 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -569,787, 1950,94, 266,577 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 22 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -1614,5, -1804,88, 285,875 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( 993,073, 5394,7, 1032,47 ); + ent.v[ "angles" ] = ( 358,797, 165,491, -4,97454 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud" ); + ent.v[ "origin" ] = ( 2871,98, 1828,48, 870,813 ); + ent.v[ "angles" ] = ( 6,02783, 104,149, -4,99374 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 270,381, 1168,16, 355,939 ); + ent.v[ "angles" ] = ( 65,8451, 277,213, 96,0144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 371,39, 1294,56, 296,049 ); + ent.v[ "angles" ] = ( 58, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 934,538, 4930,19, 312,547 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( -1284,92, 1115,69, 364,842 ); + ent.v[ "angles" ] = ( 76, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_light_flash" ); + ent.v[ "origin" ] = ( -31,8417, -1041,87, 263,384 ); + ent.v[ "angles" ] = ( 292, 311, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_red_light_flash" ); + ent.v[ "origin" ] = ( -34,8275, -1040,35, 254,663 ); + ent.v[ "angles" ] = ( 292, 311, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( -154,832, -1934,51, 205,635 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 788,487, 6140,1, 366,7 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 884,408, 5981,83, 300,174 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( -1454,73, -406,791, 230,183 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( -1452,6, 799,826, 229,652 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( -923,087, 1667,74, 279,368 ); + ent.v[ "angles" ] = ( 292, 311, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( -1324,26, -2110,99, 277,613 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( -1679,73, -1985,27, 230,319 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( -1288,41, 1280,36, 278,775 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "origin" ] = ( 178,528, 911,348, 398,839 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 553,305, -923,114, 355,431 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 582,745, -1133,63, 355,113 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 937,727, -1134,12, 355,187 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 457,015, -1042,54, 357,848 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 457,027, -1021,6, 357,565 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 553,538, -937,267, 355,595 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 444,023, -1042,3, 357,302 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 445,596, -1019,4, 357,585 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( 889,882, -496,404, 188,74 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1056,34, -512,798, 379,994 ); + ent.v[ "angles" ] = ( 1, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1043,11, -513,929, 378,79 ); + ent.v[ "angles" ] = ( 359, 359,997, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -623,879, -234,962, 378,38 ); + ent.v[ "angles" ] = ( 359,983, 89,0033, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -601,586, 617,154, 379,417 ); + ent.v[ "angles" ] = ( 0, 265, 0,996355 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -600,64, 630,638, 379,253 ); + ent.v[ "angles" ] = ( 359,983, 89,0033, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -416,764, 801,349, 378,66 ); + ent.v[ "angles" ] = ( 1, 179,003, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -403,384, 798,815, 378,893 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1043,08, 885,957, 381,826 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1043,07, 909,282, 381,768 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1057,74, 885,405, 381,289 ); + ent.v[ "angles" ] = ( 359, 176,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1056,11, 908,672, 381,347 ); + ent.v[ "angles" ] = ( 359, 176,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -822,494, 810,855, 210,5 ); + ent.v[ "angles" ] = ( 359,983, 89,0033, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1197,75, -543,729, 211,5 ); + ent.v[ "angles" ] = ( 1, 179,003, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1984,17, -544,368, 211,844 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1371,39, -1683,92, 291,931 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1435,02, -1682,49, 291,95 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_ceiling_circle_light_glare" ); + ent.v[ "origin" ] = ( -1499,81, -1683,35, 291,906 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1360,18, 981,172, 211,351 ); + ent.v[ "angles" ] = ( 359,983, 271,003, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "origin" ] = ( -1152,56, 981,151, 211,215 ); + ent.v[ "angles" ] = ( 359,983, 271,003, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; +} diff --git a/mp_drone/maps/mp/mp_drone.gsc b/mp_drone/maps/mp/mp_drone.gsc new file mode 100644 index 0000000..1563c63 --- /dev/null +++ b/mp_drone/maps/mp/mp_drone.gsc @@ -0,0 +1,70 @@ +#include maps/mp/mp_drone_doors; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + precachemodel( "fxanim_gp_robot_arm_welder_server_side_mod" ); + level.levelspawndvars = ::levelspawndvars; + welders = []; + welders[ welders.size ] = ( -1339,51, 76,04, 136,11 ); + welders[ welders.size ] = ( -1339,51, -171,9, 136,11 ); + welders[ welders.size ] = ( -1339,51, 559,04, 136,12 ); + welders[ welders.size ] = ( -1339,51, 312,01, 136,12 ); + maps/mp/mp_drone_fx::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_drone" ); + maps/mp/_load::main(); + maps/mp/mp_drone_amb::main(); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + if ( getgametypesetting( "allowMapScripting" ) ) + { + level maps/mp/mp_drone_doors::init(); + } + level.remotemotarviewleft = 35; + level.remotemotarviewright = 35; + level.remotemotarviewup = 18; + setheliheightpatchenabled( "war_mode_heli_height_lock", 0 ); + geo_changes(); + _a54 = welders; + _k54 = getFirstArrayKey( _a54 ); + while ( isDefined( _k54 ) ) + { + welder = _a54[ _k54 ]; + collision = spawn( "script_model", welder ); + collision setmodel( "fxanim_gp_robot_arm_welder_server_side_mod" ); + _k54 = getNextArrayKey( _a54, _k54 ); + } +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); +} + +geo_changes() +{ + rts_floor = getent( "overwatch_floor", "targetname" ); + if ( isDefined( rts_floor ) ) + { + rts_floor delete(); + } + removes = getentarray( "rts_only", "targetname" ); + _a77 = removes; + _k77 = getFirstArrayKey( _a77 ); + while ( isDefined( _k77 ) ) + { + removal = _a77[ _k77 ]; + removal delete(); + _k77 = getNextArrayKey( _a77, _k77 ); + } +} diff --git a/mp_drone/maps/mp/mp_drone_amb.gsc b/mp_drone/maps/mp/mp_drone_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_drone/maps/mp/mp_drone_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_drone/maps/mp/mp_drone_doors.gsc b/mp_drone/maps/mp/mp_drone_doors.gsc new file mode 100644 index 0000000..4011adf --- /dev/null +++ b/mp_drone/maps/mp/mp_drone_doors.gsc @@ -0,0 +1,250 @@ +#include maps/mp/_tacticalinsertion; +#include maps/mp/gametypes/_weaponobjects; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + triggers = getentarray( "trigger_multiple", "classname" ); + i = 0; + while ( i < 4 ) + { + door = getent( "drone_door" + i, "targetname" ); + if ( !isDefined( door ) ) + { + i++; + continue; + } + else + { + right = anglesToForward( door.angles ); + right = vectorScale( right, 116 ); + door.opened = 1; + door.origin_opened = door.origin; + door.force_open_time = 0; + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "flip" ) + { + door.origin_closed = door.origin + right; + } + else + { + door.origin_closed = door.origin - right; + } + door.mins = door getmins(); + door.maxs = door getmaxs(); + door setcandamage( 1 ); + door allowbottargetting( 0 ); + door.triggers = []; + _a49 = triggers; + _k49 = getFirstArrayKey( _a49 ); + while ( isDefined( _k49 ) ) + { + trigger = _a49[ _k49 ]; + if ( isDefined( trigger.target ) ) + { + if ( trigger.target == door.targetname ) + { + trigger.mins = trigger getmins(); + trigger.maxs = trigger getmaxs(); + door.triggers[ door.triggers.size ] = trigger; + } + } + _k49 = getNextArrayKey( _a49, _k49 ); + } + door thread door_damage_think(); + door thread door_think( i ); + } + i++; + } +} + +door_think( index ) +{ + wait ( 0,05 * index ); + self door_close(); + for ( ;; ) + { + wait 0,25; + if ( self door_should_open() ) + { + self door_open(); + } + else + { + self door_close(); + } + self movement_process(); + } +} + +door_should_open() +{ + if ( getTime() < self.force_open_time ) + { + return 1; + } + _a97 = self.triggers; + _k97 = getFirstArrayKey( _a97 ); + while ( isDefined( _k97 ) ) + { + trigger = _a97[ _k97 ]; + if ( trigger trigger_is_occupied() ) + { + return 1; + } + _k97 = getNextArrayKey( _a97, _k97 ); + } + return 0; +} + +door_open() +{ + if ( self.opened ) + { + return; + } + dist = distance( self.origin_opened, self.origin ); + frac = dist / 116; + time = clamp( frac * 0,5, 0,1, 0,5 ); + self moveto( self.origin_opened, time ); + self playsound( "mpl_drone_door_open" ); + self.opened = 1; +} + +door_close() +{ + if ( !self.opened ) + { + return; + } + dist = distance( self.origin_closed, self.origin ); + frac = dist / 116; + time = clamp( frac * 0,5, 0,1, 0,5 ); + self moveto( self.origin_closed, time ); + self playsound( "mpl_drone_door_close" ); + self.opened = 0; +} + +movement_process() +{ + moving = 0; + if ( self.opened ) + { + if ( distancesquared( self.origin, self.origin_opened ) > 0,001 ) + { + moving = 1; + } + } + else + { + if ( distancesquared( self.origin, self.origin_closed ) > 0,001 ) + { + moving = 1; + } + } + while ( moving ) + { + entities = gettouchingvolume( self.origin, self.mins, self.maxs ); + _a165 = entities; + _k165 = getFirstArrayKey( _a165 ); + while ( isDefined( _k165 ) ) + { + entity = _a165[ _k165 ]; + if ( isDefined( entity.classname ) && entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + } + else if ( !isDefined( entity.owner ) ) + { + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + } + if ( self.opened ) + { + } + else if ( isDefined( entity.classname ) && entity.classname == "auto_turret" ) + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + } + else + { + if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + } + } + _k165 = getNextArrayKey( _a165, _k165 ); + } + } +} + +trigger_is_occupied() +{ + entities = gettouchingvolume( self.origin, self.mins, self.maxs ); + _a221 = entities; + _k221 = getFirstArrayKey( _a221 ); + while ( isDefined( _k221 ) ) + { + entity = _a221[ _k221 ]; + if ( isalive( entity ) ) + { + if ( !isplayer( entity ) || isai( entity ) && isvehicle( entity ) ) + { + return 1; + } + } + _k221 = getNextArrayKey( _a221, _k221 ); + } + return 0; +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +door_damage_think() +{ + self.maxhealth = 99999; + self.health = self.maxhealth; + for ( ;; ) + { + self waittill( "damage", damage, attacker, dir, point, mod, model, tag, part, weapon, flags ); + self.maxhealth = 99999; + self.health = self.maxhealth; + if ( mod == "MOD_PISTOL_BULLET" || mod == "MOD_RIFLE_BULLET" ) + { + self.force_open_time = getTime() + 1500; + } + } +} diff --git a/mp_drone/maps/mp/mp_drone_fx.gsc b/mp_drone/maps/mp/mp_drone_fx.gsc new file mode 100644 index 0000000..1bafbc6 --- /dev/null +++ b/mp_drone/maps/mp/mp_drone_fx.gsc @@ -0,0 +1,97 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_util_fx() +{ +} + +precache_scripted_fx() +{ + level._effect[ "fx_mp_drone_robot_sparks" ] = loadfx( "maps/mp_maps/fx_mp_drone_robot_sparks" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_leaves_falling_mangrove_lg_dark" ] = loadfx( "env/foliage/fx_leaves_falling_mangrove_lg_dark" ); + level._effect[ "fx_mp_vent_steam" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam" ); + level._effect[ "fx_hvac_steam_md" ] = loadfx( "smoke/fx_hvac_steam_md" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_fog_street_cool_slw_md" ] = loadfx( "fog/fx_fog_street_cool_slw_md" ); + level._effect[ "fx_light_emrgncy_floodlight" ] = loadfx( "light/fx_light_emrgncy_floodlight" ); + level._effect[ "fx_insects_swarm_dark_lg" ] = loadfx( "bio/insects/fx_insects_swarm_dark_lg" ); + level._effect[ "fx_mp_fog_low" ] = loadfx( "maps/mp_maps/fx_mp_fog_low" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_lf_dockside_sun1" ] = loadfx( "lens_flares/fx_lf_mp_drone_sun1" ); + level._effect[ "fx_light_floodlight_rnd_cool_glw_dim" ] = loadfx( "light/fx_light_floodlight_rnd_cool_glw_dim" ); + level._effect[ "fx_mp_steam_pipe_md" ] = loadfx( "maps/mp_maps/fx_mp_steam_pipe_md" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_light_dust_motes_sm" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_sm" ); + level._effect[ "fx_mp_fog_cool_ground" ] = loadfx( "maps/mp_maps/fx_mp_fog_cool_ground" ); + level._effect[ "fx_red_button_flash" ] = loadfx( "light/fx_red_button_flash" ); + level._effect[ "fx_mp_distant_cloud" ] = loadfx( "maps/mp_maps/fx_mp_distant_cloud_lowmem" ); + level._effect[ "fx_light_god_ray_mp_drone" ] = loadfx( "env/light/fx_light_god_ray_mp_drone" ); + level._effect[ "fx_mp_fumes_vent_xsm_int" ] = loadfx( "maps/mp_maps/fx_mp_fumes_vent_xsm_int" ); + level._effect[ "fx_ceiling_circle_light_glare" ] = loadfx( "light/fx_ceiling_circle_light_glare" ); + level._effect[ "fx_drone_rectangle_light" ] = loadfx( "light/fx_drone_rectangle_light" ); + level._effect[ "fx_drone_rectangle_light_02" ] = loadfx( "light/fx_drone_rectangle_light_02" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_pc_panel_lights_runner" ] = loadfx( "props/fx_pc_panel_lights_runner" ); + level._effect[ "fx_drone_red_ring_console" ] = loadfx( "light/fx_drone_red_ring_console" ); + level._effect[ "fx_blue_light_flash" ] = loadfx( "light/fx_blue_light_flash" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_mp_drone_interior_steam" ] = loadfx( "maps/mp_maps/fx_mp_drone_interior_steam" ); + level._effect[ "fx_pc_panel_heli" ] = loadfx( "props/fx_pc_panel_heli" ); + level._effect[ "fx_red_light_flash" ] = loadfx( "light/fx_red_light_flash" ); + level._effect[ "fx_drone_rectangle_light_blue" ] = loadfx( "light/fx_drone_rectangle_light_blue" ); + level._effect[ "fx_mp_distant_cloud_vista" ] = loadfx( "maps/mp_maps/fx_mp_distant_cloud_vista_lowmem" ); + level._effect[ "fx_drone_rectangle_light_blue_4" ] = loadfx( "light/fx_drone_rectangle_light_blue_4" ); + level._effect[ "fx_drone_rectangle_light_yellow" ] = loadfx( "light/fx_drone_rectangle_light_yellow" ); + level._effect[ "fx_ceiling_circle_light_led" ] = loadfx( "light/fx_ceiling_circle_light_led" ); + level._effect[ "fx_drone_red_ring_console_runner" ] = loadfx( "light/fx_drone_red_ring_console_runner" ); + level._effect[ "fx_light_beacon_red_blink_fst" ] = loadfx( "light/fx_light_beacon_red_blink_fst" ); + level._effect[ "fx_wall_water_ground" ] = loadfx( "water/fx_wall_water_ground" ); + level._effect[ "fx_drone_rectangle_light_03" ] = loadfx( "light/fx_drone_rectangle_light_03" ); + level._effect[ "fx_drone_red_blink" ] = loadfx( "light/fx_drone_red_blink" ); + level._effect[ "fx_light_god_ray_mp_drone2" ] = loadfx( "env/light/fx_light_god_ray_mp_drone2" ); + level._effect[ "fx_drone_rectangle_light_skinny" ] = loadfx( "light/fx_drone_rectangle_light_skinny" ); + level._effect[ "fx_mp_drone_rapid" ] = loadfx( "maps/mp_maps/fx_mp_drone_rapid" ); + level._effect[ "fx_mp_distant_cloud_vista_lg" ] = loadfx( "maps/mp_maps/fx_mp_distant_cloud_vista_lg_lowmem" ); + level._effect[ "fx_light_exit_sign" ] = loadfx( "light/fx_light_exit_sign_glow" ); + level._effect[ "fx_drone_light_yellow" ] = loadfx( "light/fx_drone_light_yellow" ); +} + +main() +{ + precache_fxanim_props(); + precache_util_fx(); + precache_createfx_fx(); + precache_scripted_fx(); + maps/mp/createfx/mp_drone_fx::main(); + maps/mp/createart/mp_drone_art::main(); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "vines_aquilaria" ] = %fxanim_gp_vines_aquilaria_anim; + level.scr_anim[ "fxanim_props" ][ "vines_strangler_fig" ] = %fxanim_gp_vines_strangler_fig_anim; + level.scr_anim[ "fxanim_props" ][ "drone_factory" ] = %fxanim_mp_drone_factory_link_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder1" ] = %fxanim_mp_drone_factory_welder_01_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder2" ] = %fxanim_mp_drone_factory_welder_02_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder3" ] = %fxanim_mp_drone_factory_welder_03_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder4" ] = %fxanim_mp_drone_factory_welder_04_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction1" ] = %fxanim_mp_drone_factory_suction_01_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction2" ] = %fxanim_mp_drone_factory_suction_02_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction3" ] = %fxanim_mp_drone_factory_suction_03_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction4" ] = %fxanim_mp_drone_factory_suction_04_anim; + level.scr_anim[ "fxanim_props" ][ "drone_factory_off" ] = %fxanim_mp_drone_factory_link_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder1_off" ] = %fxanim_mp_drone_factory_welder_01_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder2_off" ] = %fxanim_mp_drone_factory_welder_02_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder3_off" ] = %fxanim_mp_drone_factory_welder_03_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_welder4_off" ] = %fxanim_mp_drone_factory_welder_04_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction1_off" ] = %fxanim_mp_drone_factory_suction_01_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction2_off" ] = %fxanim_mp_drone_factory_suction_02_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction3_off" ] = %fxanim_mp_drone_factory_suction_03_off_anim; + level.scr_anim[ "fxanim_props" ][ "drone_suction4_off" ] = %fxanim_mp_drone_factory_suction_04_off_anim; + level.scr_anim[ "fxanim_props" ][ "vines_strangler_fig_alt" ] = %fxanim_gp_vines_strangler_fig_alt_anim; +} diff --git a/mp_express/aitype/enemy_dog_mp.gsc b/mp_express/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_express/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_express/character/character_mp_german_shepherd.gsc b/mp_express/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_express/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_express/maps/mp/_events.gsc b/mp_express/maps/mp/_events.gsc new file mode 100644 index 0000000..9f7ac09 --- /dev/null +++ b/mp_express/maps/mp/_events.gsc @@ -0,0 +1,114 @@ +#include maps/mp/gametypes/_globallogic_utils; +#include maps/mp/_utility; + +add_timed_event( seconds, notify_string, client_notify_string ) +{ +/# + assert( seconds >= 0 ); +#/ + if ( level.timelimit > 0 ) + { + level thread timed_event_monitor( seconds, notify_string, client_notify_string ); + } +} + +timed_event_monitor( seconds, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + if ( !isDefined( level.starttime ) ) + { + continue; + } + else + { + millisecs_remaining = maps/mp/gametypes/_globallogic_utils::gettimeremaining(); + seconds_remaining = millisecs_remaining / 1000; + if ( seconds_remaining <= seconds ) + { + event_notify( notify_string, client_notify_string ); + return; + } + } + } +} + +add_score_event( score, notify_string, client_notify_string ) +{ +/# + assert( score >= 0 ); +#/ + if ( level.scorelimit > 0 ) + { + if ( level.teambased ) + { + level thread score_team_event_monitor( score, notify_string, client_notify_string ); + return; + } + else + { + level thread score_event_monitor( score, notify_string, client_notify_string ); + } + } +} + +any_team_reach_score( score ) +{ + _a63 = level.teams; + _k63 = getFirstArrayKey( _a63 ); + while ( isDefined( _k63 ) ) + { + team = _a63[ _k63 ]; + if ( game[ "teamScores" ][ team ] >= score ) + { + return 1; + } + _k63 = getNextArrayKey( _a63, _k63 ); + } + return 0; +} + +score_team_event_monitor( score, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + if ( any_team_reach_score( score ) ) + { + event_notify( notify_string, client_notify_string ); + return; + } + } +} + +score_event_monitor( score, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].score ) && players[ i ].score >= score ) + { + event_notify( notify_string, client_notify_string ); + return; + } + i++; + } + } +} + +event_notify( notify_string, client_notify_string ) +{ + if ( isDefined( notify_string ) ) + { + level notify( notify_string ); + } + if ( isDefined( client_notify_string ) ) + { + clientnotify( client_notify_string ); + } +} diff --git a/mp_express/maps/mp/createart/mp_express_art.gsc b/mp_express/maps/mp/createart/mp_express_art.gsc new file mode 100644 index 0000000..923e6c1 --- /dev/null +++ b/mp_express/maps/mp/createart/mp_express_art.gsc @@ -0,0 +1,25 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_express", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_express/maps/mp/createfx/mp_express_fx.gsc b/mp_express/maps/mp/createfx/mp_express_fx.gsc new file mode 100644 index 0000000..7d2d1bf --- /dev/null +++ b/mp_express/maps/mp/createfx/mp_express_fx.gsc @@ -0,0 +1,1832 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 904,187, -2120,3, -35,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 672,285, -213,159, 71,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 653,108, 199,932, 71,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 225,28, 50,8324, 37 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 240,648, -293,811, 46,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 105 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 688,709, -925,867, 35 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 585,66, -1065,81, 51 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1033,78, -1877,63, 36,0076 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1489,26, -1249,97, -51,3096 ); + ent.v[ "angles" ] = ( 338, 224, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1737,87, -915,959, -78,2687 ); + ent.v[ "angles" ] = ( 352,104, 243,1, 1,97313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1548,32, -407,51, -38 ); + ent.v[ "angles" ] = ( 354,932, 89,9463, 1,83965 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1539,08, 431,675, -54 ); + ent.v[ "angles" ] = ( 352,685, 260,482, -2,7063 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1432,99, 1304,17, -7,92948 ); + ent.v[ "angles" ] = ( 351,296, 139,321, -0,649479 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1741,47, 931,778, -74,1646 ); + ent.v[ "angles" ] = ( 354,651, 117,059, -0,668359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 730,237, 1397,04, 44 ); + ent.v[ "angles" ] = ( 0,841039, 53,9364, 0,470194 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 986,61, 1741,43, 44 ); + ent.v[ "angles" ] = ( 0,841039, 53,9364, 0,470194 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1235,97, 2016,5, -0,999996 ); + ent.v[ "angles" ] = ( 0,841039, 53,9364, 0,470194 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1856,5, 302,507, -64 ); + ent.v[ "angles" ] = ( 0,434334, 87,9362, 0,860104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1855, -555,538, -66 ); + ent.v[ "angles" ] = ( 0,434334, 87,9362, 0,860104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2095,27, -333,514, -68 ); + ent.v[ "angles" ] = ( 0,434334, 87,9362, 0,860104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2081,85, 493,494, -65 ); + ent.v[ "angles" ] = ( 359,611, 270,936, -0,881651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 77,2361, -1468,28, 179,125 ); + ent.v[ "angles" ] = ( 0,948312, 34,9346, 0,170738 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1074,33, -92,7252, 7,125 ); + ent.v[ "angles" ] = ( 356,611, 270,982, -0,883175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1131,8, 367,006, 3,125 ); + ent.v[ "angles" ] = ( 0,860073, 357,93, -0,434595 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 104,491, 1461,15, 183,125 ); + ent.v[ "angles" ] = ( 0,513489, 326,93, -0,815337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 475,278, 1206,18, 178,125 ); + ent.v[ "angles" ] = ( 0,499212, 325,93, 0,175851 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express" ); + ent.v[ "origin" ] = ( 371,122, 146,88, -21,875 ); + ent.v[ "angles" ] = ( 318,06, 174,658, -176,258 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 2609,36, -338,302, -269,108 ); + ent.v[ "angles" ] = ( 323,854, 177,669, -1,62255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -128,196, 1616,93, 189,125 ); + ent.v[ "angles" ] = ( 23,16, 147,24, 0,592267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 121,642, -1308,79, 190,125 ); + ent.v[ "angles" ] = ( 0, 36, -37 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 990,407, -2000,66, -56,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 130 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 377,47, -99,5366, 29,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -98,5626, -1599,25, 181,125 ); + ent.v[ "angles" ] = ( 18, 215, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 769,788, -1747,88, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 216 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 1073,37, -2096,74, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 225 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 502,51, -1356,86, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 210 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1003; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 273,601, -936,508, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 205 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1004; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 92,7792, -491,237, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 199 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 17,9442, -35,5184, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 184 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1006; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 84,1599, 435,962, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 164 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1007; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 245,547, 869,105, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 157 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1008; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 456,781, 1276,61, -58,5 ); + ent.v[ "angles" ] = ( 0, 151, -1 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1009; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 717,311, 1677,81, -57,7634 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 143 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1010; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 1037,08, 2051,59, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 135 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1011; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 1087,85, -2111,04, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 314 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 791,486, -1771,69, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 307 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 517,452, -1381,03, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 299 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2003; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 287,219, -957,808, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 294 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2004; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 119,349, -535,167, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 287 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2005; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 18,978, -56,9463, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 274 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2006; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 72,5543, 413,993, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 256 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2007; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 232,631, 844,638, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 246 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2008; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 446,137, 1250,02, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 243 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2009; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 700,319, 1647,44, -58,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2010; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust" ); + ent.v[ "origin" ] = ( 1022,76, 2035,7, -58,5 ); + ent.v[ "angles" ] = ( 359, 224,996, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2011; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1710,93, 684,362, 306,361 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1710,24, 864,104, 298,348 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2030,79, 685,667, 307,942 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2030,28, 866,089, 296,456 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2349,18, 866,885, 297,632 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2667,47, 864,907, 298,658 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2989,25, 865,028, 297,195 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3308,27, 866,458, 283,293 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1709,26, -866,213, 298,409 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1709,27, -685,866, 308,778 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2028,73, -867,224, 299,535 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2029,89, -685,353, 309,661 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2348,3, -865,907, 299,481 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2669,24, -865,818, 299,669 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2987,5, -866,468, 299,32 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3310,8, -865,273, 285,616 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1398,88, -110,09, 305,238 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1399,77, 110,015, 306,435 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1400,2, 330,367, 305,939 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1398,17, -331,185, 306,176 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1399,7, -514,48, 304,041 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1398,77, -686,186, 300,364 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1398,49, -864,665, 289,739 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1399,87, 513,153, 306,682 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1400,7, 685,682, 297,438 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 1398,36, 864,426, 290,249 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2989,6, 330,444, 313 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2989,74, 110,677, 313 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2989,3, -114,313, 314 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 2988,87, -332,26, 313 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3313,88, -515,219, 296,624 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3312,54, -330,643, 298,118 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3314,78, -111,315, 298,429 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3308,06, 111,38, 295,528 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3309,16, 332,984, 298,53 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_big" ); + ent.v[ "origin" ] = ( 3304,14, 517,499, 297,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 640,993, 238,484, 184 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 504,093, 238,665, 184 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 776,463, 238,78, 184 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 913,004, 237,345, 184,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 1048,33, 238,616, 184,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 1184,4, 238,699, 186 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 227,961, -261,015, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 481,22, 1387,52, -13,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 50 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 957,548, 1968,64, -56,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 50 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 21,4283, 38,2671, -31,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 97,0849, -534,371, -14,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 258,013, -1227,7, 3 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1179, -2344,59, -20,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 137 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -17,3512, -1478,04, 26 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -390,35, 456,912, 27 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 82 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -434,381, 1013,16, 31 ); + ent.v[ "angles" ] = ( 0, 76, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -419,201, -1136,47, 5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 103 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 655,635, -1685,19, -16,3986 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 137 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 707,182, -2201,65, 8,00002 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -3,71047, 1822,32, 35,9369 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 34 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 368,932, 1710,05, -22,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 49 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 81,0399, 701,163, -13,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 67 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 696,127, 1354,24, -10 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 29 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -333,014, -1244,49, -38 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -608,577, 771,195, -37 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 61 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 563,5, 2011,01, -22 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 49 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 518,991, 2232,65, -55,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 1000,55, -2782,06, -53 ); + ent.v[ "angles" ] = ( 0, 89, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1040,64, -231,569, 54,125 ); + ent.v[ "angles" ] = ( 23,1981, 127,207, 9,65068 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 153,867, -1297,16, 188,125 ); + ent.v[ "angles" ] = ( 0,75463, 245,254, 68,3993 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1160,28, 289,832, 34,125 ); + ent.v[ "angles" ] = ( 337,304, 71,365, -37,1935 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1163,12, -434,502, 70,125 ); + ent.v[ "angles" ] = ( 24,666, 231,513, 32,5726 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1119,1, -301,723, 64,125 ); + ent.v[ "angles" ] = ( 40,003, 176,672, 1,28912 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1127,08, -378,759, 5,125 ); + ent.v[ "angles" ] = ( 0,643226, 356,938, -0,442156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1173,37, 423,165, 63,125 ); + ent.v[ "angles" ] = ( 31,6849, 140,827, -26,2148 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1162,68, -276,343, 52,125 ); + ent.v[ "angles" ] = ( 37,3658, 239,257, 29,1336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_fog_water" ); + ent.v[ "origin" ] = ( -3604,39, -464,775, -312,279 ); + ent.v[ "angles" ] = ( 358,161, 267,005, 0,152562 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_fog_water" ); + ent.v[ "origin" ] = ( -3467,55, 2409,66, -240,302 ); + ent.v[ "angles" ] = ( 358,367, 243,996, 0,859104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_fog_water" ); + ent.v[ "origin" ] = ( -4307,54, -3735,9, -493,182 ); + ent.v[ "angles" ] = ( 358,39, 301,021, -0,902071 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -261,463, -1226,32, 65,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -253,027, -1041,17, 53,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 641,362, -101,817, 185,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 776,611, -103,612, 184,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 912,786, -102,691, 185,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 1048,72, -102,385, 185,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 1184,36, -103,566, 184,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 290,308, -1437,65, 4,87629 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 136,327, -1176,32, 4,643 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 102,393, -1108,43, 4,21081 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 23 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -53,2016, -733,819, 4,13237 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 23 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -79,322, -663,618, 4,59664 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -175,213, -270,254, 4,7733 ); + ent.v[ "angles" ] = ( 356, 14, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -184,92, -195,587, 4,24279 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -184,117, 211,009, 4,53329 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -175,937, 286,796, 4,5513 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -69,3966, 676,847, 4,16217 ); + ent.v[ "angles" ] = ( 357, 345, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -45,5513, 749,242, 4,1686 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 109,75, 1123,94, 4,30387 ); + ent.v[ "angles" ] = ( 357, 337, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 143,193, 1191,77, 4,00254 ); + ent.v[ "angles" ] = ( 357,022, 329,991, 0,365935 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 294,656, 1455,37, 4,98705 ); + ent.v[ "angles" ] = ( 357,022, 329,991, 0,365935 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -300,573, -301,651, 4,94043 ); + ent.v[ "angles" ] = ( 4, 194, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -203,825, -694,522, 4,52649 ); + ent.v[ "angles" ] = ( 355, 194, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -171,709, -783,183, 4,14116 ); + ent.v[ "angles" ] = ( 3,96161, 202,019, 0,557685 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -17,1667, -1156,99, 4,09987 ); + ent.v[ "angles" ] = ( 0,951456, 202,989, 0,625416 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 26,1881, -1241,24, 3,62246 ); + ent.v[ "angles" ] = ( 356,869, 208,924, 0,791536 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -300,033, 319,534, 4,98442 ); + ent.v[ "angles" ] = ( 358,346, 163,906, 2,77418 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -194,02, 709,725, 4,02974 ); + ent.v[ "angles" ] = ( 358,346, 163,906, 2,77418 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -164,703, 798,41, 4,86106 ); + ent.v[ "angles" ] = ( 358,346, 163,906, 2,77418 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( -9,7507, 1172,74, 4,31705 ); + ent.v[ "angles" ] = ( 358,696, 156,912, 2,95495 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 32,116, 1255,5, 4,57541 ); + ent.v[ "angles" ] = ( 358,905, 152,917, 3,03862 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 829,544, -1658,73, -6,99999 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 36 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 1138,93, -1988,61, -21,4837 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 34 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side" ); + ent.v[ "origin" ] = ( 744,385, 1521,01, -16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 326 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1010; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side2" ); + ent.v[ "origin" ] = ( 96,533, -325,943, -24,8184 ); + ent.v[ "angles" ] = ( 344,927, 2,59774, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createexploder( "fx_mp_express_train_dust_side2" ); + ent.v[ "origin" ] = ( 72,3679, 59,1355, -18,7997 ); + ent.v[ "angles" ] = ( 344,927, 2,59774, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1006; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 321,841, -335,237, 116,827 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 302,996, -418,976, 116,437 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 280,851, -426,961, 116,467 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 367,523, -321,819, 116,487 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 324,799, -480,676, 116,288 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 303,406, -487,594, 116,459 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 448,491, -592,578, 116,231 ); + ent.v[ "angles" ] = ( 90, 0, -109 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 497,751, -714,566, 116,64 ); + ent.v[ "angles" ] = ( 90, 0, -112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 472,131, -654,851, 116,52 ); + ent.v[ "angles" ] = ( 90, 180, 71 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 420,888, -512,917, 116,513 ); + ent.v[ "angles" ] = ( 90, 180, 71 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 522,794, -772,595, 115,436 ); + ent.v[ "angles" ] = ( 90, 356,424, -116,576 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 548,732, -830,549, 116,398 ); + ent.v[ "angles" ] = ( 90, 0, -115 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 572,448, -881,352, 116,7 ); + ent.v[ "angles" ] = ( 90, 0, -116 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 608,264, -956,985, 116,223 ); + ent.v[ "angles" ] = ( 90, 0, -117 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 639,5, -1012,87, 115,526 ); + ent.v[ "angles" ] = ( 90, 0, -118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 673,834, -1072,71, 116,448 ); + ent.v[ "angles" ] = ( 90, 0, -119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 702,529, -1131,45, 116,528 ); + ent.v[ "angles" ] = ( 90, 0, -120 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 729,194, -1191,58, 116,239 ); + ent.v[ "angles" ] = ( 90, 0, -121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 833,442, -1359,8, 116,487 ); + ent.v[ "angles" ] = ( 90, 0, -121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 869,018, -1410,07, 116,526 ); + ent.v[ "angles" ] = ( 90, 0, -123 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 911,295, -1464,28, 116,699 ); + ent.v[ "angles" ] = ( 90, 0, -124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 951,238, -1516,28, 116,059 ); + ent.v[ "angles" ] = ( 90, 354,289, -131,711 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 751,261, -1231,1, 115,826 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 683,737, -1273,96, 116,576 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 665,447, -1284,32, 116,446 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 793,754, -1303,05, 116,56 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 724,165, -1344,47, 116,62 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 707,857, -1356,69, 116,716 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 423,83, 509,915, 116,072 ); + ent.v[ "angles" ] = ( 90, 180, 109 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 449,814, 588,752, 116,023 ); + ent.v[ "angles" ] = ( 90, 0, -70 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 476,756, 648,723, 116,216 ); + ent.v[ "angles" ] = ( 90, 180, 111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 497,694, 711,005, 115,296 ); + ent.v[ "angles" ] = ( 90, 0, -68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 522,956, 770,785, 115,92 ); + ent.v[ "angles" ] = ( 90, 180, 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 546,263, 829,552, 115,207 ); + ent.v[ "angles" ] = ( 90, 0, -65 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 573,589, 879,456, 116,203 ); + ent.v[ "angles" ] = ( 90, 0, -65 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 612,652, 954,341, 116,202 ); + ent.v[ "angles" ] = ( 90, 0, -61 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 639,234, 1011,42, 115,917 ); + ent.v[ "angles" ] = ( 90, 0, -64 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 669,696, 1071,27, 116,259 ); + ent.v[ "angles" ] = ( 90, 0, -62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 701,67, 1129,17, 115,208 ); + ent.v[ "angles" ] = ( 90, 0, -62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 733,587, 1191,12, 116,088 ); + ent.v[ "angles" ] = ( 90, 0, -62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 825,314, 1364,26, 115,917 ); + ent.v[ "angles" ] = ( 90, 0, -58 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 864,208, 1414,96, 115,785 ); + ent.v[ "angles" ] = ( 90, 0, -57 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 899,919, 1466,14, 115,487 ); + ent.v[ "angles" ] = ( 90, 0, -54 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_5" ); + ent.v[ "origin" ] = ( 941,677, 1519,63, 115,287 ); + ent.v[ "angles" ] = ( 90, 180, 127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 318,453, 330,175, 116,692 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 368,513, 320,402, 116,706 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 400,859, 390,454, 116,527 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 378,052, 399,519, 115,45 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 310,648, 420,936, 116,607 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 289,797, 428,453, 116,005 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 421,898, 446,089, 116,656 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 399,327, 454,697, 116,508 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 325,82, 481,623, 116,486 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 304,357, 486,917, 116,088 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 672,015, 1298,09, 115,205 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 690,486, 1289,09, 116,705 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 763,236, 1245,22, 116,495 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 803,491, 1319,2, 116,661 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 864,41, 1282,24, 115,779 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 732,189, 1364,03, 116,706 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 712,576, 1376,36, 115,208 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 403,536, -452,892, 116,743 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 426,259, -446,395, 116,495 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 384,944, -392,286, 116,7 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( 404,758, -386,695, 116,711 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -901,354, -468,762, 91,2858 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -1008,32, -468,396, 90,9271 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -901,909, -259,425, 90,9863 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -1008,43, -258,058, 90,9379 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -848,715, -365,584, 120,117 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -953,693, -365,871, 119,957 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -1049,42, -370,366, 117,001 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -1008,01, 476,723, 91,9487 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -901,299, 476,522, 91,9177 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -1008,18, 265,401, 90,9992 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -900,81, 265,054, 91,8765 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -849,857, 368,743, 118,922 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -953,152, 368,135, 118,007 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_hall_light_one" ); + ent.v[ "origin" ] = ( -1056,79, 368,777, 118,924 ); + ent.v[ "angles" ] = ( 90, 53,5508, 128,551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_train_side_light" ); + ent.v[ "origin" ] = ( 179,523, -1503,2, 4,35467 ); + ent.v[ "angles" ] = ( 356,856, 209,925, 0,736721 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_ceiling_light_small" ); + ent.v[ "origin" ] = ( 504,787, -102,438, 184 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 102,171, 1339,63, 189,125 ); + ent.v[ "angles" ] = ( 1,87872, 316,291, 64,0532 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 173,443, 1293,26, 188,125 ); + ent.v[ "angles" ] = ( 18,1743, 135,86, -59,5429 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 931,368, 2582,1, -31 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_low" ); + ent.v[ "origin" ] = ( 885,886, -2508,28, -58 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 685,596, -2336,12, -56,3496 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_express_sun1" ); + ent.v[ "origin" ] = ( -193528, 3894,04, 95755,8 ); + ent.v[ "angles" ] = ( 316,36, 196,247, 7,90639 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -282,609, -337,792, 38,2029 ); + ent.v[ "angles" ] = ( 358,436, 255,798, 68,9546 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -276,036, 372,584, 45,2063 ); + ent.v[ "angles" ] = ( 359,697, 75,08, -59,9623 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -121,294, 882,099, 48,2033 ); + ent.v[ "angles" ] = ( 358,437, 255,798, 55,9545 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -124,927, -852,162, 50,2006 ); + ent.v[ "angles" ] = ( 2,10251, 108,765, -52,2021 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -599,577, 215,274, 175,16 ); + ent.v[ "angles" ] = ( 360, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -643,794, 215,271, 177,81 ); + ent.v[ "angles" ] = ( 360, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -1023,14, 186,754, 123,598 ); + ent.v[ "angles" ] = ( 9, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -1067,38, 186,729, 119,984 ); + ent.v[ "angles" ] = ( 9, 270, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -130,857, 1077,79, 20,3183 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 82 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -1023,3, -186,739, 122,755 ); + ent.v[ "angles" ] = ( 360, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( -1063,64, -186,737, 121,896 ); + ent.v[ "angles" ] = ( 360, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1688,08, -865,547, -80,875 ); + ent.v[ "angles" ] = ( 356,347, 80,4128, -1,85498 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1740,23, 844,492, -86,875 ); + ent.v[ "angles" ] = ( 357,27, 270,333, 1,15472 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1051,18, 205,888, 65,9191 ); + ent.v[ "angles" ] = ( 1,14623, 178,3, -28,3207 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_slums" ); + ent.v[ "origin" ] = ( -381,614, 889,597, 44 ); + ent.v[ "angles" ] = ( 321, 155, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_slums" ); + ent.v[ "origin" ] = ( -270,759, 1189,07, 12,125 ); + ent.v[ "angles" ] = ( 321, 155, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_slums" ); + ent.v[ "origin" ] = ( 209,25, 1816,83, 68 ); + ent.v[ "angles" ] = ( 321,28, 140,864, 5,89672 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_slums" ); + ent.v[ "origin" ] = ( -281,885, -932,34, 46 ); + ent.v[ "angles" ] = ( 323,967, 186,381, -1,02081 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_slums" ); + ent.v[ "origin" ] = ( -224,825, -1199,61, -4,1069 ); + ent.v[ "angles" ] = ( 323,967, 186,381, -1,02081 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_slums" ); + ent.v[ "origin" ] = ( 277,828, -1986,83, 105,651 ); + ent.v[ "angles" ] = ( 323,967, 186,381, -1,02081 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 57,2083, -1060,42, 45,2003 ); + ent.v[ "angles" ] = ( 34,589, 339,642, -27,7829 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -194,668, 59,6114, 51,3126 ); + ent.v[ "angles" ] = ( 338,767, 251,389, -44,8256 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -196,644, -31,345, 55,2059 ); + ent.v[ "angles" ] = ( 333,251, 245,042, -42,24 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -199,892, -38,2818, 54,2061 ); + ent.v[ "angles" ] = ( 31,3247, 58,9794, 39,2928 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -196,479, 45,6401, 50,1972 ); + ent.v[ "angles" ] = ( 39,0908, 43,1795, 29,9922 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -255,854, -145,431, 33,1945 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 17,7745, -1083,87, 24,2003 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 110 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -100,48, 776,088, 40,1935 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 69 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 1579,77, 2305,33, -32,6681 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1626,15, 2299,32, -8,50859 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1724,93, 2173,69, -19,3444 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1719,93, -2168,03, -20,3786 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1610,04, -2279,19, -3,2757 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -197,608, -1208,27, 44,4412 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -350,993, 1065,77, 41,5727 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -172,332, 1214,72, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1557,48, 2284,43, -35,3048 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1768,44, -2170,23, -37,3464 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1722,7, -2268, 71,9732 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -59,3688, -467,715, -54,3219 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -38,3634, 744,013, -53,1034 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 41 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "origin" ] = ( -1565,89, 2432,24, -286 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 214,8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "origin" ] = ( -1566,52, 1095,24, -285,438 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 214,6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "origin" ] = ( -1221,29, 655,636, -286 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 33 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "origin" ] = ( -1256,54, -697,131, -286 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 151,6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "origin" ] = ( 3786,58, -811,18, -280 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 170,4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light" ); + ent.v[ "origin" ] = ( 1744,17, 2285,01, 81,7873 ); + ent.v[ "angles" ] = ( 1,03533, 249,93, -0,334176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light_beam" ); + ent.v[ "origin" ] = ( 1742,27, 2281,49, 79,6697 ); + ent.v[ "angles" ] = ( 21,2134, 287,881, -5,96969 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light" ); + ent.v[ "origin" ] = ( 1736,27, 2295,67, 82,3763 ); + ent.v[ "angles" ] = ( 0,356206, 196,93, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light_beam" ); + ent.v[ "origin" ] = ( 1730,24, 2292,12, 82,3454 ); + ent.v[ "angles" ] = ( 28,8562, 147,929, -172,609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light" ); + ent.v[ "origin" ] = ( 1728,84, -2285,57, 80,6648 ); + ent.v[ "angles" ] = ( 1,03535, 169,93, -0,334179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light_beam" ); + ent.v[ "origin" ] = ( 1720,86, -2280,98, 78,5471 ); + ent.v[ "angles" ] = ( 17,8977, 205,073, -6,83147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light" ); + ent.v[ "origin" ] = ( 1738,62, -2276,69, 81,2538 ); + ent.v[ "angles" ] = ( 0,356214, 116,93, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_express_flood_light_beam" ); + ent.v[ "origin" ] = ( 1734,07, -2271,37, 78,2229 ); + ent.v[ "angles" ] = ( 15,9537, 66,2045, -173,271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1724,81, 2280,89, 72,8578 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -1109,03, 320,483, 74,125 ); + ent.v[ "angles" ] = ( 40,003, 176,672, 1,28912 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_smoke01" ); + ent.v[ "origin" ] = ( -41399,3, -234,981, 9526,94 ); + ent.v[ "angles" ] = ( 292,951, 26,6725, 20,2475 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_smoke01" ); + ent.v[ "origin" ] = ( -35552, 17195,8, 10659,4 ); + ent.v[ "angles" ] = ( 284,622, 35,7853, 23,223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_smoke01" ); + ent.v[ "origin" ] = ( -37362,6, 13541,6, 6977,84 ); + ent.v[ "angles" ] = ( 274, 89,9949, 26,004 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_smoke01" ); + ent.v[ "origin" ] = ( -39960,2, 1625,92, 7604,65 ); + ent.v[ "angles" ] = ( 299,51, 52,1825, 52,2727 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_fire01" ); + ent.v[ "origin" ] = ( -41302,4, -209,357, 9305,93 ); + ent.v[ "angles" ] = ( 0, 357, 19 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_fire01" ); + ent.v[ "origin" ] = ( -41506,9, 1540,31, 7070,19 ); + ent.v[ "angles" ] = ( 3,48203, 332,944, -13,8901 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_fire01" ); + ent.v[ "origin" ] = ( -37845,4, 13601,6, 6883,59 ); + ent.v[ "angles" ] = ( 13,1745, 25,7166, 20,3595 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_fire01" ); + ent.v[ "origin" ] = ( -37253,6, 17549,5, 10688,4 ); + ent.v[ "angles" ] = ( 4,39891, 33,1717, 43,9386 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -756,344, 3,62298, 126,625 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express" ); + ent.v[ "origin" ] = ( 419,38, 227,445, -10,875 ); + ent.v[ "angles" ] = ( 320,056, 174,828, -176,369 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express" ); + ent.v[ "origin" ] = ( 349,346, 56,1756, -15,875 ); + ent.v[ "angles" ] = ( 318,06, 174,658, -176,258 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express" ); + ent.v[ "origin" ] = ( 392,553, -67,2389, -15,875 ); + ent.v[ "angles" ] = ( 317,951, 182,732, 178,335 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express" ); + ent.v[ "origin" ] = ( 355,788, -159,05, -9,875 ); + ent.v[ "angles" ] = ( 319,93, 181,442, -178,8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express" ); + ent.v[ "origin" ] = ( 413,869, -248,048, -15,875 ); + ent.v[ "angles" ] = ( 312,22, 175,581, -173,868 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_fire01" ); + ent.v[ "origin" ] = ( -41148,2, 1405,53, 10249,3 ); + ent.v[ "angles" ] = ( 3, 331, -14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_smoke01" ); + ent.v[ "origin" ] = ( -21655,4, -8472, 1199,19 ); + ent.v[ "angles" ] = ( 320,314, 79,9974, 30,4147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_vista_smoke01" ); + ent.v[ "origin" ] = ( -39643,5, 1732,45, 10848 ); + ent.v[ "angles" ] = ( 293,003, 5,68765, 94,4744 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 1431,7, -2081,46, -57,6439 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 1041,92, -1442,63, -16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 373,369, 586,013, -16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 346 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 1597,37, 2260,26, -56,4586 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 241 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 139,696, 1348,45, 128,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 46 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 705,478, 1000,37, 128,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 115 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 1212,28, 238,896, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 213 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 1203,74, -232,88, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 674,339, -1132,51, 128,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 147,871, -1354,05, 128,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -593,865, -782,896, -40 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -587,496, 794,383, -40 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 31 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 54,3967, 1988,72, -15,8586 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 42 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 864,499, -70,0208, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 158 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 871,996, 38,428, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 343 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 2596,41, -147,93, -280 ); + ent.v[ "angles" ] = ( 323,312, 176,372, 2,16989 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 2588,56, 122,561, -280 ); + ent.v[ "angles" ] = ( 323,854, 177,669, 1,37747 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 2569,79, 320,658, -280 ); + ent.v[ "angles" ] = ( 323,854, 177,669, 0,377455 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3096,49, -363,051, -271,831 ); + ent.v[ "angles" ] = ( 323,854, 177,669, -1,62255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3083,54, -172,68, -282,723 ); + ent.v[ "angles" ] = ( 323,312, 176,372, 2,16989 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3075,68, 97,8114, -282,723 ); + ent.v[ "angles" ] = ( 323,854, 177,669, 1,37747 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3056,92, 295,908, -282,723 ); + ent.v[ "angles" ] = ( 323,854, 177,669, 0,377455 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3528,21, -332,792, -250,831 ); + ent.v[ "angles" ] = ( 323,854, 177,669, -1,62255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3515,26, -142,421, -261,723 ); + ent.v[ "angles" ] = ( 323,312, 176,372, 2,16989 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3507,4, 128,07, -261,723 ); + ent.v[ "angles" ] = ( 323,854, 177,669, 1,37747 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_express2" ); + ent.v[ "origin" ] = ( 3488,64, 326,167, -261,723 ); + ent.v[ "angles" ] = ( 323,854, 177,669, 0,377455 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 781,585, 837,429, 161,125 ); + ent.v[ "angles" ] = ( 8,44865, 292,982, 0,50436 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 772,838, -920,961, 181,292 ); + ent.v[ "angles" ] = ( 13,7035, 67,9494, -0,334405 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -456,646, -37,3364, 78,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -701,479, 149,945, 78,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -875,325, 286,317, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1002,73, -2661,38, -62,3477 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 664,442, 2312,15, -62,3567 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 995,138, 2656,53, -55,3534 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; +} diff --git a/mp_express/maps/mp/mp_express.gsc b/mp_express/maps/mp/mp_express.gsc new file mode 100644 index 0000000..e926040 --- /dev/null +++ b/mp_express/maps/mp/mp_express.gsc @@ -0,0 +1,65 @@ +#include maps/mp/mp_express_train; +#include maps/mp/_compass; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_express_fx::main(); + maps/mp/_load::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_express" ); + maps/mp/mp_express_amb::main(); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + registerclientfield( "vehicle", "train_moving", 1, 1, "int" ); + registerclientfield( "scriptmover", "train_moving", 1, 1, "int" ); + if ( getgametypesetting( "allowMapScripting" ) ) + { + maps/mp/mp_express_train::init(); + } +/# + level thread devgui_express(); + execdevgui( "devgui_mp_express" ); +#/ +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "1900", reset_dvars ); +} + +devgui_express() +{ +/# + setdvar( "devgui_notify", "" ); + for ( ;; ) + { + wait 0,5; + devgui_string = getDvar( "devgui_notify" ); + switch( devgui_string ) + { + case "": + break; + case "train_start": + level notify( "train_start" ); + break; + default: + } + if ( getDvar( "devgui_notify" ) != "" ) + { + setdvar( "devgui_notify", "" ); + } +#/ + } + } +} diff --git a/mp_express/maps/mp/mp_express_amb.gsc b/mp_express/maps/mp/mp_express_amb.gsc new file mode 100644 index 0000000..b4b1b37 --- /dev/null +++ b/mp_express/maps/mp/mp_express_amb.gsc @@ -0,0 +1,16 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; +#include common_scripts/utility; + +main() +{ + array_thread( getentarray( "advertisement", "targetname" ), ::advertisements ); +} + +advertisements() +{ + self playloopsound( "amb_" + self.script_noteworthy + "_ad" ); + self waittill( "damage" ); + self stoploopsound(); + self playloopsound( "amb_" + self.script_noteworthy + "_damaged_ad" ); +} diff --git a/mp_express/maps/mp/mp_express_fx.gsc b/mp_express/maps/mp/mp_express_fx.gsc new file mode 100644 index 0000000..22908b1 --- /dev/null +++ b/mp_express/maps/mp/mp_express_fx.gsc @@ -0,0 +1,58 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_express_fx::main(); + maps/mp/createart/mp_express_art::main(); +} + +precache_scripted_fx() +{ + level._effect[ "fx_mp_debris_papers" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_fog_low" ] = loadfx( "maps/mp_maps/fx_mp_fog_low" ); + level._effect[ "fx_mp_express_train_blow_dust" ] = loadfx( "maps/mp_maps/fx_mp_express_train_blow_dust" ); + level._effect[ "fx_mp_express_fog_water" ] = loadfx( "maps/mp_maps/fx_mp_express_fog_water" ); + level._effect[ "fx_mp_fumes_vent_xsm_int" ] = loadfx( "maps/mp_maps/fx_mp_fumes_vent_xsm_int" ); + level._effect[ "fx_mp_vent_heat_distort" ] = loadfx( "maps/mp_maps/fx_mp_vent_heat_distort" ); + level._effect[ "fx_insects_swarm_dark_lg" ] = loadfx( "bio/insects/fx_insects_swarm_dark_lg" ); + level._effect[ "fx_mp_debris_papers_narrow" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers_narrow" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_mp_express_train_dust_side2" ] = loadfx( "maps/mp_maps/fx_mp_express_train_dust_side2" ); + level._effect[ "fx_mp_express_train_dust" ] = loadfx( "maps/mp_maps/fx_mp_express_train_dust" ); + level._effect[ "fx_mp_express_train_dust_side" ] = loadfx( "maps/mp_maps/fx_mp_express_train_dust_side" ); + level._effect[ "fx_lf_mp_express_sun1" ] = loadfx( "lens_flares/fx_lf_mp_express_sun1" ); + level._effect[ "fx_light_god_ray_mp_express" ] = loadfx( "env/light/fx_light_god_ray_mp_express" ); + level._effect[ "fx_light_god_ray_mp_express2" ] = loadfx( "env/light/fx_light_god_ray_mp_express2" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_express_ceiling_light_big" ] = loadfx( "light/fx_express_ceiling_light_big" ); + level._effect[ "fx_express_ceiling_light_small" ] = loadfx( "light/fx_express_ceiling_light_small" ); + level._effect[ "fx_window_god_ray_sm" ] = loadfx( "light/fx_window_god_ray_sm" ); + level._effect[ "fx_express_train_side_light" ] = loadfx( "light/fx_express_train_side_light" ); + level._effect[ "fx_express_hall_light_one" ] = loadfx( "light/fx_express_hall_light_one" ); + level._effect[ "fx_express_hall_light_5" ] = loadfx( "light/fx_express_hall_light_5" ); + level._effect[ "fx_light_god_ray_mp_slums" ] = loadfx( "env/light/fx_light_god_ray_mp_slums" ); + level._effect[ "fx_express_ceiling_light_xsm" ] = loadfx( "light/fx_express_ceiling_light_xsm" ); + level._effect[ "fx_mp_light_police_car" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car" ); + level._effect[ "fx_drone_rectangle_light_03" ] = loadfx( "light/fx_drone_rectangle_light_03" ); + level._effect[ "fx_express_flood_light" ] = loadfx( "light/fx_express_flood_light" ); + level._effect[ "fx_express_flood_light_beam" ] = loadfx( "light/fx_express_flood_light_beam" ); + level._effect[ "fx_mp_express_vista_smoke01" ] = loadfx( "maps/mp_maps/fx_mp_express_vista_smoke01" ); + level._effect[ "fx_mp_express_vista_fire01" ] = loadfx( "maps/mp_maps/fx_mp_express_vista_fire01" ); +} + +precache_createfx_fx() +{ +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "banner_side_thin" ] = %fxanim_mp_express_banner_side_thin_anim; +} diff --git a/mp_express/maps/mp/mp_express_train.gsc b/mp_express/maps/mp/mp_express_train.gsc new file mode 100644 index 0000000..b067d63 --- /dev/null +++ b/mp_express/maps/mp/mp_express_train.gsc @@ -0,0 +1,651 @@ +#include maps/mp/killstreaks/_supplydrop; +#include maps/mp/gametypes/_gameobjects; +#include maps/mp/gametypes/ctf; +#include maps/mp/gametypes/_weaponobjects; +#include maps/mp/killstreaks/_rcbomb; +#include maps/mp/_tacticalinsertion; +#include maps/mp/_events; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + precachevehicle( "express_train_engine_mp" ); + precachemodel( "p6_bullet_train_car_phys" ); + precachemodel( "p6_bullet_train_engine_rev" ); + precacheshader( "compass_train_carriage" ); + precachestring( &"traincar" ); + precachestring( &"trainengine" ); + gates = getentarray( "train_gate_rail", "targetname" ); + brushes = getentarray( "train_gate_rail_brush", "targetname" ); + triggers = getentarray( "train_gate_kill_trigger", "targetname" ); + traintriggers = getentarray( "train_kill_trigger", "targetname" ); + _a22 = brushes; + _k22 = getFirstArrayKey( _a22 ); + while ( isDefined( _k22 ) ) + { + brush = _a22[ _k22 ]; + brush disconnectpaths(); + _k22 = getNextArrayKey( _a22, _k22 ); + } + waittime = 0,05; + _a28 = gates; + _k28 = getFirstArrayKey( _a28 ); + while ( isDefined( _k28 ) ) + { + gate = _a28[ _k28 ]; + gate.waittime = waittime; + waittime += 0,05; + gate.og_origin = gate.origin; + brush = getclosest( gate.origin, brushes ); + brush linkto( gate ); + gate.kill_trigger = getclosest( gate.origin, triggers ); + if ( isDefined( gate.kill_trigger ) ) + { + gate.kill_trigger enablelinkto(); + gate.kill_trigger linkto( gate ); + } + _k28 = getNextArrayKey( _a28, _k28 ); + } + start = getvehiclenode( "train_start", "targetname" ); + endgates = getentarray( "train_gate_rail_end", "targetname" ); + entrygate = getclosest( start.origin, endgates ); + i = 0; + while ( i < endgates.size ) + { + if ( endgates[ i ] == entrygate ) + { + i++; + continue; + } + else + { + exitgate = endgates[ i ]; + break; + } + i++; + } + cars = []; + cars[ 0 ] = spawnvehicle( "p6_bullet_train_engine_phys", "train", "express_train_engine_mp", start.origin, ( 0, 0, 1 ) ); + cars[ 0 ] ghost(); + cars[ 0 ] setcheapflag( 1 ); + _a64 = traintriggers; + _k64 = getFirstArrayKey( _a64 ); + while ( isDefined( _k64 ) ) + { + traintrigger = _a64[ _k64 ]; + cars[ 0 ].trainkilltrigger = traintrigger; + traintrigger.origin = start.origin; + traintrigger enablelinkto(); + traintrigger linkto( cars[ 0 ] ); + _k64 = getNextArrayKey( _a64, _k64 ); + } + i = 1; + while ( i < 20 ) + { + cars[ i ] = spawn( "script_model", start.origin ); + cars[ i ] setmodel( "p6_bullet_train_car_phys" ); + cars[ i ] ghost(); + cars[ i ] setcheapflag( 1 ); + i++; + } + cars[ 20 ] = spawn( "script_model", start.origin ); + cars[ 20 ] setmodel( "p6_bullet_train_engine_rev" ); + cars[ 20 ] ghost(); + cars[ 20 ] setcheapflag( 1 ); + if ( level.timelimit ) + { + seconds = level.timelimit * 60; + add_timed_event( int( seconds * 0,25 ), "train_start" ); + add_timed_event( int( seconds * 0,75 ), "train_start" ); + } + else + { + if ( level.scorelimit ) + { + add_score_event( int( level.scorelimit * 0,25 ), "train_start" ); + add_score_event( int( level.scorelimit * 0,75 ), "train_start" ); + } + } + level thread train_think( gates, entrygate, exitgate, cars, start ); +} + +showaftertime( time ) +{ + wait time; + self show(); +} + +train_think( gates, entrygate, exitgate, cars, start ) +{ + level endon( "game_ended" ); + for ( ;; ) + { + level waittill( "train_start" ); + entrygate gate_move( -172 ); + traintiming = getdvarfloatdefault( "scr_express_trainTiming", 4 ); + exitgate thread waitthenmove( traintiming, -172 ); + array_func( gates, ::gate_move, -172 ); + _a121 = gates; + _k121 = getFirstArrayKey( _a121 ); + while ( isDefined( _k121 ) ) + { + gate = _a121[ _k121 ]; + gate playloopsound( "amb_train_incomming_beep" ); + gate playsound( "amb_gate_move" ); + _k121 = getNextArrayKey( _a121, _k121 ); + } + gatedownwait = getdvarintdefault( "scr_express_gateDownWait", 2 ); + wait gatedownwait; + _a129 = gates; + _k129 = getFirstArrayKey( _a129 ); + while ( isDefined( _k129 ) ) + { + gate = _a129[ _k129 ]; + gate stoploopsound( 2 ); + _k129 = getNextArrayKey( _a129, _k129 ); + } + wait 2; + cars[ 0 ] attachpath( start ); + if ( isDefined( cars[ 0 ].trainkilltrigger ) ) + { + cars[ 0 ] thread train_move_think( cars[ 0 ].trainkilltrigger ); + } + cars[ 0 ] startpath(); + cars[ 0 ] showaftertime( 0,2 ); + cars[ 0 ] thread record_positions(); + cars[ 0 ] thread watch_end(); + cars[ 0 ] playloopsound( "amb_train_lp" ); + cars[ 0 ] setclientfield( "train_moving", 1 ); + next = "_b"; + i = 1; + while ( i < cars.size ) + { + if ( i == 1 ) + { + wait 0,4; + } + else + { + wait 0,35; + } + if ( i >= 3 && ( i % 3 ) == 0 ) + { + cars[ i ] playloopsound( "amb_train_lp" + next ); + switch( next ) + { + case "_b": + next = "_c"; + break; + break; + case "_c": + next = "_d"; + break; + break; + case "_d": + next = ""; + break; + break; + default: + next = "_b"; + break; + break; + } + } + cars[ i ] thread watch_player_touch(); + if ( i == ( cars.size - 1 ) ) + { + cars[ i ] thread car_move(); + i++; + continue; + } + else + { + cars[ i ] thread car_move(); + } + i++; + } + traintiming = getdvarfloatdefault( "scr_express_trainTiming2", 2 ); + entrygate thread waitthenmove( traintiming ); + gateupwait = getdvarfloatdefault( "scr_express_gateUpWait", 6,5 ); + wait gateupwait; + exitgate gate_move(); + array_func( gates, ::gate_move ); + _a205 = gates; + _k205 = getFirstArrayKey( _a205 ); + while ( isDefined( _k205 ) ) + { + gate = _a205[ _k205 ]; + gate playsound( "amb_gate_move" ); + _k205 = getNextArrayKey( _a205, _k205 ); + } + wait 6; + } +} + +waitthenmove( time, distance ) +{ + wait time; + self gate_move( distance ); +} + +record_positions() +{ + self endon( "reached_end_node" ); + if ( isDefined( level.train_positions ) ) + { + return; + } + level.train_positions = []; + level.train_angles = []; + for ( ;; ) + { + level.train_positions[ level.train_positions.size ] = self.origin; + level.train_angles[ level.train_angles.size ] = self.angles; + wait 0,05; + } +} + +watch_player_touch() +{ + self endon( "end_of_track" ); + self endon( "delete" ); + self endon( "death" ); + for ( ;; ) + { + self waittill( "touch", entity ); + if ( isplayer( entity ) ) + { + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + } +} + +watch_end() +{ + self waittill( "reached_end_node" ); + self ghost(); + self setclientfield( "train_moving", 0 ); + self stoploopsound( 0,2 ); + self playsound( "amb_train_end" ); +} + +car_move() +{ + self setclientfield( "train_moving", 1 ); + i = 0; + while ( i < level.train_positions.size ) + { + self.origin = level.train_positions[ i ]; + self.angles = level.train_angles[ i ]; + wait 0,05; + if ( i == 4 ) + { + self show(); + } + i++; + } + self notify( "end_of_track" ); + self ghost(); + self setclientfield( "train_moving", 0 ); + self stoploopsound( 0,2 ); + self playsound( "amb_train_end" ); +} + +gate_rotate( yaw ) +{ + self rotateyaw( yaw, 5 ); +} + +gate_move( z_dist ) +{ + if ( isDefined( self.kill_trigger ) ) + { + self thread gate_move_think( isDefined( z_dist ) ); + } + if ( !isDefined( z_dist ) ) + { + self moveto( self.og_origin, 5 ); + } + else + { + self.og_origin = self.origin; + self movez( z_dist, 5 ); + } +} + +train_move_think( kill_trigger ) +{ + self endon( "movedone" ); + for ( ;; ) + { + wait 0,05; + pixbeginevent( "train_move_think" ); + entities = getdamageableentarray( self.origin, 200 ); + _a327 = entities; + _k327 = getFirstArrayKey( _a327 ); + while ( isDefined( _k327 ) ) + { + entity = _a327[ _k327 ]; + if ( isDefined( entity.targetname ) && entity.targetname == "train" ) + { + } + else + { + if ( isplayer( entity ) ) + { + break; + } + else if ( !entity istouching( kill_trigger ) ) + { + break; + } + else if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + break; + } + else + { + if ( !isalive( entity ) ) + { + break; + } + else if ( isDefined( entity.targetname ) ) + { + if ( entity.targetname == "talon" ) + { + entity notify( "death" ); + break; + } + else if ( entity.targetname == "rcbomb" ) + { + entity maps/mp/killstreaks/_rcbomb::rcbomb_force_explode(); + break; + } + else if ( entity.targetname == "riotshield_mp" ) + { + entity dodamage( 1, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + break; + } + } + else if ( isDefined( entity.helitype ) && entity.helitype == "qrdrone" ) + { + watcher = entity.owner maps/mp/gametypes/_weaponobjects::getweaponobjectwatcher( "qrdrone" ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + break; + } + else + { + if ( entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + break; + } + else if ( !isDefined( entity.owner ) ) + { + break; + } + else if ( entity.name == "proximity_grenade_mp" ) + { + watcher = entity.owner getwatcherforweapon( entity.name ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( !isweaponequipment( entity.name ) ) + { + break; + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + break; + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( entity.classname == "auto_turret" ) + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + break; + } + else + { + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + } + } + } + _k327 = getNextArrayKey( _a327, _k327 ); + } + self destroy_supply_crates(); + if ( level.gametype == "ctf" ) + { + _a434 = level.flags; + _k434 = getFirstArrayKey( _a434 ); + while ( isDefined( _k434 ) ) + { + flag = _a434[ _k434 ]; + if ( flag.curorigin != flag.trigger.baseorigin && flag.visuals[ 0 ] istouching( kill_trigger ) ) + { + flag maps/mp/gametypes/ctf::returnflag(); + } + _k434 = getNextArrayKey( _a434, _k434 ); + } + } + else if ( level.gametype == "sd" && !level.multibomb ) + { + if ( level.sdbomb.visuals[ 0 ] istouching( kill_trigger ) ) + { + level.sdbomb maps/mp/gametypes/_gameobjects::returnhome(); + } + } + pixendevent(); + } +} + +gate_move_think( ignoreplayers ) +{ + self endon( "movedone" ); + corpse_delay = 0; + if ( isDefined( self.waittime ) ) + { + wait self.waittime; + } + for ( ;; ) + { + wait 0,4; + pixbeginevent( "gate_move_think" ); + entities = getdamageableentarray( self.origin, 100 ); + _a473 = entities; + _k473 = getFirstArrayKey( _a473 ); + while ( isDefined( _k473 ) ) + { + entity = _a473[ _k473 ]; + if ( ignoreplayers == 1 && isplayer( entity ) ) + { + } + else + { + if ( !entity istouching( self.kill_trigger ) ) + { + break; + } + else if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + break; + } + else + { + if ( !isalive( entity ) ) + { + break; + } + else if ( isDefined( entity.targetname ) ) + { + if ( entity.targetname == "talon" ) + { + entity notify( "death" ); + break; + } + else if ( entity.targetname == "rcbomb" ) + { + entity maps/mp/killstreaks/_rcbomb::rcbomb_force_explode(); + break; + } + else if ( entity.targetname == "riotshield_mp" ) + { + entity dodamage( 1, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + break; + } + } + else if ( isDefined( entity.helitype ) && entity.helitype == "qrdrone" ) + { + watcher = entity.owner maps/mp/gametypes/_weaponobjects::getweaponobjectwatcher( "qrdrone" ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + break; + } + else + { + if ( entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + break; + } + else if ( !isDefined( entity.owner ) ) + { + break; + } + else if ( entity.name == "proximity_grenade_mp" ) + { + watcher = entity.owner getwatcherforweapon( entity.name ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( !isweaponequipment( entity.name ) ) + { + break; + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + break; + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( entity.classname == "auto_turret" ) + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + break; + } + else + { + entity dodamage( entity.health * 2, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + } + } + } + _k473 = getNextArrayKey( _a473, _k473 ); + } + self destroy_supply_crates(); + if ( getTime() > corpse_delay ) + { + self destroy_corpses(); + } + if ( level.gametype == "ctf" ) + { + _a578 = level.flags; + _k578 = getFirstArrayKey( _a578 ); + while ( isDefined( _k578 ) ) + { + flag = _a578[ _k578 ]; + if ( flag.visuals[ 0 ] istouching( self.kill_trigger ) ) + { + flag maps/mp/gametypes/ctf::returnflag(); + } + _k578 = getNextArrayKey( _a578, _k578 ); + } + } + else if ( level.gametype == "sd" && !level.multibomb ) + { + if ( level.sdbomb.visuals[ 0 ] istouching( self.kill_trigger ) ) + { + level.sdbomb maps/mp/gametypes/_gameobjects::returnhome(); + } + } + pixendevent(); + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +destroy_supply_crates() +{ + crates = getentarray( "care_package", "script_noteworthy" ); + _a628 = crates; + _k628 = getFirstArrayKey( _a628 ); + while ( isDefined( _k628 ) ) + { + crate = _a628[ _k628 ]; + if ( distancesquared( crate.origin, self.origin ) < 10000 ) + { + if ( crate istouching( self ) ) + { + playfx( level._supply_drop_explosion_fx, crate.origin ); + playsoundatposition( "wpn_grenade_explode", crate.origin ); + wait 0,1; + crate maps/mp/killstreaks/_supplydrop::cratedelete(); + } + } + _k628 = getNextArrayKey( _a628, _k628 ); + } +} + +destroy_corpses() +{ + corpses = getcorpsearray(); + i = 0; + while ( i < corpses.size ) + { + if ( distancesquared( corpses[ i ].origin, self.origin ) < 10000 ) + { + corpses[ i ] delete(); + } + i++; + } +} diff --git a/mp_frostbite/aitype/enemy_dog_mp.gsc b/mp_frostbite/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_frostbite/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_frostbite/character/character_mp_german_shepherd.gsc b/mp_frostbite/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_frostbite/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_frostbite/maps/mp/createfx/mp_frostbite_fx.gsc b/mp_frostbite/maps/mp/createfx/mp_frostbite_fx.gsc new file mode 100644 index 0000000..bca61e4 --- /dev/null +++ b/mp_frostbite/maps/mp/createfx/mp_frostbite_fx.gsc @@ -0,0 +1,2860 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -410,489, 345,821, 558,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -431,489, 871,849, 214,527 ); + ent.v[ "angles" ] = ( 347, 90, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1246,37, 304,34, 189,397 ); + ent.v[ "angles" ] = ( 347, 90, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1050,76, 314,52, 206,873 ); + ent.v[ "angles" ] = ( 347, 90, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1115,24, 1032,81, 101,825 ); + ent.v[ "angles" ] = ( 347,877, 111,503, -4,72963 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1053,44, 1180,17, 108,399 ); + ent.v[ "angles" ] = ( 359,172, 123,419, -7,22717 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 983,494, 1598,5, 61,6371 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 818,352, 1591,27, 63,3892 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 678,869, 1602,85, 71,7692 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1584,13, 678,159, 124,486 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1800,8, 688,808, 126,639 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1301,85, 709,648, 130,766 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1350,78, 545,744, 132,122 ); + ent.v[ "angles" ] = ( 339,112, 104,574, 0,26208 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1606,44, 547,41, 125,742 ); + ent.v[ "angles" ] = ( 339,112, 104,574, 0,26208 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1859,05, 541,8, 121,616 ); + ent.v[ "angles" ] = ( 339,112, 104,574, 0,26208 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1711,23, -248,152, 119,149 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1585,66, -343,091, 141,168 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1578,81, -489,108, 144,886 ); + ent.v[ "angles" ] = ( 350,001, 93,0331, -0,996706 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2048,52, -531,028, 25,1159 ); + ent.v[ "angles" ] = ( 356,994, 87,982, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 956,886, -106,427, 69,6195 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -193,875, -20,1535, 63,7605 ); + ent.v[ "angles" ] = ( 335,303, 102,934, -2,95054 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 147,72, 54,2082, 64,3255 ); + ent.v[ "angles" ] = ( 333,719, 118,933, -3,79815 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -572,565, -440,487, 64,125 ); + ent.v[ "angles" ] = ( 348,422, 98,22, 2,98695 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1606,71, 880,84, 110,08 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1415,67, 794,614, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 896,915, 789,888, 56,1301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 847,485, 1042,18, 0,742375 ); + ent.v[ "angles" ] = ( 354, 109, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 964,191, 1168,55, 2,37129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 110 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 438,593, 1612,08, 76,2332 ); + ent.v[ "angles" ] = ( 345, 142, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6,27805, 1143,96, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -586,372, 1120,37, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 76 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1161,95, 733,162, 65,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 76 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1318,87, 503,012, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 41 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1639,08, 355,24, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 41 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1622,95, 72,4744, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 41 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1820,12, -253,217, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1475,96, -443,467, 56,125 ); + ent.v[ "angles" ] = ( 355, 47, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1409,93, -618,197, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 62 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1426,87, -917,553, 0,125003 ); + ent.v[ "angles" ] = ( 345,084, 85,7899, 1,60435 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -105,279, -1188,07, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 471,92, -815,453, -40,3381 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 119 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1447,43, -315,122, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 100 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1452,07, -513,203, 21,0218 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1455,23, -192,242, 5,13793 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1726,22, -186,785, 4,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1761,9, 102,847, 5,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2169,18, 113,584, 18,125 ); + ent.v[ "angles" ] = ( 351, 108, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2124,46, 523,848, 4,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2221,31, 848,326, 11,5135 ); + ent.v[ "angles" ] = ( 353, 116, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1454,74, 241,055, -3,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1335,88, 376,854, 13,4588 ); + ent.v[ "angles" ] = ( 346, 40, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1984,88, 283,926, -3,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1832,77, 735,174, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 95 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1470,94, 598,016, 1,31151 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1014,62, 297,766, 47,9473 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 765,571, 287,984, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 31 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 825,692, 23,3701, 66,1783 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 100 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 667,626, -187,924, 70,0544 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 100 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 404,235, -178,886, 66,3638 ); + ent.v[ "angles" ] = ( 351,138, 89,8779, 1,57542 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -198,611, -85,379, 62,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 73 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -373,343, -98,6424, 69,8701 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -553,452, -168,865, 75,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1507,88, 255,227, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1194,86, -576,922, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 73 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 813,295, 871,923, 354,766 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 760,55, 988,125, 363,46 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 517,585, 1024,08, 362,876 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 434,362, 907,079, 359,725 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 438,788, 846,343, 358,271 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_chunk_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 813,539, 862,23, 354,23 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_chunk_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 429,893, 862,586, 358,027 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10,2365, 1441,62, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7,47807, 951,592, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 221,355, 900,579, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 121 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -94,9166, 646,579, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -567,915, 776,265, 301,943 ); + ent.v[ "angles" ] = ( 347, 90, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 136,442, -1097,94, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 762,275, -491,978, 49,6536 ); + ent.v[ "angles" ] = ( 350,945, 85,6623, 4,26175 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1040,67, -958,227, 61,7022 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 56 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2488,57, 233,782, 8,37213 ); + ent.v[ "angles" ] = ( 349,111, 105,623, -0,113745 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2594, 587,095, 103,614 ); + ent.v[ "angles" ] = ( 339,112, 104,574, 0,262091 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2434,62, 500,223, 58,4831 ); + ent.v[ "angles" ] = ( 339,112, 104,574, 0,26208 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1353, -540,598, 71,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1947,27, -515,917, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 60 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1601,17, 292,119, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1779,07, -130,077, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -887,939, -571,526, 65,256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 67 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1527,44, -1146,04, 3,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 67 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -148,638, -1125,93, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 197,25, -1129,5, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 805,686, -935,813, 48,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 646,383, -763,118, 50 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1126,07, -941,536, 48 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1358,37, -193,483, 16,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1676,54, 15,1295, 7,125 ); + ent.v[ "angles" ] = ( 360, 51, 3 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1098,81, 257,341, 47,4326 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2084,11, 130,564, 7,50085 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 108 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1474,77, 631,001, 0,37949 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1187,07, 849,917, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 847,56, 967,599, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 825,005, 1380,25, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 30,2135, 1304,47, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 63 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 15,5181, 835,403, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 63 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -104,706, 952,34, 24,125 ); + ent.v[ "angles" ] = ( 0, 85, 1 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -480,859, 1329,24, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -592,442, 879,355, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 67 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -420,421, 1398,45, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -197,19, 1456,79, 29,2276 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -470,375, 1514,91, 51,4339 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 583,758, 1005,74, 474,885 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1602,64, -353,816, 62,125 ); + ent.v[ "angles" ] = ( 359, 81, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1714,87, -507,254, 62,1776 ); + ent.v[ "angles" ] = ( 359,015, 71, 0,173688 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1551,09, 151,876, 64,125 ); + ent.v[ "angles" ] = ( 359,015, 71, 0,173688 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1187,68, 452,858, 67,125 ); + ent.v[ "angles" ] = ( 359,007, 74, 0,121898 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -538,22, 974,872, -7,87501 ); + ent.v[ "angles" ] = ( 359,007, 74, 0,121898 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -451,847, 1356,68, -7,875 ); + ent.v[ "angles" ] = ( 359,073, 59, 0,37468 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 58,556, 1288,42, -39,875 ); + ent.v[ "angles" ] = ( 359, 80, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -29,3202, 808,395, -39,875 ); + ent.v[ "angles" ] = ( 359,018, 70, 0,190945 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 364,882, 792,158, 48,125 ); + ent.v[ "angles" ] = ( 341,026, 94,0735, 1,76206 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 230,171, 318,859, -36,875 ); + ent.v[ "angles" ] = ( 359,054, 100, -0,325766 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -81,1179, 222,964, -39,875 ); + ent.v[ "angles" ] = ( 359, 82, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 88,5941, -462,377, -39,875 ); + ent.v[ "angles" ] = ( 359,015, 89, -0,173688 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 353,471, -575,646, -39,7823 ); + ent.v[ "angles" ] = ( 359,161, 114,003, -0,545049 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -628,694, -610,456, 64,125 ); + ent.v[ "angles" ] = ( 359, 82, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -937,376, -563,239, 64,125 ); + ent.v[ "angles" ] = ( 359,086, 57, 0,406987 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1470,85, -687,672, 64,125 ); + ent.v[ "angles" ] = ( 359,007, 74, 0,121938 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1372,22, -1214,14, 0,124999 ); + ent.v[ "angles" ] = ( 359,048, 63, 0,309198 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -453,814, -118,852, 59,125 ); + ent.v[ "angles" ] = ( 359,412, 27, 0,809476 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -97,3538, -189,934, 64,125 ); + ent.v[ "angles" ] = ( 359,161, 48, 0,544968 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 317,258, -173,916, 64,125 ); + ent.v[ "angles" ] = ( 359,161, 48, 0,544968 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 646,727, -141,862, 64 ); + ent.v[ "angles" ] = ( 359,001, 85, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 641,548, 250,853, 56,125 ); + ent.v[ "angles" ] = ( 359,384, 29, 0,788518 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1384,2, 51,6946, 27,9466 ); + ent.v[ "angles" ] = ( 359,005, 87,0031, -0,104551 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1728,83, 166,996, 8,125 ); + ent.v[ "angles" ] = ( 359, 81,0023, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2134,42, 182,169, 2,68919 ); + ent.v[ "angles" ] = ( 359, 81,0023, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2165,07, 625,896, -2,55444 ); + ent.v[ "angles" ] = ( 359,117, 109,006, -0,46958 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1541,58, 735,416, -7,10956 ); + ent.v[ "angles" ] = ( 359,125, 110,006, -0,484919 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 934,406, 975,899, -1,875 ); + ent.v[ "angles" ] = ( 353,117, 97,9854, 0,648274 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 908,049, 1063,64, -4,64194 ); + ent.v[ "angles" ] = ( 359,044, 98,0044, -0,292465 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 388,586, 1320,35, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 118 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 391,156, 1366,37, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 136 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1756,81, -177,91, 4,125 ); + ent.v[ "angles" ] = ( 359,005, 87,0032, -0,104552 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1386,7, -803,411, 48,125 ); + ent.v[ "angles" ] = ( 359,015, 91,0037, -0,173688 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2036,4, -808,217, 24,125 ); + ent.v[ "angles" ] = ( 359,015, 91,0037, -0,173688 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1486,42, -693,82, 118,933 ); + ent.v[ "angles" ] = ( 347,512, 106,398, -3,64098 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 753,573, -895,272, 51,711 ); + ent.v[ "angles" ] = ( 359,101, 55, 0,438408 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2176,62, 540,504, 1,125 ); + ent.v[ "angles" ] = ( 359,004, 76, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -738,915, -241,185, 56,125 ); + ent.v[ "angles" ] = ( 359,101, 55, 0,438683 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1138,44, 846,245, 64,125 ); + ent.v[ "angles" ] = ( 359,775, 4, 0,974791 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -916,03, 873,045, 48,125 ); + ent.v[ "angles" ] = ( 359,758, 5, 0,970716 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -348,138, 1108,5, 29,8072 ); + ent.v[ "angles" ] = ( 359,007, 74, 0,121898 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -151,757, 986,9, -7,875 ); + ent.v[ "angles" ] = ( 359,072, 59, 0,374769 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 606,41, 1306,83, -7,875 ); + ent.v[ "angles" ] = ( 359,223, 120,004, -0,629463 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1373,09, -540,03, 37,6918 ); + ent.v[ "angles" ] = ( 359, 81,0021, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1357,6, -170,922, 6,88836 ); + ent.v[ "angles" ] = ( 359,015, 91,0037, -0,173688 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 985,956, 236,273, 60,1623 ); + ent.v[ "angles" ] = ( 359,117, 53, 0,470148 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -118,412, -1152,74, 48,125 ); + ent.v[ "angles" ] = ( 359,152, 49, 0,529983 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -38,1773, -946,719, 48,125 ); + ent.v[ "angles" ] = ( 359,152, 49, 0,529983 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1185,74, -1134,3, 0,125002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1617,67, -830,019, 24,125 ); + ent.v[ "angles" ] = ( 359,441, 25, 0,829067 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1180,23, 161,84, 46,5162 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1246,97, -680,621, 131,315 ); + ent.v[ "angles" ] = ( 350, 57, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1081,1, -672,172, 123,234 ); + ent.v[ "angles" ] = ( 345,511, 117,938, -6,63063 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 721,319, -761,369, 48 ); + ent.v[ "angles" ] = ( 359,101, 55, 0,438408 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1791,16, -494,816, 147,983 ); + ent.v[ "angles" ] = ( 350,001, 93,0331, -0,996706 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1673,27, -477,141, 133,197 ); + ent.v[ "angles" ] = ( 359,015, 91,0037, -0,173688 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2603,76, 361,873, -8,00089 ); + ent.v[ "angles" ] = ( 351,664, 120,67, -3,42382 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2853,56, 226,871, 95,125 ); + ent.v[ "angles" ] = ( 359,018, 93,004, -0,190853 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2521,49, 515,579, 74,125 ); + ent.v[ "angles" ] = ( 359, 82,0024, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1468,42, 890,959, -12 ); + ent.v[ "angles" ] = ( 351, 96, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 939,064, 1458,78, 2,52471 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2134,51, 1029,12, -6,0777 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2057,36, 718,072, -5,64542 ); + ent.v[ "angles" ] = ( 353,039, 109,955, 0,735323 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2181,79, 810,03, -6,10637 ); + ent.v[ "angles" ] = ( 356,021, 115,015, -0,418838 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1858,92, -24,7925, 4,125 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1530,15, -647,42, 29,9542 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2039,27, -604,254, 24 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 879,474, -602,926, 53,0785 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 22,4628, -829,813, 47,425 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1268,55, -834,513, 6,64585 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1431,55, -1152,96, 0,124998 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1457,25, 62,5908, 64,125 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1663,89, 533,331, 64,125 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1133,82, 829,261, 64,125 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -564,761, 887,933, -7,875 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -443,449, 1479,25, -3,93508 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 360,297, 860,369, -7,875 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 386,249, 774,188, 2,12499 ); + ent.v[ "angles" ] = ( 351, 100, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_frostbite_sun" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 41470,8, 81474,9, 43760 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -119,515, 714,995, 234,125 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -121,215, 498,973, 235,875 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 0,945453, 152,573, 44,4503 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 88,3126, 150,984, 50,2095 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 176,908, 151,647, 44,69 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 175,22, -231,261, 44,9506 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 107,641, -231,622, 49,9984 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5,23104, -231,641, 45,0699 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 473,388, -848,948, 39,2421 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 353,452, -907,799, 38,0944 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1680,42, -120,351, 70,1039 ); + ent.v[ "angles" ] = ( 358, 82,9831, 0,965522 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 176,805, -183,083, 83,2543 ); + ent.v[ "angles" ] = ( 359,021, 93,0025, -0,208115 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -184,008, -165,872, 74,1696 ); + ent.v[ "angles" ] = ( 348,681, 96,7193, 2,30019 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1695,96, 938,254, 145,382 ); + ent.v[ "angles" ] = ( 349,65, 127,717, -7,91001 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -109,235, 922,993, -15,7688 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -47,8003, 995,466, -17,8811 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -53,9125, 1100,05, -18,4345 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -56,3575, 1143,1, -17,7955 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -51,8492, 964,058, -17,6728 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 904,312, 364,054, 212,564 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 97,8298, 688,346, -39,875 ); + ent.v[ "angles" ] = ( 359,038, 97, -0,275805 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -613,823, -163,819, 230,402 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1438,62, -553,801, 225,401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1780,81, 365,135, -4,54347 ); + ent.v[ "angles" ] = ( 335,842, 63,1266, -9,91443 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 303,815, 1584,29, 11,125 ); + ent.v[ "angles" ] = ( 359,066, 102,002, -0,358535 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 79,9812, 1587,66, 15,125 ); + ent.v[ "angles" ] = ( 359,087, 105,003, -0,406902 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -131,016, 1575,53, 20,125 ); + ent.v[ "angles" ] = ( 359,066, 102,002, -0,358535 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -337,805, 1590,17, 28,125 ); + ent.v[ "angles" ] = ( 359,066, 102,002, -0,358535 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -462,52, 1829,52, 7,125 ); + ent.v[ "angles" ] = ( 359,086, 56,9967, 0,406767 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -454,152, 1767,29, 0,406441 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 41 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 452,453, 1743,78, 81,7499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 146 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1019,15, -157,945, 306,375 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1291,63, 120,656, 222,375 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1063,27, 120,605, 225,187 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 863,798, -182,834, 305,521 ); + ent.v[ "angles" ] = ( 270, 359,905, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1335,07, -424,906, 309,375 ); + ent.v[ "angles" ] = ( 270, 359,905, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1336,77, 4,01327, 310,375 ); + ent.v[ "angles" ] = ( 270, 359,905, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1544,59, -826,478, 31,2257 ); + ent.v[ "angles" ] = ( 350,001, 93,0331, -0,996706 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1246,73, -919,276, 54,3458 ); + ent.v[ "angles" ] = ( 350,315, 71,718, 2,6881 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 677,951, -908,931, 50 ); + ent.v[ "angles" ] = ( 354,116, 76,9159, 1,80844 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -509,049, 1078,32, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -570,664, 889,785, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 71 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -530,672, 1213,73, -7,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 71 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -431,572, 1414,29, -7,99274 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 46 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 835,712, 471,239, 479,875 ); + ent.v[ "angles" ] = ( 270, 0, 179,901 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 719,826, 416,339, 65,811 ); + ent.v[ "angles" ] = ( 356,372, 177,167, 0,406507 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1017,68, 772,637, 51,125 ); + ent.v[ "angles" ] = ( 359,594, 267,193, -3,62858 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1029,78, 476,913, 64,125 ); + ent.v[ "angles" ] = ( 354,602, 13,1157, 0,454655 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -634,827, 180,489, 64 ); + ent.v[ "angles" ] = ( 358,409, 93,2084, 0,757363 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2194,49, -312,139, 74,3089 ); + ent.v[ "angles" ] = ( 353,466, 89,1312, 0,871874 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1715,12, 398,506, 79,125 ); + ent.v[ "angles" ] = ( 354,824, 163,312, -0,529949 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -536,661, -571,927, 73,314 ); + ent.v[ "angles" ] = ( 356,558, 36,0075, -0,249026 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2212,07, -88,4093, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2211,75, -32,2866, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2211,91, -144,432, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2212,01, -212,255, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2211,77, 35,9239, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2348,19, -211,986, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2347,86, -143,895, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2347,94, -87,5297, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2348, -31,8133, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2348,25, 36,2742, 167,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1545,38, -153,517, 55,2496 ); + ent.v[ "angles" ] = ( 351, 96, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 319,632, 1197,52, 55,5851 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 110 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 738,551, 1299,39, 303,967 ); + ent.v[ "angles" ] = ( 22, 102, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 560,327, 1662,16, 336,292 ); + ent.v[ "angles" ] = ( 22, 102, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 737,605, 1294,06, 422,5 ); + ent.v[ "angles" ] = ( 27, 102, 0 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 550,529, 1666,92, 248,605 ); + ent.v[ "angles" ] = ( 27, 102, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1379,36, 1149,97, 281,679 ); + ent.v[ "angles" ] = ( 20, 102, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1378,42, 1144,64, 400,212 ); + ent.v[ "angles" ] = ( 26, 102, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2454,68, 947,644, 288,593 ); + ent.v[ "angles" ] = ( 21, 102, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2466,08, 822,952, 477,126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2343,11, 956,299, 557,35 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1557,37, 47,3453, 306,023 ); + ent.v[ "angles" ] = ( 25, 102, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1666,6, -434,781, 331,211 ); + ent.v[ "angles" ] = ( 25, 102, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1720,85, 622,439, 334,574 ); + ent.v[ "angles" ] = ( 25, 102, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2098,39, -790,417, 416,859 ); + ent.v[ "angles" ] = ( 19,7257, 141,742, 15,6757 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2483,7, -654,214, 467,06 ); + ent.v[ "angles" ] = ( 344,255, 114,673, 6,95148 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 446,458, 2020,81, 80,702 ); + ent.v[ "angles" ] = ( 0,809128, 138, 0,58791 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -583,849, 2010,61, 227,343 ); + ent.v[ "angles" ] = ( 0,615642, 49,9945, -0,788041 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -492,857, 1615,97, 143,168 ); + ent.v[ "angles" ] = ( 338,472, 40,3506, -0,949152 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1127,08, 702,297, 415,212 ); + ent.v[ "angles" ] = ( 0,987837, 93, -0,156472 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -609,056, 794,417, 355,914 ); + ent.v[ "angles" ] = ( 0,987837, 93, -0,156472 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -930,989, 592,953, 406,04 ); + ent.v[ "angles" ] = ( 0,987837, 93, -0,156472 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 757,411, -276,072, 310,351 ); + ent.v[ "angles" ] = ( 346,956, 92,134, -0,534579 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1981,87, 76,7472, 163,875 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1779,69, -210,987, 42,8888 ); + ent.v[ "angles" ] = ( 349,994, 87,9819, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1846,66, -235,209, 124,026 ); + ent.v[ "angles" ] = ( 349,994, 87,9819, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1274,78, 485,401, 65,0418 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 35 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1475,35, 415,719, 64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 37 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1641,93, 337,837, 65,9317 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 53 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_swirl_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1164,76, 545,027, 64,2798 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 952,394, -255,476, 439,441 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1295,5, 120,776, 319,345 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1036,88, -12,5229, 322,325 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 992,091, -473,273, 319,836 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1339,32, -301,811, 322,722 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -153,875, 315,849, 319,69 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -696,893, 798,455, 336,682 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -987,525, 551,876, 335,086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -981,479, 449,099, 334,525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -825,558, 153,875, 303,339 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 629,055, -473,713, 296,451 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1186,38, -993,517, 376,161 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1447,81, -993,863, 376,046 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_chunk_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 623,649, -231,069, 295,529 ); + ent.v[ "angles" ] = ( 90, 0, 179 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2965,28, 32,1701, 67 ); + ent.v[ "angles" ] = ( 0,998781, 98,9983, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2909,21, 374,637, -2,36977 ); + ent.v[ "angles" ] = ( 342,985, 111,944, 0,181592 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2211,08, -753,5, 170,351 ); + ent.v[ "angles" ] = ( 359,002, 78, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1684,52, 525,223, 64,6333 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 38 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1543,51, 515,486, 64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 22 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -179,607, 1001,79, -7,39586 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 72 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -70,9618, -202,45, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 89,7697, -206,78, 65,8984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -268,2, -54,6696, 61,7318 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 51 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2004,59, -456,457, 60 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1988,81, -524,631, 69,4282 ); + ent.v[ "angles" ] = ( 349,97, 83,8935, 0,595943 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1734,62, -495,639, 63,6133 ); + ent.v[ "angles" ] = ( 349,97, 83,8935, 0,595943 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2012,05, -523,307, 67,9184 ); + ent.v[ "angles" ] = ( 359,015, 71, 0,173688 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1324,67, -525,669, 68,0264 ); + ent.v[ "angles" ] = ( 359,015, 71, 0,173688 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -837,909, -212,76, 77,0417 ); + ent.v[ "angles" ] = ( 359,018, 70, 0,190854 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -827,306, -151,857, 71,5522 ); + ent.v[ "angles" ] = ( 359,212, 55,2079, 1,5764 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -470,121, -54,566, 60,2087 ); + ent.v[ "angles" ] = ( 353,383, 49,0361, 1,6611 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -741,985, -8,33043, 74,9382 ); + ent.v[ "angles" ] = ( 359,13, 58,2071, 1,53299 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1174,47, 223,719, 42,7213 ); + ent.v[ "angles" ] = ( 359,117, 53, 0,470148 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2069,54, 196,152, 6,95731 ); + ent.v[ "angles" ] = ( 347,512, 106,398, -3,64098 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2151,72, 350,151, -8,66062 ); + ent.v[ "angles" ] = ( 344,098, 94,1367, -0,306592 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2330,17, 357,681, 0,251548 ); + ent.v[ "angles" ] = ( 340,204, 119,783, -9,56968 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -628,145, 583,744, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -612,221, 584,037, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -676,405, 584,157, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -692,108, 583,929, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -740,287, 584,083, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -756,268, 584,176, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -804,318, 583,911, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -564,085, 584,13, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -804,068, 471,876, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -756,04, 472,073, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -740,036, 472,031, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -691,735, 472,299, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -676,083, 472,249, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -627,783, 472,244, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -612,054, 472,152, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -563,875, 472,303, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -588,083, 496,533, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -588,57, 559,911, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -652,028, 559,725, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -652,167, 495,684, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,395, 559,682, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -715,931, 495,709, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -779,788, 559,962, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -780,142, 495,953, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -918,872, 561,926, 191,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -919,193, 521,906, 191,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -919,142, 481,791, 191,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -756,105, 716,763, 159,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -724,218, 716,756, 159,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -691,938, 716,676, 159,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -556,311, 716,537, 159,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -523,992, 716,617, 159,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -492,089, 716,643, 159,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -673,686, 352,048, 191,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -633,822, 351,97, 191,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -593,718, 351,878, 191,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -572,118, 256,433, 187,575 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -608,279, 256,786, 187,575 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -671,999, 256,31, 187,575 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -708,757, 256,097, 187,575 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -985,622, 522,284, 195,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -985,995, 490,197, 195,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -985,807, 554,107, 195,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -147,746, 349,428, 77,4991 ); + ent.v[ "angles" ] = ( 270, 359,901, -179,901 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -130,365, 718,736, 94,0113 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -69,7436, 1086,44, 99,875 ); + ent.v[ "angles" ] = ( 270, 359,901, -179,901 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1277,93, 668,74, 210,771 ); + ent.v[ "angles" ] = ( 270, 3,81407, 87,1858 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -491,229, 813,631, 201,062 ); + ent.v[ "angles" ] = ( 270, 359,684, 5,31557 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -69,8698, 1414,98, 99,875 ); + ent.v[ "angles" ] = ( 270, 359,901, -179,901 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -70,0592, 1553,68, 99,875 ); + ent.v[ "angles" ] = ( 270, 359,901, -179,901 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -58,3877, 1529,13, -14,899 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -58,9324, 1485,83, -15,538 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -59,8564, 1437,14, -16,5071 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 413,391, -882,922, 43,487 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -78,5497, 595,372, 312,502 ); + ent.v[ "angles" ] = ( 353,758, 58,0399, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1621,32, -601,125, 32,5399 ); + ent.v[ "angles" ] = ( 359,792, 3,00146, 0,978294 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 440,55, 82,2872, 227,902 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1078,18, 1067,26, 198,452 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1519,31, 715,491, 290,503 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2240,96, -505,341, 225,006 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 189,387, 574,554, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 148,949, -176,413, -39,875 ); + ent.v[ "angles" ] = ( 359,054, 100, -0,325766 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 59,6543, 7,3049, -39,875 ); + ent.v[ "angles" ] = ( 359,054, 100, -0,325766 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 191,521, 176,221, -39,875 ); + ent.v[ "angles" ] = ( 359,012, 90, -0,15653 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 646,83, 1177,61, -7,40227 ); + ent.v[ "angles" ] = ( 359,044, 98,0044, -0,292465 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 893,525, 1336,91, -4,45304 ); + ent.v[ "angles" ] = ( 359,546, 144,005, -0,891078 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 493,85, 1045,75, -3,60695 ); + ent.v[ "angles" ] = ( 359,546, 144,005, -0,891078 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 724,871, 926,826, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 680,885, 978,213, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 617,398, 989,344, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 519,396, 989,226, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 467,53, 970,443, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 467,879, 846,393, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 467,446, 584,399, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 520,44, 538,792, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 652,975, 539,156, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 776,723, 538,757, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 776,689, 636,819, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare_flr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 724,557, 670,356, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 707,93, 950,34, 125,294 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 762,63, -453,732, 54,2509 ); + ent.v[ "angles" ] = ( 359,012, 90,0021, -0,15661 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 726,064, -500,123, 56,6932 ); + ent.v[ "angles" ] = ( 350,087, 77,8026, 1,65161 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 820,792, -353,297, 63,0578 ); + ent.v[ "angles" ] = ( 350,484, 106,216, -3,24047 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 726,256, -246,003, 69,0802 ); + ent.v[ "angles" ] = ( 350,036, 79,8322, 1,30142 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 763,402, -434,982, 105,967 ); + ent.v[ "angles" ] = ( 0,984956, 92, -0,17369 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 120,788, -320,239, -39,875 ); + ent.v[ "angles" ] = ( 0,984956, 92, -0,173691 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -22,2062, 577,305, -35,875 ); + ent.v[ "angles" ] = ( 0,839808, 69, -0,545426 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 409,424, -906,023, -31,875 ); + ent.v[ "angles" ] = ( 0,891133, 129, 0,454096 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1381,93, -369,306, 61,0835 ); + ent.v[ "angles" ] = ( 359,775, 4,0015, 0,975713 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1075,51, -370,446, 62,5436 ); + ent.v[ "angles" ] = ( 359,707, 8, 0,957625 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1985,65, -885,882, 64,2012 ); + ent.v[ "angles" ] = ( 353,575, 88,6049, 2,01385 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1984,01, -1212,78, 0,125 ); + ent.v[ "angles" ] = ( 353,575, 88,6049, 2,01385 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1904,67, -1075,63, 0,125004 ); + ent.v[ "angles" ] = ( 355,84, 347,233, -2,75015 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1370,94, -1269,43, 3,54739 ); + ent.v[ "angles" ] = ( 358,746, 29,1856, -4,82541 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1114,85, -1074,67, 16,125 ); + ent.v[ "angles" ] = ( 356,735, 12,9681, 1,11715 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1117,14, -1019,28, 16,125 ); + ent.v[ "angles" ] = ( 357,038, 0,954152, 1,77207 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -381,085, -1062,64, 56,125 ); + ent.v[ "angles" ] = ( 2,08232, 158,95, 0,247645 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -357,283, -1033,74, 49,7454 ); + ent.v[ "angles" ] = ( 356,082, 158,924, 0,248061 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -596,978, -1773,58, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 121,665, -1911,25, 126,952 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3071,03, 58,8564, 88,9139 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 95 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2837,56, -398,468, 181,837 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3206,13, 601,127, 119,138 ); + ent.v[ "angles" ] = ( 359,054, 75,9962, 0,325583 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2880,34, 1222,72, 74,7587 ); + ent.v[ "angles" ] = ( 359,109, 122, -0,454113 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2873,16, 1021,29, 131,727 ); + ent.v[ "angles" ] = ( 359,305, 141, -0,719251 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2340,5, 1580,05, 140,024 ); + ent.v[ "angles" ] = ( 359,305, 141, -0,719251 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1754,42, 1484,63, 137,346 ); + ent.v[ "angles" ] = ( 359,268, 138, -0,681895 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1361,96, 2043,41, 145,807 ); + ent.v[ "angles" ] = ( 359,577, 160, -0,906323 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 591,842, 2041,84, 105,95 ); + ent.v[ "angles" ] = ( 358,347, 139,009, -0,33636 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -400,232, 1990,04, 13,6441 ); + ent.v[ "angles" ] = ( 359,956, 39,0038, 1,68644 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 69,9684, 2107,88, 1,28343 ); + ent.v[ "angles" ] = ( 358,593, 93,9933, 0,931464 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1428,53, 887,863, 219,72 ); + ent.v[ "angles" ] = ( 358,318, 132,007, -0,132113 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2953,45, -863,059, 101,125 ); + ent.v[ "angles" ] = ( 358,593, 93,9938, 0,931424 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2826,46, -347,518, 119,125 ); + ent.v[ "angles" ] = ( 358,593, 93,9938, 0,931424 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2688,62, -669,493, 92,125 ); + ent.v[ "angles" ] = ( 359,571, 88,8153, 2,00125 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2367,93, -1707,65, 35,2581 ); + ent.v[ "angles" ] = ( 1,33836, 345,017, 1,02694 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1639,5, -1843,9, 67,2 ); + ent.v[ "angles" ] = ( 1,33836, 345,017, 1,02694 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1093,47, -1985,6, 76,7438 ); + ent.v[ "angles" ] = ( 1,33836, 345,017, 1,02694 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1139,65, 840,667, -4,43884 ); + ent.v[ "angles" ] = ( 359,515, 142,006, -0,874715 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 896,325, 837,169, -3,2757 ); + ent.v[ "angles" ] = ( 359,005, 87,0029, -0,104607 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1454,57, 752,979, -2,9017 ); + ent.v[ "angles" ] = ( 359,026, 94, -0,22497 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 774,531, 1284,86, 34,9642 ); + ent.v[ "angles" ] = ( 359,642, 96,4544, 2,15746 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 450,141, 923,149, 104,737 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -172,875, 844,878, 114,97 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -638,788, 284,317, 101,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -990,711, 486,784, 92,1028 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -497,464, -529,336, 106,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 21 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2187, -217,43, 85,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1781,36, 421,173, 90,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -322,625, 841,645, 200,125 ); + ent.v[ "angles" ] = ( 340,029, 98,8078, 1,09128 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2230,5, -410,027, 60 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1961,81, -413,822, 60,012 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2409,31, -406,356, 60,1158 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1567,3, 15,8327, 73,6424 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1129,25, -380,019, 60,1486 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 39,7269, 54,7206, 64 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 618,787, -38,2608, 54,5498 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2087, 299,791, -11,9931 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2283,6, 313,643, -11,5676 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2486,87, 324,088, -11,9918 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 756,071, -344,468, 59,3139 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 782,81, -683,56, 64,1483 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2023,91, -572,185, 25,3241 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 458,531, -931,23, 46,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 273,137, -1036,51, 46,125 ); + ent.v[ "angles" ] = ( 359,293, 36, 0,707153 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 72,4933, -831,49, 48,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 592,736, -1963,96, 157,856 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2014,75, 843,229, -3,65592 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 105 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1719,02, 1026,22, -5,80841 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1133,39, 903,992, -0,307993 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 141 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1814,78, -105,902, 5,03904 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 141 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_window" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1954,54, -33,1109, 71,2383 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -546,664, 893,999, -2,65976 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2089,88, -462,942, 115,954 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -352,048, 527,365, 168,275 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2159,74, -175,033, 203,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2184,14, -175,025, 203,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2208,24, -175,084, 203,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2275,08, -74,1907, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2275,3, -10,3107, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2275,32, 53,7201, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2275,67, 118,469, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2147,16, 118,471, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2211,41, 118,283, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2083,1, 118,329, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2019,25, 118,314, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1955,12, 118,402, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1890,93, 118,367, 202,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1080,96, 570,823, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 951,14, 570,963, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1080,88, 669,162, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_circle_light_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 950,7, 669,02, 215,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 973,998, 515,875, 353,876 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ice_fall_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1137,16, 681,198, 346,875 ); + ent.v[ "angles" ] = ( 270, 359,664, -1,66394 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 957,381, -682,211, 208,401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1477,76, -841,114, 13,3145 ); + ent.v[ "angles" ] = ( 332, 77,9739, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1667,83, 37,5091, 69,7823 ); + ent.v[ "angles" ] = ( 358,198, 72,9795, 1,29793 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1078,24, 848,467, 65,0004 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_flurries_fine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -564,389, 918,585, -5,75974 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 60 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 327,339, 968,668, -7,79999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 66 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_ground_blow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -77,0725, -8,0472, 64,822 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 41 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2346,28, -50,0406, 299,822 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1984,92, -47,1318, 295,911 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1186,38, 90,2745, 363,951 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 898,6, -223,106, 384,704 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 478,244, -254,185, 346,325 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -487,69, -715,612, 445,474 ); + ent.v[ "angles" ] = ( 350,735, 71,6936, 3,77909 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1019,49, -702,781, 424,311 ); + ent.v[ "angles" ] = ( 350,735, 71,6936, 3,77909 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1127,56, 175,511, 353,106 ); + ent.v[ "angles" ] = ( 356,722, 72,089, 3,73584 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -976,165, 573,195, 396,454 ); + ent.v[ "angles" ] = ( 352,731, 71,8263, 3,75999 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1305,64, 1084,22, 457,041 ); + ent.v[ "angles" ] = ( 351,821, 100,073, -0,113968 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1083,43, 1045,53, 459,697 ); + ent.v[ "angles" ] = ( 353,324, 63,7885, 4,73728 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 546,363, 925,207, 472,706 ); + ent.v[ "angles" ] = ( 356,254, 81,044, 2,24349 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 764,777, 900,444, 414,889 ); + ent.v[ "angles" ] = ( 356,254, 81,044, 2,24349 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1004,61, 618,336, 491,023 ); + ent.v[ "angles" ] = ( 356,254, 81,044, 2,24349 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1370,55, -1018,57, 395,701 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 765,705, -1116,99, 411,094 ); + ent.v[ "angles" ] = ( 349, 94, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -761,592, -721,762, 430,575 ); + ent.v[ "angles" ] = ( 350,735, 71,6936, 3,77909 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 346,625, -538,651, -40 ); + ent.v[ "angles" ] = ( 0,669214, 150, 0,743289 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 229,388, 425,756, -40 ); + ent.v[ "angles" ] = ( 356,979, 113,989, 0,208445 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -271,429, 230,294, 430,9 ); + ent.v[ "angles" ] = ( 350,735, 71,6936, 3,77909 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,792, 830,757, 420,728 ); + ent.v[ "angles" ] = ( 350,002, 92,9843, 0,176406 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1104,47, -469,625, 319,067 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,326, -477,801, 254,576 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 759,308, -993,975, 376,341 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 621,908, -232,911, 297,082 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 408,424, -232,051, 294,804 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 958,807, -155,43, 313,846 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1097,8, -695,668, 410,537 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -966,635, -1277,67, 123,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -874,747, -1275,83, 122,786 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -780,595, -1275,62, 122,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2019,23, -143,623, 190,087 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -964,516, 2063,36, 754,845 ); + ent.v[ "angles" ] = ( 344, 91, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -966,646, 3773,95, 1013,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2063,53, -97,3347, 130,145 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3009,12, 89,5479, 17,1676 ); + ent.v[ "angles" ] = ( 354, 99, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2881,71, -215,273, 80,9792 ); + ent.v[ "angles" ] = ( 354, 99, 0 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 867,734, 3940,13, 760,844 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5420,96, 638,022, 980,886 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3671,47, -208,346, 752,855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1032,59, -1043,08, 118,925 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2185,19, -135,838, 194,875 ); + ent.v[ "angles" ] = ( 271, 89,9982, -89,9982 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1896,46, 211,696, 194,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -947,225, 521,461, 181,877 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -632,545, 316,589, 182,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -444,214, -524,532, 206,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -218,013, 711,447, 394,724 ); + ent.v[ "angles" ] = ( 352,029, 56,5772, 6,05717 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1933,92, 1233,09, 82,9831 ); + ent.v[ "angles" ] = ( 0,881862, 127, 0,468935 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_tree" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1554,76, 1285,67, 84,6922 ); + ent.v[ "angles" ] = ( 0,828014, 133, 0,558549 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_lamp_post" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2012,3, -1229,33, 161,096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_frostbite_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 620,022, 416,273, 206,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1974,48, -634,144, 370,125 ); + ent.v[ "angles" ] = ( 350,735, 71,6936, 3,77909 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1744,28, -687,254, 724,304 ); + ent.v[ "angles" ] = ( 350,735, 71,6936, 3,77909 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_roof" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2877,44, 458,058, 69,5576 ); + ent.v[ "angles" ] = ( 0,260202, 82,0952, 1,75137 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2122,01, 353,132, 6,10629 ); + ent.v[ "angles" ] = ( 351,351, 91,8108, 2,49977 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_snow_gust_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1797,96, -530,791, 70,1667 ); + ent.v[ "angles" ] = ( 350,517, 81,92, -17,3009 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 410,348, 618,049, 471,859 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1975,16, -195,772, 517,209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1573,18, -592,849, 239,055 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1574,87, -594,383, 397,334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow_flick" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1574,36, -593,841, 290,021 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1574,24, -593,745, 448,135 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1573,57, -593,07, 499,804 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1563,42, -606,468, 236,928 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow_flick" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1563,08, -606,578, 291,924 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1563,39, -606,898, 344,134 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1563,58, -607,089, 396,288 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1563,31, -606,816, 448,477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1563,09, -606,594, 500,449 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_sign_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1573,9, -593,399, 344,739 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -980,858, 2468,4, 923,585 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -859,474, 4174,92, 978,359 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_frostbite_chimney_smk_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1090,74, 3282,06, 950,929 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -76; +} diff --git a/mp_frostbite/maps/mp/mp_frostbite.gsc b/mp_frostbite/maps/mp/mp_frostbite.gsc new file mode 100644 index 0000000..b5f224d --- /dev/null +++ b/mp_frostbite/maps/mp/mp_frostbite.gsc @@ -0,0 +1,168 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level thread spawnkilltrigger(); + maps/mp/mp_frostbite_fx::main(); + precachemodel( "dh_facilities_sign_08" ); + precachemodel( "p6_fro_concrete_planter" ); + precachemodel( "p6_fro_bookstore_window_trm" ); + precachemodel( "collision_clip_256x256x10" ); + precachemodel( "collision_clip_64x64x10" ); + precachemodel( "collision_physics_256x256x10" ); + precachemodel( "collision_clip_32x32x32" ); + precachemodel( "collision_clip_128x128x10" ); + precachemodel( "collision_clip_wall_32x32x10" ); + precachemodel( "collision_clip_wall_64x64x10" ); + precachemodel( "collision_mp_frost_kitchen_weap" ); + maps/mp/_load::main(); + maps/mp/mp_frostbite_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_frostbite" ); + prop1 = spawn( "script_model", ( -972, 559, 182 ) ); + prop1.angles = vectorScale( ( 0, 0, 1 ), 90 ); + prop2 = spawn( "script_model", ( -973, 521, 182 ) ); + prop2.angles = vectorScale( ( 0, 0, 1 ), 90 ); + prop3 = spawn( "script_model", ( -972, 485, 182 ) ); + prop3.angles = vectorScale( ( 0, 0, 1 ), 90 ); + prop4 = spawn( "script_model", ( -966, 558, 182 ) ); + prop4.angles = vectorScale( ( 0, 0, 1 ), 270 ); + prop5 = spawn( "script_model", ( -965, 522, 182 ) ); + prop5.angles = vectorScale( ( 0, 0, 1 ), 270 ); + prop6 = spawn( "script_model", ( -966, 484, 182 ) ); + prop6.angles = vectorScale( ( 0, 0, 1 ), 270 ); + prop1 setmodel( "dh_facilities_sign_08" ); + prop2 setmodel( "dh_facilities_sign_08" ); + prop3 setmodel( "dh_facilities_sign_08" ); + prop4 setmodel( "dh_facilities_sign_08" ); + prop5 setmodel( "dh_facilities_sign_08" ); + prop6 setmodel( "dh_facilities_sign_08" ); + planter1 = spawn( "script_model", ( -1609, -827,405, 131,751 ) ); + planter1.angles = ( 359,846, 90,58, 89,9993 ); + planter2 = spawn( "script_model", ( -1609, -827,41, 81,75 ) ); + planter2.angles = ( 359,846, 90,58, 89,9993 ); + planter1 setmodel( "p6_fro_concrete_planter" ); + planter2 setmodel( "p6_fro_concrete_planter" ); + brick1 = spawn( "script_model", ( 1129, 703, 95,75 ) ); + brick1.angles = ( 90, 180, -90 ); + brick2 = spawn( "script_model", ( 1127,75, 712, 95,75 ) ); + brick2.angles = ( 90, 180, -90 ); + brick3 = spawn( "script_model", ( 1129, 703, 47,75 ) ); + brick3.angles = ( 90, 180, -90 ); + brick4 = spawn( "script_model", ( 1127,75, 712, 47,75 ) ); + brick4.angles = ( 90, 180, -90 ); + brick5 = spawn( "script_model", ( 1129, 694, 95,75 ) ); + brick5.angles = ( 90, 180, -90 ); + brick6 = spawn( "script_model", ( 1129, 694, 47,75 ) ); + brick6.angles = ( 90, 180, -90 ); + brick7 = spawn( "script_model", ( 1129, 685, 95,75 ) ); + brick7.angles = ( 90, 180, -90 ); + brick8 = spawn( "script_model", ( 1129, 685, 47,75 ) ); + brick8.angles = ( 90, 180, -90 ); + brick1 setmodel( "p6_fro_bookstore_window_trm" ); + brick2 setmodel( "p6_fro_bookstore_window_trm" ); + brick3 setmodel( "p6_fro_bookstore_window_trm" ); + brick4 setmodel( "p6_fro_bookstore_window_trm" ); + brick5 setmodel( "p6_fro_bookstore_window_trm" ); + brick6 setmodel( "p6_fro_bookstore_window_trm" ); + brick7 setmodel( "p6_fro_bookstore_window_trm" ); + brick8 setmodel( "p6_fro_bookstore_window_trm" ); + spawncollision( "collision_clip_256x256x10", "collider", ( 145, -1295,5, 115,5 ), vectorScale( ( 0, 0, 1 ), 88,9 ) ); + spawncollision( "collision_clip_256x256x10", "collider", ( 28, -1295,5, 115,5 ), vectorScale( ( 0, 0, 1 ), 88,9 ) ); + spawncollision( "collision_clip_256x256x10", "collider", ( 252,5, -1251,5, 114 ), ( 0, 45,1, -88,9 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 448, 1577, -10,5 ), vectorScale( ( 0, 0, 1 ), 277 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 1199, 89, 67,5 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_clip_32x32x32", "collider", ( 84,5, 361,75, 66,5 ), ( 359,904, 8,05247, 11,9159 ) ); + spawncollision( "collision_clip_32x32x32", "collider", ( 80, 390, 69,5 ), vectorScale( ( 0, 0, 1 ), 9,19998 ) ); + spawncollision( "collision_clip_32x32x32", "collider", ( 75,5, 418, 66,75 ), ( 1,00357, 9,19998, -11 ) ); + spawncollision( "collision_clip_128x128x10", "collider", ( 244,75, -860, -45 ), vectorScale( ( 0, 0, 1 ), 27 ) ); + spawncollision( "collision_clip_wall_32x32x10", "collider", ( 958,5, 716,5, 130 ), vectorScale( ( 0, 0, 1 ), 5,6 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( -1126, -909, 44,5 ), vectorScale( ( 0, 0, 1 ), 105,6 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( -1130, -789,5, 44,5 ), vectorScale( ( 0, 0, 1 ), 83,9 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( -1130, -789,5, 107 ), vectorScale( ( 0, 0, 1 ), 83,9 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( -1126, -909, 106 ), vectorScale( ( 0, 0, 1 ), 105,6 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( -1130, -789,5, 164,5 ), vectorScale( ( 0, 0, 1 ), 83,9 ) ); + spawncollision( "collision_mp_frost_kitchen_weap", "collider", ( 1994, -281,5, 16 ), ( 0, 0, 1 ) ); + setdvar( "compassmaxrange", "2100" ); + visionsetnaked( "mp_frostbite", 1 ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + level.onplayerkilledextraunthreadedcbs[ level.onplayerkilledextraunthreadedcbs.size ] = ::on_player_killed; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level glass_node_fix(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2250", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); +} + +on_player_killed( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + if ( isDefined( smeansofdeath ) && smeansofdeath == "MOD_TRIGGER_HURT" ) + { + depth = self depthinwater(); + if ( depth > 0 ) + { + origin = self.origin + ( 0, 0, depth + 5 ); + self playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], origin ); + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self.body depthinwater() > 0 ) + { + return 0,4; + } + return defaulttime; +} + +glass_node_fix() +{ + nodes = getallnodes(); + level thread glass_node_think( nodes[ 459 ] ); + level thread glass_node_think( nodes[ 454 ] ); +} + +glass_node_think( node ) +{ + wait 0,25; + ent = spawn( "script_model", node.origin, 1 ); + ent setmodel( level.deployedshieldmodel ); + ent hide(); + ent disconnectpaths(); + ent.origin -= vectorScale( ( 0, 0, 1 ), 64 ); + for ( ;; ) + { + level waittill( "glass_smash", origin ); + if ( distancesquared( origin, node.origin ) < 65536 ) + { + ent delete(); + return; + } + } +} + +spawnkilltrigger() +{ + trigger = spawn( "trigger_radius", ( 536, -1304, -104 ), 0, 256, 128 ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + player dodamage( player.health * 2, trigger.origin, trigger, trigger, "none", "MOD_SUICIDE", 0, "lava_mp" ); + } +} diff --git a/mp_frostbite/maps/mp/mp_frostbite_amb.gsc b/mp_frostbite/maps/mp/mp_frostbite_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_frostbite/maps/mp/mp_frostbite_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_frostbite/maps/mp/mp_frostbite_fx.gsc b/mp_frostbite/maps/mp/mp_frostbite_fx.gsc new file mode 100644 index 0000000..cb229eb --- /dev/null +++ b/mp_frostbite/maps/mp/mp_frostbite_fx.gsc @@ -0,0 +1,71 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc4" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc4(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_frostbite_fx::main(); +} + +precache_scripted_fx() +{ + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp_frost" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_lf_mp_frostbite_sun" ] = loadfx( "lens_flares/fx_lf_mp_frostbite_sun" ); + level._effect[ "fx_mp_frostbite_snow_ledge_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_ledge_runner" ); + level._effect[ "fx_mp_frostbite_snow_chunk_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_chunk_runner" ); + level._effect[ "fx_mp_frostbite_snow_gust_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_gust_runner" ); + level._effect[ "fx_mp_frostbite_snow_fog" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_fog" ); + level._effect[ "fx_mp_frostbite_snow_flurries" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_flurries" ); + level._effect[ "fx_mp_frostbite_snow_flurries_fine" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_flurries_fine" ); + level._effect[ "fx_mp_frostbite_snow_flurries_window" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_flurries_window" ); + level._effect[ "fx_mp_frostbite_snow_flurries_vista" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_flurries_vista" ); + level._effect[ "fx_mp_frostbite_snow_gust_sm_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_gust_sm_runner" ); + level._effect[ "fx_mp_frostbite_snow_swirl_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_swirl_runner" ); + level._effect[ "fx_mp_frostbite_ground_blow" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_ground_blow" ); + level._effect[ "fx_mp_frostbite_snow_gust_tree" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_gust_tree" ); + level._effect[ "fx_mp_frostbite_snow_gust_roof" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_snow_gust_roof" ); + level._effect[ "fx_mp_frostbite_ice_fall_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_ice_fall_runner" ); + level._effect[ "fx_mp_frostbite_ice_fall_sm_runner" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_ice_fall_sm_runner" ); + level._effect[ "fx_mp_frostbite_lamp_post" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_lamp_post" ); + level._effect[ "fx_frostbite_circle_light_glare" ] = loadfx( "light/fx_frostbite_circle_light_glare" ); + level._effect[ "fx_frostbite_circle_light_glare_flr" ] = loadfx( "light/fx_frostbite_circle_light_glare_flr" ); + level._effect[ "fx_mp_frostbite_lamp_int" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_lamp_int" ); + level._effect[ "fx_frostbite_exit_sign" ] = loadfx( "light/fx_frostbite_exit_sign" ); + level._effect[ "fx_mp_frostbite_sign_glow" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_sign_glow" ); + level._effect[ "fx_mp_frostbite_sign_glow_flick" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_sign_glow_flick" ); + level._effect[ "fx_light_track_omni" ] = loadfx( "light/fx_light_track_omni" ); + level._effect[ "fx_mp_frostbite_chimney_smk" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_chimney_smk" ); + level._effect[ "fx_mp_frostbite_chimney_smk_dark" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_chimney_smk_dark" ); + level._effect[ "fx_mp_frostbite_chimney_smk_vista" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_chimney_smk_vista" ); + level._effect[ "fx_mp_frostbite_steam" ] = loadfx( "maps/mp_maps/fx_mp_frostbite_steam" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "laundry" ] = %fxanim_gp_dryer_loop_anim; + level.scr_anim[ "fxanim_props" ][ "dock_chain" ] = %fxanim_mp_ver_stair_chain_sign_anim; +} + +precache_fxanim_props_dlc4() +{ + level.scr_anim[ "fxanim_props_dlc4" ][ "pennants_01" ] = %fxanim_mp_frost_pennants_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "pennants_02" ] = %fxanim_mp_frost_pennants_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "candy_sign" ] = %fxanim_mp_frost_candy_sign_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "crane01" ] = %fxanim_mp_frostbite_crane_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "crane02" ] = %fxanim_mp_frostbite_crane_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "crane03" ] = %fxanim_mp_frostbite_crane_03_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "crane04" ] = %fxanim_mp_frostbite_crane_04_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "crane05" ] = %fxanim_mp_frostbite_crane_05_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "river_ice" ] = %fxanim_mp_frost_ice_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "river_ice2" ] = %fxanim_mp_frost_ice_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "gate" ] = %fxanim_mp_frost_gate_anim; +} diff --git a/mp_hijacked/aitype/enemy_dog_mp.gsc b/mp_hijacked/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_hijacked/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_hijacked/character/character_mp_german_shepherd.gsc b/mp_hijacked/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_hijacked/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_hijacked/maps/mp/createart/mp_hijacked_art.gsc b/mp_hijacked/maps/mp/createart/mp_hijacked_art.gsc new file mode 100644 index 0000000..ad15f3d --- /dev/null +++ b/mp_hijacked/maps/mp/createart/mp_hijacked_art.gsc @@ -0,0 +1,18 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_hijacked", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_hijacked/maps/mp/createfx/mp_hijacked_fx.gsc b/mp_hijacked/maps/mp/createfx/mp_hijacked_fx.gsc new file mode 100644 index 0000000..f2fb4fa --- /dev/null +++ b/mp_hijacked/maps/mp/createfx/mp_hijacked_fx.gsc @@ -0,0 +1,1125 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hijacked_jacuzzi_surface" ); + ent.v[ "origin" ] = ( -90,1606, 407,945, 78,25 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hijacked_jacuzzi_steam" ); + ent.v[ "origin" ] = ( -92,9653, 422,779, 63,25 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hijacked_jacuzzi_steam" ); + ent.v[ "origin" ] = ( -2614,9, -20,3813, -95,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hijacked_jacuzzi_steam" ); + ent.v[ "origin" ] = ( -2759,45, 58,6316, -104,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_hijacked_sun1" ); + ent.v[ "origin" ] = ( 54061,7, 41344,5, 11412 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 573,76, 144,561, 590,63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 575,94, -142,117, 589,247 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble" ); + ent.v[ "origin" ] = ( -179,646, 7,25836, 122,875 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( -465,908, 138,082, -64,465 ); + ent.v[ "angles" ] = ( 9, 182, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( -468,137, 68,1617, -60,7915 ); + ent.v[ "angles" ] = ( 12, 182, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( -103,006, 72,8002, -62,7217 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 9 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( -106,924, 136,317, -61,3858 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 249,077, 167,536, 2,53726 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 253,728, 264,641, 2,55747 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 250,685, 53,8219, 2,39799 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 248,311, -54,6842, 2,48961 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 513,258, 281,236, 10,9304 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -696,048, -89,0073, -57,8954 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 118,751, 292,842, 2,43011 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -18,5375, 141,529, -35,5661 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -18,518, 77,4566, -34,5459 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( 117,807, -103,555, 1,44659 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -34,3314, -102,545, 1,5224 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 446,336, -28,4747, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 377,337, -182,483, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 490,328, 3,23551, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 446,01, -182,985, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 376,631, -27,1527, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 758,531, 3,59217, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 759,759, 99,8241, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 620,425, 53,7003, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 490,33, 98,9914, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 376,754, -357,466, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 446,882, -357,271, 139,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1187,12, -122,312, 35,6413 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1186,13, -47,936, 35,1503 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1186,13, 49,0877, 34,0694 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1186,13, 131,298, 35,2899 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1186,13, 223,104, 35,8791 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1817,29, -289,908, 32,2346 ); + ent.v[ "angles" ] = ( 359,642, 111, 0,934186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1696,05, -333,653, 32,5811 ); + ent.v[ "angles" ] = ( 359,642, 111, 0,934186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1582,26, -423,005, 32,352 ); + ent.v[ "angles" ] = ( 359,066, 201,006, -0,358378 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1604,22, -483,334, 32,7958 ); + ent.v[ "angles" ] = ( 359,066, 201,006, -0,358378 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1751,84, -487,875, 33,1293 ); + ent.v[ "angles" ] = ( 0,342038, 290, -0,93969 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1872,43, -443,984, 33,0916 ); + ent.v[ "angles" ] = ( 0,342038, 290, -0,93969 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1942,16, -267,088, 32,6749 ); + ent.v[ "angles" ] = ( 0,358317, 69,0062, 0,933602 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1983,03, -380,555, 32,9846 ); + ent.v[ "angles" ] = ( 0,838674, 327, -0,544645 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -570,107, 142,98, -35,5373 ); + ent.v[ "angles" ] = ( 88, 90, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -571,625, 78,8251, -34,5465 ); + ent.v[ "angles" ] = ( 88, 90, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -564,348, -102,706, 2,48068 ); + ent.v[ "angles" ] = ( 88, 90, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -419,713, -103,868, 2,49886 ); + ent.v[ "angles" ] = ( 88, 90, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -565,811, 292,94, 2,40515 ); + ent.v[ "angles" ] = ( 88, 90, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -423,956, 293,601, 2,51992 ); + ent.v[ "angles" ] = ( 88, 90, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 577,031, 281,144, 10,9113 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 640,278, 281,298, 10,9397 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( 706,447, 281,368, 10,9698 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -756,471, -89,2182, -56,0133 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -821,903, -89,4519, -56,978 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -882,412, -89,3507, -56,9891 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -989,636, 16,0656, -55,0216 ); + ent.v[ "angles" ] = ( 88,6103, 136,011, -134,995 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -989,634, 79,6021, -56,0087 ); + ent.v[ "angles" ] = ( 88,6103, 136,011, -134,995 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool_sm" ); + ent.v[ "origin" ] = ( -1095,11, 185,499, -56,0051 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -901,551, -187,907, 76,25 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -1400,1, -87,1361, 137,241 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -1322,14, -87,9463, 150,799 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -1303,17, -87,0827, 150,289 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -1381,12, -87,2421, 162,007 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -1328,09, -86,0462, 174,384 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_candle" ); + ent.v[ "origin" ] = ( -994,381, -252,893, 71,7775 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1126,48, -381,899, 35,9584 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1200,14, -382,218, 36,8903 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 641,813, -380,196, 35,4826 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 429,163, -380,125, 35,4553 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1197,07, 380,125, 35,0122 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 785,838, 380,125, 34,5463 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 736,895, 380,125, 34,8262 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 604,161, 380,125, 34,9135 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 552,431, 380,074, 34,3145 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1691,75, 334,55, 33,1672 ); + ent.v[ "angles" ] = ( 359,642, 249,007, -0,933731 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1811,76, 288,482, 32,6657 ); + ent.v[ "angles" ] = ( 359,642, 249,007, -0,933731 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1937,39, 264,144, 32,4951 ); + ent.v[ "angles" ] = ( 0,275624, 286, -0,961268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1980,37, 375,74, 33,2224 ); + ent.v[ "angles" ] = ( 0,874606, 29,0074, 0,484845 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1872,41, 441,024, 32,7692 ); + ent.v[ "angles" ] = ( 0,358351, 69,0066, 0,933587 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1750,96, 487,491, 33,2152 ); + ent.v[ "angles" ] = ( 0,358351, 69,0066, 0,933587 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1606,62, 495,855, 33,2961 ); + ent.v[ "angles" ] = ( 359,06, 160,001, 0,342072 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 1583,03, 434,408, 33,1925 ); + ent.v[ "angles" ] = ( 359,06, 160,001, 0,342072 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -815,355, -408,166, 40,8107 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -815,41, -319,905, 40,9866 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -815,433, -229,21, 41,1303 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -765,875, 65,5175, 33,4091 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -765,875, 160,831, 31,7225 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -765,875, 309,588, 33,5642 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -688,691, 347,301, 40,4182 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -688,847, 436,865, 40,1937 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -864,829, -443,716, 40,9711 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -945,951, -443,718, 8,40014 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1022,13, -380,125, -30,4432 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1384,84, -380,013, -29,4748 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1471,65, -443,713, -19,6586 ); + ent.v[ "angles" ] = ( 0, 270, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1410,8, -414,607, -20,735 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1516,16, -407,42, -19,4231 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1515,75, 417,051, -20,281 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -975,564, 380,125, -32,9078 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1216,8, 380,125, -31,3572 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1319,46, 380,125, -30,7559 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1466,67, 460,727, -20,6871 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -946,329, 422,841, -20,0038 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -825,988, 460,74, 40,8308 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -718,748, 460,508, 40,6256 ); + ent.v[ "angles" ] = ( 0, 90,0032, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1626,13, 239,382, -32,4148 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1626,13, 81,7721, -29,5249 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1626,13, -91,6108, -30,4321 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( -1626,13, -248,435, -30,3627 ); + ent.v[ "angles" ] = ( 359, 180,004, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble_splsh" ); + ent.v[ "origin" ] = ( -177,097, 6,37252, 13 ); + ent.v[ "angles" ] = ( 270, 0, 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_sm" ); + ent.v[ "origin" ] = ( -200,111, 289,863, 43,125 ); + ent.v[ "angles" ] = ( 357,001, 268,003, -0,104803 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -34,3951, 292,516, 2,41037 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "origin" ] = ( -256,192, 292,688, 2,39031 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 538,859, 61,8095, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 538,648, -47,9137, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 538,2, -155,784, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 764,317, 109,847, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 866,193, 83,1137, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 867,596, 60,2214, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 867,094, 34,388, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 866,284, 8,7123, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 866,546, -18,2473, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 867,679, -42,9575, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 866,797, -69,3849, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 889,049, -123,277, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 888,088, -212,317, 273,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 980,837, 161,725, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1033,73, 124,848, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1071,68, 83,8391, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1091,16, 47,3708, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1099,24, 11,8642, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1100,05, -13,1719, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1090,06, -48,5755, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1070,73, -84,269, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1033,9, -122,884, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 977,734, -158,304, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 973,899, 0, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1021,04, 0,304002, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1070,15, 0, 283,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1088,26, -313,302, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1050,56, -314,54, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1012,32, -314,039, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1088,38, -140,576, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1026,52, -139,238, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 960,154, -140,634, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 959,825, -33,4129, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1052,86, -32,6805, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1087,59, -13,8603, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1123,2, -12,9115, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1012,61, 104,865, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1051,96, 105,646, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1087,86, 104,489, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 868,913, 350,593, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1011,85, 349,628, 145,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1014,04, 188,655, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 869,275, 190,384, 147,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1454,85, 98,4955, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1355,53, 99,1895, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1254,55, 98,2117, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1254,02, -81,9806, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1356,24, -81,7505, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1454,68, -82,3886, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1568,28, -72,1987, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1570,08, 51,0223, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1568,25, -202,529, 75,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1453,59, -177,412, 83,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1454,58, 14,9142, 83,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1253,8, 15,5092, 83,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1322,88, 246,12, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1163,39, 246,638, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1164,17, 146,156, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1163,07, 352,566, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1477,64, 352,222, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1478,12, 245,472, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1477,61, 146,043, 67,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -814,761, -40,3514, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -885,047, -39,1045, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -813,578, 83,7546, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -883,924, 84,7102, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -960,938, 83,5231, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -959,67, 215,766, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -884,208, 216,164, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -813,736, 216,564, 155,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -874,55, -120,464, 291,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -874,63, -39,8893, 291,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -993,46, -40,1239, 291,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -993,862, 65,9499, 291,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -874,332, 65,7785, 291,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -874,009, 146,622, 291,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -990,379, -313,807, 287,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( -1041,24, -314,682, 287,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 740,937, -41,9317, 156,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 319 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 550,424, -148,593, 156,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 545,7, 30,6528, 156,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_sm" ); + ent.v[ "origin" ] = ( -563,406, -46,8539, -136,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_sm" ); + ent.v[ "origin" ] = ( -288,194, 184,573, -126,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_sm" ); + ent.v[ "origin" ] = ( 42,5135, 29,7155, -124,536 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( 496,434, 282,036, -66,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( -34,7909, 323,486, 79,796 ); + ent.v[ "angles" ] = ( 270, 0, 34 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( -141,692, 326,389, 79 ); + ent.v[ "angles" ] = ( 270, 3,75173, -37,7517 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 13,2024, 447,661, 79,2264 ); + ent.v[ "angles" ] = ( 270, 358,409, 110,591 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( -189,924, 444,388, 79,6899 ); + ent.v[ "angles" ] = ( 270, 3,17983, -112,18 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( -141,367, 506,563, 79,2371 ); + ent.v[ "angles" ] = ( 270, 357,955, -151,955 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( -36,8957, 508,739, 79 ); + ent.v[ "angles" ] = ( 270, 8,1301, 134,87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( 701,505, 282,93, -58,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( 264,006, 280,999, -76,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( 255,944, 49,5022, -57,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -199,942, 0, -121,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -352,475, 9,23384, -93,5284 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -556,845, 196,738, -125,333 ); + ent.v[ "angles" ] = ( 270, 358,551, 1,44936 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -831,253, -90,8585, -129,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -981,041, 30,9881, -133,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -1089,81, 189,329, -129,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( 169,922, 200,423, -74,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( 29,7705, 225,651, -134,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -58,4583, -24,3011, -59,3958 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -386,601, 251,434, -40,2712 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -539,588, -7,86453, -48,6544 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -257,295, 226,934, -45,323 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fog_thin_xsm" ); + ent.v[ "origin" ] = ( -581,662, 224,229, -54,7916 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; +} diff --git a/mp_hijacked/maps/mp/mp_hijacked.gsc b/mp_hijacked/maps/mp/mp_hijacked.gsc new file mode 100644 index 0000000..f83d3e1 --- /dev/null +++ b/mp_hijacked/maps/mp/mp_hijacked.gsc @@ -0,0 +1,127 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + maps/mp/mp_hijacked_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_hijacked_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_hijacked" ); + level thread water_trigger_init(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "1600", reset_dvars ); + ss.dead_friend_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_radius", "1300", reset_dvars ); + ss.dead_friend_influencer_timeout_seconds = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_timeout_seconds", "8", reset_dvars ); + ss.dead_friend_influencer_count = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_count", "7", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1200", reset_dvars ); + ss.koth_objective_influencer_inner_radius = 1400; +} + +water_trigger_init() +{ + wait 3; + triggers = getentarray( "trigger_hurt", "classname" ); + _a43 = triggers; + _k43 = getFirstArrayKey( _a43 ); + while ( isDefined( _k43 ) ) + { + trigger = _a43[ _k43 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + trigger thread water_trigger_think(); + } + _k43 = getNextArrayKey( _a43, _k43 ); + } + triggers = getentarray( "water_killbrush", "targetname" ); + _a55 = triggers; + _k55 = getFirstArrayKey( _a55 ); + while ( isDefined( _k55 ) ) + { + trigger = _a55[ _k55 ]; + trigger thread player_splash_think(); + _k55 = getNextArrayKey( _a55, _k55 ); + } +} + +player_splash_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) && isalive( entity ) ) + { + self thread trigger_thread( entity, ::player_water_fx ); + } + } +} + +player_water_fx( player, endon_condition ) +{ + maxs = self.origin + self getmaxs(); + if ( maxs[ 2 ] > 60 ) + { + maxs += vectorScale( ( 0, 0, 1 ), 10 ); + } + origin = ( player.origin[ 0 ], player.origin[ 1 ], maxs[ 2 ] ); + playfx( level._effect[ "water_splash_sm" ], origin ); +} + +water_trigger_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) ) + { + entity playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], entity.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 0,4; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a120 = triggers; + _k120 = getFirstArrayKey( _a120 ); + while ( isDefined( _k120 ) ) + { + trigger = _a120[ _k120 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + return 1; + } + } + _k120 = getNextArrayKey( _a120, _k120 ); + } + return 0; +} diff --git a/mp_hijacked/maps/mp/mp_hijacked_amb.gsc b/mp_hijacked/maps/mp/mp_hijacked_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_hijacked/maps/mp/mp_hijacked_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_hijacked/maps/mp/mp_hijacked_fx.gsc b/mp_hijacked/maps/mp/mp_hijacked_fx.gsc new file mode 100644 index 0000000..4b6d970 --- /dev/null +++ b/mp_hijacked/maps/mp/mp_hijacked_fx.gsc @@ -0,0 +1,48 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_scripted_fx() +{ + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp" ); + level._effect[ "water_splash_sm" ] = loadfx( "bio/player/fx_player_water_splash_mp_sm" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_fire_candle" ] = loadfx( "fire/fx_fire_candle" ); + level._effect[ "fx_mp_hijacked_jacuzzi_surface" ] = loadfx( "maps/mp_maps/fx_mp_hijacked_jacuzzi_surface" ); + level._effect[ "fx_mp_hijacked_jacuzzi_steam" ] = loadfx( "maps/mp_maps/fx_mp_hijacked_jacuzzi_steam" ); + level._effect[ "fx_raid_hot_tub_sm" ] = loadfx( "water/fx_raid_hot_tub_sm" ); + level._effect[ "fx_mp_vent_heat_distort" ] = loadfx( "maps/mp_maps/fx_mp_vent_heat_distort" ); + level._effect[ "fx_mp_vent_steam_sm" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_sm" ); + level._effect[ "fx_water_shower_dribble_splsh" ] = loadfx( "water/fx_water_shower_dribble_splsh" ); + level._effect[ "fx_water_shower_dribble" ] = loadfx( "water/fx_water_shower_dribble" ); + level._effect[ "fx_light_beacon_red_blink_fst_sm" ] = loadfx( "light/fx_light_beacon_red_blink_fst_sm" ); + level._effect[ "fx_light_flour_glow_v_shape_cool" ] = loadfx( "light/fx_light_flour_glow_v_shape_cool" ); + level._effect[ "fx_light_flour_glow_v_shape_cool_sm" ] = loadfx( "light/fx_light_flour_glow_v_shape_cool_sm" ); + level._effect[ "fx_light_recessed_cool_sm" ] = loadfx( "light/fx_light_recessed_cool_sm" ); + level._effect[ "fx_light_recessed_cool_sm_soft" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_lf_mp_hijacked_sun1" ] = loadfx( "lens_flares/fx_lf_mp_hijacked_sun1" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_mp_fog_thin_sm" ] = loadfx( "maps/mp_maps/fx_mp_fog_thin_sm" ); + level._effect[ "fx_mp_fog_thin_xsm" ] = loadfx( "maps/mp_maps/fx_mp_fog_thin_xsm" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "dryer" ] = %fxanim_gp_dryer_loop_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "umbrella_01" ] = %fxanim_gp_umbrella_01_anim; +} + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_hijacked_fx::main(); + maps/mp/createart/mp_hijacked_art::main(); +} diff --git a/mp_hydro/aitype/enemy_dog_mp.gsc b/mp_hydro/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_hydro/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_hydro/character/character_mp_german_shepherd.gsc b/mp_hydro/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_hydro/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_hydro/maps/mp/_events.gsc b/mp_hydro/maps/mp/_events.gsc new file mode 100644 index 0000000..9f7ac09 --- /dev/null +++ b/mp_hydro/maps/mp/_events.gsc @@ -0,0 +1,114 @@ +#include maps/mp/gametypes/_globallogic_utils; +#include maps/mp/_utility; + +add_timed_event( seconds, notify_string, client_notify_string ) +{ +/# + assert( seconds >= 0 ); +#/ + if ( level.timelimit > 0 ) + { + level thread timed_event_monitor( seconds, notify_string, client_notify_string ); + } +} + +timed_event_monitor( seconds, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + if ( !isDefined( level.starttime ) ) + { + continue; + } + else + { + millisecs_remaining = maps/mp/gametypes/_globallogic_utils::gettimeremaining(); + seconds_remaining = millisecs_remaining / 1000; + if ( seconds_remaining <= seconds ) + { + event_notify( notify_string, client_notify_string ); + return; + } + } + } +} + +add_score_event( score, notify_string, client_notify_string ) +{ +/# + assert( score >= 0 ); +#/ + if ( level.scorelimit > 0 ) + { + if ( level.teambased ) + { + level thread score_team_event_monitor( score, notify_string, client_notify_string ); + return; + } + else + { + level thread score_event_monitor( score, notify_string, client_notify_string ); + } + } +} + +any_team_reach_score( score ) +{ + _a63 = level.teams; + _k63 = getFirstArrayKey( _a63 ); + while ( isDefined( _k63 ) ) + { + team = _a63[ _k63 ]; + if ( game[ "teamScores" ][ team ] >= score ) + { + return 1; + } + _k63 = getNextArrayKey( _a63, _k63 ); + } + return 0; +} + +score_team_event_monitor( score, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + if ( any_team_reach_score( score ) ) + { + event_notify( notify_string, client_notify_string ); + return; + } + } +} + +score_event_monitor( score, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].score ) && players[ i ].score >= score ) + { + event_notify( notify_string, client_notify_string ); + return; + } + i++; + } + } +} + +event_notify( notify_string, client_notify_string ) +{ + if ( isDefined( notify_string ) ) + { + level notify( notify_string ); + } + if ( isDefined( client_notify_string ) ) + { + clientnotify( client_notify_string ); + } +} diff --git a/mp_hydro/maps/mp/createfx/mp_hydro_fx.gsc b/mp_hydro/maps/mp/createfx/mp_hydro_fx.gsc new file mode 100644 index 0000000..d26f0a0 --- /dev/null +++ b/mp_hydro/maps/mp/createfx/mp_hydro_fx.gsc @@ -0,0 +1,1925 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2052,82, -2671,41, 1529,39 ); + ent.v[ "angles" ] = ( 11, 94, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2128,64, -2679,26, 1532,27 ); + ent.v[ "angles" ] = ( 10,917, 86,8702, -1,35704 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1998,89, -2675,41, 1533,77 ); + ent.v[ "angles" ] = ( 11, 94, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1935,84, -2698,56, 1543,51 ); + ent.v[ "angles" ] = ( 10,9847, 97,0559, 0,582839 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2276,34, -2689,46, 1515,56 ); + ent.v[ "angles" ] = ( 11, 90, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2198,01, -2682,66, 1509,3 ); + ent.v[ "angles" ] = ( 10,939, 96,1114, 1,16396 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2342, -2669,86, 1511,18 ); + ent.v[ "angles" ] = ( 11, 90, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2412,65, -2700,9, 1528,06 ); + ent.v[ "angles" ] = ( 10,9729, 85,9253, -0,776853 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2329,16, -2729,37, 1550,41 ); + ent.v[ "angles" ] = ( 10,917, 93,1296, 1,35701 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2261,95, -2727,11, 1550,67 ); + ent.v[ "angles" ] = ( 11, 86, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2198,11, -2720,78, 1546,29 ); + ent.v[ "angles" ] = ( 11, 86, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2135,49, -2714,65, 1563,17 ); + ent.v[ "angles" ] = ( 10,9847, 82,9439, -0,582858 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2062,63, -2681,49, 1508,37 ); + ent.v[ "angles" ] = ( 10,9576, 93,093, 0,970567 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1992,35, -2681,47, 1514,63 ); + ent.v[ "angles" ] = ( 11, 88, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1929,37, -2678,8, 1510,25 ); + ent.v[ "angles" ] = ( 11, 88, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1873,52, -2678,1, 1527,13 ); + ent.v[ "angles" ] = ( 10,9983, 86,9813, -0,194372 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2065,54, -2396,96, 1358,82 ); + ent.v[ "angles" ] = ( 62,9828, 89,4676, -0,313342 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2312,69, -2543,77, 1356,26 ); + ent.v[ "angles" ] = ( 56,9854, 87,6956, -4,61113 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2233,31, -2524,85, 1323,56 ); + ent.v[ "angles" ] = ( 55,974, 91,3205, 1,27719 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1967,88, -2511,56, 1304 ); + ent.v[ "angles" ] = ( 55,9646, 87,7551, -1,81747 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 466,24, -1445,26, 297,358 ); + ent.v[ "angles" ] = ( 359,255, 117,854, 2,05426 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -165,424, -1170,38, 211,878 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -579,509, -1488,69, 197,625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 81 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1784,87, -1019,17, 248,562 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_hydro_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -252361, 399620, 250915 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1527,16, -1245,25, 250,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1626,52, -1182,75, 259,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2358,09, -1050,8, 239 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2308,35, -749,921, 259,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2285,1, -1218,5, 262,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2300,22, -816,447, 262,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1399,57, -161,103, 250,125 ); + ent.v[ "angles" ] = ( 24,5906, 92,3963, 0,617105 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 465,891, -73,493, 259,125 ); + ent.v[ "angles" ] = ( 355,592, 92,0962, 0,562776 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1272,36, -65,8394, 251,125 ); + ent.v[ "angles" ] = ( 17,5909, 92,3174, 0,588632 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1441,17, -335,006, 247,125 ); + ent.v[ "angles" ] = ( 0,372095, 359,142, -1,62169 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1165,74, -1326,99, 267,125 ); + ent.v[ "angles" ] = ( 359,449, 181,139, 0,601526 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1786,68, 891,308, -1093,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 151,115, 568,117, -1090,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -197,861, 569,815, -1093,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 95,0532, -1138,23, 205,859 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 101,247, -1528,84, 216,606 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -171,956, -1550,65, 219,594 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1992,57, 252,088, 54,3273 ); + ent.v[ "angles" ] = ( 57, 96, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1932,7, 254,438, 33,0202 ); + ent.v[ "angles" ] = ( 59, 93, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1721,7, 893,816, -1094,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 91 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1855,24, -1794,71, 100 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 87 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2162,79, -1805,66, 102 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 97 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2196,57, -1600,59, 97 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 103 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2024,71, -1045,98, 94,0515 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2035,64, -1092,62, 98,7927 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 91 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1795,81, -422,584, 85,3393 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 103 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2129,53, -897,87, 99,8196 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2302,38, -2404,83, 974,115 ); + ent.v[ "angles" ] = ( 356,021, 90,9852, 0,418848 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -115,691, -862,168, 216,125 ); + ent.v[ "angles" ] = ( 357, 113, 0 ); + ent.v[ "delay" ] = 0,9; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 49,1121, -864,56, 214,204 ); + ent.v[ "angles" ] = ( 353,358, 64,8608, 1,62771 ); + ent.v[ "delay" ] = 0,9; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -45,0877, -361,985, 158,61 ); + ent.v[ "angles" ] = ( 295,157, 82,8883, 2,33001 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 242,276, -339,837, 161,504 ); + ent.v[ "angles" ] = ( 320,23, 90,6643, -3,21933 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -308,234, -356,983, 149,158 ); + ent.v[ "angles" ] = ( 320,23, 90,6643, -3,21933 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -392,9, -656,784, 189,687 ); + ent.v[ "angles" ] = ( 321, 88, 0 ); + ent.v[ "delay" ] = 1,3; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -374,391, -533,755, 187,28 ); + ent.v[ "angles" ] = ( 321, 88, 0 ); + ent.v[ "delay" ] = 1,4; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -389,932, -396,36, 188,808 ); + ent.v[ "angles" ] = ( 321, 88, 0 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 326,135, -359,082, 182,243 ); + ent.v[ "angles" ] = ( 321, 88, 0 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 328,674, -504,435, 180,255 ); + ent.v[ "angles" ] = ( 321, 88, 0 ); + ent.v[ "delay" ] = 1,4; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 328,472, -648,633, 181,622 ); + ent.v[ "angles" ] = ( 321, 88, 0 ); + ent.v[ "delay" ] = 1,3; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -411,256, -509,809, 216,125 ); + ent.v[ "angles" ] = ( 270, 0, 41 ); + ent.v[ "delay" ] = 1,3; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -411,454, -452,358, 217,125 ); + ent.v[ "angles" ] = ( 270, 0, 38 ); + ent.v[ "delay" ] = 1,4; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -412,111, -387,558, 217,125 ); + ent.v[ "angles" ] = ( 270, 0, 41 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -409,556, -343,526, 217,125 ); + ent.v[ "angles" ] = ( 270, 0, 41 ); + ent.v[ "delay" ] = 1,6; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 350,58, -448,946, 218,125 ); + ent.v[ "angles" ] = ( 270, 3,75173, -36,7517 ); + ent.v[ "delay" ] = 1,4; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 350,778, -506,397, 216,125 ); + ent.v[ "angles" ] = ( 270, 0, -35 ); + ent.v[ "delay" ] = 1,3; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 349,923, -384,146, 218,125 ); + ent.v[ "angles" ] = ( 270, 0, -35 ); + ent.v[ "delay" ] = 1,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 352,478, -340,114, 218,125 ); + ent.v[ "angles" ] = ( 270, 3,94519, -35,9451 ); + ent.v[ "delay" ] = 1,6; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -160,754, -742,163, 229,08 ); + ent.v[ "angles" ] = ( 0,986304, 97,0012, 0,243874 ); + ent.v[ "delay" ] = 1,1; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 98,7076, -759,976, 222,667 ); + ent.v[ "angles" ] = ( 357,016, 83,9916, 0,313913 ); + ent.v[ "delay" ] = 1,1; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -260,946, -767,161, 217,731 ); + ent.v[ "angles" ] = ( 351,218, 99,8639, -4,09223 ); + ent.v[ "delay" ] = 1,1; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 216,33, -787,167, 223,01 ); + ent.v[ "angles" ] = ( 350,446, 75,8534, 3,64031 ); + ent.v[ "delay" ] = 1,1; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -214,648, -799,411, 276,875 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -215,156, -799,288, 276,875 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 155,16, -800,139, 276,875 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 155,668, -800,262, 276,875 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 327,634, -2034,5, 298,571 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 328,141, -2034,62, 298,571 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -407,341, -2035,22, 297,568 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -406,833, -2035,35, 297,568 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -32,3667, -1824,43, 299,875 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -31,8587, -1824,55, 299,875 ); + ent.v[ "angles" ] = ( 89, 180, 180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -356,508, -205,177, 286,419 ); + ent.v[ "angles" ] = ( 328,022, 272,359, -1,24934 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -357,091, -205,404, 286,291 ); + ent.v[ "angles" ] = ( 328,022, 272,359, -1,24934 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 282,887, -204,253, 287,226 ); + ent.v[ "angles" ] = ( 326,023, 272,413, -1,34857 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 282,995, -203,762, 287,08 ); + ent.v[ "angles" ] = ( 326,023, 272,413, -1,34857 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_mist_tail" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -216,782, -607,271, 235,581 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = 2; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_mist_tail" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 151,145, -617,3, 236 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = 2; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast_end" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 133,029, -262,021, 178,44 ); + ent.v[ "angles" ] = ( 351, 91, 0 ); + ent.v[ "delay" ] = 1,6; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast_end" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -185,263, -272,333, 178,621 ); + ent.v[ "angles" ] = ( 345, 91, 0 ); + ent.v[ "delay" ] = 1,6; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -184,765, -126,231, 134,327 ); + ent.v[ "angles" ] = ( 60, 90, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 127,468, -125,157, 143,721 ); + ent.v[ "angles" ] = ( 60, 90, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2097,75, -831,716, 92,6086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 91 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1972,71, -856,795, 95,7947 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 91 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -392,908, -2200,43, 215,404 ); + ent.v[ "angles" ] = ( 356,806, 109,298, 0,12213 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -309,16, -2207,5, 213,918 ); + ent.v[ "angles" ] = ( 355,159, 82,914, 1,22113 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -538,46, -2155,97, 196,893 ); + ent.v[ "angles" ] = ( 323,094, 155,324, 14,084 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -542,078, -2098,88, 197,934 ); + ent.v[ "angles" ] = ( 323,094, 155,324, 14,084 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -545,256, -2028,61, 200,089 ); + ent.v[ "angles" ] = ( 323,094, 155,324, 14,084 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -607,024, -2132,9, 219,125 ); + ent.v[ "angles" ] = ( 271,414, 98,003, -44,9957 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -608,403, -2075,7, 219,125 ); + ent.v[ "angles" ] = ( 270, 0, 56 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -610,299, -2014,77, 219,125 ); + ent.v[ "angles" ] = ( 270, 0, 59 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 554,313, -2133,65, 217,467 ); + ent.v[ "angles" ] = ( 270, 358,363, -59,363 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_water_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 555,163, -2015,48, 217,467 ); + ent.v[ "angles" ] = ( 271,414, 276,018, 26,9912 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 487,343, -2011,03, 201,235 ); + ent.v[ "angles" ] = ( 321,316, 6,32823, -6,49901 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 488,717, -2077,21, 202,276 ); + ent.v[ "angles" ] = ( 323,904, 22,3859, -16,2928 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast02" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 489,394, -2151,54, 198,431 ); + ent.v[ "angles" ] = ( 324,798, 25,9103, -17,3473 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1964,77, -2398,3, 979,494 ); + ent.v[ "angles" ] = ( 356,021, 90,9852, 0,418848 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_top_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2031,28, -2393,34, 976,36 ); + ent.v[ "angles" ] = ( 356, 90, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_big" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2207,85, -1932,77, 1001 ); + ent.v[ "angles" ] = ( 67, 94, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 248,47, -2224,99, 210,799 ); + ent.v[ "angles" ] = ( 347,91, 94,7895, 1,10778 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 332,683, -2207, 217,663 ); + ent.v[ "angles" ] = ( 345,36, 77,7145, 0,44837 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_spray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2162,7, -1933,88, 941,002 ); + ent.v[ "angles" ] = ( 11,4915, 87,2649, 1,66119 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_drip_splash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2157,44, -1111,23, 209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_drip_splash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2098,92, -1088,26, 209,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_spray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2103,76, -2041,85, 990,382 ); + ent.v[ "angles" ] = ( 3,37256, 91,0378, 1,87155 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1178,03, -1032,46, 263 ); + ent.v[ "angles" ] = ( 359,449, 181,139, 0,601526 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2013,31, 890,053, -1090,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1914,68, -610,823, 90,8482 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 67 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1880,64, -397,514, 89,124 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 104 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2020,74, -80,3449, 86,776 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 78 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1161,21, -2219,73, 330,268 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1097,44, -2221,31, 329,845 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,32, -1570,65, 277,64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,265, -1431,1, 277,757 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,342, -1275,48, 277,59 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,309, -1136,3, 277,667 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,312, -980,228, 277,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -230,82, -1730,54, 278,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -342,763, -1889,68, 278,767 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -264,412, -1811,45, 277,797 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 246,183, -1811,18, 277,622 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 278,68, -1888,67, 278,801 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,846, -1731,29, 278,588 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,368, -1570,14, 278,921 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,815, -1431,28, 278,65 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,739, -1275,23, 278,779 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,813, -1135,03, 278,657 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,74, -979,315, 278,772 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -112,854, -978,802, 277,81 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -112,919, -1135,25, 278,835 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -112,732, -1274,63, 278,766 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -112,64, -1430,58, 278,547 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -112,711, -1569,39, 278,708 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -33,5506, -1696,19, 278,672 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,6113, -1570,22, 279,923 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,2977, -1431,29, 279,794 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,3865, -1275,57, 279,823 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,3544, -1136,11, 279,807 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,9966, -979,138, 279,508 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 182,611, -1485,19, 435,067 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_water_pipe" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1773,05, -420,129, 264,578 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_water_pipe" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1709,45, -438,354, 266,46 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 14,8926, -1546,23, 188,995 ); + ent.v[ "angles" ] = ( 2,19847, 65,1081, 1,43134 ); + ent.v[ "delay" ] = 0,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -81,7838, -1546,74, 183,465 ); + ent.v[ "angles" ] = ( 358,861, 107,079, 1,79503 ); + ent.v[ "delay" ] = 0,5; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -425,05, -2177,78, 278,735 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 266,952, -2177,82, 278,664 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 361,152, -2177,94, 278,395 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -386,188, -2190,85, 210,57 ); + ent.v[ "angles" ] = ( 355,058, 88,9346, 0,707331 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_flood_blast01_spill" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 337,096, -2187,49, 208,808 ); + ent.v[ "angles" ] = ( 355,011, 94,9572, 0,1855 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3590,43, 2554,86, 782,503 ); + ent.v[ "angles" ] = ( 270, 7,71059, 82,2893 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3778,6, 2554,59, 783,062 ); + ent.v[ "angles" ] = ( 270, 7,71059, 82,2893 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3531,08, 1036,72, 782,533 ); + ent.v[ "angles" ] = ( 270, 0,935656, -44,9356 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3663,91, 893,345, 782,53 ); + ent.v[ "angles" ] = ( 270, 0,935656, -44,9356 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2557,32, 280,579, 782,916 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2556,95, 91,2935, 782,309 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1166,46, -1346,86, 324,539 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1223,03, -1346,82, 324,554 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1102,43, -977,076, 324,506 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1159,67, -977,072, 324,498 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1221,24, -977,027, 324,37 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1164,51, -977,078, 324,517 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1102,49, -1346,86, 324,535 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1159,28, -1347,02, 324,265 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -858,543, -685,375, 331,351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 795,354, -685,377, 331,278 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1175,51, -1988,16, 448,107 ); + ent.v[ "angles" ] = ( 40,0899, 298,827, 112,661 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1313,75, -563,076, 428 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_carrier_spark_bounce_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1584,04, -145,958, 402,055 ); + ent.v[ "angles" ] = ( 354, 0, 1 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2026,38, -914,425, 108,525 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1898,96, -462,226, 87,2239 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 13 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2058,9, -490,204, 91,016 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1733,47, -441,988, 87,4946 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 80 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1760,61, -218,768, 86,0852 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 86 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1813,8, -357,981, 88,7497 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 76 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1898,29, -752,978, 92,5347 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 104 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1965,87, -217,876, 87,6689 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 89 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1193,49, -1598,6, 458,892 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1151,18, -1890,76, 445,465 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -761,044, -1983, 447,302 ); + ent.v[ "angles" ] = ( 49,9351, 305,521, 118,249 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -941,731, -1993,28, 448,463 ); + ent.v[ "angles" ] = ( 56,1551, 299,64, 114,481 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1631,7, -627,746, 263,989 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 69 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1572,26, -643,986, 257,223 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1786,75, 289,149, -35,9182 ); + ent.v[ "angles" ] = ( 57, 96, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_side_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1731,66, 309,789, -63,2046 ); + ent.v[ "angles" ] = ( 59, 93, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1953,89, 914,666, -1088,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 91 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2118,36, -1494,5, 216,817 ); + ent.v[ "angles" ] = ( 325, 81, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1228,44, -1336,03, 260 ); + ent.v[ "angles" ] = ( 0,663961, 13,139, -0,473831 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1262,03, -1041,72, 268 ); + ent.v[ "angles" ] = ( 0,663961, 13,139, -0,473831 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -31,7349, -493,683, 208,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -243,987, -1056,39, 307 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -595,417, -1151,62, 271,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 161,59, -1030,86, 308 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 579,632, -1184,81, 265,689 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2013,41, -754,307, 91,7958 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 89 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1966,16, -523,137, 90,5133 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 89 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2045,27, -573,982, 90,6243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 86 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_river_top_b" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2238,35, -2395,33, 992,096 ); + ent.v[ "angles" ] = ( 356, 90, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2075,28, -1508,54, 173 ); + ent.v[ "angles" ] = ( 325, 81, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_splash_edge" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -369,975, -485,596, 222,454 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 1,3; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_splash_edge" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 308,799, -502,748, 219,842 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 2 ); + ent.v[ "delay" ] = 1,3; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1726,93, -1330,76, 207,412 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2675,57, -892,195, 208,398 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2240,97, -454,214, 208,397 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_drip_splash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2146,62, -1098,63, 208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_drip_splash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2204,18, -1111,86, 208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 612,585, -405,044, 370,427 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 611,52, -232,791, 370,365 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1026,78, -233,827, 338,456 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -627,625, -2549,36, 330,112 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 36,6848, -1363,15, 433,484 ); + ent.v[ "angles" ] = ( 90, 0, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -99,2721, -1363,84, 433,497 ); + ent.v[ "angles" ] = ( 90, 0, -180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1506,4, 6537,77, -1707,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -110,955, 6425,6, -1708,61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1648,25, 6513,32, -1601,85 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -755,422, -2210,77, 355,505 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -990,859, -2210,49, 355,781 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1160,49, -2210,69, 355,674 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1324,89, -2210,81, 355,395 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 697,706, -2210,69, 355,645 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 934,094, -2210,73, 355,574 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1095,97, -2210,71, 355,615 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1266,26, -2210,73, 355,57 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1129,97, -1598,62, 459,151 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -818,794, 4644,14, -1102,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -494,498, 4642,28, -1097,56 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -179,776, 4631,22, -1098,74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 210,565, 4640,95, -1098,38 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 530,588, 4606,62, -1097,53 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 847,021, 4569,71, -1096,77 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1169,26, 4575,48, -1097,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1490,5, 4568,88, -1089,24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1808,96, 4557,56, -1097,55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2123,02, 4566,43, -1089,41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2447,17, 4560,09, -1095,19 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2092,44, 4648,44, -1095,74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2416,74, 4650,31, -1101,06 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1775,94, 4639,8, -1096,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1455,34, 4626, -1096,56 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1137,36, 4612,66, -1095,71 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_big" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2097,83, -2070,16, 879,83 ); + ent.v[ "angles" ] = ( 60, 94, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1139,88, -824,86, 507,588 ); + ent.v[ "angles" ] = ( 271, 89,9983, -179,998 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1078,68, -840,045, 512,588 ); + ent.v[ "angles" ] = ( 271, 89,9983, -179,998 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 388,105, -1287,29, 294,53 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -446,469, -1259,1, 295,287 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_xlrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1831,52, 942,271, -896,811 ); + ent.v[ "angles" ] = ( 342, 94, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_xlrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1886,32, 976,355, -885,117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_xlrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 117,786, 632,247, -795,534 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_xlrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -152,096, 631,545, -802,303 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_xlrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3719,54, -113,025, 305,403 ); + ent.v[ "angles" ] = ( 7,17566, 49,5615, -6,9832 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_big2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4414,34, -581,72, 1075,19 ); + ent.v[ "angles" ] = ( 69,5146, 41,4026, -2,31795 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_big2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4398,49, -595,333, 1033,61 ); + ent.v[ "angles" ] = ( 59,6776, 134,947, 0,447249 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_xlrg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3731,79, -136,636, 381,986 ); + ent.v[ "angles" ] = ( 6,80137, 141,437, 7,34813 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_big" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 188,664, -2420,59, 1359,28 ); + ent.v[ "angles" ] = ( 67, 94, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam_big" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -270,973, -2491,22, 1402,88 ); + ent.v[ "angles" ] = ( 67, 94, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -895,288, -1886,13, 442,363 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -769,576, -1962,03, 493,174 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -940,206, -1957,09, 489,871 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1104,88, -1953,88, 487,722 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1147,49, -2035,41, 542,3 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -975,02, -2029,6, 538,41 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -809,417, -2026,56, 536,377 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1106,69, -2116,2, 596,382 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -850,023, -2112,99, 594,235 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 970,745, -1988,04, 509,452 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1139,39, -1997,84, 516,014 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1016,15, -1928,18, 469,385 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1182,59, -1929,43, 470,215 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1013,57, -2090,6, 578,113 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1186,74, -2085,46, 574,673 ); + ent.v[ "angles" ] = ( 28,7087, 293,974, -63,9909 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1941,3, -939,942, 109,079 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2058,17, -971,553, 108,239 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1876,73, -943,336, 107,028 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1777,02, 11537,5, -979,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1137,53, 11487, -1007,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 211,173, 11552,3, -961,54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -496,111, 11501,4, -995,7 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 854,694, 11612, -986,82 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2129,98, 11633,4, -995,78 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1496,67, 11584,3, -1012,94 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2151,06, -580,885, 87,5826 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 86 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2085,95, -580,363, 86,5911 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 95 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1194,13, -1524,94, 466,635 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1144,59, -1522,29, 466,582 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1996,43, -986,693, 90,3395 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2073,9, -986,414, 89,3378 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2011,42, -975,625, 90,1791 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1933,06, -981,509, 90,1401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 778,852, -188,641, 363,812 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 652,786, -188,265, 363,575 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -659,127, -188,247, 363,552 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -720,189, -188,412, 363,732 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -783,297, -188,119, 363,266 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -844,539, -188,557, 363,788 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -907,553, -188,297, 363,64 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 196,213, -1779,2, 199,125 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 304,422, -2054,55, 208,125 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -263,879, -1802,53, 204,125 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -254,012, -1994,83, 205,125 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -379,435, -2038,39, 224,579 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam2_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 173,415, -1907,23, 211,125 ); + ent.v[ "angles" ] = ( 0,344091, 88,8737, 2,15786 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -331,952, -2177,79, 278,705 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -388,918, -1923,71, 271,096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -280,028, -1726,48, 271,093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 231,21, -1726,62, 271,094 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare_green2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,759, -1923,87, 272,092 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_hydro_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -30,1824, -1579,32, 309,125 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 779,03, -2532,73, 183,806 ); + ent.v[ "angles" ] = ( 295,839, 139,671, -144,856 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1020,87, -2557,2, 221,763 ); + ent.v[ "angles" ] = ( 336, 88,9793, -0,942621 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1072,77, -2517,25, 190,005 ); + ent.v[ "angles" ] = ( 291,776, 32,4804, -42,5563 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 881,23, -2660,54, 241,661 ); + ent.v[ "angles" ] = ( 336, 88,9793, -0,942621 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -978,173, -2568,53, 250,768 ); + ent.v[ "angles" ] = ( 336,179, 94,4455, -2,15952 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1201,39, -2531,02, 180,913 ); + ent.v[ "angles" ] = ( 291,17, 167,755, -170,712 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -979,148, -2519,8, 208,843 ); + ent.v[ "angles" ] = ( 307,343, 2,5724, -8,60869 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_steam_behind_glass1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1195,29, -2683,66, 251,995 ); + ent.v[ "angles" ] = ( 336,179, 94,4455, -2,15952 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 0,151123, -1587,44, 442,789 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -123,081, -1587,82, 442,394 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 122,44, -1587,9, 442,212 ); + ent.v[ "angles" ] = ( 43,0721, 88,7345, -1,13359 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -223,631, -1543,76, 442,708 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 43 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 161,536, -1357,21, 442,74 ); + ent.v[ "angles" ] = ( 45, 180, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 24,6861, -1201,88, 442,912 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_tunnel_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -100,39, -1201,2, 442,438 ); + ent.v[ "angles" ] = ( 46, 270, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 170,602, -1485,09, 435,117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fan_light_shaft_anim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -532,995, -2072,46, 343,882 ); + ent.v[ "angles" ] = ( 86,6199, 6,51528, 90,9333 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fan_light_shaft_anim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 466,932, -2071,99, 344,881 ); + ent.v[ "angles" ] = ( 86,6199, 6,51528, 90,9333 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2417,8, 11582,2, -996,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_steam3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1998,76, -585,349, 114,366 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1797,08, -436,714, 92,6481 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 14 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1991,6, -581,31, 103,341 ); + ent.v[ "angles" ] = ( 2,18255, 3,90224, 1,46031 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2071,43, -222,302, 101,03 ); + ent.v[ "angles" ] = ( 3,18223, 3,92776, 1,4615 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2138,59, -262,778, 98,3231 ); + ent.v[ "angles" ] = ( 3,37162, 354,915, 0,945253 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_strip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1934,04, -580,823, 104,675 ); + ent.v[ "angles" ] = ( 3,18223, 3,92776, 1,4615 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_corner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1829,18, -211,296, 86,0448 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2104,86, 11695, -963,247 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1464,07, 11650,3, -946,247 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -824,585, 11599,9, -974,277 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -183,165, 11614,2, -962,067 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 524,119, 11665,1, -955,907 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1167,64, 11724,8, -993,187 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_dam_water_top_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1791,62, 11697,1, -1009,31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3377,75, 3713,56, 779,958 ); + ent.v[ "angles" ] = ( 270, 7,71059, 82,2893 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3571,35, 3718,45, 780,517 ); + ent.v[ "angles" ] = ( 270, 7,71059, 82,2893 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_light_warning_blnk_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -32,3471, -1623,88, 312,233 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_hydro_light_warning_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -32,3471, -1623,88, 312,233 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 612,112, -565,014, 370,42 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1026,83, -361,781, 338,476 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1028,39, -569,425, 338,553 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1158,21, -647,371, 442,898 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1158,55, -871,536, 466,552 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1223,68, -869,977, 466,543 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1224,29, -648,488, 442,431 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1036,21, -252,793, 338,364 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -674,316, -539,396, 370,552 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_hydro_tube_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1074,26, -588,583, 338,418 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_hatch_spray" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -26,2665, -1572,47, 256,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_killstreak_spillway_2" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1900, -488, 110 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_killstreak_spillway_1" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1970, -500, 135 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_mp_hydro_killstreak_spillway_mid" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -30, -935, 220 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; +} diff --git a/mp_hydro/maps/mp/mp_hydro.gsc b/mp_hydro/maps/mp/mp_hydro.gsc new file mode 100644 index 0000000..180b51e --- /dev/null +++ b/mp_hydro/maps/mp/mp_hydro.gsc @@ -0,0 +1,472 @@ +#include maps/mp/gametypes/_gameobjects; +#include maps/mp/gametypes/ctf; +#include maps/mp/gametypes/_weaponobjects; +#include maps/mp/killstreaks/_rcbomb; +#include maps/mp/_tacticalinsertion; +#include maps/mp/_compass; +#include maps/mp/_events; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + precacheitem( "hydro_water_mp" ); + maps/mp/mp_hydro_fx::main(); + precachemodel( "collision_physics_256x256x10" ); + precachemodel( "collision_missile_128x128x10" ); + precachemodel( "collision_physics_64x64x64" ); + maps/mp/_load::main(); + maps/mp/mp_hydro_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_hydro" ); + maps/mp/mp_hydro_amb::main(); +/# + execdevgui( "devgui_mp_hydro" ); +#/ + registerclientfield( "world", "pre_wave", 1, 1, "int" ); + registerclientfield( "world", "big_wave", 1, 1, "int" ); + setdvar( "compassmaxrange", "2300" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_256x256x10", "collider", ( 3695, 340, 84 ), ( 0, 44,8, -90 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 3449, 82, 84 ), ( 0, 44,8, -90 ) ); + spawncollision( "collision_physics_64x64x64", "collider", ( 577,5, -1835, 309,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_64x64x64", "collider", ( 577,5, -1786,5, 339,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_64x64x64", "collider", ( -641,5, -1834,5, 309,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_64x64x64", "collider", ( -641,5, -1786, 339,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -521,5, -2106, 325 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -521,5, -2041, 325 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( 471,5, -2106, 325 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( 471,5, -2041, 325 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( 1432, -1912, 376,5 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( 1516,5, -1912, 376,5 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1490, -1916,5, 376,5 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -1574,5, -1916,5, 376,5 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + level.waterrushfx = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_wall" ); + level.waterambientfxmiddlefront = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_middle_front" ); + level.waterambientfxmiddleback = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_middle_back" ); + level.waterambientfxleftfront = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_right" ); + level.waterambientfxleftmiddle = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_left_mid" ); + level.waterambientfxleftback = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_left_back" ); + level.waterambientfxrightfront = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_left" ); + level.waterambientfxrightmiddle = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_right_mid" ); + level.waterambientfxrightback = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_right_back" ); + level.waterambientfxboxfront = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_box" ); + level.waterambientfxboxback = loadfx( "maps/mp_maps/fx_mp_hydro_flood_splash_box_back" ); + setdvar( "tu6_player_shallowWaterHeight", "10.5" ); + visionsetnaked( "mp_hydro", 1 ); + level thread removeobjectsondemovertime(); + set_dvar_if_unset( "scr_hydro_water_rush", 1 ); + if ( getgametypesetting( "allowMapScripting" ) ) + { + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + initwatertriggers(); + } +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2400", reset_dvars ); +} + +leveloverridetime( defaulttime ) +{ + if ( isDefined( self.lastattacker ) && isDefined( self.lastattacker.targetname ) && self.lastattacker.targetname == "water_kill_trigger" ) + { + return 0,4; + } + return defaulttime; +} + +initwatertriggers() +{ + water_kill_triggers = getentarray( "water_kill_trigger", "targetname" ); + water_mover = spawn( "script_model", ( 0, 0, 1 ) ); + water_mover setmodel( "tag_origin" ); + water_ambient_mover = spawn( "script_model", ( 0, 0, 1 ) ); + water_ambient_mover setmodel( "tag_origin" ); + water_ambient_front_pillar = spawn( "script_model", ( -31, -888, 202 ) ); + water_ambient_front_pillar setmodel( "tag_origin" ); + water_ambient_front_pillar.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_front_pillar linkto( water_ambient_mover ); + water_ambient_back_pillar = spawn( "script_model", ( -32, -1535, 202 ) ); + water_ambient_back_pillar setmodel( "tag_origin" ); + water_ambient_back_pillar.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_back_pillar linkto( water_ambient_mover ); + water_ambient_front_block = spawn( "script_model", ( -32, -331, 193 ) ); + water_ambient_front_block setmodel( "tag_origin" ); + water_ambient_front_block.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_front_block linkto( water_ambient_mover ); + water_ambient_back_block = spawn( "script_model", ( -32, -1800, 199 ) ); + water_ambient_back_block setmodel( "tag_origin" ); + water_ambient_back_block.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_back_block linkto( water_ambient_mover ); + water_ambient_back_right = spawn( "script_model", ( -467, -1975, 190 ) ); + water_ambient_back_right setmodel( "tag_origin" ); + water_ambient_back_right.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_back_right linkto( water_ambient_mover ); + water_ambient_back_left = spawn( "script_model", ( 404, -1975, 190 ) ); + water_ambient_back_left setmodel( "tag_origin" ); + water_ambient_back_left.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_back_left linkto( water_ambient_mover ); + water_ambient_middle_right = spawn( "script_model", ( -274, -1680, 185 ) ); + water_ambient_middle_right setmodel( "tag_origin" ); + water_ambient_middle_right.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_middle_right linkto( water_ambient_mover ); + water_ambient_middle_left = spawn( "script_model", ( 215, -1680, 185 ) ); + water_ambient_middle_left setmodel( "tag_origin" ); + water_ambient_middle_left.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_middle_left linkto( water_ambient_mover ); + water_ambient_front_right = spawn( "script_model", ( -333, -302, 185 ) ); + water_ambient_front_right setmodel( "tag_origin" ); + water_ambient_front_right.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_front_right linkto( water_ambient_mover ); + water_ambient_front_left = spawn( "script_model", ( 265, -302, 185 ) ); + water_ambient_front_left setmodel( "tag_origin" ); + water_ambient_front_left.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_ambient_front_left linkto( water_ambient_mover ); + water_pa_1 = spawn( "script_model", ( 1667, -1364, 684 ) ); + water_pa_1 setmodel( "tag_origin" ); + water_pa_2 = spawn( "script_model", ( -1806, -1375, 783 ) ); + water_pa_2 setmodel( "tag_origin" ); + water_pa_3 = spawn( "script_model", ( -100, -1375, 783 ) ); + water_pa_3 setmodel( "tag_origin" ); + wait 0,1; + water_kill_triggers[ 0 ] enablelinkto(); + water_kill_triggers[ 0 ] linkto( water_mover ); + water_kill_triggers[ 1 ] enablelinkto(); + water_kill_triggers[ 1 ] linkto( water_mover ); + playfxontag( level.waterambientfxmiddlefront, water_ambient_front_pillar, "tag_origin" ); + playfxontag( level.waterambientfxmiddleback, water_ambient_back_pillar, "tag_origin" ); + playfxontag( level.waterambientfxboxfront, water_ambient_front_block, "tag_origin" ); + playfxontag( level.waterambientfxboxback, water_ambient_back_block, "tag_origin" ); + playfxontag( level.waterambientfxrightback, water_ambient_back_right, "tag_origin" ); + playfxontag( level.waterambientfxleftback, water_ambient_back_left, "tag_origin" ); + playfxontag( level.waterambientfxrightmiddle, water_ambient_middle_right, "tag_origin" ); + playfxontag( level.waterambientfxleftmiddle, water_ambient_middle_left, "tag_origin" ); + playfxontag( level.waterambientfxrightfront, water_ambient_front_right, "tag_origin" ); + playfxontag( level.waterambientfxleftfront, water_ambient_front_left, "tag_origin" ); + setdvar( "R_WaterWaveBase", 0 ); + if ( level.timelimit ) + { + seconds = level.timelimit * 60; + add_timed_event( int( seconds * 0,25 ), "hydro_water_rush" ); + add_timed_event( int( seconds * 0,75 ), "hydro_water_rush" ); + } + else + { + if ( level.scorelimit ) + { + add_score_event( int( level.scorelimit * 0,25 ), "hydro_water_rush" ); + add_score_event( int( level.scorelimit * 0,75 ), "hydro_water_rush" ); + } + } + self thread watchwatertrigger( water_mover, water_kill_triggers, water_pa_1, water_pa_2, water_pa_3, water_ambient_back_pillar, water_ambient_front_block, water_ambient_mover ); + self thread waterkilltriggerthink( water_kill_triggers ); + wait 5; + setdvar( "R_WaterWaveBase", 0 ); +} + +watchwatertrigger( water_mover, water_kill_triggers, water_pa_1, water_pa_2, water_pa_3, water_ambient_back, water_ambient_box, water_ambient_mover ) +{ + thread watchdevnotify(); + for ( ;; ) + { + level waittill_any( "hydro_water_rush", "dev_water_rush" ); + setclientfield( "pre_wave", 1 ); + water_ambient_back playloopsound( "amb_train_incomming_beep" ); + water_ambient_box playloopsound( "amb_train_incoming_beep" ); + water_pa_1 playsound( "evt_pa_atten" ); + water_pa_2 playsound( "evt_pa_atten" ); + water_pa_3 playsound( "evt_pa_atten" ); + wait 2; + water_pa_1 playsound( "evt_pa_online" ); + water_pa_2 playsound( "evt_pa_online" ); + water_pa_3 playsound( "evt_pa_online" ); + water_fx1 = spawn( "script_model", water_kill_triggers[ 0 ].origin + vectorScale( ( 0, 0, 1 ), 1000 ) ); + water_fx1 setmodel( "tag_origin" ); + water_fx1.angles = vectorScale( ( 0, 0, 1 ), 90 ); + water_fx2 = spawn( "script_model", water_kill_triggers[ 1 ].origin + vectorScale( ( 0, 0, 1 ), 1000 ) ); + water_fx2 setmodel( "tag_origin" ); + water_fx2.angles = vectorScale( ( 0, 0, 1 ), 90 ); + exploder( 1005 ); + wait 3; + water_pa_1 playsound( "evt_pa_online" ); + water_pa_2 playsound( "evt_pa_online" ); + water_pa_3 playsound( "evt_pa_online" ); + wait 1; + playfxontag( level.waterrushfx, water_fx1, "tag_origin" ); + playfxontag( level.waterrushfx, water_fx2, "tag_origin" ); + water_fx1 playloopsound( "evt_water_wave" ); + water_fx2 playloopsound( "evt_water_wave" ); + water_mover.origin = ( 0, 0, 1 ); + setclientfield( "big_wave", 1 ); + water_mover moveto( vectorScale( ( 0, 0, 1 ), 2100 ), 2,5 ); + water_ambient_mover moveto( vectorScale( ( 0, 0, 1 ), 20 ), 2,5 ); + level thread waterfxloopstarter( water_fx1, water_fx2, 5 ); + thread play_exploder(); + waterlevel = -24; + wait 2; + water_pa_1 playsound( "evt_pa_warn" ); + water_pa_2 playsound( "evt_pa_warn" ); + water_pa_3 playsound( "evt_pa_warn" ); + wait 3; + water_pa_1 playsound( "evt_pa_offline" ); + water_pa_2 playsound( "evt_pa_offline" ); + water_pa_3 playsound( "evt_pa_offline" ); + wait 1; + water_mover moveto( vectorScale( ( 0, 0, 1 ), 4100 ), 2,5 ); + water_ambient_mover moveto( ( 0, 0, 1 ), 2,5 ); + water_fx1 stoploopsound( 2 ); + water_fx2 stoploopsound( 2 ); + setclientfield( "pre_wave", 0 ); + wait 1,5; + water_pa_1 playsound( "evt_pa_access" ); + water_pa_2 playsound( "evt_pa_access" ); + water_pa_3 playsound( "evt_pa_access" ); + wait 1; + water_ambient_box stoploopsound( 1 ); + water_ambient_back stoploopsound( 1 ); + stop_exploder( 1005 ); + setdvar( "R_WaterWaveAmplitude", "0 0 0 0" ); + water_mover.origin = vectorScale( ( 0, 0, 1 ), 500 ); + wait 2; + water_fx1 delete(); + water_fx2 delete(); + water_mover.origin = ( 0, 0, 1 ); + setclientfield( "big_wave", 0 ); + wait 5; + } +} + +play_exploder() +{ + wait 0,2; + exploder( 1002 ); + wait 0,5; + exploder( 1001 ); +} + +watchdevnotify() +{ + startvalue = getDvar( #"1CC516F5" ); + for ( ;; ) + { + should_water_rush = getDvar( #"1CC516F5" ); + if ( should_water_rush != startvalue ) + { + level notify( "dev_water_rush" ); + startvalue = should_water_rush; + } + wait 0,2; + } +} + +waterfxloopstarter( fx1, fx2, looptime ) +{ + level thread waterfxloop( fx1, fx2 ); +} + +waterfxloop( fx1, fx2 ) +{ + start1 = fx1.origin; + start2 = fx2.origin; + fx1 moveto( fx1.origin + vectorScale( ( 0, 0, 1 ), 2200 ), 2,67 ); + fx2 moveto( fx2.origin + vectorScale( ( 0, 0, 1 ), 2200 ), 2,67 ); + wait 2,67; + fx1 moveto( fx1.origin + ( 0, 600, -1000 ), 2,5 ); + fx2 moveto( fx2.origin + ( 0, 600, -1000 ), 2,5 ); + wait 3; + fx1.origin = start1; + fx2.origin = start2; +} + +waterkilltriggerthink( triggers ) +{ + for ( ;; ) + { + wait 0,1; + entities = getdamageableentarray( triggers[ 0 ].origin, 2000 ); + _a390 = entities; + _k390 = getFirstArrayKey( _a390 ); + while ( isDefined( _k390 ) ) + { + entity = _a390[ _k390 ]; + triggertouched = 0; + if ( !entity istouching( triggers[ 0 ] ) ) + { + triggertouched = 1; + if ( !entity istouching( triggers[ 1 ] ) ) + { + } + } + else if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + } + else + { + if ( !isalive( entity ) ) + { + break; + } + else if ( isDefined( entity.targetname ) ) + { + if ( entity.targetname == "talon" ) + { + entity notify( "death" ); + break; + } + else if ( entity.targetname == "rcbomb" ) + { + entity maps/mp/killstreaks/_rcbomb::rcbomb_force_explode(); + break; + } + else if ( entity.targetname == "riotshield_mp" ) + { + entity dodamage( 1, triggers[ triggertouched ].origin + ( 0, 0, 1 ), triggers[ triggertouched ], triggers[ triggertouched ], 0, "MOD_CRUSH" ); + break; + } + } + else if ( isDefined( entity.helitype ) && entity.helitype == "qrdrone" ) + { + watcher = entity.owner maps/mp/gametypes/_weaponobjects::getweaponobjectwatcher( "qrdrone" ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + break; + } + else + { + if ( entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + break; + } + else if ( !isDefined( entity.owner ) ) + { + break; + } + else if ( entity.name == "proximity_grenade_mp" ) + { + watcher = entity.owner getwatcherforweapon( entity.name ); + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( !isweaponequipment( entity.name ) ) + { + break; + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + break; + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined, "script_mover_mp" ); + break; + } + else if ( entity.classname == "auto_turret" ) + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( triggers[ triggertouched ].origin + ( 0, 0, 1 ), triggers[ triggertouched ], triggers[ triggertouched ], 0, "MOD_CRUSH" ); + } + break; + } + else + { + if ( isplayer( entity ) ) + { + entity dodamage( entity.health * 2, triggers[ triggertouched ].origin + ( 0, 0, 1 ), triggers[ triggertouched ], triggers[ triggertouched ], 0, "MOD_HIT_BY_OBJECT", 0, "hydro_water_mp" ); + } + else + { + entity dodamage( entity.health * 2, triggers[ triggertouched ].origin + ( 0, 0, 1 ), triggers[ triggertouched ], triggers[ triggertouched ], 0, "MOD_CRUSH" ); + } + if ( isplayer( entity ) ) + { + entity playlocalsound( "mpl_splash_death" ); + } + } + } + } + _k390 = getNextArrayKey( _a390, _k390 ); + } + if ( level.gametype == "ctf" ) + { + _a502 = level.flags; + _k502 = getFirstArrayKey( _a502 ); + while ( isDefined( _k502 ) ) + { + flag = _a502[ _k502 ]; + if ( flag.visuals[ 0 ] istouching( triggers[ 0 ] ) || flag.visuals[ 0 ] istouching( triggers[ 1 ] ) ) + { + flag maps/mp/gametypes/ctf::returnflag(); + } + _k502 = getNextArrayKey( _a502, _k502 ); + } + } + else if ( level.gametype == "sd" && !level.multibomb ) + { + if ( level.sdbomb.visuals[ 0 ] istouching( triggers[ 0 ] ) || level.sdbomb.visuals[ 0 ] istouching( triggers[ 1 ] ) ) + { + level.sdbomb maps/mp/gametypes/_gameobjects::returnhome(); + } + } + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +removeobjectsondemovertime() +{ + while ( level.gametype == "dem" ) + { + while ( isDefined( game[ "overtime_round" ] ) ) + { + objects = getentarray( "delete_dem_overtime", "script_noteworthy" ); + while ( isDefined( objects ) ) + { + i = 0; + while ( i < objects.size ) + { + objects[ i ] delete(); + i++; + } + } + } + } +} diff --git a/mp_hydro/maps/mp/mp_hydro_amb.gsc b/mp_hydro/maps/mp/mp_hydro_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_hydro/maps/mp/mp_hydro_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_hydro/maps/mp/mp_hydro_fx.gsc b/mp_hydro/maps/mp/mp_hydro_fx.gsc new file mode 100644 index 0000000..7326ce7 --- /dev/null +++ b/mp_hydro/maps/mp/mp_hydro_fx.gsc @@ -0,0 +1,91 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_hydro_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_hydro_dam_water_bottom" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_bottom" ); + level._effect[ "fx_mp_hydro_dam_water_top" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_top" ); + level._effect[ "fx_mp_hydro_dam_water_top_side" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_top_side" ); + level._effect[ "fx_mp_hydro_dam_water_top_side_b" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_top_side_b" ); + level._effect[ "fx_mp_hydro_dam_water_top_b" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_top_b" ); + level._effect[ "fx_mp_hydro_dam_water_spray" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_spray" ); + level._effect[ "fx_mp_hydro_dam_water_drip_splash" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_drip_splash" ); + level._effect[ "fx_mp_hydro_dam_water_strip" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_strip" ); + level._effect[ "fx_mp_hydro_dam_water_strip2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_strip2" ); + level._effect[ "fx_mp_hydro_dam_water_corner" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_corner" ); + level._effect[ "fx_mp_hydro_dam_water_corner2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_corner2" ); + level._effect[ "fx_mp_hydro_dam_water_wall" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_wall" ); + level._effect[ "fx_mp_hydro_dam_river_top" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_river_top" ); + level._effect[ "fx_mp_hydro_dam_river_top_b" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_river_top_b" ); + level._effect[ "fx_mp_hydro_dam_river_flat" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_river_flat" ); + level._effect[ "fx_mp_hydro_dam_river_flat2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_river_flat2" ); + level._effect[ "fx_mp_hydro_flood_blast01_spill" ] = loadfx( "maps/mp_maps/fx_mp_hydro_flood_blast01_spill" ); + level._effect[ "fx_mp_hydro_flood_blast01" ] = loadfx( "maps/mp_maps/fx_mp_hydro_flood_blast01" ); + level._effect[ "fx_mp_hydro_flood_blast02" ] = loadfx( "maps/mp_maps/fx_mp_hydro_flood_blast02" ); + level._effect[ "fx_mp_hydro_flood_water_spill" ] = loadfx( "maps/mp_maps/fx_mp_hydro_flood_water_spill" ); + level._effect[ "fx_mp_hydro_flood_mist_tail" ] = loadfx( "maps/mp_maps/fx_mp_hydro_flood_mist_tail" ); + level._effect[ "fx_mp_hydro_flood_blast_end" ] = loadfx( "maps/mp_maps/fx_mp_hydro_flood_blast_end" ); + level._effect[ "fx_mp_hydro_hatch_spray" ] = loadfx( "maps/mp_maps/fx_mp_hydro_hatch_spray" ); + level._effect[ "fx_mp_hydro_splash_edge" ] = loadfx( "maps/mp_maps/fx_mp_hydro_splash_edge" ); + level._effect[ "fx_mp_hydro_water_pipe" ] = loadfx( "maps/mp_maps/fx_mp_hydro_water_pipe" ); + level._effect[ "fx_mp_hydro_dam_water_vista" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_vista" ); + level._effect[ "fx_mp_hydro_dam_water_top_vista" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_water_top_vista" ); + level._effect[ "fx_mp_hydro_dam_steam" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam" ); + level._effect[ "fx_mp_hydro_dam_steam2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam2" ); + level._effect[ "fx_mp_hydro_dam_steam2_green" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam2_green" ); + level._effect[ "fx_mp_hydro_dam_steam3" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam3" ); + level._effect[ "fx_mp_hydro_dam_steam_big" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam_big" ); + level._effect[ "fx_mp_hydro_dam_steam_big2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam_big2" ); + level._effect[ "fx_mp_hydro_dam_steam_xlrg" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam_xlrg" ); + level._effect[ "fx_mp_hydro_dam_steam_vista" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_steam_vista" ); + level._effect[ "fx_mp_vent_heat_distort" ] = loadfx( "maps/mp_maps/fx_mp_vent_heat_distort" ); + level._effect[ "fx_fog_street_sm_area_low" ] = loadfx( "fog/fx_fog_street_sm_area_low" ); + level._effect[ "fx_mp_hydro_hvac_steam" ] = loadfx( "maps/mp_maps/fx_mp_hydro_hvac_steam" ); + level._effect[ "fx_mp_hydro_steam_behind_glass1" ] = loadfx( "maps/mp_maps/fx_mp_hydro_steam_behind_glass1" ); + level._effect[ "fx_mp_hydro_steam_behind_glass2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_steam_behind_glass2" ); + level._effect[ "fx_mp_hydro_light_warning" ] = loadfx( "maps/mp_maps/fx_mp_hydro_light_warning" ); + level._effect[ "fx_mp_hydro_light_warning_blnk" ] = loadfx( "maps/mp_maps/fx_mp_hydro_light_warning_blnk" ); + level._effect[ "fx_mp_hydro_light_warning_sm" ] = loadfx( "maps/mp_maps/fx_mp_hydro_light_warning_sm" ); + level._effect[ "fx_mp_hydro_light_warning_blnk_sm" ] = loadfx( "maps/mp_maps/fx_mp_hydro_light_warning_blnk_sm" ); + level._effect[ "fx_drone_light_yellow" ] = loadfx( "light/fx_drone_light_yellow" ); + level._effect[ "fx_drone_red_blink" ] = loadfx( "light/fx_drone_red_blink" ); + level._effect[ "fx_mp_hydro_dam_tunnel_glare" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_tunnel_glare" ); + level._effect[ "fx_mp_hydro_dam_tunnel_glare_green" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_tunnel_glare_green" ); + level._effect[ "fx_mp_hydro_dam_tunnel_glare_green2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_dam_tunnel_glare_green2" ); + level._effect[ "fx_light_god_ray_mp_hydro" ] = loadfx( "env/light/fx_light_god_ray_mp_hydro" ); + level._effect[ "fx_light_god_ray_mp_hydro_sm" ] = loadfx( "env/light/fx_light_god_ray_mp_hydro_sm" ); + level._effect[ "fx_village_tube_light" ] = loadfx( "light/fx_village_tube_light" ); + level._effect[ "fx_hydro_tube_light" ] = loadfx( "light/fx_hydro_tube_light" ); + level._effect[ "fx_mp_fan_light_shaft_anim" ] = loadfx( "light/fx_mp_fan_light_shaft_anim" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_carrier_spark_bounce_runner" ] = loadfx( "maps/mp_maps/fx_mp_carrier_spark_bounce_runner" ); + level._effect[ "fx_lf_mp_hydro_sun1" ] = loadfx( "lens_flares/fx_lf_mp_hydro_sun1" ); + level._effect[ "fx_mp_hydro_killstreak_spillway_1" ] = loadfx( "maps/mp_maps/fx_mp_hydro_killstreak_spillway_1" ); + level._effect[ "fx_mp_hydro_killstreak_spillway_2" ] = loadfx( "maps/mp_maps/fx_mp_hydro_killstreak_spillway_2" ); + level._effect[ "fx_mp_hydro_killstreak_spillway_mid" ] = loadfx( "maps/mp_maps/fx_mp_hydro_killstreak_spillway_mid" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "wirespark_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "wires_long" ] = %fxanim_mp_hydro_wires_long_anim; + level.scr_anim[ "fxanim_props" ][ "wires_med" ] = %fxanim_mp_hydro_wires_med_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "wires_med_02" ] = %fxanim_mp_hydro_wires_med_02_anim; + level.scr_anim[ "fxanim_props" ][ "wires_long_02" ] = %fxanim_mp_hydro_wires_long_02_anim; +} diff --git a/mp_la/aitype/enemy_dog_mp.gsc b/mp_la/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_la/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_la/character/character_mp_german_shepherd.gsc b/mp_la/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_la/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_la/maps/mp/createart/mp_la_art.gsc b/mp_la/maps/mp/createart/mp_la_art.gsc new file mode 100644 index 0000000..1c5518c --- /dev/null +++ b/mp_la/maps/mp/createart/mp_la_art.gsc @@ -0,0 +1,41 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 740,262; + half_dist = 4113,21; + half_height = 1651,45; + base_height = -80,5565; + fog_r = 0,372549; + fog_g = 0,454902; + fog_b = 0,447059; + fog_scale = 7,39106; + sun_col_r = 1; + sun_col_g = 0,686275; + sun_col_b = 0,337255; + sun_dir_x = -0,196011; + sun_dir_y = 0,785122; + sun_dir_z = 0,587506; + sun_start_ang = 0; + sun_stop_ang = 61,3208; + time = 0; + max_fog_opacity = 1; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); + visionsetnaked( "mp_la", 0 ); +} diff --git a/mp_la/maps/mp/createfx/mp_la_fx.gsc b/mp_la/maps/mp/createfx/mp_la_fx.gsc new file mode 100644 index 0000000..df0f887 --- /dev/null +++ b/mp_la/maps/mp/createfx/mp_la_fx.gsc @@ -0,0 +1,1939 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_lg" ); + ent.v[ "origin" ] = ( -952,321, 2394,96, -174,98 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 198 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_lg" ); + ent.v[ "origin" ] = ( -551,998, 947,768, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 198 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_lg" ); + ent.v[ "origin" ] = ( -1162,16, 2278,29, -185,039 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 198 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_lg" ); + ent.v[ "origin" ] = ( -21,5547, 2116,09, 200,793 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk" ); + ent.v[ "origin" ] = ( -8,12979, 2117,18, 323,406 ); + ent.v[ "angles" ] = ( 25,9496, 177,702, 0,355472 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_md" ); + ent.v[ "origin" ] = ( -1848,63, 1255,72, -60,2276 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_md" ); + ent.v[ "origin" ] = ( -1356,31, 3118,37, 24,8662 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk" ); + ent.v[ "origin" ] = ( -1364,56, 3119,96, 106,711 ); + ent.v[ "angles" ] = ( 6,6665, 170,618, -3,36161 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk" ); + ent.v[ "origin" ] = ( -1837,14, 1254,46, 26,5401 ); + ent.v[ "angles" ] = ( 13,7633, 180,033, -1,82928 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 82,5291, -265,777, -189,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -490,99, -116,469, -195,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -1702,53, 5325,4, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 215 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -1644,35, 3832,26, -169,287 ); + ent.v[ "angles" ] = ( 9,87748, 172,948, 0,679485 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -977,869, 2905,91, -103,475 ); + ent.v[ "angles" ] = ( 357,961, 180,165, 8,52735 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -957,79, 2091,25, -154,235 ); + ent.v[ "angles" ] = ( 0,271509, 179,794, 18,4468 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -20,6569, 594,042, -223,878 ); + ent.v[ "angles" ] = ( 1,52444, 171,834, -4,21439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2493,1, 3583,39, -192,362 ); + ent.v[ "angles" ] = ( 5,9521, 140,997, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -1751,84, 2172,33, -168,27 ); + ent.v[ "angles" ] = ( 351,992, 181,052, 1,55738 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -917,12, 3153,23, -129,147 ); + ent.v[ "angles" ] = ( 1,10482, 181,514, 8,03658 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_burning_fall_slow" ); + ent.v[ "origin" ] = ( -113,622, 2094,77, 800,242 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -1443,98, 2231,3, -207,78 ); + ent.v[ "angles" ] = ( 350,972, 201,276, -1,52216 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2152,87, 1436,24, -189,736 ); + ent.v[ "angles" ] = ( 5,99598, 179,985, -0,105187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -427,027, 2241,41, 22,6633 ); + ent.v[ "angles" ] = ( 6, 177,027, 0,210445 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -298,626, 1746,64, 89,7532 ); + ent.v[ "angles" ] = ( 0, 177,005, 0,209294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -681,807, 3416,2, -94,0107 ); + ent.v[ "angles" ] = ( 18,8818, 189,111, 23,3384 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -607,591, 3513,76, -147,001 ); + ent.v[ "angles" ] = ( 359,345, 182,362, 37,3852 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -878,35, 3415,77, -176,125 ); + ent.v[ "angles" ] = ( 4,94373, 187,157, 17,7141 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -754,333, 1655,38, -58,7808 ); + ent.v[ "angles" ] = ( 28,8715, 170,427, -7,89556 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -1257,06, 3832,83, -201,04 ); + ent.v[ "angles" ] = ( 359,135, 176,132, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2100,43, 3487,49, -188,882 ); + ent.v[ "angles" ] = ( 1,00656, 174,738, -2,10143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_lg" ); + ent.v[ "origin" ] = ( -1824,78, 2720,45, 121,789 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_rain_splash_area_100_hvy_lp" ); + ent.v[ "origin" ] = ( 587,892, 2577,51, -278,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( -223,954, 2507,96, -238,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler" ); + ent.v[ "origin" ] = ( 37,7566, 2057,65, -28,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( 100,917, 2061,84, -277,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -681,893, 4113,65, -104,086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -424,216, 4609,9, -116,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -920,503, 1270,78, -158,913 ); + ent.v[ "angles" ] = ( 2,00501, 174,719, -1,04957 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_lg" ); + ent.v[ "origin" ] = ( 93,4205, 2232,31, 270,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 198 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( 69,0571, 2795,37, 192,124 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_ash_falling_lg" ); + ent.v[ "origin" ] = ( -2557,9, 2600,64, -206,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler" ); + ent.v[ "origin" ] = ( -213,506, 2538,61, -30,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_sputter" ); + ent.v[ "origin" ] = ( 492,198, 2556,16, -26,125 ); + ent.v[ "angles" ] = ( 88,5858, 45,0046, 44,9959 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -10; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush" ); + ent.v[ "origin" ] = ( 469,309, 2201,06, -13,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -10; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush_splash" ); + ent.v[ "origin" ] = ( 475,92, 2201,93, -278,875 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -10; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_md" ); + ent.v[ "origin" ] = ( -377,239, 1409,38, 2,04714 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 419,391, 2124,07, -26,125 ); + ent.v[ "angles" ] = ( 360, 90, -3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 488,229, 2108,87, -26,125 ); + ent.v[ "angles" ] = ( 359,858, 68,9773, -0,158489 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 449,315, 2379,55, -27,125 ); + ent.v[ "angles" ] = ( 6,18744, 93,7027, 3,40991 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -198,048, 1928,65, -29,125 ); + ent.v[ "angles" ] = ( 357,604, 37,0378, -1,80648 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 157,297, 2252,51, -49,0022 ); + ent.v[ "angles" ] = ( 0,156988, 92,9959, -2,99635 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 73,1006, 2319,56, -50,5905 ); + ent.v[ "angles" ] = ( 0,156988, 92,9959, -2,99635 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -242,943, 2269,81, -26,125 ); + ent.v[ "angles" ] = ( 357, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -55,2939, 2563,7, -29,125 ); + ent.v[ "angles" ] = ( 359,645, 12,0885, 1,48682 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 273,875, 2018,67, -24,8778 ); + ent.v[ "angles" ] = ( 0,982266, 180,965, 1,01606 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 193,51, 1896,65, -27,3232 ); + ent.v[ "angles" ] = ( 1,01712, 178,965, 0,981151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk" ); + ent.v[ "origin" ] = ( -379,818, 1411,63, 69,3466 ); + ent.v[ "angles" ] = ( 12,7831, 180,391, -18,5892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -1582,56, 4123,51, -121,441 ); + ent.v[ "angles" ] = ( 33,6953, 167,93, -18,4065 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -733,486, -782,764, -205,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 355 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( -296,187, 2519,92, -240,205 ); + ent.v[ "angles" ] = ( 272, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( -134,577, 2548,49, -238,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 489,963, 2601,26, -26,125 ); + ent.v[ "angles" ] = ( 0,790916, 190,964, 1,17117 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 562,202, 2436,96, -29,125 ); + ent.v[ "angles" ] = ( 358,587, 314,957, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_rain_splash_area_100_hvy_lp" ); + ent.v[ "origin" ] = ( 453,183, 2580,19, -278,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -481,855, 3228,03, 5,01965 ); + ent.v[ "angles" ] = ( 359,055, 266,948, 1,05104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( -19,4529, 2060,43, -251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "origin" ] = ( -1282,19, 2086,09, 157,476 ); + ent.v[ "angles" ] = ( 33,791, 18,4808, -35,3513 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_flare_la" ); + ent.v[ "origin" ] = ( -1382,62, 2348,83, -191,915 ); + ent.v[ "angles" ] = ( 350,752, 222,903, -6,20005 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_flare_la" ); + ent.v[ "origin" ] = ( -1899,34, 2051,36, -116,911 ); + ent.v[ "angles" ] = ( 341,715, 337,678, -18,0684 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_flare_la" ); + ent.v[ "origin" ] = ( -1649,47, 2311,68, -153,521 ); + ent.v[ "angles" ] = ( 349,228, 34,2927, 24,7891 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -758,206, 5337,65, -220 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -57,9301, 4440,03, -113,486 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -106,441, 3299,46, -148,509 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -861,118, 5187,94, -221 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1436,56, 5268,6, -217 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1313,09, 4476,06, -224,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1601,94, 5581,6, -150,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1975,62, 5227,79, -159,602 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( 241,246, 1484,96, -222,286 ); + ent.v[ "angles" ] = ( 4,09965, 181,053, 6,02415 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush_splash" ); + ent.v[ "origin" ] = ( -661,137, 3097,2, -9,875 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -10; + ent = maps/mp/_utility::createoneshoteffect( "fx_dest_fire_hydrant_burst" ); + ent.v[ "origin" ] = ( -669,722, 3060,94, -31,875 ); + ent.v[ "angles" ] = ( 0, 255, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2144,51, 2817,71, -181,458 ); + ent.v[ "angles" ] = ( 1,19116, 166,741, -2,25932 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -126,487, 2628,74, 52,5623 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -702,531, 2871,47, 54,2262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_emrgncy_floodlight" ); + ent.v[ "origin" ] = ( -306,941, 24,5859, -132,51 ); + ent.v[ "angles" ] = ( 19,6379, 301,388, 0,24249 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_emrgncy_floodlight" ); + ent.v[ "origin" ] = ( -323,799, 25,3594, -133,387 ); + ent.v[ "angles" ] = ( 16,2831, 236,015, -1,55665 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -458,724, 2226,06, -84,4114 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -1793,12, -7,28734, -59,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 120 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -1998,14, 31,7489, -59,875 ); + ent.v[ "angles" ] = ( 359,594, 47,993, 0,913571 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk_distant" ); + ent.v[ "origin" ] = ( -4429,44, -6906,03, 4302,8 ); + ent.v[ "angles" ] = ( 333,719, 199,276, -11,3577 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_flare_la" ); + ent.v[ "origin" ] = ( -1543,57, 2094,57, -177,029 ); + ent.v[ "angles" ] = ( 345,817, 165,128, 21,7408 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -3530,83, 1579,7, 123,04 ); + ent.v[ "angles" ] = ( 341,039, 185,289, -30,0587 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -2991,63, 2485,01, 132,518 ); + ent.v[ "angles" ] = ( 0, 208,999, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -3286,09, 3356,75, 7,61793 ); + ent.v[ "angles" ] = ( 354,045, 185,835, 21,1856 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -4092,03, 3373,53, 94,0726 ); + ent.v[ "angles" ] = ( 359,642, 188, 20,0663 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -4223,02, 1249,5, 124,499 ); + ent.v[ "angles" ] = ( 359,546, 182, -0,891203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( -29,6098, 2763,39, -252,412 ); + ent.v[ "angles" ] = ( 278, 270, 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( 23,6997, 2766,9, -246,414 ); + ent.v[ "angles" ] = ( 278, 270, 106 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( -8,50069, 2812,41, -249,407 ); + ent.v[ "angles" ] = ( 283, 90, -90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( 28,4305, 2813,22, -246,412 ); + ent.v[ "angles" ] = ( 283, 90, -90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_glow_cool" ); + ent.v[ "origin" ] = ( -553,458, -801,702, -120,875 ); + ent.v[ "angles" ] = ( 270,701, 75,3337, 14,6585 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -107,14, 345,002, -195,257 ); + ent.v[ "angles" ] = ( 9,36825, 266,933, 3,03084 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -691,855, -440,721, -214,875 ); + ent.v[ "angles" ] = ( 270, 338,501, -8,5005 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -548,694, -20,3628, -210,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -747,067, -24,2708, -212,932 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -1813,07, -2,45015, -194,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -1914,29, 223,856, -194,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -2347,85, -2228,46, -312,696 ); + ent.v[ "angles" ] = ( 359,642, 188, -0,933735 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -788,002, -2878,67, -82,0541 ); + ent.v[ "angles" ] = ( 359,485, 178, -0,85739 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( 2054,44, 1044, -170,875 ); + ent.v[ "angles" ] = ( 1,37819, 178,007, -1,75516 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -381,602, -213,112, 44,875 ); + ent.v[ "angles" ] = ( 19,5172, 269,525, 0,148691 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fountian_pool_md" ); + ent.v[ "origin" ] = ( 448,854, 4317,18, -202,827 ); + ent.v[ "angles" ] = ( 270, 358,386, -27,3864 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 57,4833, 3714,52, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 244 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -3793,85, 5441,35, -199,875 ); + ent.v[ "angles" ] = ( 359,642, 188, -0,933735 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -3788,33, 4039,54, -133,981 ); + ent.v[ "angles" ] = ( 359,642, 188, -0,933735 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -560,288, -944,824, -120,958 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -204,682, -837,057, -120,926 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -560,677, 3156,42, 128,701 ); + ent.v[ "angles" ] = ( 1,01712, 178,965, 0,981151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2516,33, 1142,14, 242,428 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 66 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2558,76, 434,15, 213,164 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2535,16, 759,506, 206,086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2147,61, 2028,91, 107,554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 234 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -1455,96, 2058,52, 246,206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -1471,76, 2549,09, 237,716 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -201,915, 4471,13, -122,955 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1844,64, 4291,11, 3,6067 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1829,28, 4911,67, 3,75691 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_glow_cool" ); + ent.v[ "origin" ] = ( -128,262, -80,6205, 80,0935 ); + ent.v[ "angles" ] = ( 270,701, 75,3337, 14,6585 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -401,059, 4457,58, -33 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -366,534, 4420,78, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -345,405, 4382,83, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -326,063, 4345,85, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -244,81, 4344,14, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -258,982, 4296,32, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -160,93, 4296,09, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -162,334, 4355,52, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -210,639, 4391,3, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -255,064, 4423,96, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -291,251, 4467,05, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -309,964, 4512,78, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -297,463, 4558,23, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -256,831, 4566,36, -33 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -221,419, 4545,77, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -189,11, 4516,36, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -158,388, 4475,72, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -444,485, 4479,27, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -490,899, 4467,93, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -510,82, 4426,87, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -502,745, 4380,94, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -459,711, 4343,6, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -425,378, 4297,82, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -522,624, 4296,56, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -587,394, 4345,56, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -573,405, 4391,81, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -305,216, 4246,76, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -365,346, 4195,06, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -434,275, 4161,35, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -327,702, 4298,08, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -619,104, 4297,34, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -722,191, 4296,69, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -699,16, 4344,57, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -790,27, 4344,85, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -790,003, 4444,52, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -738,074, 4479,7, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -789,117, 4560,69, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -668,712, 4405,69, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -643,537, 4593,21, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -598,161, 4557,94, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -553,533, 4554,58, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -530,401, 4518,56, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -548,52, 4480,4, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -595,049, 4475,73, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -623,483, 4512,43, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -396,769, 4227,64, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -791,701, 4316,5, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -727,454, 4231,99, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -661,026, 4184,61, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -587,057, 4153,64, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -572,573, 4194,51, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_wrm" ); + ent.v[ "origin" ] = ( -654,867, 4234,18, -32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1497,98, 4598,29, -25,7954 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_lg_runner" ); + ent.v[ "origin" ] = ( -763,335, 3248,52, 313,923 ); + ent.v[ "angles" ] = ( 17,459, 135,647, 7,72393 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1630,92, -789,04, -200,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -690,497, 78,4437, -188,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -467,85, 2570,12, 611,892 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( 446,936, 4303,71, -229,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( 392,169, 4351,69, -201 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 84,6875, 5249,64, -230 ); + ent.v[ "angles" ] = ( 271, 89,9982, -89,9982 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2498,83, 4487,04, 226,208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2600,69, 4352,41, 215,575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_crumble_lg" ); + ent.v[ "origin" ] = ( -2451,62, 3410, 199,183 ); + ent.v[ "angles" ] = ( 3, 292, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -453,767, 3414,8, -149,903 ); + ent.v[ "angles" ] = ( 340,815, 166,909, 30,4122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -303,612, 317,759, 16,6338 ); + ent.v[ "angles" ] = ( 359, 273, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -1040,58, -67,0286, 23,3413 ); + ent.v[ "angles" ] = ( 355,641, 358,979, -0,157766 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -3124,18, 22,5527, -136,875 ); + ent.v[ "angles" ] = ( 359,485, 178, 0,142588 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -3196,09, -1062,99, -130,378 ); + ent.v[ "angles" ] = ( 359,08, 142, -0,391087 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( 74,4852, 326,737, -199,391 ); + ent.v[ "angles" ] = ( 8,93236, 265,914, 0,894206 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -683,751, -474,796, -259,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 288 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -692,254, 2304,82, -143,647 ); + ent.v[ "angles" ] = ( 8,84828, 0,802157, 0,467443 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -431,557, 4521,24, -112,749 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -843,415, -796,511, -110,912 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -151,565, 42,0966, -130,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 162,445, 101,941, -133,156 ); + ent.v[ "angles" ] = ( 359, 180,003, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -383,103, 5437,04, -263 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fountian_pool_md" ); + ent.v[ "origin" ] = ( 448,343, 4171,92, -202,875 ); + ent.v[ "angles" ] = ( 270, 0, -44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fountian_pool_md" ); + ent.v[ "origin" ] = ( 448,835, 4480,81, -202,308 ); + ent.v[ "angles" ] = ( 270, 0,365009, -6,365 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( 384,685, 4502,37, -201 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_splash" ); + ent.v[ "origin" ] = ( 408,437, 4217,42, -201 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm" ); + ent.v[ "origin" ] = ( -374,635, 2400,43, 46,7278 ); + ent.v[ "angles" ] = ( 290,851, 170,338, -0,749529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm" ); + ent.v[ "origin" ] = ( -393,074, 2499,3, 50,0956 ); + ent.v[ "angles" ] = ( 282, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -460,588, -128,834, -193,262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_int_dist_xlg" ); + ent.v[ "origin" ] = ( -4813,42, 12642,5, 7366,9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 292 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -2390,05, 5007,86, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -2250, 4400,25, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 624,49, 3426,27, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 364,573, 5699,16, -306,042 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 56,7123, 4973,03, -263 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -930,972, 5312,98, -263 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -530,398, 3931,38, -199 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 188 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -2669,46, 4257,86, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -2362,9, 3152,38, -194,684 ); + ent.v[ "angles" ] = ( 358,011, 261,997, 0,209168 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 389,891, 918,819, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 797,209, 1274,76, -204,483 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 832,563, 754,542, -206,967 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 892,053, 1008,39, -206,885 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -671,383, 484,81, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -743,871, 815,658, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -19,0976, 696,666, -202,561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -1157,44, 502,042, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -1514,25, 805,303, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -1144,85, -752,532, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -2065,04, 953,533, -206,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -1173,11, -1402,76, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -192,247, -894,717, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 87,7333, 508,832, -226,74 ); + ent.v[ "angles" ] = ( 7,6167, 253,408, 0,552475 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -125,625, 245,623, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -682,618, -731,131, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 191 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -1333,62, 274,528, -216,758 ); + ent.v[ "angles" ] = ( 10, 256, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -1833, 3929,33, -199 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 215 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -558,042, -31,3918, -259,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -746,888, -40,7304, -259,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 219 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -1206,89, -91,4872, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 211 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -1896,81, 540,97, -195,424 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -2089,28, -722,887, -198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -2052,8, -413,834, -210,534 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -1626,31, -836,936, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 20 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -359,543, 2649,98, -9,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 159 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -505,886, 2853,5, -9,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( -519,741, 2924,95, -9,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_lg_runner" ); + ent.v[ "origin" ] = ( 74,5107, 1615,29, 884,918 ); + ent.v[ "angles" ] = ( 56,0059, 142,126, -22,7039 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk" ); + ent.v[ "origin" ] = ( -1778,3, 2713,74, 184,307 ); + ent.v[ "angles" ] = ( 19,9861, 176,915, 2,08109 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_lg" ); + ent.v[ "origin" ] = ( -457,037, 3604,29, -198,076 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 168 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -1680,73, 4743,53, -22,3659 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_haze_linger_xlg" ); + ent.v[ "origin" ] = ( -1101,26, 6330,33, -163,944 ); + ent.v[ "angles" ] = ( 359,546, 182, -0,891203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -604,34, 3267,18, 67,1462 ); + ent.v[ "angles" ] = ( 359, 273, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -611,061, 2492,91, 48,3769 ); + ent.v[ "angles" ] = ( 1, 92,0031, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -1282,22, 2290,4, -154,676 ); + ent.v[ "angles" ] = ( 356,948, 182,951, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( -1970,06, 338,094, 8,03494 ); + ent.v[ "angles" ] = ( 1,99756, 269,999, -0,104725 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -663,516, 4199,55, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -827,341, 334,584, -157,523 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -1064,45, 2311,45, -188,769 ); + ent.v[ "angles" ] = ( 1,95067, 188,736, -1,6488 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -485,553, 1797,67, -0,10499 ); + ent.v[ "angles" ] = ( 3, 177,016, 0,209573 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( 289,685, 926,395, -207 ); + ent.v[ "angles" ] = ( 1,52444, 171,834, -0,214389 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( 499,431, 1287,88, -207 ); + ent.v[ "angles" ] = ( 1,52444, 171,834, 1,78561 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -529,657, 1239,59, -117,693 ); + ent.v[ "angles" ] = ( 9,16775, 182,587, -30,0951 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2324,92, 2704,14, -197,297 ); + ent.v[ "angles" ] = ( 358,193, 166,859, -2,25995 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2477,11, 3916,02, -213 ); + ent.v[ "angles" ] = ( 359,956, 192,995, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -2090,17, 4004,24, -209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 188,997 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -395,672, 465,25, -177,762 ); + ent.v[ "angles" ] = ( 1,33407, 167,74, 0,74726 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -1926,98, 417,678, -173,728 ); + ent.v[ "angles" ] = ( 4,13914, 168,805, 20,7981 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -2411,83, 1372,46, -205,673 ); + ent.v[ "angles" ] = ( 348,996, 180,016, -0,106588 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line" ); + ent.v[ "origin" ] = ( -1344,9, 1846,08, -49,4547 ); + ent.v[ "angles" ] = ( 344,839, 154,475, -1,08413 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -870,589, 4230,12, -175,664 ); + ent.v[ "angles" ] = ( 6,58558, 185,273, -12,7318 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1663,37, 3609,93, -94,8212 ); + ent.v[ "angles" ] = ( 6,07375, 187,722, 36,4789 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1162,65, 2939,78, -84,0657 ); + ent.v[ "angles" ] = ( 349,895, 199,313, -0,702711 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -964,464, 1784,85, -102,752 ); + ent.v[ "angles" ] = ( 357,757, 171,475, -2,41307 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -129,27, 1178,77, -213,474 ); + ent.v[ "angles" ] = ( 356,896, 197,395, 3,71682 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( 197,61, 1626,39, -239,849 ); + ent.v[ "angles" ] = ( 1,59471, 128,99, 4,03132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1133,11, 1055,38, -181,292 ); + ent.v[ "angles" ] = ( 7,68519, 210,011, -14,5325 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1496,56, 989,544, -175,811 ); + ent.v[ "angles" ] = ( 4,40019, 161,69, -31,266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -949,43, 2526,07, -167,221 ); + ent.v[ "angles" ] = ( 3,61145, 171,978, -26,7966 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1320,27, 2854,55, -54,1219 ); + ent.v[ "angles" ] = ( 349,895, 199,313, -0,702711 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1361,67, 2396,29, 23,307 ); + ent.v[ "angles" ] = ( 358,746, 183,201, -0,360224 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1375,72, 2160,55, 34,5731 ); + ent.v[ "angles" ] = ( 358,715, 177,2, -0,227151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1401,06, 3673,71, -176,441 ); + ent.v[ "angles" ] = ( 340,523, 162,054, 2,27733 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -699,771, 2453,26, -172,382 ); + ent.v[ "angles" ] = ( 1,70115, 173,954, -28,1331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -693,815, 2095,84, -155,414 ); + ent.v[ "angles" ] = ( 2,87078, 179,189, 27,7732 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -593,797, 2046,66, 5,23829 ); + ent.v[ "angles" ] = ( 2,99634, 183,004, -12,8428 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -568,443, 2420,89, -7,77816 ); + ent.v[ "angles" ] = ( 3,65897, 185,935, -12,6727 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1955,08, 3764,29, -209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 207 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2250,65, 2028,86, -174,985 ); + ent.v[ "angles" ] = ( 17,3057, 182,748, -13,2567 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2537,15, 2016,41, -212,367 ); + ent.v[ "angles" ] = ( 358,178, 188,884, -9,52063 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2143,81, 1708,54, -182,184 ); + ent.v[ "angles" ] = ( 13,0955, 186,883, -12,7702 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2355,15, 1695,04, -206,983 ); + ent.v[ "angles" ] = ( 4,31203, 188,87, -0,468583 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2600,72, 2239,11, -201,275 ); + ent.v[ "angles" ] = ( 4,31207, 188,87, -12,4686 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2510,21, 1040,65, -212,939 ); + ent.v[ "angles" ] = ( 359,43, 189,949, -12,4333 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2588,63, 1294,3, -172,83 ); + ent.v[ "angles" ] = ( 333,731, 178,565, -10,7184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -778,505, 1046,77, -198,082 ); + ent.v[ "angles" ] = ( 357,031, 212,759, -14,4189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2124,71, 1993,61, -133,941 ); + ent.v[ "angles" ] = ( 8,32616, 213,983, -0,973063 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1905,08, 2197,17, -141,248 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 159 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2237,73, 2304,63, -163,723 ); + ent.v[ "angles" ] = ( 22,3356, 166,273, -0,79912 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2093,52, 3221,22, -204,71 ); + ent.v[ "angles" ] = ( 360, 175, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -2236,85, 3283,24, -219,902 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_area" ); + ent.v[ "origin" ] = ( -1838,37, 4040,13, -199 ); + ent.v[ "angles" ] = ( 0, 173,997, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1615,52, 3932,52, -152,145 ); + ent.v[ "angles" ] = ( 21, 171, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1478,15, 4128,5, -118,027 ); + ent.v[ "angles" ] = ( 350,011, 174,588, -20,614 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_smolder_rubble_line_sm" ); + ent.v[ "origin" ] = ( -1263,36, 4221,16, -257,875 ); + ent.v[ "angles" ] = ( 325,298, 215,525, -8,8776 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_la_sun1" ); + ent.v[ "origin" ] = ( -3652,57, 35635,9, 26492 ); + ent.v[ "angles" ] = ( 285, 90, -68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1181,49, 5042,49, -261,955 ); + ent.v[ "angles" ] = ( 355, 100, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1303,1, 4950,23, -262,125 ); + ent.v[ "angles" ] = ( 357, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -208,151, 3588,25, -150,774 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1248,93, 5017,84, -262,153 ); + ent.v[ "angles" ] = ( 353,296, 122,013, 2,13843 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1109,89, 5031,68, -264,009 ); + ent.v[ "angles" ] = ( 351,815, 70,7762, 2,06796 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1308,18, 4863,49, -262,01 ); + ent.v[ "angles" ] = ( 353,799, 196,005, 0,540364 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1048,16, 4985,52, -262,043 ); + ent.v[ "angles" ] = ( 350,5, 39,9179, 0,607186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1013,95, 4917,75, -261,689 ); + ent.v[ "angles" ] = ( 352,203, 6,62802, 0,794539 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1024,53, 4843,52, -261,098 ); + ent.v[ "angles" ] = ( 353,586, 341,451, -0,962938 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1271,45, 4792,13, -261,008 ); + ent.v[ "angles" ] = ( 354,908, 228,158, -0,888594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1209,02, 4752,88, -261,202 ); + ent.v[ "angles" ] = ( 353,922, 256,238, -0,179304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1066,2, 4780,05, -261,341 ); + ent.v[ "angles" ] = ( 356,664, 311,377, 1,91272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_splash_mist_fountain" ); + ent.v[ "origin" ] = ( -1136,27, 4744,76, -261,155 ); + ent.v[ "angles" ] = ( 354,342, 280,368, 0,13846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_firetruck" ); + ent.v[ "origin" ] = ( -2568,7, 685,6, -207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269,6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk_distant" ); + ent.v[ "origin" ] = ( -9689,1, 5424,9, 2557,81 ); + ent.v[ "angles" ] = ( 6,27876, 285,319, -1,24729 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_ext_dist_falling_debris" ); + ent.v[ "origin" ] = ( -9623,87, 5388,72, 2544,54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_int_dist_xlg" ); + ent.v[ "origin" ] = ( -9771,97, 5388,11, 2166,23 ); + ent.v[ "angles" ] = ( 0, 355, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_int_dist_xlg" ); + ent.v[ "origin" ] = ( -4851,88, -895,618, 1122,79 ); + ent.v[ "angles" ] = ( 0, 355, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_int_dist_xlg" ); + ent.v[ "origin" ] = ( -4115,58, -6560,9, 4016,83 ); + ent.v[ "angles" ] = ( 3,27622, 49,9342, -2,29716 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_int_dist_xlg" ); + ent.v[ "origin" ] = ( -5191,22, -6183,18, 5934,13 ); + ent.v[ "angles" ] = ( 4, 86,0023, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_ext_dist_falling_debris" ); + ent.v[ "origin" ] = ( -3789,11, -5559,43, 3888,22 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_bldg_int_dist_xlg" ); + ent.v[ "origin" ] = ( -5998,29, 7707,82, 795,268 ); + ent.v[ "angles" ] = ( 356,346, 289,052, -1,62934 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( -233,732, 2628,09, 131,475 ); + ent.v[ "angles" ] = ( 89,9651, 87,9915, 178,992 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3002; + ent = maps/mp/_utility::createexploder( "fx_light_outdoor_wall" ); + ent.v[ "origin" ] = ( 287,981, 1705,02, -82,1401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3003; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_pent_lamp_desk" ); + ent.v[ "origin" ] = ( -674,533, 2778,55, 33,3667 ); + ent.v[ "angles" ] = ( 63,6855, 339,664, -16,8023 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_pent_lamp_desk" ); + ent.v[ "origin" ] = ( -684,725, 2943,07, 33,125 ); + ent.v[ "angles" ] = ( 60, 36, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_detail_blk" ); + ent.v[ "origin" ] = ( -371,722, 2402,06, 62,4251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_sm_runner" ); + ent.v[ "origin" ] = ( 138,599, 2941,03, -53,0575 ); + ent.v[ "angles" ] = ( 58,194, 327,501, -11,2124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_ash_falling_door" ); + ent.v[ "origin" ] = ( 37,6359, 517,715, -93,162 ); + ent.v[ "angles" ] = ( 39,9277, 266,515, 1,15198 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_light_outdoor_wall" ); + ent.v[ "origin" ] = ( 673,909, 1705, -82,2921 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3003; + ent = maps/mp/_utility::createexploder( "fx_light_outdoor_wall" ); + ent.v[ "origin" ] = ( -451,951, 1885,67, -83,2023 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_detail_blk" ); + ent.v[ "origin" ] = ( -397,592, 2486,77, 64,4336 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 190 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm" ); + ent.v[ "origin" ] = ( -1873,8, 1215,32, -166,061 ); + ent.v[ "angles" ] = ( 290,851, 170,338, -0,749529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_detail_blk" ); + ent.v[ "origin" ] = ( -1870,49, 1219,93, -147,364 ); + ent.v[ "angles" ] = ( 360, 175, -16 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "origin" ] = ( 7,3392, 2653,22, -27,4032 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -341,818, -892,832, -137,358 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -479,281, -893,118, -137,364 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -620,288, -893,344, -136,622 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -884,636, -893,028, -137,025 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -342,588, -1373,44, -136,721 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -480,67, -1373,52, -137,356 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -595,581, -1372,76, -137,354 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -722,606, -1373,44, -137,367 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -838,612, -1374,6, -137,196 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -722,372, -1565,15, -136,766 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( -838,132, -1565,03, -137,111 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( -596,917, -1565,59, -136,134 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( -480,061, -1565,45, -136,445 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( -341,63, -1564,57, -136,759 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( -771,058, -893,535, -136,195 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( -740,818, 67,4211, 62,7712 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( 41,4271, -124,344, 62,421 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( 370,505, -124,113, 62,3464 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( 507,182, 67,3318, 63,6387 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( 373,911, 68,5682, 63,1458 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -856,212, 67,3872, 63,4107 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -621,832, 67,8153, 63,089 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -494,262, 67,4517, 63,6499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -374,945, 66,7372, 62,6954 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -265,981, 66,8669, 62,7713 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -142,113, 67,2712, 62,7598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -8,12886, 67,0104, 63,8761 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -189,275, -124,95, 64,0678 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( -70,4325, -125,437, 62,2695 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( 153,795, -125,095, 63,8372 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( 269,424, -126,852, 62,2402 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( 629,683, 67,4643, 62,0338 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( 242,321, 67,9498, 62,6577 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_green" ); + ent.v[ "origin" ] = ( 115,197, 67,3116, 63,0846 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 58,5516, -99,0717, 22,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1007,9, -71,7925, 30,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -355,078, -476,457, -93,4562 ); + ent.v[ "angles" ] = ( 15, 179, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -28,3065, -223,546, -267,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 260 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -1223,73, -1607,3, -264,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -2090,31, -174,806, -155,441 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1694,67, 102,1, -136,652 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -2098,87, 94,0168, 3,30144 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; +} diff --git a/mp_la/maps/mp/mp_la.gsc b/mp_la/maps/mp/mp_la.gsc new file mode 100644 index 0000000..572ee06 --- /dev/null +++ b/mp_la/maps/mp/mp_la.gsc @@ -0,0 +1,72 @@ +#include maps/mp/_compass; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_la_fx::main(); + if ( gamemodeismode( level.gamemode_wager_match ) ) + { + maps/mp/_compass::setupminimap( "compass_map_mp_la_wager" ); + } + else + { + maps/mp/_compass::setupminimap( "compass_map_mp_la" ); + } + maps/mp/_load::main(); + maps/mp/mp_la_amb::main(); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + registerclientfield( "scriptmover", "police_car_lights", 1, 1, "int" ); + registerclientfield( "scriptmover", "ambulance_lights", 1, 1, "int" ); + level thread destructible_lights(); + level.remotemotarviewleft = 45; + level.remotemotarviewright = 45; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); +} + +destructible_lights() +{ + wait 0,05; + destructibles = getentarray( "destructible", "targetname" ); + _a66 = destructibles; + _k66 = getFirstArrayKey( _a66 ); + while ( isDefined( _k66 ) ) + { + destructible = _a66[ _k66 ]; + if ( destructible.destructibledef == "veh_t6_police_car_destructible_mp" ) + { + destructible thread destructible_think( "police_car_lights" ); + destructible setclientfield( "police_car_lights", 1 ); + } + else + { + if ( destructible.destructibledef == "veh_iw_civ_ambulance_destructible" ) + { + destructible thread destructible_think( "ambulance_lights" ); + destructible setclientfield( "ambulance_lights", 1 ); + } + } + _k66 = getNextArrayKey( _a66, _k66 ); + } +} + +destructible_think( clientfield ) +{ + self waittill_any( "death", "destructible_base_piece_death" ); + self setclientfield( clientfield, 0 ); +} diff --git a/mp_la/maps/mp/mp_la_amb.gsc b/mp_la/maps/mp/mp_la_amb.gsc new file mode 100644 index 0000000..b4b1b37 --- /dev/null +++ b/mp_la/maps/mp/mp_la_amb.gsc @@ -0,0 +1,16 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; +#include common_scripts/utility; + +main() +{ + array_thread( getentarray( "advertisement", "targetname" ), ::advertisements ); +} + +advertisements() +{ + self playloopsound( "amb_" + self.script_noteworthy + "_ad" ); + self waittill( "damage" ); + self stoploopsound(); + self playloopsound( "amb_" + self.script_noteworthy + "_damaged_ad" ); +} diff --git a/mp_la/maps/mp/mp_la_fx.gsc b/mp_la/maps/mp/mp_la_fx.gsc new file mode 100644 index 0000000..36a30f0 --- /dev/null +++ b/mp_la/maps/mp/mp_la_fx.gsc @@ -0,0 +1,92 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_util_fx() +{ +} + +precache_scripted_fx() +{ + level._effect[ "fx_light_police_car" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_water_fire_sprinkler" ] = loadfx( "water/fx_water_fire_sprinkler" ); + level._effect[ "fx_water_fire_sprinkler_splash" ] = loadfx( "water/fx_water_fire_sprinkler_splash" ); + level._effect[ "fx_water_fire_sprinkler_sputter" ] = loadfx( "water/fx_water_fire_sprinkler_sputter" ); + level._effect[ "fx_water_fire_sprinkler_gush" ] = loadfx( "water/fx_water_fire_sprinkler_gush" ); + level._effect[ "fx_water_fire_sprinkler_gush_splash" ] = loadfx( "water/fx_water_fire_sprinkler_gush_splash" ); + level._effect[ "fx_water_fountian_pool_md" ] = loadfx( "water/fx_water_fountain_pool_md" ); + level._effect[ "fx_mp_water_splash_mist_fountain" ] = loadfx( "maps/mp_maps/fx_mp_water_splash_mist_fountain" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_mp_debris_papers" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers" ); + level._effect[ "fx_mp_debris_papers_narrow" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers_narrow" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_paper_burning_fall_slow" ] = loadfx( "debris/fx_paper_burning_fall_slow" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_dust_crumble_lg" ] = loadfx( "dirt/fx_dust_crumble_lg_runner" ); + level._effect[ "fx_mp_fire_md" ] = loadfx( "maps/mp_maps/fx_mp_fire_md" ); + level._effect[ "fx_fire_bldg_ext_dist_falling_debris" ] = loadfx( "fire/fx_fire_bldg_ext_dist_falling_debris" ); + level._effect[ "fx_fire_lg" ] = loadfx( "env/fire/fx_fire_lg" ); + level._effect[ "fx_fire_sm" ] = loadfx( "env/fire/fx_fire_sm" ); + level._effect[ "fx_fire_bldg_int_dist_xlg" ] = loadfx( "fire/fx_fire_bldg_int_dist_xlg" ); + level._effect[ "fx_mp_fire_ash_falling_lg" ] = loadfx( "maps/mp_maps/fx_mp_fire_ash_falling_lg" ); + level._effect[ "fx_mp_fire_ash_falling_door" ] = loadfx( "maps/mp_maps/fx_mp_fire_ash_falling_door" ); + level._effect[ "fx_mp_ash_falling_lg" ] = loadfx( "maps/mp_maps/fx_mp_ash_falling_lg" ); + level._effect[ "fx_mp_smk_haze_linger_xlg" ] = loadfx( "maps/mp_maps/fx_mp_smk_haze_linger_xlg" ); + level._effect[ "fx_mp_smk_plume_detail_blk" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_detail_blk" ); + level._effect[ "fx_mp_smk_plume_md_blk" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_md_blk" ); + level._effect[ "fx_mp_smk_plume_lg_blk" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_lg_blk" ); + level._effect[ "fx_mp_smk_smolder_rubble_area" ] = loadfx( "maps/mp_maps/fx_mp_smk_smolder_rubble_area" ); + level._effect[ "fx_mp_smk_smolder_rubble_line" ] = loadfx( "maps/mp_maps/fx_mp_smk_smolder_rubble_line" ); + level._effect[ "fx_mp_smk_smolder_rubble_line_sm" ] = loadfx( "maps/mp_maps/fx_mp_smk_smolder_rubble_line_sm" ); + level._effect[ "fx_mp_smk_plume_lg_blk_distant" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_lg_blk_distant" ); + level._effect[ "fx_mp_smk_plume_md_blk_distant" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_md_blk_distant" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin" ); + level._effect[ "fx_mp_elec_spark_burst_sm_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_sm_runner" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin_runner" ); + level._effect[ "fx_mp_elec_spark_burst_md_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_md_runner" ); + level._effect[ "fx_mp_elec_spark_burst_lg_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_lg_runner" ); + level._effect[ "fx_light_emrgncy_floodlight" ] = loadfx( "light/fx_light_emrgncy_floodlight" ); + level._effect[ "fx_light_recessed_wrm" ] = loadfx( "light/fx_light_recessed_wrm" ); + level._effect[ "fx_light_ambulance_red" ] = loadfx( "env/light/fx_light_ambulance_red" ); + level._effect[ "fx_mp_light_flare_la" ] = loadfx( "maps/mp_maps/fx_mp_light_flare_la" ); + level._effect[ "fx_light_flourescent_glow_cool" ] = loadfx( "light/fx_light_flourescent_glow_cool" ); + level._effect[ "fx_light_gray_white_ribbon_sm" ] = loadfx( "light/fx_light_gray_white_ribbon_sm" ); + level._effect[ "fx_mp_light_police_car" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car" ); + level._effect[ "fx_mp_light_ambulance" ] = loadfx( "maps/mp_maps/fx_mp_light_ambulance" ); + level._effect[ "fx_mp_light_firetruck" ] = loadfx( "maps/mp_maps/fx_mp_light_firetruck" ); + level._effect[ "fx_light_flourescent_ceiling_panel" ] = loadfx( "light/fx_light_flourescent_ceiling_panel" ); + level._effect[ "fx_light_pent_lamp_desk" ] = loadfx( "light/fx_light_pent_lamp_desk" ); + level._effect[ "fx_light_outdoor_wall" ] = loadfx( "light/fx_light_outdoor_wall" ); + level._effect[ "fx_light_recessed_cool" ] = loadfx( "light/fx_light_recessed_cool" ); + level._effect[ "fx_light_garage_parking_green" ] = loadfx( "light/fx_light_garage_parking_green" ); + level._effect[ "fx_light_garage_parking_red" ] = loadfx( "light/fx_light_garage_parking_red" ); + level._effect[ "fx_lf_mp_la_sun1" ] = loadfx( "lens_flares/fx_lf_mp_la_sun1" ); + level._effect[ "fx_dest_fire_hydrant_burst" ] = loadfx( "maps/mp_maps/fx_mp_fire_hydrant_burst" ); + level._effect[ "fx_rain_splash_area_100_hvy_lp" ] = loadfx( "weather/fx_rain_splash_area_100_hvy_lp" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "clearance_pipe" ] = %fxanim_gp_garage_clearance_pipe_anim; + level.scr_anim[ "fxanim_props" ][ "elevator_doors" ] = %fxanim_mp_la_elevator_doors_anim; + level.scr_anim[ "fxanim_props" ][ "sparking_wires_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "sparking_wires_long" ] = %fxanim_gp_wirespark_long_anim; + level.scr_anim[ "fxanim_props" ][ "hanging_wires" ] = %fxanim_mp_la_hanging_wires_anim; +} + +main() +{ + precache_util_fx(); + precache_createfx_fx(); + precache_scripted_fx(); + precache_fxanim_props(); + maps/mp/createfx/mp_la_fx::main(); + maps/mp/createart/mp_la_art::main(); +} diff --git a/mp_magma/aitype/enemy_dog_mp.gsc b/mp_magma/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_magma/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_magma/character/character_mp_german_shepherd.gsc b/mp_magma/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_magma/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_magma/maps/mp/createfx/mp_magma_fx.gsc b/mp_magma/maps/mp/createfx/mp_magma_fx.gsc new file mode 100644 index 0000000..b17d52f --- /dev/null +++ b/mp_magma/maps/mp/createfx/mp_magma_fx.gsc @@ -0,0 +1,2515 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -83,2882, 801,451, -390,872 ); + ent.v[ "angles" ] = ( 355,135, 89,1011, -1,34582 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1624,42, 650,628, -633 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 794,536, 500,637, -504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3028,16, -806,528, -883 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 726,22, -1443,45, -712,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1583,59, -1650,88, -941,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3811,31, -873,052, -540 ); + ent.v[ "angles" ] = ( 270, 0, -1 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_volcano_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -64,2282, 11164,4, 3188,97 ); + ent.v[ "angles" ] = ( 345,054, 80,2724, -13,97 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1177,98, 246,814, -478,065 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1268,26, 461,678, -475,091 ); + ent.v[ "angles" ] = ( 5,52931, 258,943, 0,782471 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1070,16, 323,492, -471,174 ); + ent.v[ "angles" ] = ( 358,924, 266,03, -0,674775 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1183,29, 174,587, -476,72 ); + ent.v[ "angles" ] = ( 0,963578, 269,97, -0,47042 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1261,58, -204,029, -494,919 ); + ent.v[ "angles" ] = ( 1,67731, 222,964, -2,4882 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1367,47, 131,479, -491,021 ); + ent.v[ "angles" ] = ( 1,09957, 217,947, 0,516985 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -946,519, 615,787, -437,115 ); + ent.v[ "angles" ] = ( 2,11217, 230,398, 0,997092 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -632,791, 719,894, -407,448 ); + ent.v[ "angles" ] = ( 357,999, 246, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -305,517, 708,333, -395,259 ); + ent.v[ "angles" ] = ( 0,998781, 246, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 149,535, 851,394, -397,767 ); + ent.v[ "angles" ] = ( 3,73616, 276,049, 1,32327 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -43,1799, 647,125, -396,629 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 285 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -395,437, 881,646, -393,302 ); + ent.v[ "angles" ] = ( 0,531561, 252, 1,05351 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -809,093, -193,678, -497,643 ); + ent.v[ "angles" ] = ( 6, 300, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -992,403, -160,495, -491,895 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 293 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1119,76, -307,973, -494,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 228 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1132,08, 576,886, -462,039 ); + ent.v[ "angles" ] = ( 356,001, 255,993, 0,104973 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -625,015, 931,451, -403,941 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 261 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2363,13, -738,011, -420,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 282 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1626,32, -650,634, -288,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 264 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1565,7, -582,743, -378 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 249 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1658,71, -1257,92, -484,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1093,95, 113,141, -312,424 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 243 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1639,78, -1292,24, -512 ); + ent.v[ "angles" ] = ( 360, 273, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2153,26, -1154,39, -419,875 ); + ent.v[ "angles" ] = ( 1, 282, 0 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2580,15, 141,23, -229,024 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 242 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3184,77, -260,96, -407 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_magma_volcano" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -390,698, 8310,66, 4936,46 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_magma_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -209748, -508218, 366879 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 13558, -2187,5, -394,559 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7783,27, 2626,57, -566,854 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -10250,3, -1290,51, -504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -987,249, -8351,25, -844,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10978,2, -5330,36, -258,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4576,06, -6048,44, -563,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2686,84, -8054,87, -768,875 ); + ent.v[ "angles" ] = ( 357, 259, 0 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -62,089, -664,62, -655,806 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 229 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -351,415, -3439,8, -702 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1939,01, -473,465, -178,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1821,72, -136,48, -204,202 ); + ent.v[ "angles" ] = ( 357, 266, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1688,22, -812,028, -504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 259 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2547,99, -1269,55, -591,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 280 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -670,492, -354,903, -504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 248 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -181,153, -720,634, -658,928 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 47 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 273,998, -557,349, -594,992 ); + ent.v[ "angles" ] = ( 12,3588, 179,608, -2,79387 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12,912, -242,671, -551,814 ); + ent.v[ "angles" ] = ( 5,0234, 283,797, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_steam_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4202,01, 5170,7, 1513,43 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 250 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_plume_md_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -6642,86, -2056,78, -473,243 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 263 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_ocean_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 525,434, -5248,86, -819,334 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 312 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_ocean" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 159,289, -5492,31, -805,08 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_ocean_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1291,38, -5625,02, -789,521 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1135,62, -2128,65, -477,875 ); + ent.v[ "angles" ] = ( 359, 265, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -28,9387, -1858,45, -427,343 ); + ent.v[ "angles" ] = ( 357,037, 286,012, -0,469781 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 776,174, -2172, -487,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2088,64, -2022,94, -426,047 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 26,5999, -540,173, -430,123 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 241 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 391,497, -853,697, -396 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 229 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -628,151, -1911,96, -413,607 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1584,71, -1000,62, -575,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 275 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2033,05, -685,937, -599,795 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1546,91, -1487,96, -676 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 274 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2378,62, -934,667, -599,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 265 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1553,74, -738,518, -574,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1308,66, -104,126, -451,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -277,486, -255,843, -504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 247 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1594,97, -546,112, -496 ); + ent.v[ "angles" ] = ( 360, 266, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 623,76, -743,645, -511,411 ); + ent.v[ "angles" ] = ( 1,98053, 274,722, -8,00481 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1857,15, 331,99, -444 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 261 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2001,86, -26,1502, -466,258 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 275 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2062,57, -255,085, -527,429 ); + ent.v[ "angles" ] = ( 13, 272, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1725,7, -581,344, -420,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2507,12, -615,797, -278,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 275 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -204,667, -557,553, -636,955 ); + ent.v[ "angles" ] = ( 356,819, 225,857, -0,323835 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 77,4551, -792,528, -639,13 ); + ent.v[ "angles" ] = ( 0,687726, 237,302, -0,492771 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1519,82, -343,38, -491,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -903,84, -125,267, -494,215 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 338 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 343,479, -1508,19, -499,054 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 281,95, -1507,91, -499,374 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1414,51, -1510,23, -550,417 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1092,46, 469,538, -467,213 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1260,08, 378,752, -483,674 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 261 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1007,73, -134,546, -490,136 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 276 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1050,3, 146,914, -471,723 ); + ent.v[ "angles" ] = ( 0,998172, 275, 0 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1209,85, -0,161606, -484,718 ); + ent.v[ "angles" ] = ( 0,857287, 258, 0,515153 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1419,29, -300,263, -496 ); + ent.v[ "angles" ] = ( 1, 227, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -471,282, 888,208, -396,619 ); + ent.v[ "angles" ] = ( 0,933716, 248, 0,358453 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -35,7145, 603,847, -403,149 ); + ent.v[ "angles" ] = ( 6,55863, 283,087, 0,834612 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 405,413, 765,877, -419,005 ); + ent.v[ "angles" ] = ( 3,43238, 289,035, -2,58516 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -786,345, -221,253, -502,128 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 300 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -980,752, -454,861, -501,896 ); + ent.v[ "angles" ] = ( 2, 251, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -953,482, -1514,72, -373,712 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -847,265, -1514,75, -373,706 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1058,33, -1514,61, -373,724 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -846,64, -1148,29, -373,724 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -952,722, -1148,18, -373,682 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1057,5, -1148,36, -373,732 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1342,09, -1547,44, -549,146 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1403,08, -1534,48, -547,041 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -953,1, -1079,6, -527,057 ); + ent.v[ "angles" ] = ( 271, 89,9971, -89,999 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1299,76, -1247,39, -518,76 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1048,79, -1692,2, -541,098 ); + ent.v[ "angles" ] = ( 279,055, 186,288, 173,633 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_volcano_erupt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -868,665, 8556,45, 4538,65 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 87 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_vent_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -851,028, -1374,21, -383,83 ); + ent.v[ "angles" ] = ( 359, 180, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_vent_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -850,177, -1477,52, -384,553 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_vent_w" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1480,06, -1162,62, -320,721 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 177 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_vent_w" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1483,24, -1493,63, -321,415 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 177 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1175,61, -1248,18, -521,413 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1218,31, -1580,35, -517,999 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1426,91, -1508,83, -550,157 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1198,69, -1514,56, -373,704 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1290,11, -1514,33, -373,626 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1381,75, -1514,6, -373,723 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1399,58, -1148,34, -373,743 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1294,8, -1148,04, -373,638 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1188,54, -1148,01, -373,624 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2687,11, -1956,9, -722,342 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2312,42, -2096,91, -653,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1147,76, 1135,48, -432,177 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1487,59, 1549,79, -342,033 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1782,25, 2418,36, -146,873 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3515,57, -1678,29, -675,173 ); + ent.v[ "angles" ] = ( 12, 260, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3446,62, -964,906, -599,976 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3148,46, 235,601, -511,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1920,87, 3045,36, -17,8145 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 926,445, 560,822, -457,741 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 827,565, 627,967, -457,907 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -449,789, -1315,25, -762,553 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -129,784, -1443,23, -758,525 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -322,36, -1780,13, -752,254 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,81, -1021,26, -696,554 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 293 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -252,656, -1334,15, -705,429 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 308 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -42,532, -2876,59, -837,704 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 275 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 43,1153, -4787,95, -859,222 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -393,676, -4750,93, -854,995 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -106,799, -645,335, -693 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3326,45, -1222,39, -581,004 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 262 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2391,88, 344,043, -426,474 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 262 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 999,657, 1930,6, 216,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 225 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -175,467, -4017,95, -875,632 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 138,366, -3492,77, -853,797 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -155,186, -3308,28, -872,807 ); + ent.v[ "angles" ] = ( 6, 260, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1365,06, -2685,88, -736,577 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1677,66, -1903,5, -647,844 ); + ent.v[ "angles" ] = ( 0, 328, -6 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1535,94, -2011,76, -646,706 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 328 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -10,5987, -1050,49, -659,177 ); + ent.v[ "angles" ] = ( 359,087, 252, -0,406351 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_200_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 626,782, 1313,29, 894,745 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 237 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_200_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 571,012, 1321,98, 545,487 ); + ent.v[ "angles" ] = ( 0, 237, -2 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_200_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 549,976, 1449,53, 546,313 ); + ent.v[ "angles" ] = ( 357, 150, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3263,7, 1269,66, -277,084 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3296,05, -714,717, -564,755 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3595,73, -1488,77, -622,813 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3383,08, -1119,2, -585,563 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 262 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6168,84, -1809,36, -458,875 ); + ent.v[ "angles" ] = ( 27,9944, 284,524, 3,50026 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 174,299, -225,389, -363,043 ); + ent.v[ "angles" ] = ( 72,745, 213,838, -0,713803 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 253,496, -340,313, -478,058 ); + ent.v[ "angles" ] = ( 78,9029, 152,106, -83,7438 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2267,31, -1739,81, -630,602 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2191,13, -1706,69, -658,053 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2627,24, 1863,67, -9,01601 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 263 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4041,85, -1560,45, -436,756 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 262 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5229,01, 1477,58, -218,491 ); + ent.v[ "angles" ] = ( 35, 263, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -158,465, 1237,44, -94,6902 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 688,029, 1464,79, 889,097 ); + ent.v[ "angles" ] = ( 359,912, 216,018, -0,725346 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1897,73, 1574,44, -89,4524 ); + ent.v[ "angles" ] = ( 354,003, 242,756, -0,31543 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1541,36, 883,749, -33,2916 ); + ent.v[ "angles" ] = ( 2,81935, 250,025, 1,02705 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -398,79, -1465,43, -674,205 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 264 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2112,83, -1663,76, -596,385 ); + ent.v[ "angles" ] = ( 7,98038, 287,039, 0,56169 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 437,567, -1873,38, -446,514 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1399,43, 428,828, -373,067 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_fish" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -924,608, -1232,27, -517,035 ); + ent.v[ "angles" ] = ( 271, 89,9971, -89,999 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 29,2199, -699,909, -504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 254 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 364,608, -397,04, -256,014 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 236 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 361,931, -435,377, -370,525 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 228 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5,65167, -219,994, -221,041 ); + ent.v[ "angles" ] = ( 16, 210, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -450,82, -945,502, -636,147 ); + ent.v[ "angles" ] = ( 0, 347, 3 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -460,414, -989,039, -642,695 ); + ent.v[ "angles" ] = ( 359,083, 300,945, 5,02909 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -43,1443, -1459,02, -663,314 ); + ent.v[ "angles" ] = ( 359,016, 269,936, 8,93483 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -659,126, -1260,07, -647,64 ); + ent.v[ "angles" ] = ( 353,092, 300,679, 1,04314 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -248,148, -1696,78, -443,463 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3394,17, -1700,07, -531,374 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1309,99, -1273,78, -276,978 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -580,558, -693,833, -157,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -205,887, -1918,17, -686,439 ); + ent.v[ "angles" ] = ( 0, 89, -6 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_200_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -219,594, -1945,69, -691,204 ); + ent.v[ "angles" ] = ( 1,04473, 92,0848, -1,31476 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -596,288, -585,213, -434,562 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -867,403, -700,257, -440,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 482,401, -1244,46, -536,737 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 785,046, -1242,65, -534,764 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 452,625, -2031,86, -517,281 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1360,91, -1423,83, -597,115 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 248,368, -2015,94, -532,536 ); + ent.v[ "angles" ] = ( 13, 180, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -702,31, -2017,12, -521,112 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 17 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2105,33, -484,65, -442,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 51 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -212,972, 408,505, -336,698 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -482,482, 357,575, -421,684 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -929,882, 23,623, -448,253 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2509,77, -566,31, -445,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2793,82, -584,125, -395,603 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -180,49, -488,8, -592,712 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 308 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 299,403, -1503,08, -613,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 351 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1435,36, -1489,24, -666,045 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 188 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -938,523, -1799,56, -556,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 76 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1463,44, -1397,77, -550 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 326 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2116,42, -554,917, -476,346 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 57 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1733,76, -279,229, -487,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 203 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -947,251, 55,4396, -495,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 347 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -84,0107, 416,238, -384 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 233 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -923,006, -632,686, -487,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 305 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -457,397, -648,445, -461,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 211 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_ember_door" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 597,301, -665,134, -504,611 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 128 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_ocean_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -258,094, -5693,38, -875,866 ); + ent.v[ "angles" ] = ( 21, 274, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_volcano_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -571,159, 12446,6, 4332,14 ); + ent.v[ "angles" ] = ( 355,189, 104,113, -5,96228 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_volcano_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1754,37, 13869, 4442,37 ); + ent.v[ "angles" ] = ( 338,547, 67,1298, -33,7248 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4397,92, 5104,39, 1097,25 ); + ent.v[ "angles" ] = ( 9,00167, 330,549, 7,43622 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 72,9087, -1135,59, -660,497 ); + ent.v[ "angles" ] = ( 359,134, 258, -0,499562 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,821, -1410,68, -654,333 ); + ent.v[ "angles" ] = ( 0, 192, 2 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 133,139, -1581,91, -648,414 ); + ent.v[ "angles" ] = ( 356, 91, -2 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -510,942, -1198,11, -648,953 ); + ent.v[ "angles" ] = ( 356,329, 326,27, -3,27294 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -681,728, -1603,48, -675,759 ); + ent.v[ "angles" ] = ( 357,046, 325,014, -0,521401 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_lava_edge_fire_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 173,991, -353,474, -615,482 ); + ent.v[ "angles" ] = ( 354, 223, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2336, -2533,12, -760,701 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5942,61, -1775,52, -498,482 ); + ent.v[ "angles" ] = ( 3, 277, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2591,95, -1802,4, -678,335 ); + ent.v[ "angles" ] = ( 358,592, 241,033, -2,64979 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2879,19, -2074,01, -725,926 ); + ent.v[ "angles" ] = ( 358,592, 241,033, -2,64979 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3075,23, -1850,81, -639,241 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 202,751, -3035,47, -878,827 ); + ent.v[ "angles" ] = ( 9, 260, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 574,858, -3119,23, -832,56 ); + ent.v[ "angles" ] = ( 6, 260, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 845,539, -2959,6, -813,282 ); + ent.v[ "angles" ] = ( 6, 260, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1675,37, -2592,73, -723,145 ); + ent.v[ "angles" ] = ( 17,1843, 316,436, 22,4512 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 364,907, -4164,38, -862,932 ); + ent.v[ "angles" ] = ( 2, 260, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3537,3, -656,398, -279,864 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -342,087, 1789,12, 116,807 ); + ent.v[ "angles" ] = ( 0,286742, 246,016, -0,671972 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -729,705, -1652,52, -354,82 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -729,195, -1555,99, -353,662 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -730,135, -1464,69, -354,388 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1206,89, -916,401, -5,66857 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1303,35, -916,76, -5,94865 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1396,74, -916,347, -5,62549 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1108,07, -2000,75, -443,228 ); + ent.v[ "angles" ] = ( 28,1384, 331,016, -7,40568 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -273,184, -1949,66, -520,737 ); + ent.v[ "angles" ] = ( 26,8109, 38,3048, 15,2998 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -252,017, -1951,97, -513,047 ); + ent.v[ "angles" ] = ( 14,8323, 126,468, 20,475 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3144,49, -589,201, -493,532 ); + ent.v[ "angles" ] = ( 1, 260, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3251,34, -738,626, -494,296 ); + ent.v[ "angles" ] = ( 356,335, 258,947, 1,53826 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_whisp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3206,21, -422,99, -494,564 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3145,22, -383,906, -504 ); + ent.v[ "angles" ] = ( 355,034, 277,982, 0,259813 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2481,1, 144,246, -445 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 262 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -534,773, 5,85307, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -610,545, 6,14791, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -694,125, 6,34257, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -441,788, 6,29503, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -357,362, 6,27576, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -273,452, 6,07206, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -188,502, 6,43592, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -188,879, 200,677, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -273,718, 201,307, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -357,628, 201,51, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -527,008, 201,54, -276,707 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -610,811, 201,383, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -189,335, 95,1667, -260,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -358,306, 94,0127, -260,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -526,459, 94,3918, -259,722 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -611,488, 93,8849, -260,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -611,721, 293,946, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -525,581, 294,389, -259,699 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -273,933, 293,785, -259,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -79,6575, 173,643, -260,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -79,6937, 299,404, -260,5 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -282,377, 144,229, -277,898 ); + ent.v[ "angles" ] = ( 24,7885, 318,138, -3,92266 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -282,139, 144,141, -277,383 ); + ent.v[ "angles" ] = ( 24,7885, 318,138, -3,92266 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -654,165, 143,714, -277,077 ); + ent.v[ "angles" ] = ( 22,9457, 238,342, 1,55561 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -654,54, 142,937, -277,349 ); + ent.v[ "angles" ] = ( 22,9457, 238,342, 1,55561 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -271,192, 385,044, -257,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -271,352, 451,177, -257,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -317,419, 412,098, -257,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -205,112, 385,016, -257,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -204,935, 450,245, -257,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -748,667, 354,28, -392,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -531,184, 447,733, -392,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -386,144, 446,41, -392,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -256,798, 445,252, -392 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -798,462, 62,0562, -361,253 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,685, -19,4361, -362,244 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2081,25, -431,153, -361,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2055,35, -335,396, -362,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1949,85, -427,721, -361,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_ocean_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 728,408, -4974,25, -808,065 ); + ent.v[ "angles" ] = ( 354, 315, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_ocean" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -707,647, -5568,82, -825 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 258 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1887,96, -273,873, -361,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_fire_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 526,073, 1376, 559,353 ); + ent.v[ "angles" ] = ( 8,80175, 210,855, -1,88606 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_steam_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4567,99, 5553,14, 1111,64 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 229 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_vista_lt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1785,37, 6369,42, 2052,35 ); + ent.v[ "angles" ] = ( 324, 254, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 472,658, -1126,88, -448,771 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -932,462, -2184,43, -563,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 262 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1446,43, -2531,72, -563,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -251,884, 488,125, -329,798 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1518,29, -1884,86, -457,249 ); + ent.v[ "angles" ] = ( 3, 238, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1730,92, 0,125, -418,379 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_sky" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2039,06, -766,883, -600 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 280 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1334,07, 331,11, -352,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1334,56, 429,438, -352,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1334,27, 553,43, -352,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2490,79, -944,664, -353,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2546,12, -944,788, -353,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2545,8, -826,642, -351,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2490,89, -826,293, -351,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2491,02, -718,156, -351,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2545,91, -718,14, -351,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2546,13, -615,941, -351,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2491,2, -615,749, -351,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1258,03, 3913,21, -878,606 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 172 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1955,7, 5060,76, 365,438 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 183 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_volcano_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -120,551, 8473,12, 3730,76 ); + ent.v[ "angles" ] = ( 355,214, 204,962, -14,7418 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2351,81, -600,506, -457,635 ); + ent.v[ "angles" ] = ( 2,73081, 248,942, -0,785321 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2513,14, -449,068, -422,431 ); + ent.v[ "angles" ] = ( 3,73071, 248,928, -0,786096 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2934,64, -726,397, -446,517 ); + ent.v[ "angles" ] = ( 0,583671, 238,969, -0,899506 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2736,95, -868,426, -577,448 ); + ent.v[ "angles" ] = ( 354,732, 249,051, -0,787759 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2205,11, -1884,75, -623,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3291,92, -1846,96, -636,368 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -69,4731, -138,357, -509,714 ); + ent.v[ "angles" ] = ( 9,01093, 286,835, 0,476183 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 425,82, -500,836, -531,924 ); + ent.v[ "angles" ] = ( 9,36229, 179,756, -2,76595 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -550,928, -1080,29, -617,327 ); + ent.v[ "angles" ] = ( 356, 294, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -665,057, -1483,38, -634,255 ); + ent.v[ "angles" ] = ( 356, 294, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3113,2, -990,711, -569,239 ); + ent.v[ "angles" ] = ( 354,78, 252,064, -1,06315 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3161,25, -1228,02, -567,583 ); + ent.v[ "angles" ] = ( 354,78, 252,064, -1,06315 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3166,2, -1395,26, -569,021 ); + ent.v[ "angles" ] = ( 354,78, 252,064, -1,06315 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2097,81, 346,452, -423,884 ); + ent.v[ "angles" ] = ( 355,78, 252,045, -1,06162 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2178,41, 181,666, -430,018 ); + ent.v[ "angles" ] = ( 357,697, 246,012, -0,508411 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 237,999, 771,534, -409,114 ); + ent.v[ "angles" ] = ( 3,60661, 281,058, 1,64419 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 478,09, 504,762, -441,122 ); + ent.v[ "angles" ] = ( 359,728, 303,081, -0,124006 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 498,995, 719,129, -434,701 ); + ent.v[ "angles" ] = ( 356,759, 309,097, -0,465887 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 905,025, -1264,46, -411,117 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 904,85, -1509,59, -409,088 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1083,83, -1504,63, -438,737 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1195,38, -1504,59, -455,66 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1296,01, -1504,89, -470,762 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1084,29, -1263,8, -438,95 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1195,52, -1263,72, -454,831 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1294,99, -1263,09, -470,744 ); + ent.v[ "angles" ] = ( 82, 180, -180 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1487,49, -1377,48, -452,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1487,46, -1440,59, -452,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1487,76, -1533,32, -452,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1487,87, -1595,44, -452,125 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 529,268, -1663,98, -585,048 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 528,894, -1676,88, -577,257 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 529,006, -1688,88, -569,112 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 529,188, -1652,88, -593,181 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 529,16, -1640,88, -600,997 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 529,207, -1628,88, -609,278 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 434,935, -1628,88, -609,085 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 435,047, -1640,88, -601,011 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 434,869, -1652,88, -592,904 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 434,984, -1664,88, -584,941 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 435,076, -1676,88, -576,957 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 434,987, -1688,88, -568,943 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 348,866, -1628,88, -609,156 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 349,208, -1640,88, -601,103 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 349,155, -1652,88, -593,057 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 348,661, -1664,88, -585,058 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 348,646, -1676,88, -576,924 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 348,72, -1688,88, -568,961 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 548,175, -1872,13, -555,215 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 632,829, -1920,13, -555,364 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 353,181, -1872,13, -555,167 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_stair_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 303,633, -1872,13, -555,23 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_bench_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 680,953, -1421,09, -514,469 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1001,22, -823,12, -556,84 ); + ent.v[ "angles" ] = ( 0, 275, -8 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 734,981, -908,96, -527,261 ); + ent.v[ "angles" ] = ( 0, 275, -8 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2179,69, -719,383, -504 ); + ent.v[ "angles" ] = ( 359,166, 269,058, -7,95673 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -945,669, -628,929, -380,753 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -904,886, -588,938, -381,753 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -121,796, 451,579, -281 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -84,3061, 413,031, -282,088 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1418,67, -1390,51, -473,856 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1002,64, -1762,93, -496,312 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 495,858, 675,658, -336 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 306 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1067,58, 272,011, -357 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 159 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 477,989, -1822,9, -450,625 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 393,218, -1822,99, -450,625 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1159,47, -1923,26, -329,518 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_smk_smolder_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2996,84, -1559,9, -510,442 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_purple" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1917,22, -204,805, -360,124 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2311,48, -1492,13, -452,745 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2311,03, -1429,41, -452,747 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2311,53, -1337,37, -452,748 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2311,16, -1275,3, -452,751 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_purple" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2189,63, -387,395, -379,254 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_purple" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2189,16, -274,331, -380,219 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_purple" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1832,25, -453,288, -364,201 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 868,928, -1658,59, -505,217 ); + ent.v[ "angles" ] = ( 36, 133, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 902,351, -1625,04, -505,082 ); + ent.v[ "angles" ] = ( 36, 133, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 936,622, -1590,8, -505,116 ); + ent.v[ "angles" ] = ( 36, 133, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 921,014, -1575,25, -493,5 ); + ent.v[ "angles" ] = ( 87, 133, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 887,005, -1609,09, -493,5 ); + ent.v[ "angles" ] = ( 87, 133, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 852,448, -1643,12, -493,5 ); + ent.v[ "angles" ] = ( 87, 133, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 652,664, -1247,04, -505,338 ); + ent.v[ "angles" ] = ( 37,9817, 269,473, 1,07224 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 716,919, -1246,88, -505,172 ); + ent.v[ "angles" ] = ( 37,9817, 269,473, 1,07224 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 781,075, -1246,9, -505,143 ); + ent.v[ "angles" ] = ( 37,9817, 269,473, 1,07224 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 653,205, -1269,27, -493,5 ); + ent.v[ "angles" ] = ( 88,6805, 308,641, 39,8353 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 717,018, -1269,17, -493,5 ); + ent.v[ "angles" ] = ( 88,6805, 308,641, 39,8353 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_light_recessed_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 780,881, -1268,91, -493,5 ); + ent.v[ "angles" ] = ( 88,6805, 308,641, 39,8353 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 797,308, 140,714, -277,709 ); + ent.v[ "angles" ] = ( 25,1892, 54,8851, 91,622 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 399,345, 419,386, -277,668 ); + ent.v[ "angles" ] = ( 25,1892, 54,8851, 91,622 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 691,604, 710,022, -277,341 ); + ent.v[ "angles" ] = ( 24, 235, 90 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1091,06, 430,268, -277,604 ); + ent.v[ "angles" ] = ( 24, 235, 90 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 636,547, 231,149, -332,02 ); + ent.v[ "angles" ] = ( 359,975, 55,1034, 91,425 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1401, -1323,83, -373,677 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1295,36, -1323,34, -373,58 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1190,94, -1323,39, -373,658 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1059,58, -1323,44, -373,678 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -953,73, -1323,76, -373,666 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -848,474, -1324,44, -373,66 ); + ent.v[ "angles" ] = ( 270, 0, 89 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 619,348, -1938,51, -457,498 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 339,88, -1891,01, -433,067 ); + ent.v[ "angles" ] = ( 89, 270,001, -89,9989 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 686,176, -1938,96, -457,078 ); + ent.v[ "angles" ] = ( 89, 270,001, -89,9989 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 549,157, -1891,1, -433,069 ); + ent.v[ "angles" ] = ( 89, 270,001, -89,9989 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2261,22, -1066,16, -194,278 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2262,34, -1323,3, -192,139 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2260,8, -1577,67, -191,197 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1580,34, -222,843, -296,217 ); + ent.v[ "angles" ] = ( 283, 180, 180 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_streetlight_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2581,38, -487,787, -392,977 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 290 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_steam_vent_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2832,3, -1609,96, -382,623 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 82 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1218,17, -1092,32, -503,622 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1262,69, -1092,69, -519,761 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -255,66, -101,332, -432,744 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -300,179, -100,961, -448,882 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -158,842, -2216,4, -501,74 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -113,201, -2218,63, -515,77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -317,577, -2215,4, -500,872 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1026,43, -1570,98, -605,728 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 46 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1175,3, -1111,01, -535,555 ); + ent.v[ "angles" ] = ( 0,1, 179,7, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2570,42, -1548,69, -545,563 ); + ent.v[ "angles" ] = ( 359,997, 87,6996, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2643,47, -1548,45, -529,867 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_toilet_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 893,05, -1461,17, -462,625 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_toilet_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 888,609, -1460,96, -461,897 ); + ent.v[ "angles" ] = ( 1,03627, 180,016, -90,9988 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1699,18, -18,1179, -355,246 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 360 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1721,15, -77,528, -352,249 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 360 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1930,53, -572,014, -367,493 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1871,13, -593,979, -370,49 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1074,34, -1232,78, -532,755 ); + ent.v[ "angles" ] = ( 3, 270, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1129,64, -1231,78, -538,404 ); + ent.v[ "angles" ] = ( 4, 270, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1191,3, -1234,61, -533,125 ); + ent.v[ "angles" ] = ( 4, 270, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1129,79, -1228,98, -534,188 ); + ent.v[ "angles" ] = ( 4, 270, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2544,58, -898,699, -282,916 ); + ent.v[ "angles" ] = ( 21,1594, 183,554, -33,5578 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ash_int" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2136,45, -627,396, -397,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1444,39, -78,3522, -384,191 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1444,7, -159,235, -402,968 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 182 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2342,2, -738,922, -496,764 ); + ent.v[ "angles" ] = ( 3, 270, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2349,33, -711,544, -492,772 ); + ent.v[ "angles" ] = ( 3, 270, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1609,01, 422,195, -346,768 ); + ent.v[ "angles" ] = ( 3, 270, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_track_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1601,88, 394,817, -350,759 ); + ent.v[ "angles" ] = ( 3, 270, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1270,66, -1570,35, -502,582 ); + ent.v[ "angles" ] = ( 270, 0, 179 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1230,86, -1570,82, -502,616 ); + ent.v[ "angles" ] = ( 270, 0, 179 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1190,87, -1571,22, -502,616 ); + ent.v[ "angles" ] = ( 270, 0, 179 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1151,05, -1571,77, -502,532 ); + ent.v[ "angles" ] = ( 270, 0, 179 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1110,99, -1570,03, -502,574 ); + ent.v[ "angles" ] = ( 270, 0, 179 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_distort_geo_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 377,908, -3726,57, -855,875 ); + ent.v[ "angles" ] = ( 6, 260, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 698,904, -1126,88, -421,133 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 734,628, -1126,88, -451,54 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 792,364, -1067,78, -525,52 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 276 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 785,801, -1092,59, -524,76 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 276 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 170,519, -847,689, -504 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 155,006, -870,964, -504 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -383,779, -328,064, -504 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -254,699, -534,128, -496 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -276,346, -552,186, -496 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_vending_machine_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2481,91, -760,599, -530,059 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2113,51, -729,266, -600 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2181,1, -1466,16, -591,875 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2159,9, -1486,1, -591,875 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2863,36, -1345,01, -591,875 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2457,01, -903,995, -592 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2023,99, -1015,43, -592 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2022,57, -985,488, -592 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,986, -261,663, -504 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 116,416, 603,494, -416,801 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 96,4017, 584,729, -417,975 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2244,72, -981,41, -496 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -561,645, -2287,94, -563,875 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 432,644, -2222,81, -563,875 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1027,61, -2383,18, -563,875 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2013,83, -173,206, -504,754 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2038,67, -110,76, -486,358 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2268,9, -992,821, -496 ); + ent.v[ "angles" ] = ( 270,007, 298,722, 61,4347 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1351,97, -399,49, -403,237 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1358,33, -399,875, -450,106 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -755,381, -530,828, -302,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -668,686, -531,203, -389,889 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 457,045, -2244,9, -553,902 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 129,4 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -394,461, -795,355, -483,498 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -379,176, -712,155, -627,745 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 233,463, -1668,95, -615,494 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 227,263, -1650,32, -616,036 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_grnd_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1146,86, -945,565, -496 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_splat_wall_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1234,59, -1008,19, -476,18 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_tunnel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 864,236, 573,493, -203,77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_magma_ball_falling_tunnel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 781,09, 602,449, -168,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; +} diff --git a/mp_magma/maps/mp/mp_magma.gsc b/mp_magma/maps/mp/mp_magma.gsc new file mode 100644 index 0000000..c5a92c3 --- /dev/null +++ b/mp_magma/maps/mp/mp_magma.gsc @@ -0,0 +1,283 @@ +#include maps/mp/gametypes/_weaponobjects; +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level thread spawnkilltrigger(); + maps/mp/mp_magma_fx::main(); + precachemodel( "collision_clip_64x64x10" ); + precachemodel( "collision_physics_64x64x10" ); + precachemodel( "collision_physics_256x256x10" ); + precachemodel( "collision_physics_128x128x10" ); + precachemodel( "collision_physics_64x64x10" ); + precachemodel( "p6_mag_k_rail_barrier" ); + precachemodel( "p6_mag_rocks_medium_02" ); + maps/mp/_load::main(); + maps/mp/mp_magma_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_magma" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + barrier1 = spawn( "script_model", ( 235,49, 907,91, -395,97 ) ); + barrier1.angles = ( 2,96968, 263,594, -1,33952 ); + barrier2 = spawn( "script_model", ( 245,37, 837,028, -401,885 ) ); + barrier2.angles = ( 6,5989, 268,994, -0,115603 ); + barrier1 setmodel( "p6_mag_k_rail_barrier" ); + barrier2 setmodel( "p6_mag_k_rail_barrier" ); + rock1 = spawn( "script_model", ( 271,92, 893,99, -494 ) ); + rock1.angles = vectorScale( ( 1, 0, 0 ), 132 ); + rock2 = spawn( "script_model", ( 393,42, 895,49, -494 ) ); + rock2.angles = vectorScale( ( 1, 0, 0 ), 132 ); + rock3 = spawn( "script_model", ( 477,92, 882,49, -509 ) ); + rock3.angles = vectorScale( ( 1, 0, 0 ), 132 ); + rock1 setmodel( "p6_mag_rocks_medium_02" ); + rock2 setmodel( "p6_mag_rocks_medium_02" ); + rock3 setmodel( "p6_mag_rocks_medium_02" ); + spawncollision( "collision_clip_64x64x10", "collider", ( 234, 907, -391,5 ), ( 356,785, 83,5728, -83,5116 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 243,5, 835,5, -399 ), ( 353,903, 88,8464, -83,1852 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 254, 902,5, -395 ), ( 0,42985, 353,514, 3,77564 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 264, 835,5, -401,5 ), ( 0,0466956, 359,602, 6,69984 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 247,5, 831,5, -363 ), ( 353,903, 88,8464, -83,1852 ) ); + spawncollision( "collision_clip_64x64x10", "collider", ( 237,5, 904,5, -357,5 ), ( 356,785, 83,5728, -83,5116 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( 234, 907, -391,5 ), ( 356,785, 83,5728, -83,5116 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( 243,5, 835,5, -399 ), ( 353,903, 88,8464, -83,1852 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( -459, 357,5, -578,5 ), ( 270, 183,902, 86,0983 ) ); + spawncollision( "collision_physics_128x128x10", "collider", ( -267, 233,5, -514 ), vectorScale( ( 1, 0, 0 ), 270 ) ); + spawncollision( "collision_physics_128x128x10", "collider", ( -669,5, 216, -514 ), vectorScale( ( 1, 0, 0 ), 270 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -748, 95, -483,5 ), ( 270, 270,2, 1,43 ) ); + level.levelkillbrushes = []; + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level.remotemotarviewup = 20; + registerclientfield( "scriptmover", "police_car_lights", 1, 1, "int" ); + precacheitem( "lava_mp" ); + level thread destructible_lights(); + level.overrideweaponfunc = ::overrideweaponfunc; + level.deleteonkillbrushoverride = ::deleteonkillbrushoverride; + level thread lava_trigger_init(); + level.onplayerkilledextraunthreadedcbs[ level.onplayerkilledextraunthreadedcbs.size ] = ::checkcorpseinlava; +} + +lava_trigger_init() +{ + wait 3; + killbrushes = getentarray( "trigger_hurt", "classname" ); + i = 0; + while ( i < killbrushes.size ) + { + if ( isDefined( killbrushes[ i ].script_noteworthy ) && killbrushes[ i ].script_noteworthy == "lava" ) + { + level.levelkillbrushes[ level.levelkillbrushes.size ] = killbrushes[ i ]; + } + i++; + } +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); +} + +overrideweaponfunc( sweapon, script_noteworthy ) +{ + if ( isDefined( script_noteworthy ) && script_noteworthy == "lava" ) + { + sweapon = "lava_mp"; + } + return sweapon; +} + +destructible_lights() +{ + wait 0,05; + destructibles = getentarray( "destructible", "targetname" ); + _a150 = destructibles; + _k150 = getFirstArrayKey( _a150 ); + while ( isDefined( _k150 ) ) + { + destructible = _a150[ _k150 ]; + if ( destructible.destructibledef == "veh_t6_dlc_police_car_jp_destructible" ) + { + destructible thread destructible_think( "police_car_lights" ); + destructible setclientfield( "police_car_lights", 1 ); + } + _k150 = getNextArrayKey( _a150, _k150 ); + } +} + +destructible_think( clientfield ) +{ + self waittill_any( "death", "destructible_base_piece_death" ); + self setclientfield( clientfield, 0 ); +} + +checkcorpseinlava( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + if ( !isDefined( einflictor ) || !isDefined( einflictor.script_noteworthy ) ) + { + return; + } + if ( einflictor.script_noteworthy != "lava" ) + { + return; + } + if ( !isDefined( self.body ) ) + { + return; + } + playfxontag( level._effect[ "fx_fire_torso" ], self.body, "J_Spine4" ); + playfxontag( level._effect[ "fx_fire_arm_left" ], self.body, "J_Elbow_LE" ); + playfxontag( level._effect[ "fx_fire_arm_right" ], self.body, "J_Elbow_RI" ); + playfxontag( level._effect[ "fx_fire_leg_left" ], self.body, "J_Hip_LE" ); + playfxontag( level._effect[ "fx_fire_leg_right" ], self.body, "J_Hip_RI" ); +} + +leveloverridetime( defaulttime ) +{ + if ( self isinlava() ) + { + return getdvarfloatdefault( "scr_lavaPlayerDeathWatchTime", 0,5 ); + } + return defaulttime; +} + +isinlava() +{ + if ( !isDefined( self.lastattacker ) || !isDefined( self.lastattacker.script_noteworthy ) ) + { + return 0; + } + if ( self.lastattacker.script_noteworthy != "lava" ) + { + return 0; + } + return 1; +} + +testkillbrushonstationary( lavaarray, killbrusharray, player, watcher ) +{ + player endon( "disconnect" ); + self endon( "death" ); + self waittill( "stationary" ); + wait 0,1; + i = 0; + while ( i < lavaarray.size ) + { + if ( self istouching( lavaarray[ i ] ) ) + { + playfx( level._effect[ "fx_fire_torso" ], self.origin ); + watcher maps/mp/gametypes/_weaponobjects::waitanddetonate( self, 0, undefined, "lava_mp" ); + return; + } + i++; + } + i = 0; + while ( i < killbrusharray.size ) + { + if ( self istouching( killbrusharray[ i ] ) ) + { + if ( self.origin[ 2 ] > player.origin[ 2 ] ) + { + return; + } + else + { + if ( isDefined( self ) ) + { + self delete(); + } + return; + } + i++; + } + } +} + +deleteonkillbrushoverride( player, watcher ) +{ + player endon( "disconnect" ); + self endon( "death" ); + self endon( "stationary" ); + trigger_hurtarray = getentarray( "trigger_hurt", "classname" ); + lavaarray = []; + killbrusharray = []; + i = 0; + while ( i < trigger_hurtarray.size ) + { + if ( isDefined( trigger_hurtarray[ i ].script_noteworthy ) && trigger_hurtarray[ i ].script_noteworthy == "lava" ) + { + lavaarray[ lavaarray.size ] = trigger_hurtarray[ i ]; + i++; + continue; + } + else + { + killbrusharray[ killbrusharray.size ] = trigger_hurtarray[ i ]; + } + i++; + } + if ( lavaarray.size < 1 ) + { + return; + } + self thread testkillbrushonstationary( lavaarray, killbrusharray, player, watcher ); + while ( 1 ) + { + i = 0; + while ( i < lavaarray.size ) + { + if ( self istouching( lavaarray[ i ] ) ) + { + wait 0,05; + playfx( level._effect[ "fx_fire_torso" ], self.origin ); + watcher maps/mp/gametypes/_weaponobjects::waitanddetonate( self, 0, undefined, "lava_mp" ); + return; + } + i++; + } + i = 0; + while ( i < killbrusharray.size ) + { + if ( self istouching( killbrusharray[ i ] ) ) + { + if ( self.origin[ 2 ] > player.origin[ 2 ] ) + { + break; + } + else + { + if ( isDefined( self ) ) + { + self delete(); + } + return; + } + i++; + } + } + wait 0,1; + } +} + +spawnkilltrigger() +{ + trigger = spawn( "trigger_radius", ( 2132, -1692, -708 ), 0, 250, 100 ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + player dodamage( player.health * 2, trigger.origin, trigger, trigger, "none", "MOD_SUICIDE", 0, "lava_mp" ); + } +} diff --git a/mp_magma/maps/mp/mp_magma_amb.gsc b/mp_magma/maps/mp/mp_magma_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_magma/maps/mp/mp_magma_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_magma/maps/mp/mp_magma_fx.gsc b/mp_magma/maps/mp/mp_magma_fx.gsc new file mode 100644 index 0000000..dcca403 --- /dev/null +++ b/mp_magma/maps/mp/mp_magma_fx.gsc @@ -0,0 +1,103 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_magma_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_magma_ash_ember_lg" ] = loadfx( "maps/mp_maps/fx_mp_magma_ash_ember_lg" ); + level._effect[ "fx_mp_magma_ash_ember_detail" ] = loadfx( "maps/mp_maps/fx_mp_magma_ash_ember_detail" ); + level._effect[ "fx_mp_magma_ash_ember_door" ] = loadfx( "maps/mp_maps/fx_mp_magma_ash_ember_door" ); + level._effect[ "fx_mp_magma_ash_int" ] = loadfx( "maps/mp_maps/fx_mp_magma_ash_int" ); + level._effect[ "fx_mp_magma_ash_ground" ] = loadfx( "maps/mp_maps/fx_mp_magma_ash_ground" ); + level._effect[ "fx_mp_magma_lava_edge_fire_100" ] = loadfx( "maps/mp_maps/fx_mp_magma_lava_edge_fire_100" ); + level._effect[ "fx_mp_magma_lava_edge_fire_200_dist" ] = loadfx( "maps/mp_maps/fx_mp_magma_lava_edge_fire_200_dist" ); + level._effect[ "fx_mp_magma_lava_edge_fire_50" ] = loadfx( "maps/mp_maps/fx_mp_magma_lava_edge_fire_50" ); + level._effect[ "fx_mp_magma_ball_falling_sky" ] = loadfx( "maps/mp_maps/fx_mp_magma_ball_falling_sky" ); + level._effect[ "fx_mp_magma_ball_falling_sky_wall" ] = loadfx( "maps/mp_maps/fx_mp_magma_ball_falling_sky_wall" ); + level._effect[ "fx_mp_magma_ball_falling_tunnel" ] = loadfx( "maps/mp_maps/fx_mp_magma_ball_falling_tunnel" ); + level._effect[ "fx_mp_magma_ball_falling_vista" ] = loadfx( "maps/mp_maps/fx_mp_magma_ball_falling_vista" ); + level._effect[ "fx_mp_magma_splat_wall_fire" ] = loadfx( "maps/mp_maps/fx_mp_magma_splat_wall_fire" ); + level._effect[ "fx_mp_magma_splat_grnd_fire" ] = loadfx( "maps/mp_maps/fx_mp_magma_splat_grnd_fire" ); + level._effect[ "fx_mp_magma_volcano_smoke" ] = loadfx( "maps/mp_maps/fx_mp_magma_volcano_smoke" ); + level._effect[ "fx_mp_magma_volcano_erupt" ] = loadfx( "maps/mp_maps/fx_mp_magma_volcano_erupt" ); + level._effect[ "fx_mp_magma_distort_geo_lg" ] = loadfx( "maps/mp_maps/fx_mp_magma_distort_geo_lg" ); + level._effect[ "fx_mp_magma_distort_geo_md" ] = loadfx( "maps/mp_maps/fx_mp_magma_distort_geo_md" ); + level._effect[ "fx_mp_magma_distort_geo_sm" ] = loadfx( "maps/mp_maps/fx_mp_magma_distort_geo_sm" ); + level._effect[ "fx_mp_magma_fire_med" ] = loadfx( "maps/mp_maps/fx_mp_magma_fire_med" ); + level._effect[ "fx_mp_magma_fire_lg" ] = loadfx( "maps/mp_maps/fx_mp_magma_fire_lg" ); + level._effect[ "fx_mp_magma_fire_xlg" ] = loadfx( "maps/mp_maps/fx_mp_magma_fire_xlg" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin_runner" ); + level._effect[ "fx_mp_elec_spark_burst_md_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_md_runner" ); + level._effect[ "fx_mp_magma_smk_whisp" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_whisp" ); + level._effect[ "fx_mp_magma_smk_smolder" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_smolder" ); + level._effect[ "fx_mp_magma_smk_smolder_med" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_smolder_med" ); + level._effect[ "fx_mp_magma_smk_smolder_low" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_smolder_low" ); + level._effect[ "fx_mp_magma_smk_plume_md_vista" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_plume_md_vista" ); + level._effect[ "fx_mp_magma_smk_smolder_vista" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_smolder_vista" ); + level._effect[ "fx_mp_magma_smk_smolder_vista_lt" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_smolder_vista_lt" ); + level._effect[ "fx_mp_magma_steam_ocean" ] = loadfx( "maps/mp_maps/fx_mp_magma_steam_ocean" ); + level._effect[ "fx_mp_magma_steam_ocean_cool" ] = loadfx( "maps/mp_maps/fx_mp_magma_steam_ocean_cool" ); + level._effect[ "fx_mp_magma_steam_ocean_md" ] = loadfx( "maps/mp_maps/fx_mp_magma_steam_ocean_md" ); + level._effect[ "fx_mp_magma_smk_steam_vista" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_steam_vista" ); + level._effect[ "fx_mp_magma_steam_fish" ] = loadfx( "maps/mp_maps/fx_mp_magma_steam_fish" ); + level._effect[ "fx_mp_magma_steam_vent_w" ] = loadfx( "maps/mp_maps/fx_mp_magma_steam_vent_w" ); + level._effect[ "fx_mp_magma_steam_vent_int" ] = loadfx( "maps/mp_maps/fx_mp_magma_steam_vent_int" ); + level._effect[ "fx_mp_magma_smk_volcano_sm" ] = loadfx( "maps/mp_maps/fx_mp_magma_smk_volcano_sm" ); + level._effect[ "fx_lf_mp_magma_sun1" ] = loadfx( "lens_flares/fx_lf_mp_magma_sun1" ); + level._effect[ "fx_lf_mp_magma_volcano" ] = loadfx( "lens_flares/fx_lf_mp_magma_volcano" ); + level._effect[ "fx_mp_distant_cloud_vista_lg" ] = loadfx( "maps/mp_maps/fx_mp_magma_volcano_fog" ); + level._effect[ "fx_drone_light_yellow" ] = loadfx( "light/fx_drone_light_yellow" ); + level._effect[ "fx_light_mag_ceiling_light" ] = loadfx( "light/fx_light_mag_ceiling_light" ); + level._effect[ "fx_light_recessed_cool_sm_soft" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_light_streetlight_glow_cool" ] = loadfx( "light/fx_light_streetlight_glow_cool" ); + level._effect[ "fx_mp_light_police_car_japan" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car_japan" ); + level._effect[ "fx_light_stair_blue" ] = loadfx( "light/fx_light_stair_blue" ); + level._effect[ "fx_mp_magma_light_bench_blue" ] = loadfx( "maps/mp_maps/fx_mp_magma_light_bench_blue" ); + level._effect[ "fx_light_recessed_purple" ] = loadfx( "light/fx_light_recessed_purple" ); + level._effect[ "fx_mp_magma_light_recessed_flat" ] = loadfx( "maps/mp_maps/fx_mp_magma_light_recessed_flat" ); + level._effect[ "fx_light_flour_glow_v_shape_cool" ] = loadfx( "light/fx_light_flour_glow_v_shape_cool" ); + level._effect[ "fx_mp_magma_vending_machine_lg" ] = loadfx( "maps/mp_maps/fx_mp_magma_vending_machine_lg" ); + level._effect[ "fx_mp_magma_vending_machine_med" ] = loadfx( "maps/mp_maps/fx_mp_magma_vending_machine_med" ); + level._effect[ "fx_mp_magma_toilet_sign" ] = loadfx( "maps/mp_maps/fx_mp_magma_toilet_sign" ); + level._effect[ "fx_mp_magma_track_light" ] = loadfx( "maps/mp_maps/fx_mp_magma_track_light" ); + level._effect[ "fx_fire_torso" ] = loadfx( "fire/fx_fire_ai_torso_magma" ); + level._effect[ "fx_fire_arm_left" ] = loadfx( "fire/fx_fire_ai_arm_left_magma" ); + level._effect[ "fx_fire_arm_right" ] = loadfx( "fire/fx_fire_ai_arm_right_magma" ); + level._effect[ "fx_fire_leg_left" ] = loadfx( "fire/fx_fire_ai_leg_left_magma" ); + level._effect[ "fx_fire_leg_right" ] = loadfx( "fire/fx_fire_ai_leg_right_magma" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "sparking_wires_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "sparking_wires_long" ] = %fxanim_gp_wirespark_long_anim; + level.scr_anim[ "fxanim_props" ][ "japan_sign_square" ] = %fxanim_mp_magma_japan_sign_square_anim; + level.scr_anim[ "fxanim_props" ][ "squid_sign_eyes_01" ] = %fxanim_mp_magma_squid_sign_eyes_01_anim; + level.scr_anim[ "fxanim_props" ][ "squid_sign_eyes_02" ] = %fxanim_mp_magma_squid_sign_eyes_02_anim; + level.scr_anim[ "fxanim_props" ][ "japan_sign_fish" ] = %fxanim_mp_magma_japan_sign_fish_anim; +} + +precache_fxanim_props_dlc() +{ + level.scr_anim[ "fxanim_props_dlc" ][ "hanging_lantern_01" ] = %fxanim_mp_magma_hanging_lantern_01_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "hanging_lantern_02" ] = %fxanim_mp_magma_hanging_lantern_02_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "train_wire_01" ] = %fxanim_mp_magma_train_wire_01_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "train_wire_02" ] = %fxanim_mp_magma_train_wire_02_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "train_wire_03" ] = %fxanim_mp_magma_train_wire_03_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "sushi_conveyor" ] = %fxanim_mp_magma_sushi_conveyor_anim; +} diff --git a/mp_meltdown/aitype/enemy_dog_mp.gsc b/mp_meltdown/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_meltdown/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_meltdown/character/character_mp_german_shepherd.gsc b/mp_meltdown/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_meltdown/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_meltdown/maps/mp/createart/mp_meltdown_art.gsc b/mp_meltdown/maps/mp/createart/mp_meltdown_art.gsc new file mode 100644 index 0000000..b49b70d --- /dev/null +++ b/mp_meltdown/maps/mp/createart/mp_meltdown_art.gsc @@ -0,0 +1,18 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_meltdown", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_meltdown/maps/mp/createfx/mp_meltdown_fx.gsc b/mp_meltdown/maps/mp/createfx/mp_meltdown_fx.gsc new file mode 100644 index 0000000..483a215 --- /dev/null +++ b/mp_meltdown/maps/mp/createfx/mp_meltdown_fx.gsc @@ -0,0 +1,2589 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower" ); + ent.v[ "origin" ] = ( -238,789, 1703,29, 390,252 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 1510,04, 4090,67, -140 ); + ent.v[ "angles" ] = ( 2,84124, 163,841, -0,400075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1450,14, 4421,73, -138,744 ); + ent.v[ "angles" ] = ( 357,96, 178,986, 0,275462 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_meltdown_sun1" ); + ent.v[ "origin" ] = ( 9906,81, -26068,5, 6893,41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower" ); + ent.v[ "origin" ] = ( -64,1019, 1658,64, 1523,65 ); + ent.v[ "angles" ] = ( 356, 176, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -28,178, 2362,37, 202,125 ); + ent.v[ "angles" ] = ( 13,9832, 248,09, 0,642511 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -215,89, 2393,49, 197,125 ); + ent.v[ "angles" ] = ( 16,0367, 266,441, -0,475019 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 440,583, 1906,32, 195,125 ); + ent.v[ "angles" ] = ( 15,4495, 204,378, 4,31785 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 334,9, 2096,3, 201,125 ); + ent.v[ "angles" ] = ( 11,5226, 215,972, 1,56318 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 149,167, 2275,99, 203 ); + ent.v[ "angles" ] = ( 10,9861, 236,944, -0,530442 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -437,23, 2367,23, 191,125 ); + ent.v[ "angles" ] = ( 12,0831, 287,847, -1,11472 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 439,715, 1472,3, 192,125 ); + ent.v[ "angles" ] = ( 14,9925, 161,068, 0,430335 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 368,633, 1340,01, 195,125 ); + ent.v[ "angles" ] = ( 16,5638, 145,376, -4,13018 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -652,51, 2263,27, 202 ); + ent.v[ "angles" ] = ( 11,1192, 305,063, 0,422903 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 220,939, 1160,41, 196 ); + ent.v[ "angles" ] = ( 15,9893, 131,08, 0,608138 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( 79,9473, 1068,62, 187 ); + ent.v[ "angles" ] = ( 16,0195, 115,029, 0,701384 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -78,513, 1015,27, 187,125 ); + ent.v[ "angles" ] = ( 14,0173, 101, -0,982402 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -263,352, 992,556, 192,125 ); + ent.v[ "angles" ] = ( 14,9981, 87,9662, -0,215232 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -440,524, 1026,24, 193,125 ); + ent.v[ "angles" ] = ( 12,9678, 70,1048, 0,922636 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -761,948, 1230,87, 199 ); + ent.v[ "angles" ] = ( 10,9932, 41,9725, -0,107821 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -778,574, 2148,34, 199 ); + ent.v[ "angles" ] = ( 11,9986, 319,979, -0,159912 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -881,06, 1970,77, 195 ); + ent.v[ "angles" ] = ( 10,8461, 339,182, 1,75937 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -937,289, 1724,15, 193 ); + ent.v[ "angles" ] = ( 12,998, 358,974, -0,23086 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -860,88, 1367,33, 199 ); + ent.v[ "angles" ] = ( 14,979, 27,1056, 0,803426 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_spill_ocean" ); + ent.v[ "origin" ] = ( 2258,74, 1595,08, -166,13 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_spill_ocean" ); + ent.v[ "origin" ] = ( 2256,42, 1694,89, -163,962 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_spill_ocean" ); + ent.v[ "origin" ] = ( 2255,17, 1798,41, -166,797 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_md" ); + ent.v[ "origin" ] = ( 2068,62, 2628,85, 42,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_lg" ); + ent.v[ "origin" ] = ( -200,453, 4382,97, -217 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_lg" ); + ent.v[ "origin" ] = ( -112,559, 4173,8, -223 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_lg" ); + ent.v[ "origin" ] = ( -241,977, 4006,1, -228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 1444,52, -252,163 ); + ent.v[ "angles" ] = ( 359, 2, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -12,6; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 1927,81, -254,316 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,4; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 967,481, -253,435 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -13,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 2461,63, -254,337 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_md" ); + ent.v[ "origin" ] = ( 1728,78, 2631,02, 45,125 ); + ent.v[ "angles" ] = ( 271,457, 10,4739, 21,476 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_lg" ); + ent.v[ "origin" ] = ( 2635,72, 1956,53, -239,533 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_lg" ); + ent.v[ "origin" ] = ( 2630,46, 1431,73, -234,334 ); + ent.v[ "angles" ] = ( 271,005, 89,5161, -89,4293 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_md" ); + ent.v[ "origin" ] = ( 1736,89, 752,427, 50,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_md" ); + ent.v[ "origin" ] = ( 2064,18, 755,876, 45,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower" ); + ent.v[ "origin" ] = ( -146,025, -2951,02, 1681 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 193 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 1185,88, -252,701 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,4; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 2201,12, -254,324 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -13,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2852,13, 1684,99, -254,501 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2521,78, 2884,14, -256,464 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 46 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 11,11; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 173,963, 122,428, -35,0915 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 173,048, 321,12, -15,2158 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 175,276, 329,018, 12,6183 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_tunnel" ); + ent.v[ "origin" ] = ( 1460,75, 773,153, 141,259 ); + ent.v[ "angles" ] = ( 284, 359, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_tunnel" ); + ent.v[ "origin" ] = ( 1506,27, 2534,3, 152,469 ); + ent.v[ "angles" ] = ( 273,487, 345,606, 9,43205 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1330,05, 2974,69, 92,4215 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1353,48, 3006,71, 107,217 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_int_top" ); + ent.v[ "origin" ] = ( -273,966, 1669,58, 432 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_tunnel_lng" ); + ent.v[ "origin" ] = ( 1536,64, 2541,52, 227,89 ); + ent.v[ "angles" ] = ( 300,447, 354,612, 1,91846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_tunnel_lng" ); + ent.v[ "origin" ] = ( 1515,01, 754,879, 254,526 ); + ent.v[ "angles" ] = ( 295,408, 355,104, 3,89016 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2540,89, 526,966, -252,871 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -13,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_tunnel_lng" ); + ent.v[ "origin" ] = ( -247,439, 3228,58, -86,1382 ); + ent.v[ "angles" ] = ( 322,147, 1,08707, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2703,33, 2702,6, -254,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -13,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2248,2, 3157,73, -254,552 ); + ent.v[ "angles" ] = ( 359,269, 45, -1,68214 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -12,6; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 62,444, 317,355, 2,12501 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1163,29, 328,425, 1,60033 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1160,36, 3061,59, 8,01865 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2338,62, 324,698, -254,098 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,4; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2715,29, 701,367, -252,68 ); + ent.v[ "angles" ] = ( 359,331, 314, 0,743289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -12,6; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 1780,44, -791,725, -251,274 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -14,4; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 1579,28, -1301,22, -254,706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 321 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -13,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 492,648, 4328,35, 139,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 554,563, 4339,13, 138,994 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 843,435, 4366,28, -140 ); + ent.v[ "angles" ] = ( 356,953, 184,993, -0,107418 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -251,936, 3846,3, -21,234 ); + ent.v[ "angles" ] = ( 0,998782, 26, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 8,43061, 4507,15, -66,4063 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 280 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -42,9076, 3884,86, -88,3416 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 72 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_reactor_glw_blue" ); + ent.v[ "origin" ] = ( -125,609, 4204,55, -62,2267 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_reactor_glw_blue" ); + ent.v[ "origin" ] = ( -296,751, 4026,51, -65,2027 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 458,255, 414,337, 41,283 ); + ent.v[ "angles" ] = ( 12, 89, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -2522,37, -1420,66, 1135,59 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( -116,505, 2281,07, -56,0053 ); + ent.v[ "angles" ] = ( 302,701, 119,927, -111,036 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( -113,542, 2273,42, -56,9997 ); + ent.v[ "angles" ] = ( 280,286, 298,824, 60,7822 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( 1358,75, 861,347, -67 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( 2168,52, 453,584, -136,875 ); + ent.v[ "angles" ] = ( 275,657, 127,587, 120,513 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( 2158,68, 2968,16, -135,875 ); + ent.v[ "angles" ] = ( 276,082, 260,573, 99,4797 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 48,4325, 3085,08, -18,1431 ); + ent.v[ "angles" ] = ( 17,9745, 183,154, 0,974222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2209,23, 1151,27, -118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2204,03, 1312,2, -118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2204,42, 2080,28, -115 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2203,74, 2239,66, -116 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2204,03, 2400,8, -115 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2205,96, 989,217, -115 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2206,18, 1473,58, -115 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 46,2152, 3123,58, -19,095 ); + ent.v[ "angles" ] = ( 17,9546, 175,795, -1,29841 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 47,4133, 3123,03, 21,7425 ); + ent.v[ "angles" ] = ( 332,042, 176,603, 1,594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 50,6105, 3084,51, 21,4462 ); + ent.v[ "angles" ] = ( 332,042, 183,397, -1,59399 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 46,7455, 3410,03, 21,8109 ); + ent.v[ "angles" ] = ( 332,042, 176,603, 1,594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 50,3758, 3373,47, 23,5146 ); + ent.v[ "angles" ] = ( 332,042, 183,397, -1,59399 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 46,2486, 3412,54, -19,0266 ); + ent.v[ "angles" ] = ( 17,9745, 176,846, -0,97422 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 48,1859, 3372,04, -18,0747 ); + ent.v[ "angles" ] = ( 17,9745, 183,154, 0,974222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1613,72, 1,84919, -145,7 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2360,54, 1759,73, -119,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 2346,11, 1625,25, -119,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_windy" ); + ent.v[ "origin" ] = ( 1095,33, 1796,66, 441,374 ); + ent.v[ "angles" ] = ( 23,2062, 209,072, -1,51774 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_blocker" ); + ent.v[ "origin" ] = ( -628,106, 1115,63, 179 ); + ent.v[ "angles" ] = ( 12,8372, 56,7672, -2,06839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_windy" ); + ent.v[ "origin" ] = ( 122,955, -3,2102, 305,555 ); + ent.v[ "angles" ] = ( 293,693, 179,684, -179,129 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -594,228, 2172,06, 148 ); + ent.v[ "angles" ] = ( 43,071, 31,2458, 0,785727 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 343,986, 1832,83, 102 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 288 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 282,813, 1971,61, 123 ); + ent.v[ "angles" ] = ( 21,8738, 303,504, 2,07444 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 347,617, 1562,74, 104 ); + ent.v[ "angles" ] = ( 1, 73, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 276,882, 1397,63, 113 ); + ent.v[ "angles" ] = ( 10,9848, 58,9476, -0,791467 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 305,728, 1467,02, 154 ); + ent.v[ "angles" ] = ( 76, 63, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 307,705, 1920,67, 158 ); + ent.v[ "angles" ] = ( 78, 302, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -304,354, 979,006, -10,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 264 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -605,276, 1223,17, 159 ); + ent.v[ "angles" ] = ( 43,8189, 324,02, -2,11248 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 38,9152, 1166,13, 150 ); + ent.v[ "angles" ] = ( 58,0104, 206,507, 4,57478 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -37,2901, 2252,24, 154 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( 46,3434, 2215,2, 112 ); + ent.v[ "angles" ] = ( 0,998781, 329, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -361,707, 2274,12, 178 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -281,915, 2283,1, 166 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -256,86, 1096,86, 155 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -523,549, 1163,93, 156 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -1966,49, -394,654, 755,994 ); + ent.v[ "angles" ] = ( 270, 0, 6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -2030,98, -89,1915, 754,989 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -66,9895, 5287,92, 820,994 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -65,7024, 5639,93, 817,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -1206,65, 3831,67, 754,996 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -1207,57, 4169,89, 755,992 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_pak_tower_fire_flareup" ); + ent.v[ "origin" ] = ( -1624,74, 4167,85, 756,012 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 1033,32, 5418,75, -251,375 ); + ent.v[ "angles" ] = ( 343,217, 173,295, -4,39633 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 967,025, 4994,57, -198,161 ); + ent.v[ "angles" ] = ( 342,986, 178,849, 1,30263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 956,206, 6636,01, -85,6845 ); + ent.v[ "angles" ] = ( 344,935, 188,795, -8,67367 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 626,278, 108,84, 63,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 434,189, 502,997, 63,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 657,843, 503,237, 63,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 285,769, -284,931, -62,6031 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 1907,88, 3900,13, -254,966 ); + ent.v[ "angles" ] = ( 1,41962, 8,94978, -0,931264 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 1919,06, 4451,61, -273 ); + ent.v[ "angles" ] = ( 358,331, 313,975, 0,760531 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 802,238, 419,058, 164,796 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 372,526, 390,3, 149,796 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 611,184, 301,29, -16,0289 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 593,03, 247,997, -12,1327 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( 302,103, 422,394, 198,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 1653,11, 1959,95, 140,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 1652,1, 2116,06, 76,9224 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 1654,61, 2114,5, 202,007 ); + ent.v[ "angles" ] = ( 38,9934, 358,715, -0,756238 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 1652,84, 2270,97, 139,844 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2855,12, 1822,92, -254,283 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2858,07, 2331,92, -255,29 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2852,13, 1309,28, -254,586 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2797,12, 783,196, -252,406 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2230,1, -1758,09, -256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 1822,7, -1101,26, -253,681 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 945,444, -1419,34, -256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 904,072, -1468, -256,186 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 329 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 948,886, -1829,04, -254,054 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 323 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 1791,95, -760,125, -251,117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2586,65, 4774,31, -256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 1848,42, 4244,04, -291,932 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 1142,96, 5000,99, -256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2615,41, 4881,06, -257,046 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_md" ); + ent.v[ "origin" ] = ( 2431,49, 2974,44, -255,827 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 41 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 904,328, 4556,19, -137 ); + ent.v[ "angles" ] = ( 355,961, 188, -0,214773 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1355,33, 3801,4, -143 ); + ent.v[ "angles" ] = ( 357,839, 153,239, -1,71538 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_surface_heat_lg" ); + ent.v[ "origin" ] = ( 2682,94, 1708,44, -237,968 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 598,449, -745,307, -106,792 ); + ent.v[ "angles" ] = ( 359,68, 177,559, -14,0369 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -413,412, 568,263, -31,8336 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -258,783, 2187,77, 1647,49 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -220,862, 1201,96, 1649,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -733,75, 1674,27, 1649,28 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -221,534, 1160,39, 2261,35 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 294,041, 1716,36, 2262,66 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -261,404, 2231,8, 2264,93 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -776,706, 1674,22, 2263,39 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -382,417, -2439,74, 1609,47 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 132,321, -2912,44, 1606,8 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -856,343, -2954,65, 1609,55 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -385,128, -2397,32, 2222,61 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 172,388, -2912,71, 2221,63 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -342,398, -3469,5, 2223,69 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -899,259, -2954,06, 2221,3 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -3376,09, 1368,94, 1372,42 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -3382,22, 1449,79, 1369,04 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -3369,01, 2046,71, 1371,93 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -3375,15, 2127,56, 1370,55 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -5392,77, 1897,97, 1387,32 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -5398,9, 1978,82, 1385,94 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -5385,64, 2578,22, 1387,95 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -5391,77, 2659,07, 1386,57 ); + ent.v[ "angles" ] = ( 270, 356,858, 3,14196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -8664,25, 4067,45, 2780,68 ); + ent.v[ "angles" ] = ( 270, 6, -36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -8629,13, 4140,53, 2779,31 ); + ent.v[ "angles" ] = ( 270, 6, -36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -8962,56, 3457,44, 2781,74 ); + ent.v[ "angles" ] = ( 270, 6, -36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -8927,45, 3530,52, 2780,37 ); + ent.v[ "angles" ] = ( 270, 6, -36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -14253,8, 8722,18, 3019,15 ); + ent.v[ "angles" ] = ( 270, 358,987, -44,9871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -14199,9, 8782,76, 3017,78 ); + ent.v[ "angles" ] = ( 270, 358,987, -44,9871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -14687, 8186,61, 3021,05 ); + ent.v[ "angles" ] = ( 270, 358,987, -44,9871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -14633,1, 8247,19, 3019,68 ); + ent.v[ "angles" ] = ( 270, 358,987, -44,9871 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -17050,5, 11070,7, 5193,99 ); + ent.v[ "angles" ] = ( 270, 5,83284, -21,8328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -17034,1, 11150,1, 5192,61 ); + ent.v[ "angles" ] = ( 270, 5,83284, -21,8328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -16908,4, 11744,8, 5194,22 ); + ent.v[ "angles" ] = ( 270, 5,83284, -21,8328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -16892, 11824,2, 5192,85 ); + ent.v[ "angles" ] = ( 270, 5,83284, -21,8328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -18807,4, 13264,3, 5848,29 ); + ent.v[ "angles" ] = ( 270, 0,210089, -16,2101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -18791,5, 13342,2, 5846,91 ); + ent.v[ "angles" ] = ( 270, 0,210089, -16,2101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -18932, 12677, 5848,67 ); + ent.v[ "angles" ] = ( 270, 0,210089, -16,2101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -18943, 12605,4, 5848,05 ); + ent.v[ "angles" ] = ( 270, 0,210089, -16,2101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 255,157, 1714,3, 1648,62 ); + ent.v[ "angles" ] = ( 270, 0,210089, -16,2101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 2495,56, -2161,46, -202,527 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 317 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 301,905, 583,844, 119,513 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 235,125, 39,5175, 109,522 ); + ent.v[ "angles" ] = ( 15, 359, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 682,204, -810,708, -120,801 ); + ent.v[ "angles" ] = ( 281,042, 264,966, 95,3417 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1310,82, 2254,2, 40 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1230,34, 2221,4, 34 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1284,24, 2062,03, 41,75 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1358,59, 2043,55, 38,75 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1363,36, 2137,91, 40 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1138,79, 2146,31, 37 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 976,226, 1609,79, -23,7989 ); + ent.v[ "angles" ] = ( 345,002, 180,035, -0,267937 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 978,062, 1784,1, -31,8308 ); + ent.v[ "angles" ] = ( 342,045, 174,795, 1,29841 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1244,56, 1410,91, 155,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1246,82, 1385,41, 155,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1380,96, 1334,25, 165,805 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1411,17, 1259,32, 168,97 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1180,59, 1150,99, 175,107 ); + ent.v[ "angles" ] = ( 360, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1269,76, 1169,44, 172,381 ); + ent.v[ "angles" ] = ( 360, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1259,92, 1148,36, 173,74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1386,93, 1132,01, 174,639 ); + ent.v[ "angles" ] = ( 360, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 615,146, 3146,84, 133,575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 397,977, 2928,55, -18,2847 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 630,564, 3479,88, -5,07309 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 353,523, 3479,88, -12,0482 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 355,127, 2795,88, 122,608 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1080,94, -499,194, -65,6055 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 786,057, 1832,72, -64,5984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 912,885, 1709,01, -70,6813 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 783,76, 1549,92, -74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 1355,86, 2038,66, 55,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1676,42, 3954,45, -136 ); + ent.v[ "angles" ] = ( 355,598, 174,308, -1,37921 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1672,36, 4262,44, -136 ); + ent.v[ "angles" ] = ( 355,598, 174,308, -1,37921 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_wave_break_lg" ); + ent.v[ "origin" ] = ( 930,409, -2402,01, -266,954 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -181,14, -546,381, 7,51834 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 148,284, -1035,87, -66,3374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 147,573, -444,587, -54,984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 135,61, -678,836, 9,00472 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 167,83, -688,309, 11,0114 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( -234,22, 4430,22, -138 ); + ent.v[ "angles" ] = ( 356, 250, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -96,3175, -1068,69, -60,0817 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -1630,82, 3082,7, 1191,56 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -1748,52, 2944,24, 1193,61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -223,43, 4153,4, 1191,59 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( -359,856, 4271,67, 1190,11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -2030,64, -90,0045, 751,999 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -1961,2, -394,981, 752,995 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -2518,63, -1424,74, 1135,59 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -1200,41, 3827,36, 754,992 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -1209,11, 4178,67, 752,996 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -1614,69, 4160,64, 751,993 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -63,1761, 5283,47, 823,987 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fire_tower_flareup_amb" ); + ent.v[ "origin" ] = ( -62,4625, 5629,45, 827,004 ); + ent.v[ "angles" ] = ( 270, 0, -1,04873 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -507,734, 2225,69, 160,177 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "origin" ] = ( 758,973, -9,47859, 375,484 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 644,61, -471,975, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 591,416, -897,14, -143,089 ); + ent.v[ "angles" ] = ( 359,68, 177,559, -8,03697 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 985,664, -752,8, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1012,12, 16,115, -73 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 237 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 830,071, -318,7, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1258,43, 436,039, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1042,31, 550,025, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 704,828, 863,625, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 267,112, 943,005, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 212 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 42,6443, 582,215, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( -32,5658, 798,267, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 188 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1974,4, 614,669, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1901,83, 167,6, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1744,92, -276,104, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1636,32, -507,592, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1361,51, -651,467, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1303,66, -1032,85, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 37,5944, -216,892, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 2047,69, 2958,23, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 2073,05, 3197,92, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1789,56, 3089,11, -136,875 ); + ent.v[ "angles" ] = ( 359, 176, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1790,29, 3726,06, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 564,93, 4233,33, -129,715 ); + ent.v[ "angles" ] = ( 0,22494, 177,026, 13,9981 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 565,547, 4077,68, -92,0285 ); + ent.v[ "angles" ] = ( 0,22494, 177,026, 13,9981 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1114,87, 3399,59, -74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( -20,8164, -79,1724, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 141 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1607,48, -748,065, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1969,64, 2748,34, -137,875 ); + ent.v[ "angles" ] = ( 359, 174, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1051,04, 3057,55, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1011,96, 2732, -72 ); + ent.v[ "angles" ] = ( 359, 214, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 946,525, 1830,26, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 926,424, 1544,23, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1127,7, 1698,44, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 712,302, 1810,06, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 739,189, 1557,63, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 998,01, 1202,28, -28,7682 ); + ent.v[ "angles" ] = ( 343,039, 188,191, -19,8711 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 695,873, 1297,28, 0,403737 ); + ent.v[ "angles" ] = ( 346,805, 186,796, -19,508 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 1000,2, 2193,69, -29,8839 ); + ent.v[ "angles" ] = ( 344,143, 175,477, 17,6421 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "origin" ] = ( 696,221, 2207,74, -28,6999 ); + ent.v[ "angles" ] = ( 346,05, 176,102, 17,4815 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 886,939, 3738,72, -73 ); + ent.v[ "angles" ] = ( 359,054, 183, -1,05096 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 724,335, 2487,38, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 84,3099, 2508,05, -72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( -156,639, 2723,24, -73 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 203,962, 3667,24, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 202 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 5,6836, 2701,68, -75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 619,41, 3906,89, -73 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 365,039, 677,169, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 579,99, -1230,18, -143,322 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 991,17, -974,482, -136,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 215 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( 784,399, 1793,23, 42,088 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_garage_parking_red" ); + ent.v[ "origin" ] = ( 793,055, 1587,47, 42,7344 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -309,579, 2465,72, 56,7041 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1292,03, 2439,45, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1263,48, -393,252, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1723,84, 912,907, -111,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1650,06, 597,297, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1297,95, 704,378, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1285,67, 966,865, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1304,77, 2683,11, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1099,79, 3891,11, -63,6043 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( -431,998, 2887,33, -61,3418 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1160,2, 3326,74, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1178,16, 75,2075, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 806,555, -768,155, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1714,07, 2458,33, -111,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_swirl_sm_gray_runner" ); + ent.v[ "origin" ] = ( 1689,37, 2783,74, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( 337,627, 2958,35, 218,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -392,836, 2232,72, -53,5544 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 16 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -418,629, 2225,84, -37,1378 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -444,78, 2216,05, -21,133 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -470,448, 2204,66, -5,18853 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -495,055, 2193,68, 11,944 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 27 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -520,725, 2179,21, 27,287 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -544,308, 2164,97, 43,6084 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 33 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -415,404, 2313,01, -53,5861 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 16 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -445,571, 2303,76, -37,1427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -475,071, 2293,91, -21,3383 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 22 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -504,726, 2280,79, -5,39598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -532,622, 2266,46, 11,4135 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 27 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -562,179, 2250,49, 27,1724 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -590,045, 2233,93, 43,397 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 33 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -575,44, 2107,32, 120,486 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -578,235, 1286,51, 120,38 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 140 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 4,25729, 2165,8, 119,477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 5,9098, 1225,69, 119,504 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 28 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 381,959, 3500,25, 50,7754 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 574,335, 3500,18, 50,6501 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -588,975, 1160,37, 43,8079 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -543,702, 1229,46, 43,813 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 326 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -561,56, 1143,04, 27,5869 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -532,975, 1127,7, 11,3637 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 333 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -504,153, 1113,53, -5,74658 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -474,654, 1100,6, -21,627 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 339 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -445,134, 1089,9, -37,8186 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 341 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -414,916, 1081,22, -53,8621 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -392,365, 1160,54, -53,7965 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -418,128, 1168,66, -37,3554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 341 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -444,31, 1177,31, -21,2478 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 339 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -470,106, 1188,01, -5,62566 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -495,947, 1200,82, 11,5769 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -519,802, 1214,13, 27,2616 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 329 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -12,2361, 1198,32, 114,226 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 1270,12, 3712,27, 4,09926 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 261,827, -500,631, -118,289 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 261,875, -619,5, -118,429 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 261,875, -744,036, -118,209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 261,845, -864,272, -118,369 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 38,1894, -968,449, -118,972 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 38,125, -843,974, -118,37 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 38,125, -716,021, -118,284 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 38,125, -588,216, -118,307 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -177,875, -480,953, -46,3274 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -121,108, -531,875, -46,2871 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 204,838, -433,124, -118,206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 92,6293, -433,124, -118,335 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 685,08, -1584,64, -136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 691,715, -1851,81, -136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 565,265, -1610, -144 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 450,379, -1786,14, -144 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -127,874, 2085,74, 52 ); + ent.v[ "angles" ] = ( 270, 0, -12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( 62,1835, 1955,89, 52 ); + ent.v[ "angles" ] = ( 270, 2,04541, -44,0452 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( 156,455, 1754,86, 52 ); + ent.v[ "angles" ] = ( 270, 0, -83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( 110,528, 1513,59, 52 ); + ent.v[ "angles" ] = ( 270, 356,634, -116,633 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -26,0349, 1352,2, 52 ); + ent.v[ "angles" ] = ( 270, 0, -147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -251,151, 1307,7, 52 ); + ent.v[ "angles" ] = ( 270, 0, 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -370,46, 2080,32, 52 ); + ent.v[ "angles" ] = ( 270, 0, -162 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -555,858, 1956,93, 52 ); + ent.v[ "angles" ] = ( 270, 0, -123 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -638,55, 1752,3, 52 ); + ent.v[ "angles" ] = ( 270, 356,82, -95,8201 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -622,411, 1541,89, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -494,614, 1369,74, 52 ); + ent.v[ "angles" ] = ( 270, 0, -41 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -254,464, 1896,4, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -37,1649, 1794,69, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -141,764, 1539,79, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -258,127, 1728,27, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -493,17, 1762,39, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_rain_cooling_tower_splsh_200" ); + ent.v[ "origin" ] = ( -368,487, 1533,22, 52 ); + ent.v[ "angles" ] = ( 270, 3,01279, -74,0128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1977,98, 366,526, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_dust_gray_street_low" ); + ent.v[ "origin" ] = ( 1464,51, -889,135, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_md" ); + ent.v[ "origin" ] = ( -586,923, 1895,59, 114 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_md" ); + ent.v[ "origin" ] = ( 12,161, 1428,43, 137 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_md" ); + ent.v[ "origin" ] = ( -35,3065, 1986,37, 126 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_md" ); + ent.v[ "origin" ] = ( -246,795, 1728,38, 122 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_md" ); + ent.v[ "origin" ] = ( -612,306, 1452,68, 136 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_sm" ); + ent.v[ "origin" ] = ( -317,229, 2513,04, -21 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_sm" ); + ent.v[ "origin" ] = ( -296,412, 891,759, -31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_sm" ); + ent.v[ "origin" ] = ( -245,199, 1286,94, 131 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_sm" ); + ent.v[ "origin" ] = ( -327,195, 2103,62, 119 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_sm" ); + ent.v[ "origin" ] = ( 506,353, 1695,17, 161 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 534,871, 1681,48, 100,529 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_sm" ); + ent.v[ "origin" ] = ( 293,471, 1676,48, 194 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -657,957, 2097,38, 93 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -611,401, 1250,63, 85 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 138,519, 2063,32, 106 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 125,064, 1331,07, 100,534 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -296,854, 1081,47, -9,73779 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -296,274, 2329,6, -16,8466 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -474,897, 2248,37, 33,3115 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -619,981, 2157,09, 163,496 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -421,943, 2258,39, 152,995 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -212,626, 2289,77, 150,788 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -5,42307, 2240,35, 102 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -312,504, 2560,61, -58 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_md" ); + ent.v[ "origin" ] = ( -884,266, 1674,01, 65 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -51,6081, 2247,67, 159 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 252,823, 1391,73, 154,02 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 254,558, 1981,93, 156 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 23,0116, 1163,25, 93 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -11,0243, 1151,77, 147,87 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -461,387, 1144,32, 39,4494 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( -302,044, 853,825, -56,8727 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( 337,668, 2899,52, 218,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_light_flourescent_ceiling_panel" ); + ent.v[ "origin" ] = ( 302,264, 478,068, 198,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -387,346, 1313,75, 213,748 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -131,287, 1312,74, 213,778 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -643,327, 1568,19, 213,577 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -387,359, 1568,09, 213,608 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -131,384, 1569,09, 213,863 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 124,835, 1568,17, 212,634 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -643,294, 1824,85, 213,486 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -387,312, 1824,95, 213,401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -131,294, 1823,67, 213,298 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 124,655, 1824,71, 213,457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -387,337, 2080,5, 213,691 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -131,268, 2080,18, 213,265 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -348,716, 1311,97, 213,357 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -92,7097, 1311,74, 213,298 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 163,371, 1568,28, 213,722 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -92,7388, 1569,08, 213,158 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -348,777, 1567,77, 213,012 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -604,806, 1568,54, 212,862 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( 163,318, 1823,49, 213,499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -92,6991, 1825,02, 213,447 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -348,672, 1824,18, 213,305 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -604,725, 1823,71, 213,342 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -92,6829, 2080,23, 213,458 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_m_p6_ext_wall_sml" ); + ent.v[ "origin" ] = ( -348,7, 2080,17, 213,221 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 441,882, 412,978, 262,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 442,301, 539,491, 263,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 729,979, 413,208, 263,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flourescent_ceiling_panel_2" ); + ent.v[ "origin" ] = ( 730,475, 540,783, 263,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_door" ); + ent.v[ "origin" ] = ( -389,632, 1117,59, 154,528 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 498,304, 3156,75, 165,162 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 370,552, 3155,73, 165,162 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 370,2, 3316,78, 165,161 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 498,256, 3316,51, 165,161 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 628,524, 3316,75, 164,157 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 697,352, 3188,03, 165,153 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 580,749, 3439,96, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 644,765, 3441,41, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 708,357, 3440,7, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 515,904, 3440,59, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 452,164, 3440,98, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 388,406, 3440,29, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 323,834, 3440,15, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 324,482, 3384,12, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 388,033, 3384,03, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 452,921, 3384,28, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 516,798, 3383,45, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 580,312, 3384,78, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 644,848, 3384,15, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 708,885, 3384,72, 95,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 691,215, 2995,59, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 691,496, 3058,03, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 691,75, 3122,56, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 451,883, 3059,23, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 515,291, 3057,53, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 579,466, 3059,96, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 451,335, 2995,26, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 515,382, 2995,34, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm" ); + ent.v[ "origin" ] = ( 579,961, 2995,2, 63,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm_sm" ); + ent.v[ "origin" ] = ( 1095,23, 1960,3, 64,125 ); + ent.v[ "angles" ] = ( 338, 46, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 1219,82, -3358,2, -225,966 ); + ent.v[ "angles" ] = ( 340,226, 173,539, -4,47296 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1014,35, -2854,36, -255,925 ); + ent.v[ "angles" ] = ( 327,963, 181,99, -0,407737 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 859,47, -3279,31, -105,188 ); + ent.v[ "angles" ] = ( 356,181, 172,305, -4,21809 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -771,867, -1087,62, -33,9863 ); + ent.v[ "angles" ] = ( 348,908, 218,428, -17,0545 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -817,333, -1822,73, -34 ); + ent.v[ "angles" ] = ( 345,931, 218,807, -7,13726 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -1116,02, 1795,57, 39 ); + ent.v[ "angles" ] = ( 355,615, 238,525, 1,20706 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( -1118,98, 2590,52, -16 ); + ent.v[ "angles" ] = ( 351,764, 220,755, -0,304766 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( -944,947, 4077,54, 53,4589 ); + ent.v[ "angles" ] = ( 3,33533, 259,147, -17,0191 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 658,361, 216,263, -63,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 227 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 651,54, 532,81, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 242 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 470,363, 491,088, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 712,61, 3052,12, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 249 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "origin" ] = ( 492,822, 2899,12, 72,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "origin" ] = ( 1234,88, 2010,09, 49 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 1127,46, 2234,77, 55,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 1134,16, 2003,34, 55,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_smoke" ); + ent.v[ "origin" ] = ( 1379,54, 2273,12, 55,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 1334,13, 1376,44, 65,125 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 1164, 1386,85, 83 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 1354,51, 1168,48, 81,125 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_cooling_tower_thck_xsm" ); + ent.v[ "origin" ] = ( 1228,09, 1136,18, 70 ); + ent.v[ "angles" ] = ( 270, 4,2937, -4,29471 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_md" ); + ent.v[ "origin" ] = ( 1243,18, 1267,06, 171,158 ); + ent.v[ "angles" ] = ( 270, 357,879, 93,121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 258,569, 1469,85, 114,504 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 334 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( 262,837, 1917,35, 114,221 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 22 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -9,18739, 2193,57, 114,655 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 63 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -568,462, 2135,15, 114,072 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_outdoor_wall03_white" ); + ent.v[ "origin" ] = ( -561,284, 1252,87, 114,373 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 228 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( -112,213, 1115,25, -56,5153 ); + ent.v[ "angles" ] = ( 302,701, 119,927, -111,036 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_white_ribbon_sm" ); + ent.v[ "origin" ] = ( -109,25, 1107,61, -57,5097 ); + ent.v[ "angles" ] = ( 280,286, 298,824, 60,7822 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; +} diff --git a/mp_meltdown/maps/mp/mp_meltdown.gsc b/mp_meltdown/maps/mp/mp_meltdown.gsc new file mode 100644 index 0000000..a77c0f6 --- /dev/null +++ b/mp_meltdown/maps/mp/mp_meltdown.gsc @@ -0,0 +1,17 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_meltdown_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_meltdown_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_meltdown" ); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2100", reset_dvars ); +} diff --git a/mp_meltdown/maps/mp/mp_meltdown_amb.gsc b/mp_meltdown/maps/mp/mp_meltdown_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_meltdown/maps/mp/mp_meltdown_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_meltdown/maps/mp/mp_meltdown_fx.gsc b/mp_meltdown/maps/mp/mp_meltdown_fx.gsc new file mode 100644 index 0000000..bcf7334 --- /dev/null +++ b/mp_meltdown/maps/mp/mp_meltdown_fx.gsc @@ -0,0 +1,69 @@ +#include maps/mp/_utility; + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_meltdown_fx::main(); + maps/mp/createart/mp_meltdown_art::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_fumes_vent_xsm_int" ] = loadfx( "maps/mp_maps/fx_mp_fumes_vent_xsm_int" ); + level._effect[ "fx_mp_steam_pipe_md" ] = loadfx( "maps/mp_maps/fx_mp_steam_pipe_md" ); + level._effect[ "fx_mp_vent_heat_distort" ] = loadfx( "maps/mp_maps/fx_mp_vent_heat_distort" ); + level._effect[ "fx_mp_vent_steam_line" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_line" ); + level._effect[ "fx_mp_vent_steam_windy" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_windy" ); + level._effect[ "fx_mp_vent_steam_windy_lg" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_windy_lg" ); + level._effect[ "fx_mp_steam_smoke" ] = loadfx( "maps/mp_maps/fx_mp_steam_smoke" ); + level._effect[ "fx_mp_water_rain_cooling_tower" ] = loadfx( "maps/mp_maps/fx_mp_water_rain_cooling_tower" ); + level._effect[ "fx_mp_water_rain_cooling_tower_splsh_200" ] = loadfx( "maps/mp_maps/fx_mp_water_rain_cooling_tower_splsh_200" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_steam_cooling_tower" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower" ); + level._effect[ "fx_mp_steam_cooling_tower_blocker" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower_blocker" ); + level._effect[ "fx_mp_steam_cooling_tower_door" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower_door" ); + level._effect[ "fx_mp_steam_cooling_tower_int_top" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower_int_top" ); + level._effect[ "fx_mp_steam_cooling_tower_thck_sm" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower_thck_sm" ); + level._effect[ "fx_mp_steam_cooling_tower_thck_md" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower_thck_md" ); + level._effect[ "fx_mp_steam_cooling_tower_thck_xsm" ] = loadfx( "maps/mp_maps/fx_mp_steam_cooling_tower_thck_xsm" ); + level._effect[ "fx_water_pipe_spill_ocean" ] = loadfx( "water/fx_water_pipe_spill_ocean" ); + level._effect[ "fx_water_surface_heat_lg" ] = loadfx( "water/fx_water_surface_heat_lg" ); + level._effect[ "fx_water_surface_heat_md" ] = loadfx( "water/fx_water_surface_heat_md" ); + level._effect[ "fx_mp_steam_tunnel" ] = loadfx( "maps/mp_maps/fx_mp_steam_tunnel" ); + level._effect[ "fx_mp_steam_tunnel_lng" ] = loadfx( "maps/mp_maps/fx_mp_steam_tunnel_lng" ); + level._effect[ "fx_water_wave_break_md" ] = loadfx( "water/fx_water_wave_break_md" ); + level._effect[ "fx_water_wave_break_lg" ] = loadfx( "water/fx_water_wave_break_lg" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_light_gray_white_ribbon_sm" ] = loadfx( "light/fx_light_gray_white_ribbon_sm" ); + level._effect[ "fx_light_flourescent_ceiling_panel_2" ] = loadfx( "light/fx_light_flourescent_ceiling_panel_2" ); + level._effect[ "fx_light_reactor_glw_blue" ] = loadfx( "light/fx_light_reactor_glw_blue" ); + level._effect[ "fx_light_beacon_red_blink_fst_sm" ] = loadfx( "light/fx_light_beacon_red_blink_fst_sm" ); + level._effect[ "fx_light_garage_parking_red" ] = loadfx( "light/fx_light_emergency_red" ); + level._effect[ "fx_light_m_p6_ext_wall_sml" ] = loadfx( "light/fx_light_m_p6_ext_wall_sml" ); + level._effect[ "fx_light_outdoor_wall03_white" ] = loadfx( "light/fx_light_outdoor_wall03_white" ); + level._effect[ "fx_light_flourescent_ceiling_panel" ] = loadfx( "light/fx_light_flourescent_ceiling_panel_soft" ); + level._effect[ "fx_light_recessed_cool_sm" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_light_floodlight_sqr_wrm_sm" ] = loadfx( "light/fx_light_floodlight_sqr_wrm_sm" ); + level._effect[ "fx_light_flour_glow_cool_dbl_md" ] = loadfx( "light/fx_light_flour_glow_cool_dbl_md" ); + level._effect[ "fx_lf_mp_meltdown_sun1" ] = loadfx( "lens_flares/fx_lf_mp_meltdown_sun1" ); + level._effect[ "fx_sand_gust_ground_sm" ] = loadfx( "dirt/fx_sand_gust_ground_sm_slw" ); + level._effect[ "fx_sand_gust_ground_md" ] = loadfx( "dirt/fx_sand_gust_ground_md_slw" ); + level._effect[ "fx_sand_gust_door" ] = loadfx( "dirt/fx_sand_gust_door_slw" ); + level._effect[ "fx_sand_blowing_lg_vista" ] = loadfx( "dirt/fx_sand_blowing_lg_vista" ); + level._effect[ "fx_dust_gray_street_low" ] = loadfx( "dirt/fx_dust_gray_street_low" ); + level._effect[ "fx_dust_swirl_sm_gray_runner" ] = loadfx( "dirt/fx_dust_swirl_sm_gray_runner" ); + level._effect[ "fx_pak_tower_fire_flareup" ] = loadfx( "maps/mp_maps/fx_mp_fire_tower_flareup" ); + level._effect[ "fx_mp_fire_tower_flareup_amb" ] = loadfx( "maps/mp_maps/fx_mp_fire_tower_flareup_amb" ); +} + +precache_fxanim_props() +{ +} diff --git a/mp_meltdown/maps/mp/mp_meltdown_lift.gsc b/mp_meltdown/maps/mp/mp_meltdown_lift.gsc new file mode 100644 index 0000000..55bc152 --- /dev/null +++ b/mp_meltdown/maps/mp/mp_meltdown_lift.gsc @@ -0,0 +1,218 @@ +#include maps/mp/killstreaks/_supplydrop; +#include maps/mp/_tacticalinsertion; +#include maps/mp/gametypes/_weaponobjects; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + precachestring( &"MP_LIFT_OPERATE" ); + precachestring( &"MP_LIFT_COOLDOWN" ); + trigger = getent( "lift_trigger", "targetname" ); + platform = getent( "lift_platform", "targetname" ); + if ( !isDefined( trigger ) || !isDefined( platform ) ) + { + return; + } + trigger enablelinkto(); + trigger linkto( platform ); + part = getent( "lift_part", "targetname" ); + if ( isDefined( part ) ) + { + part linkto( platform ); + } + level thread lift_think( trigger, platform ); +} + +lift_think( trigger, platform ) +{ + level waittill( "prematch_over" ); + location = 0; + for ( ;; ) + { + trigger sethintstring( &"MP_LIFT_OPERATE" ); + trigger waittill( "trigger" ); + trigger sethintstring( &"MP_LIFT_COOLDOWN" ); + if ( location == 0 ) + { + goal = platform.origin + vectorScale( ( 0, 0, 1 ), 128 ); + location = 1; + } + else + { + goal = platform.origin - vectorScale( ( 0, 0, 1 ), 128 ); + location = 0; + } + platform thread lift_move_think( goal ); + platform waittill( "movedone" ); + if ( location == 1 ) + { + trigger thread lift_auto_lower_think(); + } + wait 10; + } +} + +lift_move_think( goal ) +{ + self endon( "movedone" ); + timer = 5; + self moveto( goal, 5 ); + while ( timer >= 0 ) + { + self destroy_equipment(); + self destroy_tactical_insertions(); + self destroy_supply_crates(); + self destroy_corpses(); + self destroy_stuck_weapons(); + wait 0,5; + timer -= 0,5; + } +} + +lift_auto_lower_think() +{ + self endon( "trigger" ); + wait 30; + self notify( "trigger" ); +} + +destroy_equipment() +{ + grenades = getentarray( "grenade", "classname" ); + i = 0; + while ( i < grenades.size ) + { + item = grenades[ i ]; + if ( !isDefined( item.name ) ) + { + i++; + continue; + } + else if ( !isDefined( item.owner ) ) + { + i++; + continue; + } + else if ( !isweaponequipment( item.name ) ) + { + i++; + continue; + } + else if ( !item istouching( self ) ) + { + i++; + continue; + } + else watcher = item.owner getwatcherforweapon( item.name ); + if ( !isDefined( watcher ) ) + { + i++; + continue; + } + else + { + watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( item, 0, undefined ); + } + i++; + } +} + +destroy_tactical_insertions() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( !isDefined( player.tacticalinsertion ) ) + { + i++; + continue; + } + else + { + if ( player.tacticalinsertion istouching( self ) ) + { + player.tacticalinsertion maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + } + } + i++; + } +} + +destroy_supply_crates() +{ + crates = getentarray( "care_package", "script_noteworthy" ); + i = 0; + while ( i < crates.size ) + { + crate = crates[ i ]; + if ( crate istouching( self ) ) + { + playfx( level._supply_drop_explosion_fx, crate.origin ); + playsoundatposition( "wpn_grenade_explode", crate.origin ); + wait 0,1; + crate maps/mp/killstreaks/_supplydrop::cratedelete(); + } + i++; + } +} + +destroy_corpses() +{ + corpses = getcorpsearray(); + i = 0; + while ( i < corpses.size ) + { + if ( distance2dsquared( corpses[ i ].origin, self.origin ) < 1048576 ) + { + corpses[ i ] delete(); + } + i++; + } +} + +destroy_stuck_weapons() +{ + weapons = getentarray( "sticky_weapon", "targetname" ); + origin = self getpointinbounds( 0, 0, -0,6 ); + z_cutoff = origin[ 2 ]; + i = 0; + while ( i < weapons.size ) + { + weapon = weapons[ i ]; + if ( weapon istouching( self ) && weapon.origin[ 2 ] > z_cutoff ) + { + weapon delete(); + } + i++; + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} diff --git a/mp_mirage/aitype/enemy_dog_mp.gsc b/mp_mirage/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_mirage/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_mirage/character/character_mp_german_shepherd.gsc b/mp_mirage/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_mirage/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_mirage/maps/mp/createfx/mp_mirage_fx.gsc b/mp_mirage/maps/mp/createfx/mp_mirage_fx.gsc new file mode 100644 index 0000000..7324ce9 --- /dev/null +++ b/mp_mirage/maps/mp/createfx/mp_mirage_fx.gsc @@ -0,0 +1,1700 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1091,16, 21,5789, -15,3096 ); + ent.v[ "angles" ] = ( 10, 180, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -596,184, 114,64, 3,71116 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1593,32, 244,803, -50,4112 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1950,07, 665,598, -82,5685 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1751,17, 1241,41, -47,7047 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2036,56, 1437,56, -47,8889 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1751,14, 1633,92, -6,7206 ); + ent.v[ "angles" ] = ( 12, 180, -13 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 240,209, 263,864, 0 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -202,286, 312,01, 0 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 636,783, 124,097, 0 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1060,99, 386,494, -1 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1316,42, 769,33, 4,3183 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2520,85, 1109,48, 0,8895 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2908,66, 1101,73, 12,9798 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1794,22, 1550,08, 23,4582 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1363,96, 1594,85, 26,6079 ); + ent.v[ "angles" ] = ( 355,019, 180,437, -5,01824 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1109,69, 1382,94, 66,1692 ); + ent.v[ "angles" ] = ( 348,877, 201,141, -0,926659 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1586,02, 2240,7, 23,7261 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1181,25, 2527,9, 23,5668 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 774,856, 2669,9, 21,1304 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -244,403, 2633,43, 27,2288 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -384,346, 2871,67, 27,4893 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -890,474, 2723,1, 24,9618 ); + ent.v[ "angles" ] = ( 360, 226, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -681,631, 2494,51, 27,9246 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1241,15, 2027,04, 23,1111 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 231 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1623,84, 1579,48, 9,8956 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2623,63, 1135,37, 1,80512 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2123,18, 714,577, -5,50962 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2140,89, 1337,15, 20,8598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1621,68, 709,732, -1,74518 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1482,18, 2079,48, 8,59846 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1482,91, 2574, 9,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 982,087, 2386,41, 11,4889 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 985,358, 2883,88, 9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 497,569, 2741,65, 9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -0,212731, 2741,96, 8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -499,272, 2742,62, 8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1010,08, 2583,29, 9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1125,28, 707,128, -9,15419 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1154,78, 1214,82, 4,1803 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1126,95, 208,184, -3,74612 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 629,447, 125,845, -1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 134,253, 122,355, -1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -362,289, 121,904, 1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -860,037, 128,301, 0,27426 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1359,23, 143,143, -41,1538 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1345,57, -356,737, -4,84829 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -845,29, -371,657, -3,57959 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -345,802, -363,995, -4,91145 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 155,889, -377,427, -4,52922 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 648,367, -370,228, -1,98896 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1858,9, 574,538, -77,0829 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1861,21, 76,1131, -70,0314 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1788,39, 1076,32, -89 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1289,62, 641,011, 23 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2354,68, 1079, -89 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2366,02, 579,598, -71,2848 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1802,43, 1578,19, -90,8889 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2301,12, 1578,09, -58,8877 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2785,92, 1404,29, -48,0723 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2363,7, 78,6753, -15,1506 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -500,453, 3247,06, 188,796 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4,03281, 3249,2, 172,289 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 499,666, 3243,33, 151,402 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2623,41, 1630,85, 52,7547 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3121,62, 1631,09, 173,887 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3127,95, 1131,07, 109,869 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3128,48, 630,281, 248,113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1645,51, 1139,82, 242,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1155,63, -284,016, 61,87 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1652,66, -238,498, 150,253 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 506,859, 2140,17, 250 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2,91546, 2139,29, 247,032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -493,73, 2135,46, 248,27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1687,69, 1771,83, 298,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2290,58, 883,217, -88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sun" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 417385, 809545, 411621 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -348,049, 2129,28, 27,2144 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -110,656, 2048,5, 27,3012 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 695,738, 2032,04, 23 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 563,011, 2327,7, 23 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 371,671, 2540,56, -40,854 ); + ent.v[ "angles" ] = ( 10, 217, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -56,7814, 2450,61, -80,539 ); + ent.v[ "angles" ] = ( 345, 180, -24 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 420,208, 2853,79, 28,7489 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 673,677, 2918,76, 27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1165,8, 2207,69, 21,4538 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 835,442, 2241,02, 24,6877 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 245 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 184,195, 2059,95, 27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -603,306, 2881,29, 27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1364,2, 1828,73, 39,26 ); + ent.v[ "angles" ] = ( 330, 180, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1216,27, 1185,94, 74,1245 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1192,6, 946,894, 43,782 ); + ent.v[ "angles" ] = ( 0, 180, -18 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 175,402, 114,579, 3,89228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 794,586, -25,4861, 4,27233 ); + ent.v[ "angles" ] = ( 0, 180, 14 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1220,07, 258,77, -1,57812 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2313,86, 559,111, 71,2447 ); + ent.v[ "angles" ] = ( 19,1717, 186,948, 13,5715 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2813,63, 1576,62, 58,4678 ); + ent.v[ "angles" ] = ( 4,97532, 179,686, -9,02184 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 894,861, 164,044, -7,73769 ); + ent.v[ "angles" ] = ( 350, 180, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2703,86, 910,23, -41,3147 ); + ent.v[ "angles" ] = ( 320, 180, 11 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2578,19, 1551,26, 2,45107 ); + ent.v[ "angles" ] = ( 330, 180, -17 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2617,19, 1373,04, -35,1011 ); + ent.v[ "angles" ] = ( 330, 180, -11 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2390,42, 1282,34, -48,8889 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1991,37, 1781,42, 12,7667 ); + ent.v[ "angles" ] = ( 360, 180, -33 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 281,687, 1790,51, 539,968 ); + ent.v[ "angles" ] = ( 2,15829, 160,339, 17,8744 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 226,805, 1646,86, 590,497 ); + ent.v[ "angles" ] = ( 2,15829, 160,339, 17,8744 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -289,968, 1813,6, 530,813 ); + ent.v[ "angles" ] = ( 9,42481, 17,7219, -18,4054 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -232,37, 1660,01, 584,575 ); + ent.v[ "angles" ] = ( 9,42481, 17,7219, -18,4054 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1780,38, 1846,46, 320,825 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1355,77, 2101,54, 174,706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1180,17, 2320,05, 174,012 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1025,8, 2430,29, 177,621 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1258,01, 2210,83, 177,59 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1722,18, 2252,54, 178,483 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2226,12, 1404,17, 175,828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2454,68, 1586,02, 41,2666 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1379,05, 24,0002, 256,347 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2340,12, 1248,51, 94,4229 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2307,98, 1055,63, 93,9229 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1356,08, 2224,22, 223,428 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2181,91, -435,558, -26,2728 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2179,59, -936,481, 29,8614 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1677,1, -939,043, -25,0194 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1161,46, -1371,89, 40,1637 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -661,182, -1386,81, 41,4324 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -161,693, -1379,15, 40,1006 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 339,998, -1392,58, 40,4828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 832,476, -1385,38, 43,0231 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1339,74, -1299,17, 106,882 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 372,146, 3856,57, 194,194 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 865,817, 3994,84, 218,772 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2910,28, 1550,47, 502,189 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2412,54, 1395,99, 251,979 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3560,59, 2005,79, 520,399 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3528,06, 657,5, 507,518 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2950, 942,555, 499,898 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1326,73, 2696,19, 260,389 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 846,058, 3007,01, 455,296 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 406,235, 2970,29, 373,637 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -954,391, 2117,66, 464,657 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1319,15, 517,609, 418,382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -373,75, -52,6996, 493,678 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1335,18, 511,224, 206,787 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2242,69, 1735,49, 492,427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1770,77, 293,89, 485,163 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2238,27, 635,589, 598,577 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1088,16, -237,124, 622,593 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -569,882, -230,191, 415,49 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 748,337, -439,471, 398,695 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 425,36, -203,352, 378,44 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 973,066, -162,95, 457,354 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1212,22, -213,581, 450,991 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3276,44, 1747,69, 229,887 ); + ent.v[ "angles" ] = ( 14,7791, 179,055, -18,1938 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3294,57, 910,166, 217,861 ); + ent.v[ "angles" ] = ( 16,7316, 182,356, 12,4879 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2922,74, 724,105, 198,562 ); + ent.v[ "angles" ] = ( 16,7316, 182,356, 40,4879 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 364,541, 3395,57, 41,5051 ); + ent.v[ "angles" ] = ( 358, 180, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3104,14, 1640,3, 161,936 ); + ent.v[ "angles" ] = ( 10,9758, 180,326, -12,9102 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2635,76, 487,084, 196,835 ); + ent.v[ "angles" ] = ( 18,8055, 191,758, 22,7033 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2578,34, 187,633, 179,509 ); + ent.v[ "angles" ] = ( 20, 180, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9922,66, 21899, 3600,31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -27600,3, 10659, 3749,9 ); + ent.v[ "angles" ] = ( 350,782, 193,211, -4,29339 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 24368,4, -9748,88, 4609,06 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 25589,7, -3953,42, 5765,74 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 28085,9, 3334,54, 4868,93 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 19922,4, -15798,9, 3135,1 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 24723,8, 10135,8, 2319,61 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_dist_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 17123,1, 16349,4, 2098,76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1945,27, 1206,2, 271,73 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 826,329, 1238,07, 115,897 ); + ent.v[ "angles" ] = ( 5,72727, 160,904, -1,63441 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 649,534, 1398,28, 100,353 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 145 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1641,56, 1767,3, 43,2977 ); + ent.v[ "angles" ] = ( 11,7062, 172,267, -17,7939 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1365,73, 1815,19, 24,9879 ); + ent.v[ "angles" ] = ( 352, 180, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1229,12, 976,699, 24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -532,217, 173,497, 0,33713 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 206 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm_far" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1378, 1247, 24,1111 ); + ent.v[ "angles" ] = ( 5, 180, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -909,386, 1254,69, 800,431 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 0, 1752,88, 27,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8,21924, 1358,98, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -221,909, 1460,25, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 226,225, 1484,59, 63,6606 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1977,97, 2075, 36,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2225,8, 1631,59, 36,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1950,65, 186,472, 6,84163 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1508,45, 24,8757, 1,67484 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -884,779, 2176,01, 180,526 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1867,29, 2149,89, 24,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1170,48, 1419,85, 454,96 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2070,9, 402,547, 126,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1519,89, 10,0991, 118,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2311,02, 1550,94, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2223,21, 1550,9, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2134,84, 1551,06, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2135,85, 1742,85, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2224,22, 1742,7, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2312,03, 1742,73, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2135,94, 1647,44, 183,448 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2312,12, 1647,31, 183,448 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2388,07, 1774,99, 162,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2387,74, 1683,12, 162,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2019,74, 1760,27, 162,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2070,94, 1950,87, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1967,5, 1951,76, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1863,13, 1952,07, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2072,41, 2207,05, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1968,03, 2206,93, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1863,66, 2207,25, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2071,4, 2079,41, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1863,84, 2078,62, 182,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2115,29, 2147,13, 170,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1819,93, 1985,75, 170,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1819,8, 2072, 170,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1818,63, 2202,83, 170,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1825,05, 1832,09, 138,246 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1888,77, 1831,99, 138,252 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1953,06, 1832,22, 138,251 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -614,031, 1253,47, 256,257 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -615,356, 1347,3, 256,252 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -615,255, 1440,95, 256,25 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,543, 1442,09, 256,243 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -796,641, 1348,38, 256,245 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -797,313, 1254,45, 256,25 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -799,677, 1553,73, 230,249 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -703,951, 1553,24, 229,253 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -608,215, 1553,34, 230,252 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 656,562, 1547, 187,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 705,216, 1547,4, 188,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 753,445, 1547,2, 188,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1613,67, 1535,77, 17,5144 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2092,7, 1339,74, 18,9001 ); + ent.v[ "angles" ] = ( 356,685, 165,763, 11,4656 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1722, 1808,95, 178,388 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2668,47, 2152,08, 155,252 ); + ent.v[ "angles" ] = ( 20,7116, 177,949, -13,5616 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2703,5, 2516,54, 162,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_xlg_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 248,016, 1701,75, 568,556 ); + ent.v[ "angles" ] = ( 0, 160,109, 16,9886 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_xlg_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 50,1204, 1703,15, 529,166 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -834,148, 2990,31, 120,355 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble_splsh" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -834,711, 2987,93, 26,2107 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -970,285, 2853,68, 119,688 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble_splsh" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -968,541, 2853,7, 25,5433 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -924,863, 2899,44, 119,547 ); + ent.v[ "angles" ] = ( 89, 180, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_shower_dribble_splsh" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -920,339, 2891,14, 25,9565 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 11,3677, 1618,27, 374,937 ); + ent.v[ "angles" ] = ( 40, 270, 90 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2175,81, 954,268, 19,5051 ); + ent.v[ "angles" ] = ( 342, 180, -10 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2030,93, 708,931, 2,98323 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1614,16, 644,316, 14,3407 ); + ent.v[ "angles" ] = ( 0, 180, 11 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -977,887, 2424,62, 27,579 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 603,051, 1997,34, 471,974 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 109,131, 2039,98, 300,305 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 456,487, 1997,09, 472,36 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -250,935, 1998,33, 471,362 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distortion_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 614,392, -1908,18, 0,778503 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distortion_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2228,95, -1517,94, -102,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distortion_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 683,936, 3969,65, 185,814 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -705,043, 905,671, 605,985 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_md_dist" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -910,118, 1470,7, 796,54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2639,45, 1309,46, 430,593 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1618,48, 1712,38, 243,618 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 325,064, 3924,93, 471,421 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 903,79, 4201,08, 542,233 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 586,44, 4636,06, 433,914 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3501,44, 659,554, 382,335 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1653,44, 893,845, 273,388 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1802,35, 561,124, 251,033 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1407,7, 1130,36, 272,622 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2229,13, 336,441, 51,7138 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2228,96, 225,435, 52,1552 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2227,96, 114,408, 65,6977 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2232,27, -17,0891, 66,0932 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_fall_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2241,25, 362,757, 254,298 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1477,85, 169,142, 117,875 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1029,78, 1884,33, 279,075 ); + ent.v[ "angles" ] = ( 19, 360, 0 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1045,66, 1813,18, 280,075 ); + ent.v[ "angles" ] = ( 19, 360, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1024,83, 1782,77, 280,075 ); + ent.v[ "angles" ] = ( 19, 360, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1002,67, 1752,08, 280,075 ); + ent.v[ "angles" ] = ( 19, 360, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1018,65, 1681,44, 280,075 ); + ent.v[ "angles" ] = ( 19, 360, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -198,845, 482,294, 172,276 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1,11494, 481,152, 174,279 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 196,77, 481,294, 174,277 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -726,043, 2206,27, 174,921 ); + ent.v[ "angles" ] = ( 355, 180, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,878, 2210,33, 261,129 ); + ent.v[ "angles" ] = ( 43,5496, 198,082, 12,678 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -45,8602, 1480,96, 268,061 ); + ent.v[ "angles" ] = ( 42,8213, 247,927, -15,4103 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 73,1952, 1578,19, 238,74 ); + ent.v[ "angles" ] = ( 42,8213, 247,927, -15,4103 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -213,454, 1555,1, 242,305 ); + ent.v[ "angles" ] = ( 42,8213, 247,927, -15,4103 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2027,63, 183,937, 50,6113 ); + ent.v[ "angles" ] = ( 10, 185, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2025,95, 85,9741, 41,9854 ); + ent.v[ "angles" ] = ( 10, 192, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2038,06, -57,1976, 60,9706 ); + ent.v[ "angles" ] = ( 7, 197, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2027,27, 349,371, 25,897 ); + ent.v[ "angles" ] = ( 12, 164, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1798,41, 2165,83, 131,125 ); + ent.v[ "angles" ] = ( 35, 270, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1911,09, 2162,95, 135,452 ); + ent.v[ "angles" ] = ( 35, 270, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1715,29, 2161,09, 127,314 ); + ent.v[ "angles" ] = ( 35, 270, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_godray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1985,12, 2159,55, 130,548 ); + ent.v[ "angles" ] = ( 35, 270, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 897,696, 4788,78, 578,073 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1714,79, 3812,23, 825,609 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1944,33, 3229,31, 621,89 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3488,29, 2622,54, 870,884 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 553,282, 3521,04, 567,992 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 400,069, 4161,27, 568,934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 28,7965, 3061,74, 560,321 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distortion_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4110,31, 1859,71, -88,1768 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3509,14, 1835,98, 426,776 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_foliage_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1207,08, -1749,98, 806,649 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distortion_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3431,97, 2520,41, 294,293 ); + ent.v[ "angles" ] = ( 270, 0, -180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1615,16, 3056,38, 199,884 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 134 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1631,36, 2704,26, 34,2679 ); + ent.v[ "angles" ] = ( 0, 180, -13 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1604,32, 132,018, 118,25 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1702,35, 112,9, 118,251 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -970,92, 2583,59, 167,442 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -929,168, 2593,17, 166,942 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -879,67, 2609,55, 166,438 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -514,969, 2911,64, 166,949 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -522,627, 2869,33, 166,933 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -542,725, 2829,3, 166,94 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -733,218, 2041,9, 302,249 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -731,652, 2278,22, 302,255 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1047,2, 2278,07, 302,251 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1016,29, 2044,48, 302,251 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -605,784, 1062,47, 289,259 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -604,939, 1768,64, 230,251 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -807,27, 1778,34, 230,251 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -507,609, 1669,29, 257,615 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -507,491, 1862,43, 257,875 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -370,069, 1211,38, 256,252 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -262,063, 1104,4, 256,253 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 280,665, 1099,93, 252,252 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 394,115, 1215,31, 252,255 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 514,388, 1854,96, 256,875 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 513,58, 1670,96, 257,624 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 712,761, 1178,95, 238,247 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 654,314, 1244,8, 246,875 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 746,779, 1245, 246,875 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 602,326, 1268,39, 237,253 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 613,946, 1510,23, 238,244 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 803,638, 1514,41, 238,252 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 748,242, 1448,84, 246,875 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 653,598, 1448,92, 246,875 ); + ent.v[ "angles" ] = ( 90, 4,49091, 4,49089 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -674,363, 1173,12, 2,65046 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_dust_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -741,161, 1038,45, 5,69958 ); + ent.v[ "angles" ] = ( 45, 90, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_int_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -672,64, 1301,44, -40,5766 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -131,132, 3260,68, 60,9493 ); + ent.v[ "angles" ] = ( 354, 180, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1460,74, 3053,21, 56,1114 ); + ent.v[ "angles" ] = ( 4, 180, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1198,32, 3257,22, 78,7027 ); + ent.v[ "angles" ] = ( 1, 180, 0 ); + ent.v[ "delay" ] = -67; +} diff --git a/mp_mirage/maps/mp/mp_mirage.gsc b/mp_mirage/maps/mp/mp_mirage.gsc new file mode 100644 index 0000000..31f2535 --- /dev/null +++ b/mp_mirage/maps/mp/mp_mirage.gsc @@ -0,0 +1,39 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_mirage_fx::main(); + precachemodel( "collision_physics_256x256x10" ); + precachemodel( "collision_physics_cylinder_32x128" ); + precachemodel( "collision_clip_128x128x10" ); + precachemodel( "collision_clip_256x256x10" ); + maps/mp/_load::main(); + maps/mp/mp_mirage_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_mirage" ); + setdvar( "compassmaxrange", "2400" ); + visionsetnaked( "mp_mirage", 1 ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_256x256x10", "collider", ( 58,5, 3360, 53,5 ), vectorScale( ( 0, 0, -1 ), 352,9 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( 3029, 1571,5, 129,5 ), vectorScale( ( 0, 0, -1 ), 8,3 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1341, 517,5, -35,5 ), ( 354,7, 0, -0,6 ) ); + spawncollision( "collision_clip_256x256x10", "collider", ( 1744, 482, 16 ), ( 270, 183,902, 86,0983 ) ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2500", reset_dvars ); +} diff --git a/mp_mirage/maps/mp/mp_mirage_amb.gsc b/mp_mirage/maps/mp/mp_mirage_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_mirage/maps/mp/mp_mirage_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_mirage/maps/mp/mp_mirage_fx.gsc b/mp_mirage/maps/mp/mp_mirage_fx.gsc new file mode 100644 index 0000000..b0d4b44 --- /dev/null +++ b/mp_mirage/maps/mp/mp_mirage_fx.gsc @@ -0,0 +1,51 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_mirage_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_distortion_md" ] = loadfx( "maps/mp_maps/fx_mp_mirage_distortion_md" ); + level._effect[ "fx_mp_distortion_lg" ] = loadfx( "maps/mp_maps/fx_mp_mirage_distortion_lg" ); + level._effect[ "fx_mp_sand_gust_int_sm" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_gust_int_sm" ); + level._effect[ "fx_mp_dust_lg" ] = loadfx( "maps/mp_maps/fx_mp_mirage_dust_lg" ); + level._effect[ "fx_mp_dust_xlg" ] = loadfx( "maps/mp_maps/fx_mp_mirage_dust_xlg" ); + level._effect[ "fx_mp_dust_xlg_fast" ] = loadfx( "maps/mp_maps/fx_mp_mirage_dust_xlg_fast" ); + level._effect[ "fx_mp_foliage_gust" ] = loadfx( "maps/mp_maps/fx_mp_mirage_foliage_gust" ); + level._effect[ "fx_mp_sand_dist_md" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_dist_md" ); + level._effect[ "fx_mp_sand_fall_md" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_fall_md" ); + level._effect[ "fx_mp_sand_fall_md_dist" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_fall_md_dist" ); + level._effect[ "fx_mp_sand_fall_sm" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_fall_sm" ); + level._effect[ "fx_mp_sand_gust_md" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_gust_md" ); + level._effect[ "fx_mp_sand_gust_sm" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_gust_sm" ); + level._effect[ "fx_mp_sand_gust_sm_far" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_gust_sm_far" ); + level._effect[ "fx_mp_godray_md" ] = loadfx( "maps/mp_maps/fx_mp_mirage_godray_md" ); + level._effect[ "fx_mp_godray_lg" ] = loadfx( "maps/mp_maps/fx_mp_mirage_godray_lg" ); + level._effect[ "fx_mp_godray_sm" ] = loadfx( "maps/mp_maps/fx_mp_mirage_godray_sm" ); + level._effect[ "fx_mp_sand_wind" ] = loadfx( "maps/mp_maps/fx_mp_mirage_sand_wind" ); + level._effect[ "fx_mp_light_sm" ] = loadfx( "maps/mp_maps/fx_mp_mirage_light_sm" ); + level._effect[ "fx_mp_sun" ] = loadfx( "lens_flares/fx_lf_mp_mirage_sun1" ); + level._effect[ "fx_water_shower_dribble_splsh" ] = loadfx( "water/fx_water_shower_dribble_sm_splsh" ); + level._effect[ "fx_water_shower_dribble" ] = loadfx( "water/fx_water_shower_dribble_sm" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "lantern_lrg" ] = %fxanim_mp_mirage_lantern_lrg_anim; + level.scr_anim[ "fxanim_props" ][ "lantern_sm" ] = %fxanim_mp_mirage_lantern_sm_anim; + level.scr_anim[ "fxanim_props" ][ "lamp" ] = %fxanim_mp_mirage_lamp_anim; + level.scr_anim[ "fxanim_props" ][ "ruined_lanterns" ] = %fxanim_mp_mirage_lanterns_ruined_anim; + level.scr_anim[ "fxanim_props" ][ "lanterns_string" ] = %fxanim_mp_mirage_lanterns_string_anim; + level.scr_anim[ "fxanim_props" ][ "lantern_lrg_02" ] = %fxanim_mp_mirage_lantern_lrg_02_anim; +} diff --git a/mp_nightclub/aitype/enemy_dog_mp.gsc b/mp_nightclub/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_nightclub/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_nightclub/character/character_mp_german_shepherd.gsc b/mp_nightclub/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_nightclub/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_nightclub/maps/mp/createart/mp_nightclub_art.gsc b/mp_nightclub/maps/mp/createart/mp_nightclub_art.gsc new file mode 100644 index 0000000..4f5c879 --- /dev/null +++ b/mp_nightclub/maps/mp/createart/mp_nightclub_art.gsc @@ -0,0 +1,18 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_nightclub", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1,4 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_nightclub/maps/mp/createfx/mp_nightclub_fx.gsc b/mp_nightclub/maps/mp/createfx/mp_nightclub_fx.gsc new file mode 100644 index 0000000..e465cf5 --- /dev/null +++ b/mp_nightclub/maps/mp/createfx/mp_nightclub_fx.gsc @@ -0,0 +1,2760 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist" ); + ent.v[ "origin" ] = ( -16947,6, 1036,3, 89,6801 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 227 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -17262,3, 1779,14, -38 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -16883,4, 871,543, -52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -16262,8, 1545,59, -54,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -16319,4, 1314,85, -88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -17523,1, 502,205, -94,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 245 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -17162,9, 986,408, 35,3084 ); + ent.v[ "angles" ] = ( 25,3967, 238,24, -12,2032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -16577,3, 1511,27, 53 ); + ent.v[ "angles" ] = ( 32, 266, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_fog" ); + ent.v[ "origin" ] = ( -21294,7, 1734,81, -22,118 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_fog" ); + ent.v[ "origin" ] = ( -19943,4, 4984,73, -110,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 310 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_fog" ); + ent.v[ "origin" ] = ( -16010,3, 5875,07, -119,96 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -19077, 2023,36, 18,8227 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -18865,1, 2204,92, -20,3623 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -17797, 3449,98, -2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -17547,5, 3567,87, -29,7848 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -16962,7, 3358,8, -185,957 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -16854, 3636,33, -181,583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -15367,2, 3106,44, -119,687 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -17299,4, 3195,65, -178,935 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -17160,3, 846,72, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -16526, 1526,26, 53 ); + ent.v[ "angles" ] = ( 44, 315, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -16627, 1531,34, 54 ); + ent.v[ "angles" ] = ( 34, 240, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -17037,7, 1126,07, 51,6667 ); + ent.v[ "angles" ] = ( 44, 53, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -17028,7, 1025,4, 52,6667 ); + ent.v[ "angles" ] = ( 34, 338, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -17015,8, 1077,37, 51,6667 ); + ent.v[ "angles" ] = ( 32, 4, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -17399,1, 1913,95, -22 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -17474,5, 1900,59, -11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -19005, 1418,12, -156,044 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18907, 1889,69, -155,089 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -19257,7, 580,886, -156 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18673,7, 175,113, -156 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18331,2, -393,151, -151 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18274,1, 518,358, -164 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17992,6, 1052,65, -140,458 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18056,3, 1630,21, -136,444 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17108,9, 2558,04, -144,433 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16485,7, 2532,69, -146,685 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16006,1, 2782,28, -150 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17089,2, 3147,85, -137,72 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16806,4, 3707,12, -110 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17306,5, 3610,04, -118,32 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16153, 3797,9, -154 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -15763,7, 3285,28, -147 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -15222,1, 3282,63, -141 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -15201,5, 2894,57, -162 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17829,2, 2100,57, -39 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -16151,7, 1914,14, -106 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 16 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -15879,9, 1996,82, -113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16215, 2394,37, -147 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -15608, 3021,46, -153 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -15954, 3648,28, -114,376 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17574,9, 3233,16, -104,62 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18140,8, 3260,51, -98 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18695,5, 3002,41, -88 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18808,1, 2487, -125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18614,3, 2168,01, -108 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18599,6, 1549,89, -138 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -19307,3, 1118,48, -156 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18903,4, 388,731, -156 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18793,9, -371,33, -147 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -17439,2, 2223,27, -43 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16877,8, 2751,34, -142,832 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -17393,1, 3738,54, -83 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -18667, 588,432, -135,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -18827,2, 1051,51, -136,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -18512,2, 2292,24, -78,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 20 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -17800,7, 2949,98, -77,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_fog" ); + ent.v[ "origin" ] = ( -21481,1, -1457,28, -14,7847 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 39 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_spotlight01" ); + ent.v[ "origin" ] = ( -22297,8, 10396,7, -305,651 ); + ent.v[ "angles" ] = ( 287,114, 217,488, -83,1891 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_spotlight02" ); + ent.v[ "origin" ] = ( -29544,2, 8247,57, -22,902 ); + ent.v[ "angles" ] = ( 270, 0, 62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_spotlight02" ); + ent.v[ "origin" ] = ( -12042,3, -2031,22, 334,424 ); + ent.v[ "angles" ] = ( 270, 0, 62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_red_flash" ); + ent.v[ "origin" ] = ( -34125,3, 10603,4, 9766,02 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_red_flash" ); + ent.v[ "origin" ] = ( -8502,25, -5002,56, 9745,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_tank_bubbles" ); + ent.v[ "origin" ] = ( -17960,6, 263,018, -109,182 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_tank_bubbles" ); + ent.v[ "origin" ] = ( -18026,1, 214,757, -112,281 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_tank_bubbles" ); + ent.v[ "origin" ] = ( -18004,3, 182,681, -113,41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_tank_bubbles" ); + ent.v[ "origin" ] = ( -17936,5, 245,174, -114,934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -18758,3, 1832,34, -164,052 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -19191,4, 1905,53, -96,4394 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -19136,8, 1329,54, -179,032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -18546,8, -52,4395, -152,106 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -18820,8, -1085,93, -355,127 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -18586,9, -1347,54, -357,228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_nightclub_bar_light" ); + ent.v[ "origin" ] = ( -15549,5, 2381,68, -12,9216 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_nightclub_bar_light" ); + ent.v[ "origin" ] = ( -15583,3, 2321,16, -12,6912 ); + ent.v[ "angles" ] = ( 88, 87, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_nightclub_bar_light" ); + ent.v[ "origin" ] = ( -15535,5, 2443,75, -17,2216 ); + ent.v[ "angles" ] = ( 90, 0, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_nightclub_bar_light" ); + ent.v[ "origin" ] = ( -15627,9, 2275,31, -12,4283 ); + ent.v[ "angles" ] = ( 90, 12,1698, 16,1698 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_nightclub_bar_light" ); + ent.v[ "origin" ] = ( -15686,3, 2236,1, -14,7572 ); + ent.v[ "angles" ] = ( 90, 0, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -15538,2, 2524,28, -59,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 242 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -15737,3, 2651,26, -86 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 242 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18028,9, 225,724, -82,7716 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_tank_bubbles" ); + ent.v[ "origin" ] = ( -18007,1, 229,824, -117,014 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -18683, 914,973, -2,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_area_fog" ); + ent.v[ "origin" ] = ( -16424,5, 3186,35, -30,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -18615,2, -184,097, -151,801 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fireworks_runner" ); + ent.v[ "origin" ] = ( -32592,4, 3269,81, 4907,84 ); + ent.v[ "angles" ] = ( 293,048, 249,116, 168,917 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fireworks_runner" ); + ent.v[ "origin" ] = ( -25786,4, 13211,2, 4123,72 ); + ent.v[ "angles" ] = ( 289,651, 26,3177, -112,438 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_vista_spotlight01" ); + ent.v[ "origin" ] = ( -28164,3, 1257,98, -303,876 ); + ent.v[ "angles" ] = ( 297,184, 248,043, -54,6899 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -15286,9, 2476,05, -22,34 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -15333,9, 2303,12, -21,3415 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -15286,3, 2131,5, -21,337 ); + ent.v[ "angles" ] = ( 90, 3,96799, -176,032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -15407,4, 2014,32, -21,3334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -15640,6, 2010,58, -21,3374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fireworks_runner_02" ); + ent.v[ "origin" ] = ( -22292,4, 10417,8, -311,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fireworks_runner_02" ); + ent.v[ "origin" ] = ( -28227,9, 1247,11, -311,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_nightclub_sun1" ); + ent.v[ "origin" ] = ( 117342, 198059, 132299 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18539,1, 1430,9, 6,96914 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18631,4, 1346,95, 7,64295 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18632,5, 1197,5, 7,04885 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18699,9, 1142,45, 6,41418 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19156,5, 1967,21, -59,0252 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18809,9, 2190,39, -60,1828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -18986,8, 2014,05, -135,861 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -19206,6, 1983,36, -110,516 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -19278,6, 1861,33, -111,037 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -19123,5, 2021,03, 18,4326 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -18883,9, 2220,76, 19 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -18528, 1709,57, -110,651 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -18586,5, 1929,8, -110,117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18883,1, 1142,5, 4,85368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19118,2, 1142,5, 6,36984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19205,5, 1044,12, 6,59046 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19205,5, 861,448, 6,57288 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19103,4, 709,899, 6,79024 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18817, 611,713, 6,28608 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18685,1, 503,253, 6,46426 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18755,2, 2488,95, -23,1875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18616,8, 2627,33, -23,5142 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18590,2, 2954,62, -22,9736 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18456,8, 3088,54, -22,519 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18127,7, 3115,15, -23,8596 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17990,7, 3253,95, -22,2686 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16930,7, 3061,88, 6,85486 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16770,5, 3128,49, 6,77435 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16644,5, 3285,5, 6,43802 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16643,5, 3610,15, 7,80851 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16565,9, 3702,26, 6,1482 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16361,6, 3702,37, 6,44853 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16214,7, 3603,04, 7,2351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16118,6, 3318,27, 6,87422 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17690,1, 3308,49, -61,21 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17527,2, 3726,89, -60,1496 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17323,1, 3819,52, -68,7982 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17513, 3489,78, -134,842 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17186,8, 3821,95, -157,874 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -16647, 3619,2, -157,85 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15513,8, 2867,51, -56,7778 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15650,7, 2869,7, -55,8548 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15778,4, 2867,69, -55,9985 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15821,7, 2769,45, -55,8483 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15875,1, 2654,94, -56,0558 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15947,9, 2554, -55,821 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -16043,3, 2466,53, -56,055 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15484,6, 2840,4, -55,8791 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -16025,4, 2234,5, -40,1548 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15725,7, 2234,76, -39,4667 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -15553,6, 2649,15, -40,1164 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18091,8, 784,759, 5,92132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17114,4, 2869,88, -62,0578 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -16942,4, 2837,63, 5,42827 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17433,3, 3083,36, -110,897 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17212,4, 3024,81, -110,851 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15783,2, 2417,59, -104,645 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17201,9, 2952,87, -41,0503 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_club_ring_smk" ); + ent.v[ "origin" ] = ( -16617,9, 1115,89, 296 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18121,5, -256,709, -91,4095 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17808,4, -256,952, -92,8995 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17641, -25,4045, -35,4541 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17641,9, 141,276, -35,4757 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17585,9, 2186,94, 7,467 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17599,2, 2088,22, 5,46751 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -17692,5, 2086,3, 5,442 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare03" ); + ent.v[ "origin" ] = ( -17942,9, 2165,33, 14,1474 ); + ent.v[ "angles" ] = ( 270, 0, -44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare03" ); + ent.v[ "origin" ] = ( -17670, 2436,79, 14,8706 ); + ent.v[ "angles" ] = ( 270, 0, -44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -18101,7, 398,803, -61,7354 ); + ent.v[ "angles" ] = ( 270, 3,57633, 118,424 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -18348,7, 290,444, -61,8678 ); + ent.v[ "angles" ] = ( 271, 175, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -17803,2, 604,815, -61,3059 ); + ent.v[ "angles" ] = ( 271, 175, -84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -18362,3, 275,207, -61,8617 ); + ent.v[ "angles" ] = ( 271, 175, 5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -18362,3, 7,89001, -61,8155 ); + ent.v[ "angles" ] = ( 271, 175, 5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -18344,4, -10,2493, -61,4767 ); + ent.v[ "angles" ] = ( 271, 175, 98 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare04" ); + ent.v[ "origin" ] = ( -18199, -10,233, -60,4744 ); + ent.v[ "angles" ] = ( 271, 175, 98 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19258, 1806,65, -76,0612 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19331,7, 1678,53, -76,2787 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15758,2, 2478,69, -104,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15690,3, 2547,99, -104,642 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15741,1, 2505,77, -104,644 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 40 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15671,1, 2536,86, -104,638 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15696, 2475,76, -104,64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15714,5, 2450,5, -104,646 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_fire" ); + ent.v[ "origin" ] = ( -15765,2, 2408,27, -104,648 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 40 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16979,6, 3837,11, -192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16833,1, 3849,84, -192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16671, 3860,11, -192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16524,5, 3870,21, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16373, 3881,74, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16215,6, 3886,85, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16067,6, 3888,5, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15921,3, 3890,71, -192 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15785,7, 3494,92, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15682,1, 3494,8, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15577,6, 3495,38, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15474,9, 3495,77, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15330,3, 3495,16, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15225,9, 3494,86, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -14998, 3450,57, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -14918,8, 3374,3, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -14867,1, 3272,31, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -14867,3, 2905,73, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -14918, 2803,93, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -14998,2, 2728,26, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15943,1, 3543,59, -191,007 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16088, 3546,58, -191,013 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16233,2, 2732,54, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16333,1, 2762,77, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16433, 2792,22, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16532,1, 2822,37, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16631,6, 2851,58, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18692,6, -224,822, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19398,7, 490,279, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19394,3, 633,836, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19384,9, 945,683, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19372,3, 1091,78, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19351,2, 1405,56, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19339,3, 1551,15, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19178,5, 1374,07, -189,292 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19027,2, 1419,26, -190,248 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18848,1, 1404,12, -191,938 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18940,5, 1495,18, -189,407 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19233,1, 1585,31, -191,2 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19080, 1707,21, -190,564 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19104,4, 1853,98, -189,149 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18956,7, 1912,3, -176,854 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18879,1, 2049,5, -161,058 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18733,3, 2099,4, -148,18 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18804,7, 1919,73, -167,606 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18770,9, 1797,74, -178,863 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18674,7, 1723,43, -187,592 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18567,7, 1633,69, -192,182 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18678,1, 1596,16, -191,125 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18381,1, 605,766, -75,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18196,9, 688,089, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18173,4, 789,474, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18252,4, 888,003, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18329,6, 1130,58, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18328,7, 1259,24, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18329,2, 1369,39, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17695,3, 1789,71, 73,2575 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17695,5, 1911,71, 73,2585 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17697,4, 2018,45, 73,2498 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17525,4, 2189,46, 73,2493 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17403,8, 2190,28, 73,2591 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17297,8, 2191,66, 73,254 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16470, 3430,39, -82,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16531,9, 3430,77, -82,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16594,2, 3431,09, -82,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16345,3, 2816,02, -80,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16411,4, 2834,39, -80,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16514,4, 2863,42, -80,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16578, 2884,56, -80,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16860, 2818,45, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16715,5, 2818,2, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16560,5, 2818,03, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16381,2, 2745,94, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16308,8, 2653,26, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16181,3, 2699,06, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16105,7, 2885,53, -72,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17431,8, 1865,1, 32 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17398,1, 1832,64, 32 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17337,1, 1893,98, 32 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17370, 1928,38, 32 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17176,6, 1848,56, 110 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17302,5, 1798,91, 110 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17353, 1673,46, 112 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17302,7, 1549,67, 111 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17178,7, 1497,54, 111 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17053,7, 1551,36, 110 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16997,8, 1678,95, 110 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17053,2, 1798,37, 111 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17911,5, 2248,04, 16,4376 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17877,2, 2281,76, 16,4387 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17844,2, 2315,4, 16,4343 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17809,2, 2350,37, 16,4386 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17775,4, 2385,19, 16,4386 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17741,1, 2418,92, 16,4406 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18173,8, 2592,38, -2 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18135,3, 2630,18, -2 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18096,6, 2668, -2 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17910,4, 2627,62, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17834,1, 2703,35, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17757,9, 2780,26, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17682,3, 2857,09, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18131,8, 2433,14, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18312, 842,426, -80,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18332, 911,121, -80,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18197,1, 1960,08, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18175,7, 1991,31, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18157,3, 2022,63, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18131,3, 2048,88, 45,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18106,4, 2073,47, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18080,5, 2099,79, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18055,1, 2125,06, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18023,9, 2145,04, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17992,4, 2164,96, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17666,4, 2490,59, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17646,5, 2521,89, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17626,6, 2553,5, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17601,1, 2578,74, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17575,9, 2604,1, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17550,4, 2629,21, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17524,4, 2655,89, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17493,4, 2675,55, 46,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17462,2, 2694,79, 47,875 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16321,8, 954,617, 39,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16458,3, 816,316, 39,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16319,8, 677,462, 40,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16182,4, 815,312, 39,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_cool" ); + ent.v[ "origin" ] = ( -17272,3, 855,064, 31 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_cool" ); + ent.v[ "origin" ] = ( -17201,4, 815,615, 31 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_cool" ); + ent.v[ "origin" ] = ( -17130,4, 798,371, 31 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_cool" ); + ent.v[ "origin" ] = ( -17066,7, 802,249, 30 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_cool" ); + ent.v[ "origin" ] = ( -16993,5, 833,443, 30 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16356,4, 1766,76, 31 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16322,1, 1705,53, 31 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16304,5, 1635,05, 30 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16307,5, 1558,84, 30 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16337,4, 1489,52, 30 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16186,6, 1875,69, 39,2978 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -16063,2, 1823,98, 38,295 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15956,6, 1810,64, 37,3021 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15855,5, 1852,9, 38,304 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15775,7, 1929,53, 37,2979 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15867,5, 2072,97, 37,3007 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15999,5, 1940,69, 38,298 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15930,9, 2010,16, 38,2959 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15493,8, 2512,82, 31,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15493,9, 2450,18, 31,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15511,5, 2391,6, 31,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15537,1, 2331,58, 31,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15579,2, 2284,38, 30,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15633,7, 2241,27, 31,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_warm" ); + ent.v[ "origin" ] = ( -15689,6, 2209,53, 31,875 ); + ent.v[ "angles" ] = ( 88,5859, 314,991, 135,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -18154,9, 2467,98, 8,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17972,9, 2650,11, 8,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15718,2, 3570,62, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15717,8, 3698,52, -38,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15718,3, 3826,68, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15591,9, 3570,6, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15461,4, 3569,99, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15590,1, 3698,49, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15589,3, 3826,24, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15461,4, 3826,43, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15461,6, 3698,44, -39,125 ); + ent.v[ "angles" ] = ( 89, 0, -179,992 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -15625,2, 2040,68, -95 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -15311,7, 2580,88, -108 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -17726, -174,557, -117,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -17524,4, 208,04, -84,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flood_light" ); + ent.v[ "origin" ] = ( -19360,7, -88,6989, -98,9068 ); + ent.v[ "angles" ] = ( 37,6805, 45,4659, -92,9504 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flood_light" ); + ent.v[ "origin" ] = ( -19345,3, -101,805, -100,665 ); + ent.v[ "angles" ] = ( 33,7943, 34,7068, 68,3069 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flood_light" ); + ent.v[ "origin" ] = ( -19340,6, -96,5053, -77,6845 ); + ent.v[ "angles" ] = ( 16,7776, 48,6563, -79,8364 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -18103,3, -173,657, -17,3201 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17943,4, -173,271, -15,3252 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17697,5, -174,193, -17,3258 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17553,7, -97,1301, -17,3229 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17549,9, -16,4068, -17,3227 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17551, 144,281, -17,3241 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -17861,8, -173,744, -17,3317 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16436,6, 1321,9, 248,251 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16551,1, 1376,36, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16676, 1341,99, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16768,1, 1275,34, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16834,4, 1183,19, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16868,2, 1058,45, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16821,4, 923,479, 248,252 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16692,2, 884,987, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16567,4, 917,162, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16475,5, 984,51, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16409,6, 1076,31, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16376, 1200,89, 249 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16206,1, 1031,8, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16272,9, 996,463, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16349,6, 947,451, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16413, 897,28, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16461, 832,284, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16499,4, 770,442, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16535,3, 703,829, 199 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -19307,3, -52,3023, -140,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_laser_blue_static" ); + ent.v[ "origin" ] = ( -17133,4, 983,978, 36,7995 ); + ent.v[ "angles" ] = ( 36,1065, 291,347, -7,10015 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18116,8, 2879,16, -1,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18090,7, 2905,58, -1,53871 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18064,9, 2930,82, -1,7265 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17955,7, 3039,98, -0,87473 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17982,2, 3015,41, -0,68694 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18006,9, 2989,02, -0,27324 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18065,8, 2930,99, -40,3684 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18090,4, 2905,28, -40,1806 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18115,5, 2879,17, -40,7669 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18008,7, 2989,56, -39,1838 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17981,8, 3015,13, -39,5975 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17956,7, 3041,06, -38,7853 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18116,9, 2879,97, -78,3747 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18091,1, 2905,72, -78,7885 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18064,8, 2931,38, -78,9762 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18008,5, 2990,13, -78,412 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17981,6, 3015,7, -78,8257 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17956,5, 3041,63, -78,0135 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18004, 2390,3, 14,875 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18025,5, 2411,16, 14,875 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17893,5, 2501,39, 14,875 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -17914,2, 2522, 14,875 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18028,3, 2318,98, -17,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18051,6, 2295,42, -17,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18077,1, 2269,84, -17,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18211,3, 2135,38, -17,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18234,5, 2112,4, -17,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18260,2, 2086,56, -17,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16450,9, 3347,7, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16451,4, 3288,39, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16592,9, 3217,93, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16529,7, 3217,22, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16417,3, 3176,47, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16352,8, 3176,63, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16290,4, 3176,92, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16228,5, 3176,94, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16162,6, 3176,67, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16465,8, 3103,25, -75,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16465,8, 3039,48, -75,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16417,6, 2968,56, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16353,9, 2968,77, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16225,7, 2968,13, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16161,9, 2968,67, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16118,2, 3039,32, -75,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16118,7, 3103,6, -75,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16290,1, 2968,49, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16226,6, 2826,92, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16289,6, 2844,91, -76,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16353,6, 2862,24, -75,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16417,4, 2882,58, -75,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -19003,7, 2415,18, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18964,6, 2497,52, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18802, 2659,61, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18763,7, 2915,78, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18720, 3050,94, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18412, 3262, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18150,8, 3314,24, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17980,7, 3482,97, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17918,5, 3500,77, -144 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18997,6, -275,912, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18998,4, -171,879, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18998,5, -379,943, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18953,3, -505,236, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18877,3, -584,013, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18775,7, -636,315, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18666, -659,119, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18517,3, -660,453, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18408,9, -636,482, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18306,2, -585,026, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18229,7, -505,354, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18190,1, -343,978, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18607, -219,183, -157 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18653, -217,389, -157 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18672,3, -151,646, -158 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16860, 638,489, 198,253 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16938,5, 718,482, 198,255 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -17018, 796,892, 198,259 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_laser_roller" ); + ent.v[ "origin" ] = ( -16825,1, 1322,15, 197 ); + ent.v[ "angles" ] = ( 54,952, 308,876, -4,48132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_laser_disco" ); + ent.v[ "origin" ] = ( -16228,6, 1318,6, 190,705 ); + ent.v[ "angles" ] = ( 15,3541, 194,789, -1,1569 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_laser_disco" ); + ent.v[ "origin" ] = ( -16825,1, 715,555, 192,716 ); + ent.v[ "angles" ] = ( 17,2967, 70,4187, -0,791652 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -14562,1, 3170,65, -156,083 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -14561,8, 3007,41, -156,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -14736,8, 3007,53, -156,065 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare" ); + ent.v[ "origin" ] = ( -14737,3, 3171,15, -156,053 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18295,2, -752,789, -192 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16144, 1353,09, 198,254 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16224,3, 1431,04, 198,252 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare02" ); + ent.v[ "origin" ] = ( -16304,1, 1510,57, 198,256 ); + ent.v[ "angles" ] = ( 90, 2,69214, -177,308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16913,5, 3062,13, -193 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16911,8, 2956,81, -193 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18787,6, 581,452, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18787,8, 604,217, -97,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788,2, 628,634, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788,6, 644,919, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788,4, 668,32, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788, 692,106, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788,3, 708,776, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788,5, 732,598, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18788,4, 756,3, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_mp_firefly" ); + ent.v[ "origin" ] = ( -19037,9, 1394,8, -195 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_nightclub_moon" ); + ent.v[ "origin" ] = ( 200148, 316107, 208956 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17806, 1142,62, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17789,5, 1080,04, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17775,8, 1018,76, -190 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -17762,5, 954,757, -190 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18354,8, 1436,93, 6,34749 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18142, 926,503, 5,18384 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -19123,3, 2255,54, -48,9937 ); + ent.v[ "angles" ] = ( 273,605, 236,287, 123,659 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17815, 3565,73, -60,9021 ); + ent.v[ "angles" ] = ( 273,605, 236,287, 123,659 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -17666,8, 3714,34, -60,5045 ); + ent.v[ "angles" ] = ( 273,605, 236,287, 123,659 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare02" ); + ent.v[ "origin" ] = ( -18512,9, 1699,86, -70,6367 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -16094,7, 3697,1, -191,217 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -15938,8, 3696,11, -191,364 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_mist_sm" ); + ent.v[ "origin" ] = ( -16673,3, 1321,25, -52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 215 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -18248,1, 2149,78, -14,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_cyl_glare05" ); + ent.v[ "origin" ] = ( -18114,1, 2288,51, -13,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -16095,4, 3050,53, -132,751 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 172 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -15386,6, 3708,2, -119,051 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -19210,6, 274,906, -136,981 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -16588, 3356,79, -146,875 ); + ent.v[ "angles" ] = ( 0, 336, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -17740,5, 179,522, -7,65209 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -17765,7, 143,731, -8,43552 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -17795,8, 108,716, -7,52192 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -17835,1, 75,7021, -8,1626 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -17878,4, 51,7002, -7,48641 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_sph_glare01" ); + ent.v[ "origin" ] = ( -17921,9, 37,6316, -8,00315 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18693,6, -28,1875, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18503,2, -232,295, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18499,8, -35,2069, -190 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18535,4, -99,5975, -157 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( -18565,4, -57,538, -156 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -19049,8, 441,558, -190 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -19049,8, 581,598, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -19200,4, 578,639, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -19200,8, 441,334, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18748,3, 320,281, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18747,5, 259,329, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18659,2, 257,714, -190 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18659,1, 318,068, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18181,1, 1210,52, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18003,8, 1211,65, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18004,1, 1342,17, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18181, 1338,88, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16843, 2678,97, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16717,1, 2678,78, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16717,4, 2500,21, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -16844,5, 2500,12, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15830,1, 3162,02, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15829,7, 3237,58, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15750,2, 3237,06, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15749,7, 3162,65, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15471,7, 3189,43, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15472,5, 3000,2, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15274, 3000,3, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -15274,5, 3190,49, -191 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18349,1, 666,265, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18369,9, 654,226, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18389,8, 641,23, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18410,3, 628,778, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18430, 615,24, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18450,4, 602,715, -95,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18471,7, 589,625, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18491,4, 576,86, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare_sm" ); + ent.v[ "origin" ] = ( -18512, 564,174, -96,125 ); + ent.v[ "angles" ] = ( 90, 188,803, 8,80348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; +} diff --git a/mp_nightclub/maps/mp/mp_nightclub.gsc b/mp_nightclub/maps/mp/mp_nightclub.gsc new file mode 100644 index 0000000..c879196 --- /dev/null +++ b/mp_nightclub/maps/mp/mp_nightclub.gsc @@ -0,0 +1,27 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_nightclub_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_nightclub_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_nightclub" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2200", reset_dvars ); +} diff --git a/mp_nightclub/maps/mp/mp_nightclub_amb.gsc b/mp_nightclub/maps/mp/mp_nightclub_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_nightclub/maps/mp/mp_nightclub_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_nightclub/maps/mp/mp_nightclub_fx.gsc b/mp_nightclub/maps/mp/mp_nightclub_fx.gsc new file mode 100644 index 0000000..3752d3e --- /dev/null +++ b/mp_nightclub/maps/mp/mp_nightclub_fx.gsc @@ -0,0 +1,73 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_util_fx() +{ +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_light_laser_blue_fxanim" ] = loadfx( "maps/mp_maps/fx_mp_light_laser_bluee_fxanim" ); + level._effect[ "fx_mp_nightclub_tank_bubbles" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_tank_bubbles" ); + level._effect[ "fx_mp_nightclub_fire" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_fire" ); + level._effect[ "fx_insects_mp_firefly" ] = loadfx( "bio/insects/fx_insects_mp_firefly" ); + level._effect[ "fx_mp_nightclub_laser_roller" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_laser_roller" ); + level._effect[ "fx_mp_nightclub_laser_disco" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_laser_disco" ); + level._effect[ "fx_mp_light_laser_blue_static" ] = loadfx( "maps/mp_maps/fx_mp_light_laser_blue_static" ); + level._effect[ "fx_mp_nightclub_vista_spotlight01" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_vista_spotlight01" ); + level._effect[ "fx_mp_nightclub_vista_spotlight02" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_vista_spotlight02" ); + level._effect[ "fx_mp_nightclub_red_flash" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_red_flash" ); + level._effect[ "fx_nightclub_bar_light" ] = loadfx( "light/fx_nightclub_bar_light" ); + level._effect[ "fx_village_tube_light" ] = loadfx( "light/fx_village_tube_light" ); + level._effect[ "fx_mp_nightclub_cyl_glare" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_cyl_glare" ); + level._effect[ "fx_mp_nightclub_cyl_glare02" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_cyl_glare02" ); + level._effect[ "fx_mp_nightclub_cyl_glare03" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_cyl_glare03" ); + level._effect[ "fx_mp_nightclub_cyl_glare04" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_cyl_glare04" ); + level._effect[ "fx_mp_nightclub_cyl_glare05" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_cyl_glare05" ); + level._effect[ "fx_mp_nightclub_flr_glare" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flr_glare" ); + level._effect[ "fx_mp_nightclub_flr_glare_cool" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flr_glare_cool" ); + level._effect[ "fx_mp_nightclub_flr_glare_warm" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flr_glare_warm" ); + level._effect[ "fx_mp_nightclub_flr_glare_sm" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flr_glare_sm" ); + level._effect[ "fx_mp_nightclub_flr_glare02" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flr_glare02" ); + level._effect[ "fx_mp_nightclub_sph_glare01" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_sph_glare01" ); + level._effect[ "fx_mp_nightclub_flood_light" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flood_light" ); + level._effect[ "fx_mp_nightclub_fireworks_runner" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_fireworks_runner" ); + level._effect[ "fx_mp_nightclub_fireworks_runner_02" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_fireworks_runner_02" ); + level._effect[ "fx_mp_nightclub_mist" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_mist" ); + level._effect[ "fx_mp_nightclub_mist_sm" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_mist_sm" ); + level._effect[ "fx_mp_nightclub_vista_fog" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_vista_fog" ); + level._effect[ "fx_mp_nightclub_area_fog" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_area_fog" ); + level._effect[ "fx_mp_nightclub_club_ring_smk" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_club_ring_smk" ); + level._effect[ "fx_lf_mp_nightclub_sun1" ] = loadfx( "lens_flares/fx_lf_mp_nightclub_sun1" ); + level._effect[ "fx_lf_mp_nightclub_moon" ] = loadfx( "lens_flares/fx_lf_mp_nightclub_moon" ); + level._effect[ "fx_mp_nightclub_spotlight" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_spotlight" ); + level._effect[ "fx_mp_light_laser_blue_fxanim" ] = loadfx( "maps/mp_maps/fx_mp_light_laser_blue_fxanim" ); +} + +main() +{ + precache_fxanim_props(); + precache_util_fx(); + precache_createfx_fx(); + precache_scripted_fx(); + maps/mp/createfx/mp_nightclub_fx::main(); + maps/mp/createart/mp_nightclub_art::main(); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "shopping_lights_short" ] = %fxanim_gp_shopping_lights_short_anim; + level.scr_anim[ "fxanim_props" ][ "shopping_lights_long" ] = %fxanim_gp_shopping_lights_long_anim; + level.scr_anim[ "fxanim_props" ][ "skylight" ] = %fxanim_gp_skylight_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "roofvent" ] = %fxanim_gp_roofvent_anim; + level.scr_anim[ "fxanim_props" ][ "solar_system" ] = %fxanim_karma_solar_system_anim; +} diff --git a/mp_nuketown_2020/aitype/enemy_dog_mp.gsc b/mp_nuketown_2020/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_nuketown_2020/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_nuketown_2020/character/character_mp_german_shepherd.gsc b/mp_nuketown_2020/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_nuketown_2020/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_nuketown_2020/maps/mp/_events.gsc b/mp_nuketown_2020/maps/mp/_events.gsc new file mode 100644 index 0000000..9f7ac09 --- /dev/null +++ b/mp_nuketown_2020/maps/mp/_events.gsc @@ -0,0 +1,114 @@ +#include maps/mp/gametypes/_globallogic_utils; +#include maps/mp/_utility; + +add_timed_event( seconds, notify_string, client_notify_string ) +{ +/# + assert( seconds >= 0 ); +#/ + if ( level.timelimit > 0 ) + { + level thread timed_event_monitor( seconds, notify_string, client_notify_string ); + } +} + +timed_event_monitor( seconds, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + if ( !isDefined( level.starttime ) ) + { + continue; + } + else + { + millisecs_remaining = maps/mp/gametypes/_globallogic_utils::gettimeremaining(); + seconds_remaining = millisecs_remaining / 1000; + if ( seconds_remaining <= seconds ) + { + event_notify( notify_string, client_notify_string ); + return; + } + } + } +} + +add_score_event( score, notify_string, client_notify_string ) +{ +/# + assert( score >= 0 ); +#/ + if ( level.scorelimit > 0 ) + { + if ( level.teambased ) + { + level thread score_team_event_monitor( score, notify_string, client_notify_string ); + return; + } + else + { + level thread score_event_monitor( score, notify_string, client_notify_string ); + } + } +} + +any_team_reach_score( score ) +{ + _a63 = level.teams; + _k63 = getFirstArrayKey( _a63 ); + while ( isDefined( _k63 ) ) + { + team = _a63[ _k63 ]; + if ( game[ "teamScores" ][ team ] >= score ) + { + return 1; + } + _k63 = getNextArrayKey( _a63, _k63 ); + } + return 0; +} + +score_team_event_monitor( score, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + if ( any_team_reach_score( score ) ) + { + event_notify( notify_string, client_notify_string ); + return; + } + } +} + +score_event_monitor( score, notify_string, client_notify_string ) +{ + for ( ;; ) + { + wait 0,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].score ) && players[ i ].score >= score ) + { + event_notify( notify_string, client_notify_string ); + return; + } + i++; + } + } +} + +event_notify( notify_string, client_notify_string ) +{ + if ( isDefined( notify_string ) ) + { + level notify( notify_string ); + } + if ( isDefined( client_notify_string ) ) + { + clientnotify( client_notify_string ); + } +} diff --git a/mp_nuketown_2020/maps/mp/createart/mp_nuketown_2020_art.gsc b/mp_nuketown_2020/maps/mp/createart/mp_nuketown_2020_art.gsc new file mode 100644 index 0000000..c6e19b0 --- /dev/null +++ b/mp_nuketown_2020/maps/mp/createart/mp_nuketown_2020_art.gsc @@ -0,0 +1,6 @@ + +main() +{ + level.tweakfile = 1; + visionsetnaked( "mp_nuketown_2020", 1 ); +} diff --git a/mp_nuketown_2020/maps/mp/createfx/mp_nuketown_2020_fx.gsc b/mp_nuketown_2020/maps/mp/createfx/mp_nuketown_2020_fx.gsc new file mode 100644 index 0000000..655fe48 --- /dev/null +++ b/mp_nuketown_2020/maps/mp/createfx/mp_nuketown_2020_fx.gsc @@ -0,0 +1,708 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( 493,501, 688,64, -56,4796 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( 553,122, 717,293, -55,6752 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2060,08, 418,913, -22,7122 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2055,91, 417,203, -36,6966 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2064,28, 419,257, -7,556 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2046,87, 466,933, -7,1742 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2043,38, 463,457, -22,9327 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2039,36, 461,972, -36,5077 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2110,04, 265,92, -36,9367 ); + ent.v[ "angles" ] = ( 303,047, 341,706, 85,7265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2114,09, 267,185, -22,5504 ); + ent.v[ "angles" ] = ( 303,047, 341,706, 85,7265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2118,41, 268,561, -7,0307 ); + ent.v[ "angles" ] = ( 303,047, 341,706, 85,7265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2102,2, 316,877, -7,9691 ); + ent.v[ "angles" ] = ( 298,064, 342,497, 85,0622 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2097,43, 314,416, -22,1389 ); + ent.v[ "angles" ] = ( 303,047, 341,706, 85,7265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2093,61, 311,726, -36,8962 ); + ent.v[ "angles" ] = ( 303,047, 341,706, 85,7265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2003,36, 563,173, -36,3606 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2007,67, 564,257, -22,3762 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -2012,94, 564,872, -7,22 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -1994,78, 612,118, -7,8383 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -1990,43, 610,573, -22,5967 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_plant_sprinkler" ); + ent.v[ "origin" ] = ( -1986,23, 608,854, -36,1717 ); + ent.v[ "angles" ] = ( 296,723, 343,848, 85,683 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_vent_steam" ); + ent.v[ "origin" ] = ( -590,984, 651,252, 45,8036 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_vent_steam" ); + ent.v[ "origin" ] = ( -517,369, 623,43, 43,1913 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_vent_steam" ); + ent.v[ "origin" ] = ( 1222,24, 999,817, 0,444401 ); + ent.v[ "angles" ] = ( 277,858, 101,672, -82,4167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_heat_distort" ); + ent.v[ "origin" ] = ( 1371,28, 534,62, -15,125 ); + ent.v[ "angles" ] = ( 270, 339,444, -144,444 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_nuketown_sun1" ); + ent.v[ "origin" ] = ( -86418,6, -82436, 90428 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_stove_heat" ); + ent.v[ "origin" ] = ( -861,853, 707,552, -17 ); + ent.v[ "angles" ] = ( 270, 0, 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createexploder( "fx_mp_nuked_final_explosion" ); + ent.v[ "origin" ] = ( 82,2885, -5689,28, -65,1652 ); + ent.v[ "angles" ] = ( 270, 359,801, -178,8 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -971,468, 370,708, 19 ); + ent.v[ "angles" ] = ( 25,0018, 163,301, -45,745 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 583,21, 149,644, 8,125 ); + ent.v[ "angles" ] = ( 20,9339, 247,089, 7,30503 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 544,954, 117,983, 151 ); + ent.v[ "angles" ] = ( 20,2711, 277,544, 58,6272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -1008,95, 146,692, 19,046 ); + ent.v[ "angles" ] = ( 42,2934, 281,468, 51,7248 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_heat_distort" ); + ent.v[ "origin" ] = ( 1330,31, 524,15, -14,875 ); + ent.v[ "angles" ] = ( 270, 0, -165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_fireplace" ); + ent.v[ "origin" ] = ( 687,918, 361,078, -32,0234 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1100,37, 342,591, 16,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1085,27, 398,116, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1070,8, 452,269, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -893,265, 723,423, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -867,006, 714,345, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -840,568, 704,946, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -993,165, 598,335, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -1002,93, 571,719, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -1034,54, 495,038, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -1044,24, 468,817, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1143,85, 133,487, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1114,64, 125,655, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1085,88, 117,938, 17,375 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1042,07, 110,181, 204 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 601,908, 25,4699, 198,34 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 567,591, 78,5851, 198,327 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 548,501, 135,171, 198,349 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 534,676, 198,12, 198,316 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 532,397, 263,242, 198,359 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 1004,62, 578,178, 80,1036 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 943,24, 561,665, 80,1011 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 881,669, 544,379, 80,1048 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 820,117, 528,243, 80,1071 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 909,679, 684,87, 80,0904 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 971,676, 701,663, 80,0924 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 847,847, 668,169, 80,0885 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 786,641, 651,667, 80,0919 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 724,747, 634,881, 80,0951 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -792,537, 581,067, 45,1466 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -792,537, 581,067, 45,1466 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createexploder( "fx_mp_nuked_final_dust" ); + ent.v[ "origin" ] = ( 28,8272, -5318,94, -61,8423 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 89 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_bubbles_runner" ); + ent.v[ "origin" ] = ( -1035,36, 481,202, -19,9983 ); + ent.v[ "angles" ] = ( 288,8, 340,536, -89,9554 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( 1095,53, 349,102, -9,36477 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( 870,083, 331,253, 24,0551 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( 1073,29, 132,668, 5,88701 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( 1086,05, 423,008, 2,59207 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( 1144,04, 159,474, -15,1653 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( 924,595, 370,527, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( -914,925, 709,626, 5,64814 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( -808,226, 676,734, 23,3482 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( -800,818, 568,511, 41,1779 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( -1027,81, 504,999, -4,67077 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( -979,122, 607,775, 16,9038 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sparkles_runner" ); + ent.v[ "origin" ] = ( -1026,99, 420,6, 21,5222 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 606,258, 81,2441, 5,12501 ); + ent.v[ "angles" ] = ( 349,318, 112,235, -8,16458 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -1603,17, 570,872, 14,0831 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 315 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -1612,36, 580,681, -1,52756 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 336 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -1154,5, -134,539, 19,5187 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -1205,61, -132,548, 21,3148 ); + ent.v[ "angles" ] = ( 341,108, 10,061, -6,342 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -802,663, -256,017, 19,4146 ); + ent.v[ "angles" ] = ( 0,362506, 317,022, -4,10696 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( 856,838, -192,904, 20,5036 ); + ent.v[ "angles" ] = ( 1, 307, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( 1460,39, -30,5036, 16,1233 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( 1618,55, 602,118, -5,43916 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( 1619,13, 606,212, -23,7476 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -507,503, 934,97, -4,4827 ); + ent.v[ "angles" ] = ( 0,998782, 229, -4,05234 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( -1719,1, 119,659, 21,9169 ); + ent.v[ "angles" ] = ( 1, 332, -7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_bubbles_runner" ); + ent.v[ "origin" ] = ( 1101,89, 324,85, -17,8269 ); + ent.v[ "angles" ] = ( 293,762, 199,738, -89,7583 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_nuke_stove_heat" ); + ent.v[ "origin" ] = ( 1108, 128,733, -17 ); + ent.v[ "angles" ] = ( 270, 0, 14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sound_rings" ); + ent.v[ "origin" ] = ( -941,838, 72,1988, 49,7176 ); + ent.v[ "angles" ] = ( 39,5764, 67,876, 0,16167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sound_rings" ); + ent.v[ "origin" ] = ( -854,511, 42,9079, 47,8699 ); + ent.v[ "angles" ] = ( 39,5764, 67,876, 0,16167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sound_rings" ); + ent.v[ "origin" ] = ( -912,717, 151,319, 48,7044 ); + ent.v[ "angles" ] = ( 39,215, 246,81, -1,0278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sound_rings" ); + ent.v[ "origin" ] = ( -824,893, 120,459, 50,4256 ); + ent.v[ "angles" ] = ( 39,215, 246,81, -1,0278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -391,12, -240,192, -4,1877 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( 402,799, -352,161, 4,56145 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( 1052,9, -138,837, 37,0968 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( 1518,77, 61,6228, 29,8273 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( 1681,75, 857,584, 18,1054 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( 657,07, 918,281, -8,7821 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -497,042, 932,756, -12,3271 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -2044,86, 144,7, 34,5532 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -1106,94, -157,424, 46,9122 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -2079,79, 462,182, 61,9822 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( 465,128, 706,506, -46,2148 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -1712,21, 35,5331, 34,0838 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_rainbow_sm" ); + ent.v[ "origin" ] = ( -776,992, 587,551, 125,249 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( 439,767, -833,327, 29,1982 ); + ent.v[ "angles" ] = ( 7,06192, 36,9899, -0,88057 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 501,213, 230,902, 69,95 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 513,865, 184,074, 69,9421 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 525,611, 138,217, 69,9473 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 538,156, 90,2157, 69,9334 ); + ent.v[ "angles" ] = ( 90, 20,9967, 5,9967 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 550,482, 45,262, 69,9277 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 938,833, 141,365, 204 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -610,851, 435,785, 57,7037 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( -611,227, 435,372, 57,8882 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 835,134, 162,725, 27,7533 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 820,419, 157,038, 19,499 ); + ent.v[ "angles" ] = ( 90, 0, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_softer" ); + ent.v[ "origin" ] = ( 804,838, 155,672, 27,0415 ); + ent.v[ "angles" ] = ( 89, 15, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sandbox" ); + ent.v[ "origin" ] = ( 1422,01, 901,524, -57,7152 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 28 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_sandbox" ); + ent.v[ "origin" ] = ( 1399,76, 1014,83, -57,0013 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 37 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_butterfly" ); + ent.v[ "origin" ] = ( 479,252, -820,36, 0,715872 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createexploder( "fx_mp_nuked_display_glass_break" ); + ent.v[ "origin" ] = ( 32,133, -421,767, -34,7027 ); + ent.v[ "angles" ] = ( 341,003, 92,0149, -0,109475 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_white" ); + ent.v[ "origin" ] = ( -339,721, -577,902, 7,75219 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( -600,707, -174,85, 15,4798 ); + ent.v[ "angles" ] = ( 54,783, 165,264, 5,21839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( -619,212, -220,045, 14,9067 ); + ent.v[ "angles" ] = ( 54,783, 165,264, 5,21839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( -636,35, -264,746, 15,7747 ); + ent.v[ "angles" ] = ( 54,783, 165,264, 5,21839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( -504,167, -212,012, 16,725 ); + ent.v[ "angles" ] = ( 56,1189, 337,177, -4,89594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( -518,997, -254,737, 16,8657 ); + ent.v[ "angles" ] = ( 56,1189, 337,177, -4,89594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( -535,222, -300,106, 17,2411 ); + ent.v[ "angles" ] = ( 56,1189, 337,177, -4,89594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( 493,406, -201,825, 13,125 ); + ent.v[ "angles" ] = ( 54,783, 165,264, 5,21839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( 505,301, -247,565, 12,8816 ); + ent.v[ "angles" ] = ( 54,783, 165,264, 5,21839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm" ); + ent.v[ "origin" ] = ( 517,989, -292,23, 13,3148 ); + ent.v[ "angles" ] = ( 54,783, 165,264, 5,21839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm_fast" ); + ent.v[ "origin" ] = ( 540,431, -189,633, 39,6473 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm_fast" ); + ent.v[ "origin" ] = ( 554,105, -235,759, 38,6344 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm_fast" ); + ent.v[ "origin" ] = ( 567,649, -281,173, 38,6313 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm_fast" ); + ent.v[ "origin" ] = ( -554,58, -193,108, 40,9604 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm_fast" ); + ent.v[ "origin" ] = ( -570,823, -237,107, 40,9644 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nuke_steam_sm_fast" ); + ent.v[ "origin" ] = ( -587,73, -280,752, 40,9542 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; +} diff --git a/mp_nuketown_2020/maps/mp/mp_nuketown_2020.gsc b/mp_nuketown_2020/maps/mp/mp_nuketown_2020.gsc new file mode 100644 index 0000000..7988994 --- /dev/null +++ b/mp_nuketown_2020/maps/mp/mp_nuketown_2020.gsc @@ -0,0 +1,418 @@ +#include maps/mp/killstreaks/_killstreaks; +#include maps/mp/gametypes/_globallogic_defaults; +#include maps/mp/_compass; +#include maps/mp/_events; +#include common_scripts/utility; +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_nuketown_2020_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_nuketown_2020_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_nuketown_2020" ); + level.onspawnintermission = ::nuked_intermission; + setdvar( "compassmaxrange", "2100" ); + precacheitem( "vcs_controller_mp" ); + precachemenu( "vcs" ); + precachemodel( "nt_sign_population" ); + precachemodel( "nt_sign_population_vcs" ); + precachestring( &"MPUI_USE_VCS_HINT" ); + level.const_fx_exploder_nuke = 1001; + level.headless_mannequin_count = 0; + level.destructible_callbacks[ "headless" ] = ::mannequin_headless; + level thread nuked_population_sign_think(); + level.disableoutrovisionset = 1; + destructible_car_anims = []; + destructible_car_anims[ "car1" ] = %fxanim_mp_nuked2025_car01_anim; + destructible_car_anims[ "car2" ] = %fxanim_mp_nuked2025_car02_anim; + destructible_car_anims[ "displayGlass" ] = %fxanim_mp_nuked2025_display_glass_anim; + level thread nuked_mannequin_init(); + level thread nuked_powerlevel_think(); + level thread nuked_bomb_drop_think(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "1600", reset_dvars ); + ss.dead_friend_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_radius", "1300", reset_dvars ); + ss.dead_friend_influencer_timeout_seconds = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_timeout_seconds", "8", reset_dvars ); + ss.dead_friend_influencer_count = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_count", "7", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); + ss.koth_objective_influencer_inner_radius = 1000; +} + +move_spawn_point( targetname, start_point, new_point ) +{ + spawn_points = getentarray( targetname, "classname" ); + i = 0; + while ( i < spawn_points.size ) + { + if ( distancesquared( spawn_points[ i ].origin, start_point ) < 1 ) + { + spawn_points[ i ].origin = new_point; + return; + } + i++; + } +} + +nuked_mannequin_init() +{ + destructibles = getentarray( "destructible", "targetname" ); + mannequins = nuked_mannequin_filter( destructibles ); + level.mannequin_count = mannequins.size; + if ( mannequins.size <= 0 ) + { + return; + } + camerastart = getstruct( "endgame_camera_start", "targetname" ); + level.endgamemannequin = getclosest( camerastart.origin, mannequins ); + remove_count = mannequins.size - 25; + remove_count = clamp( remove_count, 0, remove_count ); + mannequins = array_randomize( mannequins ); + i = 0; + while ( i < remove_count ) + { +/# + assert( isDefined( mannequins[ i ].target ) ); +#/ + if ( level.endgamemannequin == mannequins[ i ] ) + { + i++; + continue; + } + else + { + collision = getent( mannequins[ i ].target, "targetname" ); +/# + assert( isDefined( collision ) ); +#/ + collision delete(); + mannequins[ i ] delete(); + level.mannequin_count--; + + } + i++; + } + level waittill( "prematch_over" ); + level.mannequin_time = getTime(); +} + +nuked_mannequin_filter( destructibles ) +{ + mannequins = []; + i = 0; + while ( i < destructibles.size ) + { + destructible = destructibles[ i ]; + if ( issubstr( destructible.destructibledef, "male" ) ) + { + mannequins[ mannequins.size ] = destructible; + } + i++; + } + return mannequins; +} + +mannequin_headless( notifytype, attacker ) +{ + if ( getTime() < ( level.mannequin_time + ( getdvarintdefault( "vcs_timelimit", 120 ) * 1000 ) ) ) + { + level.headless_mannequin_count++; + if ( level.headless_mannequin_count == level.mannequin_count ) + { + level thread do_vcs(); + } + } +} + +nuked_intermission() +{ + maps/mp/gametypes/_globallogic_defaults::default_onspawnintermission(); + if ( waslastround() ) + { + level notify( "nuke_detonation" ); + level thread nuke_detonation(); + } +} + +nuke_detonation() +{ + level notify( "bomb_drop_pre" ); + clientnotify( "bomb_drop_pre" ); + bomb_loc = getent( "bomb_loc", "targetname" ); + bomb_loc playsound( "amb_end_nuke_2d" ); + destructibles = getentarray( "destructible", "targetname" ); + i = 0; + while ( i < destructibles.size ) + { + if ( getsubstr( destructibles[ i ].destructibledef, 0, 4 ) == "veh_" ) + { + destructibles[ i ] hide(); + } + i++; + } + displaysign = getent( "nuke_display_glass_server", "targetname" ); +/# + assert( isDefined( displaysign ) ); +#/ + displaysign hide(); + bombwaitpretime = getdvarfloatdefault( "scr_nuke_car_pre", 0,5 ); + wait bombwaitpretime; + exploder( level.const_fx_exploder_nuke ); + bomb_loc = getent( "bomb_loc", "targetname" ); + bomb_loc playsound( "amb_end_nuke" ); + level notify( "bomb_drop" ); + clientnotify( "bomb_drop" ); + bombwaittime = getdvarfloatdefault( "scr_nuke_car_flip", 3,25 ); + wait bombwaittime; + clientnotify( "nuke_car_flip" ); + location = level.endgamemannequin.origin + ( 0, -20, 50 ); + radiusdamage( location, 128, 128, 128 ); + physicsexplosionsphere( location, 128, 128, 1 ); + mannequinwaittime = getdvarfloatdefault( "scr_nuke_mannequin_flip", 0,25 ); + wait mannequinwaittime; + level.endgamemannequin rotateto( level.endgamemannequin.angles + vectorScale( ( 0, 1, 0 ), 90 ), 0,7 ); + level.endgamemannequin moveto( level.endgamemannequin.origin + vectorScale( ( 0, 1, 0 ), 90 ), 1 ); +} + +nuked_bomb_drop_think() +{ + camerastart = getstruct( "endgame_camera_start", "targetname" ); + cameraend = getstruct( camerastart.target, "targetname" ); + bomb_loc = getent( "bomb_loc", "targetname" ); + cam_move_time = set_dvar_float_if_unset( "scr_cam_move_time", "4.0" ); + bomb_explode_delay = set_dvar_float_if_unset( "scr_bomb_explode_delay", "2.75" ); + env_destroy_delay = set_dvar_float_if_unset( "scr_env_destroy_delay", "0.5" ); + for ( ;; ) + { + camera = spawn( "script_model", camerastart.origin ); + camera.angles = camerastart.angles; + camera setmodel( "tag_origin" ); + level waittill( "bomb_drop_pre" ); + level notify( "fxanim_dome_explode_start" ); + i = 0; + while ( i < get_players().size ) + { + player = get_players()[ i ]; + player camerasetposition( camera ); + player camerasetlookat(); + player cameraactivate( 1 ); + player setdepthoffield( 0, 128, 7000, 10000, 6, 1,8 ); + i++; + } + camera moveto( cameraend.origin, cam_move_time, 0, 0 ); + camera rotateto( cameraend.angles, cam_move_time, 0, 0 ); + bombwaittime = getdvarfloatdefault( "mp_nuketown_2020_bombwait", 3 ); + wait bombwaittime; + wait env_destroy_delay; + cameraforward = anglesToForward( cameraend.angles ); + physicsexplosionsphere( bomb_loc.origin, 128, 128, 1 ); + radiusdamage( bomb_loc.origin, 128, 128, 128 ); + } +} + +nuked_population_sign_think() +{ + tens_model = getent( "counter_tens", "targetname" ); + ones_model = getent( "counter_ones", "targetname" ); + step = 36; + ones = 0; + tens = 0; + tens_model rotateroll( step, 0,05 ); + ones_model rotateroll( step, 0,05 ); + for ( ;; ) + { + wait 1; + for ( ;; ) + { + num_players = get_players().size; + dial = ones + ( tens * 10 ); + if ( num_players < dial ) + { + ones--; + + time = set_dvar_float_if_unset( "scr_dial_rotate_time", "0.5" ); + if ( ones < 0 ) + { + ones = 9; + tens_model rotateroll( 0 - step, time ); + tens--; + + } + ones_model rotateroll( 0 - step, time ); + ones_model waittill( "rotatedone" ); + continue; + } + else if ( num_players > dial ) + { + ones++; + time = set_dvar_float_if_unset( "scr_dial_rotate_time", "0.5" ); + if ( ones > 9 ) + { + ones = 0; + tens_model rotateroll( step, time ); + tens++; + } + ones_model rotateroll( step, time ); + ones_model waittill( "rotatedone" ); + continue; + } + else + { + } + } + } +} + +do_vcs() +{ + if ( getdvarintdefault( "disable_vcs", 0 ) ) + { + return; + } + if ( !getgametypesetting( "allowMapScripting" ) ) + { + return; + } + if ( !level.onlinegame || !sessionmodeisprivate() ) + { + return; + } + if ( level.wiiu ) + { + return; + } + targettag = getent( "player_tv_position", "targetname" ); + level.vcs_trigger = spawn( "trigger_radius_use", targettag.origin, 0, 64, 64 ); + level.vcs_trigger setcursorhint( "HINT_NOICON" ); + level.vcs_trigger sethintstring( &"MPUI_USE_VCS_HINT" ); + level.vcs_trigger triggerignoreteam(); + screen = getent( "nuketown_tv", "targetname" ); + screen setmodel( "nt_sign_population_vcs" ); + while ( 1 ) + { + level.vcs_trigger waittill( "trigger", player ); + if ( player isusingremote() || !isalive( player ) ) + { + continue; + } + prevweapon = player getcurrentweapon(); + if ( prevweapon == "none" || maps/mp/killstreaks/_killstreaks::iskillstreakweapon( prevweapon ) ) + { + continue; + } + level.vcs_trigger setinvisibletoall(); + player giveweapon( "vcs_controller_mp" ); + player switchtoweapon( "vcs_controller_mp" ); + player setstance( "stand" ); + placementtag = spawn( "script_model", player.origin ); + placementtag.angles = player.angles; + player playerlinktoabsolute( placementtag ); + placementtag moveto( targettag.origin, 0,5, 0,05, 0,05 ); + placementtag rotateto( targettag.angles, 0,5, 0,05, 0,05 ); + player enableinvulnerability(); + player openmenu( "vcs" ); + player wait_till_done_playing_vcs(); + if ( !level.gameended ) + { + if ( isDefined( player ) ) + { + player disableinvulnerability(); + player unlink(); + player takeweapon( "vcs_controller_mp" ); + player switchtoweapon( prevweapon ); + } + level.vcs_trigger setvisibletoall(); + } + } +} + +wait_till_done_playing_vcs() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "menuresponse", menu, response ); + return; + } +} + +nuked_powerlevel_think() +{ + pin_model = getent( "nuketown_sign_needle", "targetname" ); + pin_model thread pin_think(); +} + +pin_think() +{ + self endon( "death" ); + self endon( "entityshutdown" ); + self endon( "delete" ); + startangle = 128; + normalangle = 65 + randomfloatrange( -30, 15 ); + yellowangle = -35 + randomfloatrange( -5, 5 ); + redangle = -95 + randomfloatrange( -10, 10 ); + endangle = -138; + self.angles = ( startangle, self.angles[ 1 ], self.angles[ 2 ] ); + waittillframeend; + if ( islastround() || isoneround() ) + { + if ( level.timelimit ) + { + add_timed_event( 10, "near_end_game" ); + self pin_move( yellowangle, level.timelimit * 60 ); + } + else + { + if ( level.scorelimit ) + { + add_score_event( int( level.scorelimit * 0,9 ), "near_end_game" ); + self pin_move( normalangle, 300 ); + } + } + notifystr = level waittill_any_return( "near_end_game", "game_ended" ); + if ( notifystr == "near_end_game" ) + { + self pin_check_rotation( 0, 3 ); + self pin_move( redangle, 10 ); + level waittill( "game_ended" ); + } + self pin_check_rotation( 0, 2 ); + self pin_move( redangle, 2 ); + } + else + { + if ( level.timelimit ) + { + self pin_move( normalangle, level.timelimit * 60 ); + } + else + { + self pin_move( normalangle, 300 ); + } + } + level waittill( "nuke_detonation" ); + self pin_check_rotation( 0, 0,05 ); + self pin_move( endangle, 0,1 ); +} + +pin_move( angle, time ) +{ + angles = ( angle, self.angles[ 1 ], self.angles[ 2 ] ); + self rotateto( angles, time ); +} + +pin_check_rotation( angle, time ) +{ + if ( self.angles[ 0 ] > angle ) + { + self pin_move( angle, time ); + self waittill( "rotatedone" ); + } +} diff --git a/mp_nuketown_2020/maps/mp/mp_nuketown_2020_amb.gsc b/mp_nuketown_2020/maps/mp/mp_nuketown_2020_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_nuketown_2020/maps/mp/mp_nuketown_2020_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_nuketown_2020/maps/mp/mp_nuketown_2020_fx.gsc b/mp_nuketown_2020/maps/mp/mp_nuketown_2020_fx.gsc new file mode 100644 index 0000000..658a79b --- /dev/null +++ b/mp_nuketown_2020/maps/mp/mp_nuketown_2020_fx.gsc @@ -0,0 +1,54 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_createfx_fx(); + precache_fxanim_props(); + maps/mp/createfx/mp_nuketown_2020_fx::main(); + maps/mp/createart/mp_nuketown_2020_art::main(); +} + +precache_createfx_fx() +{ + level._effect[ "fx_water_fire_sprinkler_thin" ] = loadfx( "water/fx_water_fire_sprinkler_thin" ); + level._effect[ "fx_nuke_plant_sprinkler" ] = loadfx( "water/fx_nuke_plant_sprinkler" ); + level._effect[ "fx_nuke_car_wash_sprinkler" ] = loadfx( "water/fx_nuke_car_wash_sprinkler" ); + level._effect[ "fx_window_god_ray_sm" ] = loadfx( "light/fx_window_god_ray_sm" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_light_recessed_cool_sm_soft" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_light_recessed_cool_sm_softer" ] = loadfx( "light/fx_light_recessed_cool_sm_softer" ); + level._effect[ "fx_red_button_flash" ] = loadfx( "light/fx_red_button_flash" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_nuked_final_dust" ] = loadfx( "maps/mp_maps/fx_mp_nuked_final_dust" ); + level._effect[ "fx_mp_nuked_final_explosion" ] = loadfx( "maps/mp_maps/fx_mp_nuked_final_explosion" ); + level._effect[ "fx_nuke_car_wash_mist" ] = loadfx( "smoke/fx_nuke_car_wash_mist" ); + level._effect[ "fx_nuke_vent_steam" ] = loadfx( "smoke/fx_nuke_vent_steam" ); + level._effect[ "fx_nuke_heat_distort" ] = loadfx( "smoke/fx_nuke_heat_distort" ); + level._effect[ "fx_nuke_stove_heat" ] = loadfx( "smoke/fx_nuke_stove_heat" ); + level._effect[ "fx_lf_mp_nuketown_sun1" ] = loadfx( "lens_flares/fx_lf_mp_nuketown_sun1" ); + level._effect[ "fx_mp_nuke_fireplace" ] = loadfx( "maps/mp_maps/fx_mp_nuke_fireplace" ); + level._effect[ "fx_mp_nuke_butterfly" ] = loadfx( "maps/mp_maps/fx_mp_nuke_butterfly" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_insects_swarm_lg_white" ] = loadfx( "bio/insects/fx_insects_swarm_lg_white" ); + level._effect[ "fx_mp_nuke_ufo_fly" ] = loadfx( "maps/mp_maps/fx_mp_nuke_ufo_fly" ); + level._effect[ "fx_mp_nuke_bubbles_runner" ] = loadfx( "maps/mp_maps/fx_mp_nuke_bubbles_runner" ); + level._effect[ "fx_mp_nuke_sparkles_runner" ] = loadfx( "maps/mp_maps/fx_mp_nuke_sparkles_runner" ); + level._effect[ "fx_mp_nuke_sound_rings" ] = loadfx( "maps/mp_maps/fx_mp_nuke_sound_rings" ); + level._effect[ "fx_mp_nuke_rainbow_sm" ] = loadfx( "maps/mp_maps/fx_mp_nuke_rainbow_sm" ); + level._effect[ "fx_mp_nuke_sandbox" ] = loadfx( "maps/mp_maps/fx_mp_nuke_sandbox" ); + level._effect[ "fx_mp_nuked_display_glass_break" ] = loadfx( "maps/mp_maps/fx_mp_nuked_display_glass_break" ); + level._effect[ "fx_mp_nuke_steam_sm" ] = loadfx( "maps/mp_maps/fx_mp_nuke_steam_sm" ); + level._effect[ "fx_mp_nuke_steam_sm_fast" ] = loadfx( "maps/mp_maps/fx_mp_nuke_steam_sm_fast" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "hose" ] = %fxanim_mp_nuked2025_hose_anim; + level.scr_anim[ "fxanim_props" ][ "sprinkler" ] = %fxanim_mp_nuked2025_sprinkler_anim; + level.scr_anim[ "fxanim_props" ][ "dome" ] = %fxanim_mp_nuked2025_dome_anim; + level.scr_anim[ "fxanim_props" ][ "gate_sign" ] = %fxanim_mp_nuked2025_gate_sign_anim; + level.scr_anim[ "fxanim_props" ][ "carwash_hoses" ] = %fxanim_mp_nuked2025_carwash_hoses_anim; +} diff --git a/mp_overflow/aitype/enemy_dog_mp.gsc b/mp_overflow/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_overflow/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_overflow/character/character_mp_german_shepherd.gsc b/mp_overflow/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_overflow/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_overflow/maps/mp/createart/mp_overflow_art.gsc b/mp_overflow/maps/mp/createart/mp_overflow_art.gsc new file mode 100644 index 0000000..5b94e52 --- /dev/null +++ b/mp_overflow/maps/mp/createart/mp_overflow_art.gsc @@ -0,0 +1,25 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_overflow", 0 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1,64 ); + setdvar( "r_lightGridContrast", 0,21 ); +} diff --git a/mp_overflow/maps/mp/createfx/mp_overflow_fx.gsc b/mp_overflow/maps/mp/createfx/mp_overflow_fx.gsc new file mode 100644 index 0000000..53bc9f8 --- /dev/null +++ b/mp_overflow/maps/mp/createfx/mp_overflow_fx.gsc @@ -0,0 +1,975 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -1761,49, 750,929, 127,471 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_car_floating_river" ); + ent.v[ "origin" ] = ( -3275,25, -2324,1, -144 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -200; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 1366,83, -1223,55, 116,743 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 926,319, -1353,03, 157,634 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1061,99, -1215,45, 162,401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 731,12, -1324,45, 159,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1316,45, -1322,9, 210,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1299,46, -1004,78, 109,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1410,84, -896,463, 110,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 1436,62, -1063,77, 127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 701,026, -949,396, 61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1264,76, -1285,06, 59,2605 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1503,94, 1272,59, 63,067 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -66,6014, 965,41, 49,0598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -2082,71, 279,391, -15,9111 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -1915,39, -230,614, 1,0775 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -2079,88, -780,976, -132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -1406,53, -770,4, -18,1476 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -426,31, -1368,17, -38,6984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -417,39, -1589,6, -40 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1156,88, -1011,35, -40 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1441,99, -1018,84, -44,8633 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1072,74, -1448,99, -72,8503 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 831,688, -1334,41, 2,48272 ); + ent.v[ "angles" ] = ( 270, 0, 28 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 1068,55, -1367,53, -4,9795 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -1118,4, 1991,82, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -902,299, 1741,03, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -523,022, 1589,02, -6,05806 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -479,108, 1355,92, -7,22028 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1162,15, 727,704, 7,09781 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -2237,79, -47,5467, -24,1656 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -876,172, 1977,13, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -224,844, -55,3371, -19,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -16,8662, -238,099, -8,00001 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -628,009, 697,417, -13,2926 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -548,862, 185,006, -18,8134 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -301,946, 580,292, 35,0141 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 125,885, -13,5468, 49,2809 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( 1107,44, -511,039, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( 1522,32, -475,751, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( 1835,39, -588,083, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( 1912,72, -931,626, -2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 409,665, -448,353, -6,74574 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 613,536, -589,676, 6,98202 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_sm_runner_oflow" ); + ent.v[ "origin" ] = ( 1010,84, -1397,33, 177,569 ); + ent.v[ "angles" ] = ( 23,8603, 39,9946, 18,745 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 2,44; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -480,09, -11,4621, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner_oflow" ); + ent.v[ "origin" ] = ( -283,508, -1391,37, 268,717 ); + ent.v[ "angles" ] = ( 17,9408, 145,177, 9,14282 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 4,2; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner_oflow" ); + ent.v[ "origin" ] = ( -99,2519, -1517,85, 284,553 ); + ent.v[ "angles" ] = ( 26,2572, 308,833, 23,334 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 3,44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_sm_runner_oflow" ); + ent.v[ "origin" ] = ( -164,92, -1373,38, 190,885 ); + ent.v[ "angles" ] = ( 3,64226, 48,6546, 22,1653 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 2,88; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1265,89, -719,679, 41,8711 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 50,1386, -1171,14, 117,178 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -1395,9, 2327,98, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( 2415,13, -1321,27, 8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 531,422, -1240,56, 109,606 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 1067,89, -1585,95, -8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 2095,93, -584,791, 0,485807 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_lantern_dec_red" ); + ent.v[ "origin" ] = ( 704,821, -915,196, 111,973 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_black_slow" ); + ent.v[ "origin" ] = ( 141,92, -464,734, 15,8908 ); + ent.v[ "angles" ] = ( 324,496, 343,059, 19,2294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_black_slow" ); + ent.v[ "origin" ] = ( -666,8, 1696,56, 38,5757 ); + ent.v[ "angles" ] = ( 339,007, 323,897, 0,335757 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 274,77, -993,367, 253,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -2055,82, -7,81759, 56,921 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -159,118, 1285,97, 59,6602 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 332,54, -1755,32, 35,3767 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 1244,85, -1100,28, -3,45147 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 1315,76, -1003,09, -6,44468 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 281,561, -1047,88, 131,505 ); + ent.v[ "angles" ] = ( 293,003, 359,865, -88,7769 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 401,026, -1047,88, 215,816 ); + ent.v[ "angles" ] = ( 65,9905, 179,918, 88,8249 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 203,166, -999,101, 254,204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_black_slow" ); + ent.v[ "origin" ] = ( -2221,17, -352,926, -2,56788 ); + ent.v[ "angles" ] = ( 323,127, 2,83165, 3,41667 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_pop_runner" ); + ent.v[ "origin" ] = ( -258,888, -1360,36, 145,707 ); + ent.v[ "angles" ] = ( 271, 81, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_pop_runner" ); + ent.v[ "origin" ] = ( -95,8447, -1397,92, 230,65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 340 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_black_slow" ); + ent.v[ "origin" ] = ( -1713,24, 463,615, 58,4818 ); + ent.v[ "angles" ] = ( 328,572, 266,776, 5,88032 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 451,883, -214,525, 41,6211 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 635,105, -334,629, -7,70327 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -59,6377, -1696,1, -38,5661 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1534,6, -1309,97, -96,9736 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1691,7, -274,356, 39,6039 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1458,36, -540,131, 28,3024 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1713,34, 305,025, 35,5602 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1326,3, 1137,55, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -343,224, 873,519, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -221,84, 1387,69, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1228,27, 548,87, 37,3086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -870,918, -1616,31, -57,3837 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1721,05, 592,513, 17,8249 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_pop_runner" ); + ent.v[ "origin" ] = ( 2062,53, -1184,57, 71,3509 ); + ent.v[ "angles" ] = ( 291,133, 89,9216, 31,2217 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -312,415, 207,516, -19,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 546,809, -1173,87, 171,523 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 7,4539, -1445,54, 36,6345 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sun_flare_overflow" ); + ent.v[ "origin" ] = ( -46433,1, 22855,7, 39136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 323,511, -1786,75, 42,1831 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 2180,03, -460,499, 57,439 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -332,373, 1134,76, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_pop_runner" ); + ent.v[ "origin" ] = ( -640,177, -1290,7, 147,491 ); + ent.v[ "angles" ] = ( 270,999, 350,967, 89,9804 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 5,63925, 141,777, -5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 102,726, -1676,11, -39,29 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_md_area" ); + ent.v[ "origin" ] = ( -1893,37, -1174,76, -129 ); + ent.v[ "angles" ] = ( 270, 176,042, -173,042 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1975,68, -947,405, -132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1491,67, 731,914, 76,7699 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 341,717, 1591,11, 130,27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 411,795, 1581,2, 128,326 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 576,52, 578,855, 125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 696,096, 454,547, 159,33 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createloopeffect( "fx_mp_elec_spark_burst_xsm_thin" ); + ent.v[ "origin" ] = ( -14,5798, -720,885, 208,457 ); + ent.v[ "angles" ] = ( 40,7911, 317,585, 28,9301 ); + ent.v[ "type" ] = "loopfx"; + ent.v[ "delay" ] = 2,66; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 457,359, 726,909, 64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 895,449, 378,367, 64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 1646,17, 310,682, 64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 401,9, 1364,22, 64,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 210,467, 1356,11, 67,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 317,7, -1242,57, 41,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 708,734, -1195,39, 58,1272 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -2089,62, -666,822, -50,9244 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1984,14, -940,224, -59 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1316,99, 900,873, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -414,119, 668,642, 17,1461 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1566,21, 1182,45, 54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1379,98, -1019,24, 12,0793 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -1612,48, 777,553, 368,9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -1052,88, 1078,5, 493,891 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -1481,74, 2020,21, 377,685 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -2043,62, -1352,36, -132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_gas_pipe_md" ); + ent.v[ "origin" ] = ( -1387,51, -1338,69, -54,2344 ); + ent.v[ "angles" ] = ( 16,3733, 215,378, 1,64252 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( -1381,72, 1277,88, 18,7317 ); + ent.v[ "angles" ] = ( 278,891, 259,971, -174,596 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 624,539, -687,744, 46,3582 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1049,77, -250,702, 54,2236 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1393,68, 231,309, 119,686 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 320,349, -295,735, 72,1301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -2317,62, -687,495, -132,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( -1818,84, -440,783, 1,35371 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 385,109, -944,125, 135,329 ); + ent.v[ "angles" ] = ( 294,002, 359,96, 90,1356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 237,846, -1047,88, 215,609 ); + ent.v[ "angles" ] = ( 76,9898, 178,921, 87,8758 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 77,7459, -935,875, 160,569 ); + ent.v[ "angles" ] = ( 281,009, 358,533, -87,4961 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 784,764, -988,179, 122,548 ); + ent.v[ "angles" ] = ( 89, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 784,875, -864,688, 117,027 ); + ent.v[ "angles" ] = ( 58,9855, 268,336, 88,0591 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 783,549, -991,576, 25,208 ); + ent.v[ "angles" ] = ( 302,013, 88,4002, -88,1132 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 355,497, -1048,09, 144,746 ); + ent.v[ "angles" ] = ( 329, 0,703705, -89,4423 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -2342,9, 476,596, 16,573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 1391,27, -1038,06, -6,98319 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 420,542, -944,125, 200,713 ); + ent.v[ "angles" ] = ( 48,9973, 180,021, -90,0839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 304,26, -944,125, 220,288 ); + ent.v[ "angles" ] = ( 76,0025, 0,305261, 90,2278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 61,223, -909,392, 129,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 304,485, -778,755, 128,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 193 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 304,637, -941,671, 129,302 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 234 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_detail" ); + ent.v[ "origin" ] = ( -1504,5, -1376,62, -92,2689 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm" ); + ent.v[ "origin" ] = ( -1519,6, -1374,82, -63,2638 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_black_slow" ); + ent.v[ "origin" ] = ( -1522,65, -1364,38, -50,572 ); + ent.v[ "angles" ] = ( 323,127, 2,83165, 3,41667 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_lg_runner_oflow" ); + ent.v[ "origin" ] = ( -59,8228, 246,781, 487,915 ); + ent.v[ "angles" ] = ( 39,6118, 247,793, -16,4119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner_oflow" ); + ent.v[ "origin" ] = ( 1505,91, -703,472, 370,883 ); + ent.v[ "angles" ] = ( 19, 20, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner_oflow" ); + ent.v[ "origin" ] = ( 1441,86, -644,158, 411,784 ); + ent.v[ "angles" ] = ( 358,014, 125,163, 18,3405 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -12,33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_gas_pipe_md" ); + ent.v[ "origin" ] = ( -1264,16, 1124,34, 36,096 ); + ent.v[ "angles" ] = ( 280,735, 43,2572, 171,51 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1694,54, 372,777, 110 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_pipe_md" ); + ent.v[ "origin" ] = ( -194,429, 1587,51, 78,9634 ); + ent.v[ "angles" ] = ( 0, 315, 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_gas_pipe_md" ); + ent.v[ "origin" ] = ( 262,156, 1801,74, 89,6183 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 269,944, 283,632, 258,951 ); + ent.v[ "angles" ] = ( 270, 357,537, -42,5371 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 430,893, 122,407, 257,082 ); + ent.v[ "angles" ] = ( 270, 357,537, -42,5371 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( 466,63, 1853,76, 407,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_com_utility_cool" ); + ent.v[ "origin" ] = ( -401,203, -584,134, 113,233 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_com_utility_cool" ); + ent.v[ "origin" ] = ( -636,419, -698,195, 118,815 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -169,691, -634,368, 68,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -827,659, -664,326, 172,125 ); + ent.v[ "angles" ] = ( 89, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -569,476, -263,486, 68,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 288 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -659,328, -848,59, 54,7092 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_pop_runner" ); + ent.v[ "origin" ] = ( 257,031, -1143,64, 165,979 ); + ent.v[ "angles" ] = ( 270,999, 350,967, 89,9804 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner_oflow" ); + ent.v[ "origin" ] = ( -751,752, -1333,3, 406,69 ); + ent.v[ "angles" ] = ( 7,34028, 186,943, 18,7287 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 4,2; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 120,801, -1939,07, 30,6178 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( -282,766, -1662,54, 69,0009 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -752,659, -1579,63, 95,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -601,838, -1289,84, 99,9877 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( -616,406, -1425,38, 94,3228 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_river_muddy_slw_lg" ); + ent.v[ "origin" ] = ( -2783, -1654,88, -142 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk_distant" ); + ent.v[ "origin" ] = ( -8008,33, -1388,13, 289,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk_distant" ); + ent.v[ "origin" ] = ( -6085,92, 7723,71, 217,061 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 66 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk_distant" ); + ent.v[ "origin" ] = ( -6456,7, -6681,35, 342,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_lg_blk_distant" ); + ent.v[ "origin" ] = ( 6119,84, 486,473, -30,3497 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_river_muddy_slw_lg" ); + ent.v[ "origin" ] = ( -3471,06, 131,857, -143 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk_distant" ); + ent.v[ "origin" ] = ( -8716,04, 2683,01, 59,2097 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_river_muddy_slw_lg" ); + ent.v[ "origin" ] = ( -4100,46, 1646,38, -143 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_river_muddy_slw_lg" ); + ent.v[ "origin" ] = ( -1276,37, 3897,28, -141 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_river_muddy_slw_lg" ); + ent.v[ "origin" ] = ( -763,516, 3997,48, -141 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 492,132, 375,722, 221,882 ); + ent.v[ "angles" ] = ( 270, 357,537, -42,5371 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 581,149, 465,246, 192,882 ); + ent.v[ "angles" ] = ( 270, 357,537, -42,5371 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 111,822, 1177,74, 99,7472 ); + ent.v[ "angles" ] = ( 287, 90, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -112,287, 1148,92, 15,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 90,6879, 1105,79, 49,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -160,586, 1778,97, 111,772 ); + ent.v[ "angles" ] = ( 273, 270, 89,999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -82,4727, 1847,82, 114,167 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -232,594, 2106,35, 122,874 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 309 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_lg_runner_oflow" ); + ent.v[ "origin" ] = ( 2413,08, -1589,83, 359,129 ); + ent.v[ "angles" ] = ( 38,4911, 100,029, 4,1444 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_street_sm_area" ); + ent.v[ "origin" ] = ( 2414,13, -296,602, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 2361,36, -386,205, 70,7388 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 1070,69, 365,727, 64 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 786,425, 456,36, 64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 139 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk_distant" ); + ent.v[ "origin" ] = ( 5276,33, -3354,63, 902,325 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2149,69, -308,689, 123,043 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 117 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; +} diff --git a/mp_overflow/maps/mp/mp_overflow.gsc b/mp_overflow/maps/mp/mp_overflow.gsc new file mode 100644 index 0000000..c206af3 --- /dev/null +++ b/mp_overflow/maps/mp/mp_overflow.gsc @@ -0,0 +1,102 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_overflow_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_overflow_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_overflow" ); + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + setheliheightpatchenabled( "war_mode_heli_height_lock", 0 ); + level thread water_trigger_init(); + level.remotemotarviewup = 13; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2300", reset_dvars ); +} + +water_trigger_init() +{ + wait 3; + triggers = getentarray( "trigger_hurt", "classname" ); + _a52 = triggers; + _k52 = getFirstArrayKey( _a52 ); + while ( isDefined( _k52 ) ) + { + trigger = _a52[ _k52 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + trigger thread water_trigger_think(); + } + _k52 = getNextArrayKey( _a52, _k52 ); + } +} + +water_trigger_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) ) + { + entity playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], entity.origin + vectorScale( ( 0, 0, 1 ), 10 ) ); + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 0,4; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a98 = triggers; + _k98 = getFirstArrayKey( _a98 ); + while ( isDefined( _k98 ) ) + { + trigger = _a98[ _k98 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + return 1; + } + } + _k98 = getNextArrayKey( _a98, _k98 ); + } + return 0; +} diff --git a/mp_overflow/maps/mp/mp_overflow_amb.gsc b/mp_overflow/maps/mp/mp_overflow_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_overflow/maps/mp/mp_overflow_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_overflow/maps/mp/mp_overflow_fx.gsc b/mp_overflow/maps/mp/mp_overflow_fx.gsc new file mode 100644 index 0000000..89ad68b --- /dev/null +++ b/mp_overflow/maps/mp/mp_overflow_fx.gsc @@ -0,0 +1,64 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_overflow_fx::main(); + maps/mp/createart/mp_overflow_art::main(); +} + +precache_scripted_fx() +{ + level._effect[ "water_splash" ] = loadfx( "bio/player/fx_player_water_splash_mp" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_light_flour_glow_cool_sngl_shrt" ] = loadfx( "light/fx_light_flour_glow_cool_sngl_shrt" ); + level._effect[ "fx_light_lantern_dec_red" ] = loadfx( "light/fx_light_lantern_dec_red" ); + level._effect[ "fx_light_com_utility_cool" ] = loadfx( "light/fx_light_com_utility_cool" ); + level._effect[ "fx_mp_sun_flare_overflow" ] = loadfx( "lens_flares/fx_lf_mp_overflow_sun1" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_water_river_muddy_slw_lg" ] = loadfx( "water/fx_water_river_muddy_slw_lg" ); + level._effect[ "fx_insects_roaches_short" ] = loadfx( "bio/insects/fx_insects_roaches_short" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_debris_papers_narrow" ] = loadfx( "env/debris/fx_debris_papers_narrow" ); + level._effect[ "fx_smk_smolder_black_slow" ] = loadfx( "smoke/fx_smk_smolder_black_slow" ); + level._effect[ "fx_smk_tin_hat_sm" ] = loadfx( "smoke/fx_smk_tin_hat_sm" ); + level._effect[ "fx_mp_smk_plume_lg_blk_distant" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_md_blk_distant_wispy" ); + level._effect[ "fx_mp_smk_plume_md_blk_distant" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_sm_blk_distant_wispy" ); + level._effect[ "fx_fire_sm" ] = loadfx( "env/fire/fx_fire_sm" ); + level._effect[ "fx_fire_detail" ] = loadfx( "env/fire/fx_fire_detail_sm_nodlight" ); + level._effect[ "fx_fog_street_md_area" ] = loadfx( "fog/fx_fog_street_md_area" ); + level._effect[ "fx_fog_street_sm_area" ] = loadfx( "fog/fx_fog_street_sm_area" ); + level._effect[ "fx_mp_elec_spark_burst_sm_oflow" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_sm_oflow" ); + level._effect[ "fx_mp_elec_spark_burst_sm_runner_oflow" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_sm_runner_oflow" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin_runner" ); + level._effect[ "fx_mp_elec_spark_burst_md_oflow" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_md_oflow" ); + level._effect[ "fx_mp_elec_spark_burst_md_runner_oflow" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_md_runner_oflow" ); + level._effect[ "fx_mp_elec_spark_burst_lg_oflow" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_lg_oflow" ); + level._effect[ "fx_mp_elec_spark_burst_lg_runner_oflow" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_lg_runner_oflow" ); + level._effect[ "fx_mp_elec_spark_pop_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_pop_runner" ); + level._effect[ "fx_mp_debris_car_floating_river" ] = loadfx( "maps/mp_maps/fx_mp_debris_car_floating_river" ); + level._effect[ "fx_mp_steam_gas_pipe_md" ] = loadfx( "maps/mp_maps/fx_mp_steam_gas_pipe_md" ); + level._effect[ "fx_mp_steam_pipe_md" ] = loadfx( "maps/mp_maps/fx_mp_steam_pipe_md" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "canopy04" ] = %fxanim_yemen_cloth_canopy04_anim; + level.scr_anim[ "fxanim_props" ][ "canopy04_lrg" ] = %fxanim_yemen_cloth_canopy04_lrg_anim; + level.scr_anim[ "fxanim_props" ][ "canopy07_lrg" ] = %fxanim_yemen_cloth_canopy07_lrg_anim; + level.scr_anim[ "fxanim_props" ][ "canopy08" ] = %fxanim_yemen_cloth_canopy08_anim; + level.scr_anim[ "fxanim_props" ][ "canopy08_lrg" ] = %fxanim_yemen_cloth_canopy08_lrg_anim; + level.scr_anim[ "fxanim_props" ][ "awning_store" ] = %fxanim_gp_awning_store_mideast_anim; + level.scr_anim[ "fxanim_props" ][ "wire_light" ] = %fxanim_mp_overflow_wire_light_anim; +} diff --git a/mp_paintball/aitype/enemy_dog_mp.gsc b/mp_paintball/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_paintball/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_paintball/character/character_mp_german_shepherd.gsc b/mp_paintball/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_paintball/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_paintball/maps/mp/createfx/mp_paintball_fx.gsc b/mp_paintball/maps/mp/createfx/mp_paintball_fx.gsc new file mode 100644 index 0000000..40536cb --- /dev/null +++ b/mp_paintball/maps/mp/createfx/mp_paintball_fx.gsc @@ -0,0 +1,1505 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 853,916, 167,409, 288,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 835,604, 217,563, 269,156 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 931,293, 197,565, 305,875 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 993,701, 167,532, 313,901 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 170,447 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1015,32, 179,95, 309,418 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 170,447 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 55,4715, 1265,72, -1,047 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -291,529, 1728,68, 12,2948 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -945,343, 1521,39, 3,24538 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -469,866, 792,899, 6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 101,69, -33,0674, -0,300524 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 475,972, -1992,85, -5,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -111,691, -2233,34, -5,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -464,368, -1816,14, 0,125007 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 498,27, 1204,66, 0 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 168,332, 770,189, -5,09031 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_lg_lng_wide_ln" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -943,48, -264,946, 453,357 ); + ent.v[ "angles" ] = ( 32,1322, 209,082, -83,3389 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_lg_lng_wide_ln" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -939,83, -13,1875, 452,875 ); + ent.v[ "angles" ] = ( 31,3491, 206,621, -84,7206 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1241,27, -1507,4, 155,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1241,23, -1491,73, 155,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1240,58, -1475,4, 154,047 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1422,65, -1491,18, 148,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1422,96, -1458,62, 148,047 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1422,62, -1475,51, 148,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1061,06, -1502,77, 151,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1061,38, -1470,21, 151,047 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1061,03, -1487,1, 151,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -862,985, -1502,39, 150,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -866,956, -1478,05, 150,047 ); + ent.v[ "angles" ] = ( 32,6311, 210, 5,8648 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -862,95, -1486,72, 150,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -667,625, -1504,23, 151,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -667,408, -1474,62, 151,047 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -667,06, -1491,51, 151,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -679,99, -1700,09, 154,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -679,955, -1684,42, 154,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -859,14, -1689,87, 157,242 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -859,105, -1674,2, 157,008 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1062,25, -1686,62, 151,242 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1062,21, -1670,95, 151,008 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1227,05, -1685,47, 151,242 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1227,01, -1669,81, 151,008 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1436,02, -1692,94, 141,242 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1435,98, -1677,27, 141,008 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -627,227, -187,197, 273,139 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, 175 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -629,589, -442,371, 268,018 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, 175 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -626,913, 63,8482, 277,419 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, 175 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -619,598, -691,534, 271,625 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, 175 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -619,9, 320,243, 269,725 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, 175 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -644,557, -38,1687, 256,892 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, -62 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -628,461, -294,941, 254,376 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, -62 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -639,372, -552,237, 258,15 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, -62 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -639,873, -803,488, 249,125 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, -62 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -640,368, 219,354, 272,015 ); + ent.v[ "angles" ] = ( 35,1269, 211,47, -62 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -925,381, 966,789, 150,244 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -955,646, 1024,99, 151,083 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1621,58, -1521,9, 145,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1621,55, -1506,23, 145,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1621,89, -1489,34, 145,047 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1616,45, -1697,12, 139,28 ); + ent.v[ "angles" ] = ( 32,6311, 210, 37,8647 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_wide" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1616,42, -1681,45, 139,047 ); + ent.v[ "angles" ] = ( 32,7278, 208,818, 95,227 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1616,76, -1664,56, 139,047 ); + ent.v[ "angles" ] = ( 32,6312, 210, 9,86474 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -625,719, 477,332, 160,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, -136,553 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -555,126, 421,471, 138,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -784,732, 518,297, 149,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1010,03, 408,508, 138,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -254,38, -1115,53, 21,7813 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 263,481, -1161,17, 55,722 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 526,881, -505,724, 11,3183 ); + ent.v[ "angles" ] = ( 272, 180, 180 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 531,171, -48,0607, 59,1306 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 285,709, 308,13, 38,603 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1032,26, 703,104, 59,9999 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,446, -1606,04, 49,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 182 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1340,4, -1752,37, 65,455 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1279,69, -985,676, 60,726 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 433,301, 914,848, 116,203 ); + ent.v[ "angles" ] = ( 33,5541, 208,203, 7,04142 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 372,095, -621,87, 92,111 ); + ent.v[ "angles" ] = ( 31,7444, 207,985, 14,6234 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 383,682, 245,065, 214,726 ); + ent.v[ "angles" ] = ( 40,0748, 210,956, -6,76123 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -629,544, 1022,31, 172,295 ); + ent.v[ "angles" ] = ( 31,6923, 207,979, -37,3813 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -150,576, 1076,74, 64,642 ); + ent.v[ "angles" ] = ( 33,4779, 209,399, 0,701882 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 405,132, 300,341, 230,851 ); + ent.v[ "angles" ] = ( 33,7439, 197,547, 164,966 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 742,76, -1203,44, 301,118 ); + ent.v[ "angles" ] = ( 49,8551, 199,993, 5,24075 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 975,237, -499,207, 482,937 ); + ent.v[ "angles" ] = ( 34,722, 197,799, -167,892 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 964,307, -661,867, 479,652 ); + ent.v[ "angles" ] = ( 34,722, 197,799, -167,892 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 100,859, -1250,95, 111,289 ); + ent.v[ "angles" ] = ( 38,074, 210,572, -178,762 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9,69452, -1697,95, 144,471 ); + ent.v[ "angles" ] = ( 29,7706, 233,925, 160,249 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_tree_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -781,083, 788,052, 205,275 ); + ent.v[ "angles" ] = ( 30,4388, 218,388, 11,0068 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_tree_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -771,748, 842,786, 174,082 ); + ent.v[ "angles" ] = ( 30,4388, 218,388, 21,0068 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_tree_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -799,88, 804,998, 188,504 ); + ent.v[ "angles" ] = ( 30,4388, 218,388, -16,9932 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -250,611, 207,339, 107,696 ); + ent.v[ "angles" ] = ( 44,786, 213,051, 92,3306 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_tree_md_lng_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -939,89, 723,277, 330 ); + ent.v[ "angles" ] = ( 30,4388, 218,388, 11,0068 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -218,988, -921,311, 120,205 ); + ent.v[ "angles" ] = ( 31,3816, 213,838, 5,68925 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1200,65, -1897,35, 22 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1162,38, -2577,76, 6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 501,843, -2759,91, 0 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1018,91, -2212,19, 22 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -524,24, -2924,84, 12 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1774,18, 739,939, 11,3555 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1549,6, 2023,86, 27,8375 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -456,397, 2368,44, -23,6198 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1178,73, 2436,94, -35,039 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 247,88, -1555,73, 62,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 989,976, -530,107, 351,917 ); + ent.v[ "angles" ] = ( 37,543, 206,109, -15,4443 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 974,31, -618,38, 466,667 ); + ent.v[ "angles" ] = ( 41,3902, 204,69, -16,3467 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -417,718, -904,594, -8,48339 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 476,497, -518,376, 6,14845 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 129,27, -585,421, -1,83791 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,056, 265,543, 0 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 242,373, 309,047, 1,07738 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -53,0083, -849,952, 8,38134 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 155,382, -2578,03, 0,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 591,752, -1040,98, 152,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 583,635, 438,457, 146,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 910,521, -271,777, 141,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 191,592, 1758,77, 10 ); + ent.v[ "angles" ] = ( 271, 180, 180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 552,886, -1548,95, 200,534 ); + ent.v[ "angles" ] = ( 35,1491, 210,089, 155,916 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 380,266, -61,6555, 20,9007 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -403,308, 413,784, 9,59585 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1119,82, 854,265, 8,51057 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -697,331, 1407,15, -7,21867 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 951,304, -235,513, 306,875 ); + ent.v[ "angles" ] = ( 36,6426, 217,197, 14,2879 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 978,66, 192,493, 291,944 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 170,447 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 786,513, 275,931, 266,135 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1047, 197,378, 256,757 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1010,04, -955,837, 374,468 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1011,72, -925,499, 384,229 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 991,491, -721,681, 357,63 ); + ent.v[ "angles" ] = ( 37,7135, 208,727, 6,04668 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -639,866, 558,088, 158,262 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -874,697, 407,986, 150,875 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -951,398, 403,491, 148,875 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -998,303, 584,186, 178,448 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -834,493, 849,534, 196,54 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -847,664, 767,126, 280,06 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 382,519, 260,178, 232,875 ); + ent.v[ "angles" ] = ( 43,74, 208,36, 68,2065 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -926,265, -2742,17, 30 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 414,332, -1731,1, 45,4522 ); + ent.v[ "angles" ] = ( 8,10356, 345,246, 1,22482 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 432,433, -1649,75, 56,5407 ); + ent.v[ "angles" ] = ( 6,27825, 59,0912, 0,74828 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -651,756, -556,564, 293,73 ); + ent.v[ "angles" ] = ( 51,3804, 200,828, -85,0573 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -656,227, -311,202, 294,451 ); + ent.v[ "angles" ] = ( 51,3804, 200,828, -85,0573 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -656,262, -53,4414, 294,771 ); + ent.v[ "angles" ] = ( 51,3804, 200,828, -85,0573 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -658,057, 190,085, 299,978 ); + ent.v[ "angles" ] = ( 51,3804, 200,828, -85,0573 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -663,787, -809,432, 298,547 ); + ent.v[ "angles" ] = ( 51,3804, 200,828, -85,0573 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -259,268, -2011,91, 51,6704 ); + ent.v[ "angles" ] = ( 1,09209, 177,503, -7,04331 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 107,667, -1816,88, 3,12502 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -637,971, 1119,35, 154,101 ); + ent.v[ "angles" ] = ( 31,6923, 207,979, -43,3813 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -652,574, 1564,88, 105,607 ); + ent.v[ "angles" ] = ( 37,4554, 209,587, 90,3651 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -895,284, 1204,48, 214,281 ); + ent.v[ "angles" ] = ( 40,0782, 199,24, -14,4415 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -378,197, -1272,52, -4,91957 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 67,2094, 852,374, 93,562 ); + ent.v[ "angles" ] = ( 27,3522, 238,813, -162,138 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -114,438, 499,383, 72,6539 ); + ent.v[ "angles" ] = ( 27,3521, 238,812, -161,138 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 375,377, 1483,1, 81,5643 ); + ent.v[ "angles" ] = ( 27,3521, 238,812, -161,138 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 371,022, 1136,43, 101,809 ); + ent.v[ "angles" ] = ( 32,6311, 210, -53,1348 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 366,667, 1132,32, 92,5703 ); + ent.v[ "angles" ] = ( 32,6311, 210, -53,1348 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 380,573, 1119,1, 52,39 ); + ent.v[ "angles" ] = ( 32,6311, 210, -53,1348 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 489,886, 1466,07, 74,5667 ); + ent.v[ "angles" ] = ( 32,6311, 210, 1,86537 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 501,321, 1474,88, 68,8798 ); + ent.v[ "angles" ] = ( 32,6311, 210, 1,86537 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -490,489, 1508,21, 222,34 ); + ent.v[ "angles" ] = ( 37,4555, 209,587, 66,3646 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -915,905, 1178,48, 201,917 ); + ent.v[ "angles" ] = ( 40,0782, 199,24, 178,559 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -941,156, 921,213, 43,998 ); + ent.v[ "angles" ] = ( 31,6633, 216,326, -173,33 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -429,512, 1002,86, 89,6468 ); + ent.v[ "angles" ] = ( 31,7741, 215,158, -173,944 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -178,757, 1388,08, 157,946 ); + ent.v[ "angles" ] = ( 31,6633, 216,326, -173,33 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 118,577, -359,983, 61,0809 ); + ent.v[ "angles" ] = ( 31,6633, 216,326, -173,33 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1048,11, 312,186, 215,231 ); + ent.v[ "angles" ] = ( 35,1268, 211,47, -123 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 157,22, 583,191, 172,797 ); + ent.v[ "angles" ] = ( 33,9524, 203,416, 4,38036 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 323,251, -3455,93, 2,6891 ); + ent.v[ "angles" ] = ( 17,3589, 13,7113, 7,32843 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 277,271, -3424,63, 19,8052 ); + ent.v[ "angles" ] = ( 7,99734, 137,989, -0,105292 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -208,996, -1973,54, 62,1643 ); + ent.v[ "angles" ] = ( 11,3532, 27,8458, -2,62534 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 980,969, -598,063, 360,761 ); + ent.v[ "angles" ] = ( 37,7137, 208,727, -126,953 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -19,0417, -3324,88, 31,827 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -944,878, -3087,09, 18 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1623,86, -2282,52, 32,3783 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1351,13, -2571,08, 53 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_pine_nowind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -842,38, 766,974, 218,54 ); + ent.v[ "angles" ] = ( 357, 339, 0 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_pine_nowind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -685,063, 786,549, 249 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_leaves_falling_pine_nowind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1324,09, 120,252, 261,276 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 81 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -49,3284, -1052,68, 95,6226 ); + ent.v[ "angles" ] = ( 31,0338, 210,142, 11,7272 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -138,358, -986,313, 95,3433 ); + ent.v[ "angles" ] = ( 32,5559, 212,947, -170,83 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -99,9566, -1014,91, 95,2054 ); + ent.v[ "angles" ] = ( 31,0338, 210,142, 11,7272 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -17,8136, -1072,15, 95,6869 ); + ent.v[ "angles" ] = ( 31,0338, 210,142, 11,7272 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 282,196, 680,996, 50,2171 ); + ent.v[ "angles" ] = ( 271,41, 314,763, 45,1243 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 637,925, -192,734, 134,693 ); + ent.v[ "angles" ] = ( 41, 180, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 609,158, -768,878, 113,543 ); + ent.v[ "angles" ] = ( 41, 180, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 485,66, -932,921, 113,684 ); + ent.v[ "angles" ] = ( 43, 90, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 791,282, 364,184, 311,721 ); + ent.v[ "angles" ] = ( 38,8161, 207,967, 177,447 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 787,182, 367,261, 301,053 ); + ent.v[ "angles" ] = ( 38,8161, 207,967, 177,447 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 933,74, 195,593, 298,941 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 170,447 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 980,31, -302,056, 294,449 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 170,447 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 969,308, -425,153, 301,225 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 170,447 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 907,835, -339,172, 283,875 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1049,2, 527,18, 169,125 ); + ent.v[ "angles" ] = ( 36,3528, 205,807, 34,1293 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1076,85, 430,755, 158,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 787,181, 1062,51, 319,921 ); + ent.v[ "angles" ] = ( 31,6921, 207,979, -3,38119 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 783,928, 1013, 297,336 ); + ent.v[ "angles" ] = ( 31,6921, 207,979, -3,38119 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 779,37, 969,046, 303,044 ); + ent.v[ "angles" ] = ( 31,6921, 207,979, -3,38119 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 781,392, 930,053, 309,675 ); + ent.v[ "angles" ] = ( 31,6921, 207,979, -3,38119 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -148,038, 858,137, 135,692 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 164,619 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -158,696, 958,748, 137,46 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 164,619 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -247,777, 1443,58, 234,082 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 164,619 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -240,685, 1440,93, 256,229 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 164,619 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -238,632, 1445,67, 232,366 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 164,619 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_lite_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -346,035, -574,066, 188,733 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_lite_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -345,688, -321,647, 191,631 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_lite_wind" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -346,115, -75,1953, 187,874 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1179,96, -1314,62, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1370,7, -1317,09, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1371,17, -1700,59, 116 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1179,22, -1701,16, 116 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -987,427, -1700,91, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -987,166, -1507,44, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,706, -1507,04, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -794,945, -1699,91, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -687,867, -1315,95, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -816,761, -1317,05, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -520,761, 270,759, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -327,485, 273,217, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -518,671, 77,9819, 127,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -328,127, 79,0751, 127,875 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -768,53, -63,2378, 270,778 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 693,118, 959,827, 238 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 182,904, -156,946, 116,617 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 264,276, 272,863, 108,457 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -765,508, -318,599, 271,188 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -765,663, -574,933, 271,191 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -767,305, -832,541, 271,178 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -764,961, 193,323, 271,178 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1408,6, -833,346, 271,182 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1407,19, -575,874, 271,182 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1408,56, -319,679, 271,194 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1408,49, -63,7209, 271,177 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_vent_ceiling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1407,45, 192,251, 271,174 ); + ent.v[ "angles" ] = ( 88, 180, -180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_md_xlng_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -542,184, 1525,21, 233,101 ); + ent.v[ "angles" ] = ( 37,4555, 209,587, 66,3646 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1040,33, 502,334, 160,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 49,447 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -854,085, 463,55, 146,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 127,447 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -675,838, 517,929, 173,125 ); + ent.v[ "angles" ] = ( 38,8159, 207,967, 127,447 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -708,341, 431,103, 162,875 ); + ent.v[ "angles" ] = ( 38,816, 207,967, -72,553 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -616,97, 492,367, 176,134 ); + ent.v[ "angles" ] = ( 38,816, 207,967, -72,553 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 546,42, -198,717, 44,0967 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 830,342, 1218,7, 271,002 ); + ent.v[ "angles" ] = ( 31,6921, 207,979, -3,38119 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 831,063, 1442,47, 267,876 ); + ent.v[ "angles" ] = ( 31,6921, 207,979, -3,38119 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -853,677, 865,61, 271,714 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_camo_net_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -775,059, 731,217, 255,456 ); + ent.v[ "angles" ] = ( 38,816, 207,967, 35,447 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1169,01, 222,294, 113,582 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1168,09, -157,784, 202,32 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -809,053, -280,603, 150,167 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1173,67, -490,371, 184,947 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -900,101, -757,671, 135,902 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1089,96, -539,078, 64,9642 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1095,56, -139,361, 74,1519 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_gray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1326,27, -1103,59, 15,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_sun_lg_lng_wide_ln" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -947,777, -511,714, 449,719 ); + ent.v[ "angles" ] = ( 32,1322, 209,082, -83,3389 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_paintball_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 226863, 123066, 149556 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 191,348, -2750,22, 6,6123 ); + ent.v[ "angles" ] = ( 10, 39, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_smk_truck_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 135,304, -2740,66, 5,61442 ); + ent.v[ "angles" ] = ( 8,93908, 147,486, 0,985817 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1050,16, -164,059, 220,926 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1059,45, -196,574, 226,329 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1073,12, -170,085, 208,913 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1059,68, -341,59, 217,249 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1070,24, -345,177, 222,634 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1062,87, -341,465, 199,866 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1067,6, -207,208, 235,069 ); + ent.v[ "angles" ] = ( 31, 198, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_pntbll_light_ray_shop_md_lng_dim" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1041,51, -389,538, 208,449 ); + ent.v[ "angles" ] = ( 31,6919, 207,979, 1,61892 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 717,398, -1801,87, 54,6422 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -915,192, 526,495, 80,3322 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -800,266, 491,575, 80,2705 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 184,345, 1722,99, 46 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 594,4, 1262,37, 23 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 539,724, 1091,04, 25 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 531,824, -834,257, 41,8037 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 533,071, -545,16, 0,339389 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pntbll_steam_thck_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 306,758, -1014,34, 15,1415 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1022,49, -2902,1, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 140 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1545,98, -2838,56, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 5,00001 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2372,88, -2183,73, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 40 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2368,88, -1973,73, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 40 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -726,19, -3445,99, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 110 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -477,99, -2921,81, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 20 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 268,36, -3510,83, 50,59 ); + ent.v[ "angles" ] = ( 13,9999, 47,606, -179,951 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_police_car" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 103,34, -2802,73, -6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 28,9 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -351,812, 254,061, 121,194 ); + ent.v[ "angles" ] = ( 17, 89, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -403,855, 253,161, 120,747 ); + ent.v[ "angles" ] = ( 34, 87, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -455,94, 254,449, 121,693 ); + ent.v[ "angles" ] = ( 14,4775, 101,496, -3,96715 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -512,009, 254,746, 122,279 ); + ent.v[ "angles" ] = ( 19,026, 90,8802, -4,45222 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -588,509, 117,018, 122,319 ); + ent.v[ "angles" ] = ( 21, 202, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -588,365, 173,301, 122,022 ); + ent.v[ "angles" ] = ( 22,5176, 179,206, -7,99152 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -587,131, 224,059, 120,92 ); + ent.v[ "angles" ] = ( 37,35, 176,612, -9,2972 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -587,932, 277,191, 121,403 ); + ent.v[ "angles" ] = ( 33,4, 177,385, -8,84919 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -552,266, 32,4679, 121,566 ); + ent.v[ "angles" ] = ( 20,8105, 262,48, 22,2274 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -500,162, 33,4249, 120,904 ); + ent.v[ "angles" ] = ( 18,4435, 268,334, 24,1958 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -447,916, 32,3667, 121,571 ); + ent.v[ "angles" ] = ( 23,7793, 280,793, 29,4047 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -391,868, 32,0162, 122,247 ); + ent.v[ "angles" ] = ( 26,6135, 274,947, 26,9134 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -763,463, -1008,66, 145,997 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -956,447, -1103,86, 145,959 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -835,265, -1306,81, 125,989 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -666,835, -1306,65, 126,928 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -666,912, -1306,67, 126,922 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -835,446, -1306,9, 126,962 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -763,12, -1011,6, 145,979 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -957,231, -1103,37, 146,975 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1127,06, -1008,05, 142,124 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 15 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1127,32, -1064,03, 141,654 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 25 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1128,54, -1115,89, 140,792 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 48 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_track_omni" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1127,56, -1168,18, 141,413 ); + ent.v[ "angles" ] = ( 25,9836, 357,775, -0,940139 ); + ent.v[ "delay" ] = -85; +} diff --git a/mp_paintball/maps/mp/mp_paintball.gsc b/mp_paintball/maps/mp/mp_paintball.gsc new file mode 100644 index 0000000..a29b31c --- /dev/null +++ b/mp_paintball/maps/mp/mp_paintball.gsc @@ -0,0 +1,111 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_paintball_fx::main(); + precachemodel( "collision_physics_cylinder_32x128" ); + precachemodel( "collision_physics_64x64x10" ); + precachemodel( "collision_physics_32x32x10" ); + precachemodel( "p6_pai_fence_pole" ); + maps/mp/_load::main(); + maps/mp/mp_paintball_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_paintball" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_cylinder_32x128", "collider", ( 1071,5, -1998,5, 373,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( 1071,5, -1998,5, 262 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( 1071,5, -1998,5, 150 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( 1071,5, -1998,5, 37,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1446,5, 524,5, 401,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1446,5, 524,5, 290 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1446,5, 524,5, 178 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1446,5, 524,5, 65,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1303,5, 1611,5, 394,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1303,5, 1611,5, 283 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1303,5, 1611,5, 171 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1303,5, 1611,5, 58,5 ), ( 0, 0, 1 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -104,5, -1176,5, 9 ), ( 9,93, 310, 79,786 ) ); + spawncollision( "collision_physics_32x32x10", "collider", ( -105, -1166,5, 38 ), ( 317,842, 319,39, 76,1599 ) ); + spawncollision( "collision_physics_32x32x10", "collider", ( -96,5, -1173, 38,5 ), ( 310,109, 322,353, 74,0248 ) ); + spawncollision( "collision_physics_32x32x10", "collider", ( -93, -1180,5, 38,5 ), ( 310,109, 322,353, 74,0248 ) ); + pole1 = spawn( "script_model", ( 385, 572,5, -39 ) ); + pole1.angles = vectorScale( ( 0, 0, 1 ), 282,6 ); + pole1 setmodel( "p6_pai_fence_pole" ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + registerclientfield( "scriptmover", "police_car_lights", 1, 1, "int" ); + level thread destructible_lights(); + level.remotemotarviewleft = 35; + level.remotemotarviewright = 35; + level.remotemotarviewup = 18; + level thread glass_node_think(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2200", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1200", reset_dvars ); +} + +destructible_lights() +{ + wait 0,05; + destructibles = getentarray( "destructible", "targetname" ); + _a98 = destructibles; + _k98 = getFirstArrayKey( _a98 ); + while ( isDefined( _k98 ) ) + { + destructible = _a98[ _k98 ]; + if ( destructible.destructibledef == "veh_t6_police_car_destructible_mp" ) + { + destructible thread destructible_think( "police_car_lights" ); + destructible setclientfield( "police_car_lights", 1 ); + } + _k98 = getNextArrayKey( _a98, _k98 ); + } +} + +destructible_think( clientfield ) +{ + self waittill_any( "death", "destructible_base_piece_death" ); + self setclientfield( clientfield, 0 ); +} + +glass_node_think() +{ + wait 1; + glass_origin = ( -980,028, -959,375, 60,1195 ); + node_origin = ( -981,75, -934,5, 16 ); + node = getnearestnode( node_origin ); + while ( isDefined( node ) && node.type == "Begin" ) + { + ent = spawn( "script_model", node.origin, 1 ); + ent setmodel( level.deployedshieldmodel ); + ent hide(); + ent disconnectpaths(); + ent.origin -= vectorScale( ( 0, 0, 1 ), 64 ); + for ( ;; ) + { + level waittill( "glass_smash", origin ); + if ( distancesquared( origin, glass_origin ) < 16384 ) + { + ent.origin += vectorScale( ( 0, 0, 1 ), 64 ); + ent delete(); + return; + } + } + } +} diff --git a/mp_paintball/maps/mp/mp_paintball_amb.gsc b/mp_paintball/maps/mp/mp_paintball_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_paintball/maps/mp/mp_paintball_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_paintball/maps/mp/mp_paintball_fx.gsc b/mp_paintball/maps/mp/mp_paintball_fx.gsc new file mode 100644 index 0000000..8745773 --- /dev/null +++ b/mp_paintball/maps/mp/mp_paintball_fx.gsc @@ -0,0 +1,78 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc3" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc3(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_paintball_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_pntbll_light_ray_sun_wide_wndw" ] = loadfx( "light/fx_pntbll_light_ray_sun_wide_wndw" ); + level._effect[ "fx_pntbll_light_ray_sun_md_lng" ] = loadfx( "light/fx_pntbll_light_ray_sun_md_lng" ); + level._effect[ "fx_pntbll_light_ray_sun_md_lng_1s" ] = loadfx( "light/fx_pntbll_light_ray_sun_md_lng_1s" ); + level._effect[ "fx_pntbll_light_ray_sun_md_xlng_1s" ] = loadfx( "light/fx_pntbll_light_ray_sun_md_xlng_1s" ); + level._effect[ "fx_pntbll_light_ray_sun_md_lng_wd_1s" ] = loadfx( "light/fx_pntbll_light_ray_sun_md_lng_wd_1s" ); + level._effect[ "fx_pntbll_light_ray_sun_md_lng_wd" ] = loadfx( "light/fx_pntbll_light_ray_sun_md_lng_wd" ); + level._effect[ "fx_pntbll_light_ray_sun_lg_lng_wide" ] = loadfx( "light/fx_pntbll_light_ray_sun_lg_lng_wide" ); + level._effect[ "fx_pntbll_light_ray_sun_lg_lng_wide_ln" ] = loadfx( "light/fx_pntbll_light_ray_sun_lg_lng_wide_ln" ); + level._effect[ "fx_pntbll_light_ray_sun_md_lng_bright" ] = loadfx( "light/fx_pntbll_light_ray_sun_md_lng_bright" ); + level._effect[ "fx_pntbll_light_ray_tree_md_lng" ] = loadfx( "light/fx_pntbll_light_ray_tree_md_lng" ); + level._effect[ "fx_pntbll_light_ray_tree_md_lng_thin" ] = loadfx( "light/fx_pntbll_light_ray_tree_md_lng_thin" ); + level._effect[ "fx_pntbll_light_ray_tree_md_xlng_thin" ] = loadfx( "light/fx_pntbll_light_ray_tree_md_xlng_thin" ); + level._effect[ "fx_pntbll_light_ray_camo_net_md" ] = loadfx( "light/fx_pntbll_light_ray_camo_net_md" ); + level._effect[ "fx_pntbll_light_ray_camo_net_lng_dim" ] = loadfx( "light/fx_pntbll_light_ray_camo_net_lng_dim" ); + level._effect[ "fx_pntbll_light_ray_shop_md_lng_thin" ] = loadfx( "light/fx_pntbll_light_ray_shop_md_lng_thin" ); + level._effect[ "fx_pntbll_light_ray_shop_md_lng_dim" ] = loadfx( "light/fx_pntbll_light_ray_shop_md_lng_dim" ); + level._effect[ "fx_pntbll_light_ray_shop_md_lng_wide" ] = loadfx( "light/fx_pntbll_light_ray_shop_md_lng_wide" ); + level._effect[ "fx_light_flour_glow_yellow" ] = loadfx( "light/fx_light_flour_glow_yellow" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_light_dust_motes_xsm_short" ] = loadfx( "light/fx_concert_dust_motes_xsm_short" ); + level._effect[ "fx_light_dust_motes_sm" ] = loadfx( "light/fx_light_dust_motes_sm" ); + level._effect[ "fx_dust_motes_blowing_sm" ] = loadfx( "debris/fx_dust_motes_blowing_sm" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_mp_pntbll_steam_thck_md" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_steam_thck_md" ); + level._effect[ "fx_mp_pntbll_steam_thck_sm" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_steam_thck_sm" ); + level._effect[ "fx_mp_pntbll_steam_thck_xsm" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_steam_thck_xsm" ); + level._effect[ "fx_mp_pntbll_steam_thck_gray" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_steam_thck_gray" ); + level._effect[ "fx_mp_steam_vent_ceiling" ] = loadfx( "maps/mp_maps/fx_mp_steam_vent_ceiling" ); + level._effect[ "fx_mp_steam_vent_ceiling_lg" ] = loadfx( "maps/mp_maps/fx_mp_steam_vent_ceiling_lg" ); + level._effect[ "fx_mp_vent_steam_lite_wind" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_lite_wind" ); + level._effect[ "fx_mp_pntbll_smk_truck_md" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_smk_truck_md" ); + level._effect[ "fx_mp_pntbll_smk_truck_sm" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_smk_truck_sm" ); + level._effect[ "fx_leaves_falling_pine_nowind" ] = loadfx( "foliage/fx_leaves_falling_pine_nowind" ); + level._effect[ "fx_mp_light_police_car" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car" ); + level._effect[ "fx_light_stadium_flood" ] = loadfx( "light/fx_light_stadium_flood" ); + level._effect[ "fx_light_stadium_flood_flckr" ] = loadfx( "light/fx_light_stadium_flood_flckr" ); + level._effect[ "fx_light_recessed_cool_sm_soft" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_light_track_omni" ] = loadfx( "light/fx_light_track_omni" ); + level._effect[ "fx_mp_pntbll_paint_drips" ] = loadfx( "maps/mp_maps/fx_mp_pntbll_paint_drips" ); + level._effect[ "fx_lf_mp_paintball_sun1" ] = loadfx( "lens_flares/fx_lf_mp_paintball_sun1" ); + level._effect[ "fx_mp_light_police_car" ] = loadfx( "maps/mp_maps/fx_mp_light_police_car" ); +} + +precache_fxanim_props() +{ + level.scr_anim = []; + level.scr_anim[ "fxanim_props" ] = []; +} + +precache_fxanim_props_dlc3() +{ + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_01" ] = %fxanim_mp_paint_wires_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_02" ] = %fxanim_mp_paint_wires_02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "shop_banners" ] = %fxanim_paint_shop_banner_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "shop_banners_wall" ] = %fxanim_paint_shop_banner_02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "wires_03" ] = %fxanim_mp_paint_wires_03_anim; +} diff --git a/mp_pod/aitype/enemy_dog_mp.gsc b/mp_pod/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_pod/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_pod/character/character_mp_german_shepherd.gsc b/mp_pod/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_pod/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_pod/maps/mp/createfx/mp_pod_fx.gsc b/mp_pod/maps/mp/createfx/mp_pod_fx.gsc new file mode 100644 index 0000000..07996de --- /dev/null +++ b/mp_pod/maps/mp/createfx/mp_pod_fx.gsc @@ -0,0 +1,1430 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fireflies_mp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1226,76, -971,781, 242 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fireflies_mp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1419,88, -501,289, 269,512 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fireflies_mp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 451,737, 117,997, 243,766 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fireflies_mp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -493,889, 1388,92, 485,136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fireflies_mp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1180,41, 1275,41, 480,65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -71,0005, -3215,34, 384 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1135,75, -989,957, 226 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 311,101, 375,438, 266,486 ); + ent.v[ "angles" ] = ( 348,017, 110,067, -0,637349 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1218,49, 1514,58, 492 ); + ent.v[ "angles" ] = ( 0,749496, 3,01092, 1,85562 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1108,03, 543,943, 404,591 ); + ent.v[ "angles" ] = ( 1, 138, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -555,427, 522,075, 396,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 157 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 193,061, -565,74, 312,484 ); + ent.v[ "angles" ] = ( 359, 122, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -23,7125, -2639,98, 383,263 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -714,798, -2057,47, 385,485 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 53 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1489,15, 1038,92, 477,336 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 119 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1767,78, 1486,54, 476 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -794,909, 1567,21, 432,785 ); + ent.v[ "angles" ] = ( 1,20835, 329,016, -0,829924 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -530,794, 1031,93, 417,091 ); + ent.v[ "angles" ] = ( 2,18886, 338,017, -1,54593 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 390,071, -2196,56, 378,14 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 72 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -424,345, -174,793, 340,248 ); + ent.v[ "angles" ] = ( 1, 91, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1302,3, -888,747, 242 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 599,595, -147,909, 255,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 4 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 381,011, 254,308, 247,044 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 384,265, 835,494, 312,264 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 274 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -505,729, 1664,08, 487,204 ); + ent.v[ "angles" ] = ( 359, 231, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1311,2, 1333,55, 484 ); + ent.v[ "angles" ] = ( 0,707204, 5,99248, -0,707242 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -226,51, 752,548, 403,484 ); + ent.v[ "angles" ] = ( 357,191, 129,946, 0,982957 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 778,955, -272,959, 438,331 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 180,728, -1144,3, 300,436 ); + ent.v[ "angles" ] = ( 0,918725, 64,1467, 2,66656 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1793,64, -167,128, 360,125 ); + ent.v[ "angles" ] = ( 359,251, 46,9885, 1,85474 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -929,658, 409,406, 446,882 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -932,932, -1389,66, 452,259 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -943,596, 1370,28, 529 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1330,71, -333,409, 246,283 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1441,99, -1326,19, 295,396 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 835,927, -1432,59, 300,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 326,513, -1871,4, 375,301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -255,537, -2265,77, 390,305 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 117 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1421,8, -466,548, 452,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -772,525, 940,723, 411,179 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2692,49, -759,168, 375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1757,72, 347,748, 315,993 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 126 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3152,64, -259,096, 492,929 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 378,526, 2161,94, 592,01 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2432,44, 353,349, 245,766 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -646,382, -3409,68, 328,329 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 100 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,13, -4535,93, 360,871 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 869,729, -3419,34, 281,051 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 71 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1129,01, -2307,45, 473,803 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 65 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1893,54, -1638,46, 246,812 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2153,02, -740,272, 197,823 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -812,965, -2962, 92,8236 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 120 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1754,96, -2700,14, 132,284 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2597,97, 1050,47, 111,061 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 105 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1212,61, 2337,14, 463,807 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 341 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 708,806, 1287,9, 465,625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 345 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1368,98, 2185,74, 873,658 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1989,69, -568,475, 262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -143,425, 3051,55, 518,887 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -930,569, 3169, 470,929 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2519,26, 1524,79, 226,836 ); + ent.v[ "angles" ] = ( 0, 96, 1 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2077,68, 2536,77, 493,205 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 338 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1213,61, -1153,03, 412,263 ); + ent.v[ "angles" ] = ( 1,53228, 6,01764, 1,28563 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2162,71, 511,684, 355,628 ); + ent.v[ "angles" ] = ( 0,719429, 54, 0,694802 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2031,5, 1221,73, 496,1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -532,862, -531,82, 243,639 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 192 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -943,247, -554,146, 207,382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -722,988, -288,497, 205,704 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 340 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2095,95, 880,209, 420,376 ); + ent.v[ "angles" ] = ( 355,761, 39,8424, 4,25103 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2089,01, 1,37489, 347,185 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -218,633, 512,527, 407,404 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1144,42, -142,489, 293,644 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 324,655, 67,6518, 353,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 431,622, 164,633, 284,519 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1147,22, 335,384, 429,336 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -603,073, 261,882, 479,747 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -861,765, 145,118, 446,332 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 304,88, -1794,7, 409,378 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1006,48, -186,034, 448,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1304,34, 126,079, 293,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 803,876, -144,25, 249,721 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 963,466, -731,866, 240 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 100 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2715,75, 1428,94, 673,057 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1698,98, -1092,66, 48,3447 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2319,19, 620,92, 30 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -619,699, -286,862, 113,705 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 304 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -207,221, 108,913, 405,778 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3852,96, 547,224, 674,231 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1317,58, -3090,34, 447,926 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1522,8, -4506,55, 449,851 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 218,093, -4134,46, 197,488 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -224,277, -4116,03, 232,138 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 694,296, -4196,7, 214,493 ); + ent.v[ "angles" ] = ( 14,979, 90,8944, -0,80343 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -618,011, -499,246, 61 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -175,28, -246,959, 344,487 ); + ent.v[ "angles" ] = ( 351,198, 124,855, 1,88608 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,955, 339,648, 407,05 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 64,7574, 1237,37, 458,272 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1119,32, 2555,25, 891,613 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1644,84, -1443,57, 330 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 73 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 385,201, -1084,07, 327,366 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -419,237, -1591,78, 401,419 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -606,739, -1663,17, 716,738 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 18 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -558,364, 512,538, 738,683 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 18 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1302,73, 2046,75, 786,158 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 693,483, 1207,65, 737,382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 336 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2112,69, -413,329, 616,817 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 106 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -108,984, -850,984, 392,053 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -233,417, -919,94, 383,126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -249,144, -786,257, 388,965 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fireflies_mp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -195,85, -848,004, 351,799 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -57,2, -713,36, 448,576 ); + ent.v[ "angles" ] = ( 90, 0, -135,3 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3,7085, -847,484, 446,878 ); + ent.v[ "angles" ] = ( 90, 180, 89,7001 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -62,5544, -982,449, 447,222 ); + ent.v[ "angles" ] = ( 90, 333,435, -71,8648 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -226,815, -1640,51, 500,793 ); + ent.v[ "angles" ] = ( 90, 0, 179,7 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -362,136, -1697,25, 500,333 ); + ent.v[ "angles" ] = ( 90, 0, 135 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -420,498, -1828,47, 500,365 ); + ent.v[ "angles" ] = ( 90, 180, -90 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -363,555, -1965,86, 500,461 ); + ent.v[ "angles" ] = ( 90, 180, -135 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,758, -2023,49, 500,15 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -93,9819, -1968,79, 500,641 ); + ent.v[ "angles" ] = ( 90, 0, -45,4 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -537,503, 191,582, 519,53 ); + ent.v[ "angles" ] = ( 90, 180, 89,9 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -595,317, 327,708, 520,42 ); + ent.v[ "angles" ] = ( 90, 0, -135,1 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -865,553, 324,85, 519,772 ); + ent.v[ "angles" ] = ( 90, 0, 134,9 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1236,63, -1439,24, 518,982 ); + ent.v[ "angles" ] = ( 90, 0, 134,9 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -967,183, -1436,57, 519,53 ); + ent.v[ "angles" ] = ( 90, 0, -135,9 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -910,496, -1573,12, 520,158 ); + ent.v[ "angles" ] = ( 90, 7,12502, -82,875 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 501,392, -2429,01, 510,882 ); + ent.v[ "angles" ] = ( 90, 0, 179,4 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 366,539, -2484,48, 512,101 ); + ent.v[ "angles" ] = ( 90, 180, -45,8 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 310,498, -2621,31, 512,686 ); + ent.v[ "angles" ] = ( 90, 0, 89,7 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 367,253, -2755,45, 512,263 ); + ent.v[ "angles" ] = ( 90, 0, 44,6998 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_pod_sun" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -94218, 41320, 97879,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4,5578, -847,255, 393,357 ); + ent.v[ "angles" ] = ( 90, 180, 89,7001 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -56,7957, -713,514, 393,484 ); + ent.v[ "angles" ] = ( 90, 0, -135,3 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -324,875, -718,732, 447,045 ); + ent.v[ "angles" ] = ( 90, 0, -45,2999 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -62,6559, -982,396, 395,403 ); + ent.v[ "angles" ] = ( 90, 333,435, -71,8648 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -379,354, -844,443, 448,08 ); + ent.v[ "angles" ] = ( 90, 180, 89,7001 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -67,403, -971,812, 449,662 ); + ent.v[ "angles" ] = ( 90, 0, 134,7 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -67,025, -717,539, 450,566 ); + ent.v[ "angles" ] = ( 90, 0, 45,1999 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -116,844, -732,226, 471,999 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -110,167, -964,37, 476,001 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -276,255, -892,915, 472,875 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -961,764, -1441,76, 466,855 ); + ent.v[ "angles" ] = ( 90, 0, -135,9 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -909,488, -1572,81, 465,803 ); + ent.v[ "angles" ] = ( 90, 7,12502, -82,875 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1231,82, -1432,99, 457,8 ); + ent.v[ "angles" ] = ( 90, 0, 134,9 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -862,402, 329,431, 467,423 ); + ent.v[ "angles" ] = ( 90, 0, 134,9 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -593,448, 327,146, 467,77 ); + ent.v[ "angles" ] = ( 90, 0, -135,1 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -537,594, 190,261, 466,265 ); + ent.v[ "angles" ] = ( 90, 180, 89,9 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -13,08, -841,886, 447,644 ); + ent.v[ "angles" ] = ( 90, 0, 88,7 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -671,735, -1452,93, 407,471 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 484,845, -2221,58, 387,412 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 493,695, -1709,16, 468,865 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 742,839, -1752,04, 386,533 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 684,763, -1372,99, 437,405 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 855,735, -1137,79, 332,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 880,741, -785,637, 250 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1125,49, -148,525, 271,853 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 796,326, -117,532, 247,723 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 585,81, 629,491, 296,022 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_flies_dragonflies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 678,622, 286,452, 260,159 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 898,204, -35,593, 319,237 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 940,69, 151,682, 285,772 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1299,22, -106,578, 296,384 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 940,25, -1081,21, 294 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 478,145, -2215,22, 387,254 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -637,105, -1670,92, 460,736 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -324,751, -1242,28, 389,048 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -889,086, -752,901, 458,656 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1642,78, 284,604, 448,521 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1052,42, 739,097, 471,89 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -835,749, 1020,36, 469,025 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -359,855, 924,162, 428,443 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -389,653, 1273,33, 454,797 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -745,921, 1582,95, 472,558 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -85,3774, 815,576, 399,827 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1117,97, 1777,7, 530,223 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -781,707, 135,138, 551,875 ); + ent.v[ "angles" ] = ( 1,43887, 270,018, 1,38938 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -616,882, 203,704, 551,875 ); + ent.v[ "angles" ] = ( 1,43887, 270,018, 1,38938 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1177,08, -1573,61, 550,875 ); + ent.v[ "angles" ] = ( 1,43887, 270,018, 1,38938 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1078,67, -1442,69, 550,875 ); + ent.v[ "angles" ] = ( 1,43887, 270,018, 1,38938 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 185,115, -1386,15, 385,562 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 585,667, -499,697, 459,089 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 528,278, -517,8, 466,055 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -121,366, 510,427, 579,13 ); + ent.v[ "angles" ] = ( 2, 225, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1437,35, -959,386, 318,471 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1376,62, -1212,96, 330,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -229,138, -1640,49, 442,943 ); + ent.v[ "angles" ] = ( 90, 0, 179,7 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -364,477, -1698,27, 446,177 ); + ent.v[ "angles" ] = ( 90, 0, 135 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -419,608, -1830,77, 447,047 ); + ent.v[ "angles" ] = ( 90, 180, -90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -367,52, -1963,01, 445,653 ); + ent.v[ "angles" ] = ( 90, 180, -135 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,904, -2023,61, 444,986 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -94,8223, -1969,51, 446,785 ); + ent.v[ "angles" ] = ( 90, 0, -45,4 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -36,807, -1835,21, 497,328 ); + ent.v[ "angles" ] = ( 90, 0, -90,3999 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -36,4869, -1832,02, 444,518 ); + ent.v[ "angles" ] = ( 90, 0, -90,3999 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -600,111, 320,301, 522,771 ); + ent.v[ "angles" ] = ( 90, 0, -135,1 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -601,165, 320,94, 519,325 ); + ent.v[ "angles" ] = ( 90, 0, 45 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -545,638, 194,63, 521,671 ); + ent.v[ "angles" ] = ( 90, 180, -90,1 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -858,296, 318,701, 522,551 ); + ent.v[ "angles" ] = ( 90, 0, -45,5999 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_glass_drop_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -855,148, 62,0831, 520,976 ); + ent.v[ "angles" ] = ( 90, 4,76364, -130,236 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -789,547, 316,146, 441,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -628,523, 301,407, 426,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 245 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 589,817, -573,24, 328,18 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 78 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 501,177, -363,615, 329,482 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 333 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1010,69, -1673,16, 418,264 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 80,248, 754,344, 361,407 ); + ent.v[ "angles" ] = ( 6, 344, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 358,623, 710,229, 320,845 ); + ent.v[ "angles" ] = ( 342,014, 159,886, 0,439226 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 26,8153, -2822,9, 423,996 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -689,693, -1921,21, 388,645 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -973,589, -1500,11, 443,491 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 371,779, -1889,65, 679,358 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -109,818, -1926,96, 692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -375,706, -1912,02, 692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -231,786, -1628,93, 692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 546,031, -1615,52, 678,754 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 214,801, -1482,93, 676,349 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -461,181, -1221,92, 539,465 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -389,868, -1230,64, 536,733 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1193,6, -834,125, 562,809 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1091,43, -717,875, 571,465 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1430,13, -334,457, 567,884 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1430,13, -413,411, 576,943 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1628,1, -172,153, 576,795 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1665,15, -61,875, 578,326 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1686,65, -721,875, 641,751 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -777,308, -2406,36, 535,786 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 415,074, -2419,36, 729,301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 290,929, -2530,34, 730,934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 296,043, -2714,21, 730,879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 427,008, -2822,36, 728,907 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 864,082, -408,114, 579,424 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 577,316, -31,0007, 527,389 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 532,892, -87,9131, 541,986 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -255,081, 983,53, 799,184 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -422,347, 984,819, 798,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1182,13, 1284,51, 765,045 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -914,987, 1414,33, 795,677 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -902,981, 976,77, 790,569 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1012,52, 1417,48, 756,971 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -430,28, 1407,94, 777,131 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -147,765, 508,216, 629 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -193,184, 348,634, 629 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1275,67, 400,846, 578,17 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -538,601, -2469,88, 671,914 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 810,209, -591,445, 581,873 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 218,78, -141,81, 577,032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 153,95, -76,1435, 589,773 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 310,598, -321,507, 580,554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -602,675, -899,521, 499,723 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -758,965, -847,294, 498,835 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -844,277, -694,496, 423,038 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -971,929, -570,116, 422,651 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1157,35, -371,829, 415,307 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1160,61, -526,336, 414,504 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1186,71, 75,9713, 704,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1181,12, 68,9562, 576,126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -821,779, -2569,21, 498,206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -703,335, -2540,54, 519,213 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -648,911, -1274,56, 503,025 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -821,205, -1276,11, 501,343 ); + ent.v[ "angles" ] = ( 0, 136, -2 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1045,18, -2842,39, 537,559 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 950,78, -2749,47, 536,74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 269,096, -1883,85, 811,077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 426,751, -1862,72, 811,048 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -225,008, -2685,03, 577,589 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -329,146, -2465,74, 570,06 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -219,779, -2576,79, 568,973 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -941,45, -1842,78, 571,449 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1127, -658,899, 380,365 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1248,41, -366,389, 378,606 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1004,72, 226,751, 396,945 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 796,164, 495,222, 376,434 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 211,266, 652,103, 472,895 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -684,915, 405,47, 535,046 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -56,7255, -683,297, 461,051 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -67,9285, -1010,08, 462,892 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -149,189, -1056,54, 461,062 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -886,288, -1581,54, 534,044 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -953,331, -1421,8, 534,049 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -988,449, -1755,56, 536,133 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -377,369, -1680,41, 515,052 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -375,154, -1986,11, 515,052 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -223,123, -2045,63, 505,033 ); + ent.v[ "angles" ] = ( 0, 66, 1 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,094, 53,7913, 240,816 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -152,339, -1220,45, 335,777 ); + ent.v[ "angles" ] = ( 7, 31, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1138,71, -80,3042, 266,042 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 172 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_fog_drift_slow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1722,82, 229,222, 418,093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_pod_water_drips" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 647,477, -2460,39, 728,65 ); + ent.v[ "angles" ] = ( 270, 0, 40 ); + ent.v[ "delay" ] = -93; +} diff --git a/mp_pod/maps/mp/mp_pod.gsc b/mp_pod/maps/mp/mp_pod.gsc new file mode 100644 index 0000000..e04b2c6 --- /dev/null +++ b/mp_pod/maps/mp/mp_pod.gsc @@ -0,0 +1,72 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_pod_fx::main(); + precachemodel( "p_rus_door_white_frame_double" ); + precachemodel( "p6_pak_old_plywood" ); + precachemodel( "collision_clip_wall_32x32x10" ); + precachemodel( "collision_physics_wall_32x32x10" ); + precachemodel( "collision_physics_wall_128x128x10" ); + precachemodel( "collision_physics_wall_256x256x10" ); + precachemodel( "collision_physics_256x256x10" ); + precachemodel( "collision_missile_128x128x10" ); + precachemodel( "collision_clip_wall_64x64x10" ); + precachemodel( "collision_physics_256x256x256" ); + maps/mp/_load::main(); + maps/mp/mp_pod_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_pod" ); + prop1 = spawn( "script_model", ( 517,264, -627,226, 323 ) ); + prop1.angles = vectorScale( ( 0, 1, 0 ), 116,6 ); + prop1 setmodel( "p_rus_door_white_frame_double" ); + prop2 = spawn( "script_model", ( 62,1517, -1647,78, 481,602 ) ); + prop2.angles = vectorScale( ( 0, 1, 0 ), 35,2 ); + prop2 setmodel( "p6_pak_old_plywood" ); + prop3 = spawn( "script_model", ( 25,9997, -1673,49, 479,903 ) ); + prop3.angles = vectorScale( ( 0, 1, 0 ), 35,2 ); + prop3 setmodel( "p6_pak_old_plywood" ); + spawncollision( "collision_clip_wall_32x32x10", "collider", ( -1725, 2300, 514 ), ( 0, 1, 0 ) ); + spawncollision( "collision_clip_wall_32x32x10", "collider", ( -473, -2482, 412 ), vectorScale( ( 0, 1, 0 ), 14 ) ); + spawncollision( "collision_physics_wall_32x32x10", "collider", ( -473, -2482, 412 ), vectorScale( ( 0, 1, 0 ), 14 ) ); + spawncollision( "collision_physics_wall_128x128x10", "collider", ( -87, -1470,5, 751,5 ), vectorScale( ( 0, 1, 0 ), 34,2 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 1287,5, -2468, 315 ), vectorScale( ( 0, 1, 0 ), 18,1 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 1047,5, -2468, 315 ), vectorScale( ( 0, 1, 0 ), 18,1 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 1047,5, -2627,5, 165,5 ), vectorScale( ( 0, 1, 0 ), 64,1 ) ); + spawncollision( "collision_missile_128x128x10", "collider", ( -911,5, -653, 496 ), ( 273, 45,0999, 90 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( 1356, 50, 358 ), ( 5,64745, 114,9, 6 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( 1364, 32, 349 ), ( 1,3883, 292,6, -4 ) ); + spawncollision( "collision_clip_wall_64x64x10", "collider", ( 1423, -127, 349 ), ( 1,3883, 285,8, -4 ) ); + spawncollision( "collision_physics_256x256x256", "collider", ( 1218, -2232, 244 ), vectorScale( ( 0, 1, 0 ), 30 ) ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level thread killstreak_init(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2400", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); +} + +killstreak_init() +{ + while ( !isDefined( level.missile_swarm_flyheight ) ) + { + wait 1; + } + level.missile_swarm_flyheight = 6000; +} diff --git a/mp_pod/maps/mp/mp_pod_amb.gsc b/mp_pod/maps/mp/mp_pod_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_pod/maps/mp/mp_pod_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_pod/maps/mp/mp_pod_fx.gsc b/mp_pod/maps/mp/mp_pod_fx.gsc new file mode 100644 index 0000000..e62ae09 --- /dev/null +++ b/mp_pod/maps/mp/mp_pod_fx.gsc @@ -0,0 +1,76 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc4" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc4(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_pod_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_pod_glass_drop_trail" ] = loadfx( "maps/mp_maps/fx_mp_pod_glass_drop_trail" ); + level._effect[ "fx_mp_pod_glass_drop_runner" ] = loadfx( "maps/mp_maps/fx_mp_pod_glass_drop_runner" ); + level._effect[ "fx_mp_pod_water_spill" ] = loadfx( "maps/mp_maps/fx_mp_pod_water_spill" ); + level._effect[ "fx_mp_pod_water_spill_02" ] = loadfx( "maps/mp_maps/fx_mp_pod_water_spill_02" ); + level._effect[ "fx_mp_pod_water_spill_splash" ] = loadfx( "maps/mp_maps/fx_mp_pod_water_spill_splash" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_pod_water_drips" ] = loadfx( "maps/mp_maps/fx_mp_pod_water_drips" ); + level._effect[ "fx_fog_drift_slow" ] = loadfx( "fog/fx_fog_drift_slow" ); + level._effect[ "fx_fog_drift_slow_md" ] = loadfx( "fog/fx_fog_drift_slow_md" ); + level._effect[ "fx_fog_drift_slow_sm" ] = loadfx( "fog/fx_fog_drift_slow_sm" ); + level._effect[ "fx_fog_drift_slow_vista" ] = loadfx( "fog/fx_fog_drift_slow_vista" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_insects_fireflies_mp" ] = loadfx( "bio/insects/fx_insects_fireflies_mp" ); + level._effect[ "fx_insects_flies_dragonflies" ] = loadfx( "bio/insects/fx_insects_flies_dragonflies" ); + level._effect[ "fx_insects_roaches" ] = loadfx( "bio/insects/fx_insects_roaches" ); + level._effect[ "fx_insects_roaches_fast" ] = loadfx( "bio/insects/fx_insects_roaches_fast" ); + level._effect[ "fx_insects_roaches_short" ] = loadfx( "bio/insects/fx_insects_roaches_short" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_lf_mp_pod_sun" ] = loadfx( "lens_flares/fx_lf_mp_pod_sun" ); +} + +precache_fxanim_props() +{ + level.scr_anim = []; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "sheet_med" ] = %fxanim_gp_cloth_sheet_med_anim; +} + +precache_fxanim_props_dlc4() +{ + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_01" ] = %fxanim_mp_pod_wire_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_02" ] = %fxanim_mp_pod_wire_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_03" ] = %fxanim_mp_pod_wire_03_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_04" ] = %fxanim_mp_pod_wire_04_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_05" ] = %fxanim_mp_pod_wire_05_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_06" ] = %fxanim_mp_pod_wire_06_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_07" ] = %fxanim_mp_pod_wire_07_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_08" ] = %fxanim_mp_pod_wire_08_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "wire_09" ] = %fxanim_mp_pod_wire_09_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "shirt03" ] = %fxanim_gp_shirts03_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_clump_01" ] = %fxanim_mp_pod_vine_clump_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_clump_02" ] = %fxanim_mp_pod_vine_clump_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_clump_long" ] = %fxanim_mp_pod_vine_clump_long_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_med_leafy" ] = %fxanim_mp_pod_vine_med_leafy_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_med_bare" ] = %fxanim_mp_pod_vine_med_bare_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_long_leafy" ] = %fxanim_mp_pod_vine_long_leafy_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_long_bare" ] = %fxanim_mp_pod_vine_long_bare_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "bushy_clump_01" ] = %fxanim_mp_pod_bushy_clump_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "bushy_clump_02" ] = %fxanim_mp_pod_bushy_clump_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "vine_loops_pod" ] = %fxanim_mp_pod_vine_loops_pod_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "pool_wires" ] = %fxanim_mp_pod_pool_wires_anim; +} diff --git a/mp_raid/aitype/enemy_dog_mp.gsc b/mp_raid/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_raid/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_raid/character/character_mp_german_shepherd.gsc b/mp_raid/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_raid/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_raid/maps/mp/createart/mp_raid_art.gsc b/mp_raid/maps/mp/createart/mp_raid_art.gsc new file mode 100644 index 0000000..08536db --- /dev/null +++ b/mp_raid/maps/mp/createart/mp_raid_art.gsc @@ -0,0 +1,25 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_raid", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_raid/maps/mp/createfx/mp_raid_fx.gsc b/mp_raid/maps/mp/createfx/mp_raid_fx.gsc new file mode 100644 index 0000000..f70347a --- /dev/null +++ b/mp_raid/maps/mp/createfx/mp_raid_fx.gsc @@ -0,0 +1,1305 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( -335,014, 38495,6, 415,011 ); + ent.v[ "angles" ] = ( 273, 270, 74,9951 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( 385,599, 38027,9, 220,015 ); + ent.v[ "angles" ] = ( 284,073, 333,327, 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( 5380,19, 36603,4, 811,309 ); + ent.v[ "angles" ] = ( 274,468, 51,6975, -66,5686 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( 4341,51, 36784,6, -529,778 ); + ent.v[ "angles" ] = ( 274,759, 307,533, 37,5384 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_fire01" ); + ent.v[ "origin" ] = ( 116,356, 38955,9, -78,9206 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_fire01" ); + ent.v[ "origin" ] = ( -458,839, 38669,5, 446,002 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_fire01" ); + ent.v[ "origin" ] = ( 4262,06, 37479,3, -514,372 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_fire01" ); + ent.v[ "origin" ] = ( 5389,04, 37565,8, 681,796 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( -2033,43, 16362,4, -2305,97 ); + ent.v[ "angles" ] = ( 282,124, 331,347, 13,9276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_fire01" ); + ent.v[ "origin" ] = ( -2055,39, 16765,4, -2494,9 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_fire01" ); + ent.v[ "origin" ] = ( 9126,21, 22911,5, -2575,16 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( 9041,08, 22750,7, -2293,29 ); + ent.v[ "angles" ] = ( 275,277, 165,602, -179,473 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_vista_smoke01" ); + ent.v[ "origin" ] = ( -702,686, 28318,9, -2988,36 ); + ent.v[ "angles" ] = ( 273,724, 346,869, -0,744865 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1570,2, 3268,31, 182,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 264 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1458,32, 1837,96, 283,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2840,29, 2492,75, 229,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 4457,68, 3364,81, 183,125 ); + ent.v[ "angles" ] = ( 48, 269, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2864,19, 4444,88, 218,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1057,49, 3476,24, 222,721 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 4472,9, 3429,78, 81,125 ); + ent.v[ "angles" ] = ( 0, 272, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2773,22, 4168,94, 68,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 24 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1839,08, 2982,57, 157,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2618,07, 3025,36, 160,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2249,3, 3280,52, 174,125 ); + ent.v[ "angles" ] = ( 359, 92, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2042,28, 2969,79, 132,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2417,61, 2988,05, 132,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2555,94, 4345,28, 42 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2035,52, 4437,81, 41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 267,176, 2543,58, 215,324 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 662,252, 4602,45, 82,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2256,39, 2170,38, 177,921 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2227,1, 1483,85, 170,554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2548,51, 1674,13, 148,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 669,767, 2659,14, 158,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 933,04, 4241,18, 49,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2470,71, 4065,26, 54,8949 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 2675,31, 2365,71, 193,283 ); + ent.v[ "angles" ] = ( 341,825, 253,03, -113,609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 1636,66, 2338,39, 197,022 ); + ent.v[ "angles" ] = ( 337,645, 321,61, -96,6763 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 87,1887, 2638,91, 166,092 ); + ent.v[ "angles" ] = ( 339,409, 331,009, 10,0087 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( -252,816, 3026,72, 116,125 ); + ent.v[ "angles" ] = ( 333,165, 20,0037, -109,479 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -83,165, 3138,7, 129,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 444,242, 3244,06, 133,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 783,778, 3266,36, 127,117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 306,112, 2824,61, 187,802 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 410,621, 2412,94, 199,438 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 103,452, 2576,1, 214,352 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1809,97, 2300,93, 152,472 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 2253,82, 2973,42, 121,358 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 4019,31, 2644,56, 81,3365 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1485,76, 3789,41, 108,642 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 1583,43, 3784,13, 92,0721 ); + ent.v[ "angles" ] = ( 340,973, 148,423, -142,194 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 2130,71, 1911,84, 116,229 ); + ent.v[ "angles" ] = ( 270, 359,684, 7,31557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 2163,69, 1451,98, 94,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 2556,04, 2819,89, 59 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1938,94, 3148,42, 59 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 2741,53, 2792,23, 147,099 ); + ent.v[ "angles" ] = ( 21,708, 139,467, 177,77 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 3476,35, 3047,28, 85,1716 ); + ent.v[ "angles" ] = ( 26,5851, 127,603, 179,095 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 1396,98, 3614,54, 124,111 ); + ent.v[ "angles" ] = ( 16,5285, 61,7306, 179,079 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 1384,32, 3618,21, 124,939 ); + ent.v[ "angles" ] = ( 17,2037, 115,706, -174,299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 2743,99, 2782,21, 146,665 ); + ent.v[ "angles" ] = ( 31,433, 230,02, -155,467 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 3484,51, 3046,16, 82,2246 ); + ent.v[ "angles" ] = ( 28,8046, 20,5274, 149,312 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 1477,99, 2228,48, 251,91 ); + ent.v[ "angles" ] = ( 31,4086, 308,503, 0,947976 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 1480,2, 2236,83, 251,82 ); + ent.v[ "angles" ] = ( 32,1257, 50,5291, -9,14066 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 1273,02, 1889,25, 187,277 ); + ent.v[ "angles" ] = ( 31,5844, 127,511, 179,05 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 1282,52, 1888,05, 187,7 ); + ent.v[ "angles" ] = ( 23,2899, 32,8863, 145,556 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 242,026, 3553,63, 131,257 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 695,195, 3094,85, 190,647 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 1274,79, 2006,62, 219,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 2730,94, 2101,33, 178 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 3054,51, 2972,42, 163,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 3845,61, 3052,19, 66 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 521,991, 3847,83, 47,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 118,379, 3142,13, 154,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 654,403, 3159,72, 164 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 707,174, 2169,13, 234,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 947,036, 1543,42, 223,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 1884,75, 4039,39, 47 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 3828,62, 3977,96, 63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( -3879,38, 4818,65, 1887,61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( -3877,93, 4819,26, 1639,77 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( 8690,76, 5171,73, 2008,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "origin" ] = ( 8690,49, 5170,3, 1762,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4673,12, 2616,92, 194,58 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 965,586, 2120,53, 273,757 ); + ent.v[ "angles" ] = ( 270, 359,684, 7,31557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_raid" ); + ent.v[ "origin" ] = ( 4432,48, 3212,44, 29,125 ); + ent.v[ "angles" ] = ( 300, 112, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_raid" ); + ent.v[ "origin" ] = ( 1568,72, 3097,72, 104,125 ); + ent.v[ "angles" ] = ( 301, 112, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 472,677, 3543,45, 210,105 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 2841,97, 3220,63, 214,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_raid" ); + ent.v[ "origin" ] = ( 1544,25, 2895,5, 97,125 ); + ent.v[ "angles" ] = ( 300, 112, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2146,67, 4179,49, 23 ); + ent.v[ "angles" ] = ( 270, 354,56, -71,5595 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2157,44, 4232,38, 23 ); + ent.v[ "angles" ] = ( 270, 357,138, -121,138 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2144,8, 4215,62, 23 ); + ent.v[ "angles" ] = ( 270, 4,39871, -112,399 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2174,13, 4143,68, 23 ); + ent.v[ "angles" ] = ( 270, 0, -39 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2157,75, 4159,17, 23 ); + ent.v[ "angles" ] = ( 270, 357,663, -49,6627 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2335,08, 4212,65, 23 ); + ent.v[ "angles" ] = ( 270, 357,797, 101,203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2335,46, 4179,08, 23 ); + ent.v[ "angles" ] = ( 270, 6,00901, 63,991 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2324,58, 4158,48, 23 ); + ent.v[ "angles" ] = ( 270, 2,5448, 45,4551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2324,37, 4233,47, 23 ); + ent.v[ "angles" ] = ( 270, 1,78991, 122,21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2308,8, 4247,75, 23 ); + ent.v[ "angles" ] = ( 270, 352,875, 143,125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_lg" ); + ent.v[ "origin" ] = ( 2169,65, 4198,67, 23 ); + ent.v[ "angles" ] = ( 270, 0, -92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2174,86, 4249,38, 23 ); + ent.v[ "angles" ] = ( 270, 0, -133 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_sm" ); + ent.v[ "origin" ] = ( 2308,81, 4143,78, 23 ); + ent.v[ "angles" ] = ( 270, 0, 37 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_hot_tub_lg" ); + ent.v[ "origin" ] = ( 2312,64, 4195,25, 23 ); + ent.v[ "angles" ] = ( 270, 0, 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1058,62, 2318,52, 198,125 ); + ent.v[ "angles" ] = ( 270, 359,684, 7,31557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 862,2, 3581, 136,34 ); + ent.v[ "angles" ] = ( 270, 359,684, 7,31557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1006,62, 3760,8, 138,024 ); + ent.v[ "angles" ] = ( 270, 359,684, 7,31557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_raid_sun1" ); + ent.v[ "origin" ] = ( -59885,7, 82819,7, 38855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4672,32, 2744,75, 194,496 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4670,92, 2873,66, 194,709 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4673,6, 3000,55, 193,443 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4674,44, 3128,55, 194,45 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4673,27, 3257,52, 194,669 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4673,47, 3384,18, 193,374 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 4672,08, 3511,71, 193,483 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 3573,59, 3281,82, 48,7316 ); + ent.v[ "angles" ] = ( 347,036, 10,4759, 152,014 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_fumes_vent_xsm_int" ); + ent.v[ "origin" ] = ( 3775,89, 3476,12, 47,4129 ); + ent.v[ "angles" ] = ( 348,404, 250,521, 5,65722 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4173,32, 3557,12, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4173,06, 3087,33, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4173,66, 2974,91, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4173,85, 2863,77, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4173,75, 2751,49, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4174,05, 2638,94, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4173,77, 2528,19, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4350,43, 3086,69, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4350,16, 2976,39, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4349,73, 2863,83, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4350,24, 2751,48, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4350,21, 2639,29, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4349,9, 2528,07, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4528,31, 2527,97, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4528,33, 2640,91, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4527,73, 2752,88, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4528,54, 2864,9, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4527,59, 2976,2, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4527,96, 3087,72, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4528,22, 3575,97, 207,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3455,01, 2566,52, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3311,11, 2566,21, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3311,71, 2368,27, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3311,94, 2170,06, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3456,08, 2171,55, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3456,76, 2369,99, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 3388,08, 2406,08, 74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 3777,36, 2338,37, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 3904,21, 2337,48, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4033,09, 2338,31, 159,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4023,42, 2515,77, 180,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 4023,98, 2475,35, 180,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2998,04, 2615,71, 219,091 ); + ent.v[ "angles" ] = ( 89, 359,994, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2995,96, 2667,16, 220,756 ); + ent.v[ "angles" ] = ( 89, 359,994, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2996,11, 2719,36, 219,681 ); + ent.v[ "angles" ] = ( 89, 359,994, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2996,12, 2771,35, 218,942 ); + ent.v[ "angles" ] = ( 89, 359,994, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2984,31, 2343,12, 234,796 ); + ent.v[ "angles" ] = ( 89, 359,994, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2931,17, 2342,05, 234,867 ); + ent.v[ "angles" ] = ( 89, 359,994, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2880,13, 2343,2, 233,887 ); + ent.v[ "angles" ] = ( 89, 359,994, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light_picture" ); + ent.v[ "origin" ] = ( 2758,9, 2393,12, 234,991 ); + ent.v[ "angles" ] = ( 89, 359,994, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 2905,52, 2707,55, 258,875 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist" ); + ent.v[ "origin" ] = ( 1635,52, 4393,23, 40,9837 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1417,74, 3343,87, 244,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1345,17, 3343,86, 244,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1095,11, 3404,98, 244,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1095,36, 3553,4, 244,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1444,98, 3549,91, 244,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1485,68, 1819,49, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1422,08, 1819,86, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1422,32, 1757,04, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1485,79, 1756,85, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1486,93, 1693,35, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1421,9, 1693,06, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1422,03, 1631,29, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1486,17, 1630,41, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1422,61, 1544,35, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1485,01, 1544,56, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1486,94, 1480,97, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1422,97, 1479,91, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1343,03, 1544,72, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1344,49, 1480,37, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1279,76, 1544,85, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1279,7, 1479,63, 356,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 3148,26, 2146,19, 327,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 3148,31, 2189,5, 327,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 3148,23, 2233,2, 327,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3631,35, 3256,47, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3685,02, 3281,8, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3733,82, 3320,03, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3773,57, 3367, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3801,08, 3420,76, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3804,35, 3652,71, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3775,95, 3705,73, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3735,49, 3751,35, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3688,88, 3790,17, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3632,56, 3817,05, 168 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2170,28, 848,559, 110 ); + ent.v[ "angles" ] = ( 313,957, 279,447, 0,749994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2313,58, 873,095, 112,254 ); + ent.v[ "angles" ] = ( 313,957, 279,447, 0,749994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2253,39, 858,688, 115,831 ); + ent.v[ "angles" ] = ( 313,957, 279,447, 0,749994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2213,63, 838,199, 155,075 ); + ent.v[ "angles" ] = ( 346,567, 285,443, 7,64939 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2209,36, 787,938, 125,494 ); + ent.v[ "angles" ] = ( 313,957, 279,447, 0,749994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_lg" ); + ent.v[ "origin" ] = ( 2286,19, 708,541, 117,316 ); + ent.v[ "angles" ] = ( 294, 179,999, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( 2151,25, 809,904, 143,179 ); + ent.v[ "angles" ] = ( 291,203, 187,763, 171,68 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke" ); + ent.v[ "origin" ] = ( 2338,18, 707,495, 110,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2261,84, 868,519, 119,843 ); + ent.v[ "angles" ] = ( 313,957, 279,447, 0,749994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2132,15, 1608,04, 78 ); + ent.v[ "angles" ] = ( 270, 0, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2086,79, 1716,23, 77 ); + ent.v[ "angles" ] = ( 273, 133, -143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2131,11, 1825,06, 77 ); + ent.v[ "angles" ] = ( 275,582, 111,477, -166,531 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2240,62, 1869,87, 77 ); + ent.v[ "angles" ] = ( 273, 133, 139 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2348,97, 1823,61, 77 ); + ent.v[ "angles" ] = ( 273, 133, 95 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2393,28, 1715,72, 77 ); + ent.v[ "angles" ] = ( 273, 133, 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2347,62, 1607,82, 77 ); + ent.v[ "angles" ] = ( 273, 133, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 2239,34, 1564,15, 77 ); + ent.v[ "angles" ] = ( 273,144, 214,224, -132,142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_car_smoke" ); + ent.v[ "origin" ] = ( 2313,97, 636,449, 110,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3606,32, 3329,83, 35 ); + ent.v[ "angles" ] = ( 288, 314, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3640,36, 3374,19, 31,0136 ); + ent.v[ "angles" ] = ( 288, 314, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3684,35, 3418,17, 30,2504 ); + ent.v[ "angles" ] = ( 288, 314, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3728,42, 3462,24, 30,6379 ); + ent.v[ "angles" ] = ( 288, 314, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3711,12, 3626,14, 31,3475 ); + ent.v[ "angles" ] = ( 283, 45, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3661,48, 3682,14, 31 ); + ent.v[ "angles" ] = ( 283, 45, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_raid_mist_water" ); + ent.v[ "origin" ] = ( 3610,37, 3737,47, 32 ); + ent.v[ "angles" ] = ( 283, 45, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_lg" ); + ent.v[ "origin" ] = ( 2212,83, 826,272, 121,344 ); + ent.v[ "angles" ] = ( 276, 179,999, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 2203,52, 849,188, 160,515 ); + ent.v[ "angles" ] = ( 288,384, 8,82536, -63,2924 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1264,14, 1388,21, 181,378 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3582,84, 3240,6, 44,4691 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 9 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3817,86, 3466,07, 43,9789 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3816,57, 3606,79, 48,9979 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 3581,82, 3831,04, 48,9828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1184,24, 3543,86, 248,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1280,03, 3544,18, 248,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1374,75, 3542,83, 248,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1277,81, 3417,67, 248,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1182,26, 3419,44, 248,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_nightclub_flr_glare" ); + ent.v[ "origin" ] = ( 1374,08, 3417,39, 248,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 3265,41, 2388, 58,0346 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 3267,62, 2152,43, 58,8597 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_raid_spot_light" ); + ent.v[ "origin" ] = ( 3497,83, 2153,25, 57,6806 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1370,72, 1631,4, 318,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1367,81, 1694,47, 318,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1369,29, 1756,91, 319,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1368,01, 1818,1, 318,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_lg" ); + ent.v[ "origin" ] = ( 2321,64, 823,737, 117,638 ); + ent.v[ "angles" ] = ( 293,967, 176,932, 176,933 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1392,31, 3296,93, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1276,45, 3296,77, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1276,12, 3187,83, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1391,68, 3187,09, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1392,6, 3067,08, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1329,26, 3066,71, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1309,97, 3033,47, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1310,65, 2963,19, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1329,6, 2932,58, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1393, 2930,5, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1566,79, 2850,57, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1472,7, 2850,46, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1393,09, 2850,51, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1277,19, 2850,46, 271,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1197,66, 2828,79, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1197,09, 2914,07, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1037,95, 2914,38, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1038,28, 2829,86, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1613,13, 3023,21, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1611,61, 3102,04, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1611,62, 3183,2, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "origin" ] = ( 1611,23, 3250,95, 270,875 ); + ent.v[ "angles" ] = ( 90, 360, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; +} diff --git a/mp_raid/maps/mp/mp_raid.gsc b/mp_raid/maps/mp/mp_raid.gsc new file mode 100644 index 0000000..cc3dc25 --- /dev/null +++ b/mp_raid/maps/mp/mp_raid.gsc @@ -0,0 +1,54 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_raid_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_raid_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_raid" ); + level thread water_trigger_init(); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "1870", reset_dvars ); +} + +water_trigger_init() +{ + triggers = getentarray( "water_killbrush", "targetname" ); + _a31 = triggers; + _k31 = getFirstArrayKey( _a31 ); + while ( isDefined( _k31 ) ) + { + trigger = _a31[ _k31 ]; + trigger thread player_splash_think(); + _k31 = getNextArrayKey( _a31, _k31 ); + } +} + +player_splash_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) && isalive( entity ) ) + { + self thread trigger_thread( entity, ::player_water_fx ); + } + } +} + +player_water_fx( player, endon_condition ) +{ + maxs = self.origin + self getmaxs(); + if ( maxs[ 2 ] < 0 ) + { + maxs += vectorScale( ( 0, 0, 1 ), 5 ); + } + origin = ( player.origin[ 0 ], player.origin[ 1 ], maxs[ 2 ] ); + playfx( level._effect[ "water_splash_sm" ], origin ); +} diff --git a/mp_raid/maps/mp/mp_raid_amb.gsc b/mp_raid/maps/mp/mp_raid_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_raid/maps/mp/mp_raid_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_raid/maps/mp/mp_raid_fx.gsc b/mp_raid/maps/mp/mp_raid_fx.gsc new file mode 100644 index 0000000..ac6444b --- /dev/null +++ b/mp_raid/maps/mp/mp_raid_fx.gsc @@ -0,0 +1,50 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_raid_fx::main(); + maps/mp/createart/mp_raid_art::main(); +} + +precache_scripted_fx() +{ + level._effect[ "water_splash_sm" ] = loadfx( "bio/player/fx_player_water_splash_mp_sm" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_raid_mist" ] = loadfx( "maps/mp_maps/fx_mp_raid_mist" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_insects_butterfly_flutter" ] = loadfx( "bio/insects/fx_insects_butterfly_flutter" ); + level._effect[ "fx_mp_fumes_vent_xsm_int" ] = loadfx( "maps/mp_maps/fx_mp_fumes_vent_xsm_int" ); + level._effect[ "fx_mp_raid_mist_water" ] = loadfx( "maps/mp_maps/fx_mp_raid_mist_water" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_mp_raid_vista_smoke01" ] = loadfx( "maps/mp_maps/fx_mp_raid_vista_smoke01" ); + level._effect[ "fx_mp_raid_vista_fire01" ] = loadfx( "maps/mp_maps/fx_mp_raid_vista_fire01" ); + level._effect[ "fx_mp_slums_dark_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke_sm" ); + level._effect[ "fx_mp_slums_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_fire_sm" ); + level._effect[ "fx_mp_slums_fire_lg" ] = loadfx( "maps/mp_maps/fx_mp_slums_fire_lg" ); + level._effect[ "fx_mp_slums_dark_smoke" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke" ); + level._effect[ "fx_mp_village_car_smoke" ] = loadfx( "maps/mp_maps/fx_mp_village_car_smoke" ); + level._effect[ "fx_raid_hot_tub_sm" ] = loadfx( "water/fx_raid_hot_tub_sm" ); + level._effect[ "fx_raid_hot_tub_lg" ] = loadfx( "water/fx_raid_hot_tub_lg" ); + level._effect[ "fx_light_beacon_red_blink_fst" ] = loadfx( "light/fx_light_beacon_red_blink_fst" ); + level._effect[ "fx_light_god_ray_mp_raid" ] = loadfx( "env/light/fx_light_god_ray_mp_raid" ); + level._effect[ "fx_raid_spot_light" ] = loadfx( "light/fx_raid_spot_light" ); + level._effect[ "fx_mp_nightclub_flr_glare" ] = loadfx( "maps/mp_maps/fx_mp_nightclub_flr_glare" ); + level._effect[ "fx_raid_spot_light_picture" ] = loadfx( "light/fx_raid_spot_light_picture" ); + level._effect[ "fx_light_recessed_cool_sm_soft" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_lf_mp_raid_sun1" ] = loadfx( "lens_flares/fx_lf_mp_raid_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "umbrella" ] = %fxanim_gp_umbrella_01_anim; + level.scr_anim[ "fxanim_props" ][ "dryer_loop" ] = %fxanim_gp_dryer_loop_anim; +} diff --git a/mp_skate/aitype/enemy_dog_mp.gsc b/mp_skate/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_skate/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_skate/character/character_mp_german_shepherd.gsc b/mp_skate/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_skate/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_skate/maps/mp/createfx/mp_skate_fx.gsc b/mp_skate/maps/mp/createfx/mp_skate_fx.gsc new file mode 100644 index 0000000..b8ac13b --- /dev/null +++ b/mp_skate/maps/mp/createfx/mp_skate_fx.gsc @@ -0,0 +1,960 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -206,672, 791,965, 164,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2053,8, -43,695, 164,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2270,56, -96,2856, 164,125 ); + ent.v[ "angles" ] = ( 0,998782, 272,997, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,598, 540,472, 164,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -80,8352, 584,464, 164,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1684,21, -406,001, 250,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -381,94, -1599,8, 216,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1429,05, -784,271, 135,125 ); + ent.v[ "angles" ] = ( 1, 270,997, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1599,65, -107,089, 164,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267,997 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1193,21, -1297,63, 136,125 ); + ent.v[ "angles" ] = ( 0,998782, 266,997, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 508,57, -1221,64, 136,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 62,9516, -1270,87, 184,125 ); + ent.v[ "angles" ] = ( 359, 269,997, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1961,83, -828,267, 248,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -171,566, 388,264, 219,829 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_seaguls" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3562,07, 3901,73, 25,339 ); + ent.v[ "angles" ] = ( 1,98193, 178,961, -1,03536 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_seaguls" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -862,444, 3993,28, 112,759 ); + ent.v[ "angles" ] = ( 1,98193, 178,961, -1,03536 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_seaguls" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1396,64, 4056,87, 148,768 ); + ent.v[ "angles" ] = ( 1,98193, 178,961, -1,03536 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_seaguls" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -6676,94, 2261,01, -17,496 ); + ent.v[ "angles" ] = ( 1,98193, 178,961, -1,03536 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 59,0294, 846,673, 213,926 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 902,131, 888,74, 205,746 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2071,18, -57,5638, 164 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 287,997 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1460,01, -1097,78, 136,125 ); + ent.v[ "angles" ] = ( 0,906439, 244,994, -0,422714 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -489,494, 173,128, 164 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -351,398, 734,361, 164 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1008,93, 480,972, 164,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1989,25, -402,344, 164,125 ); + ent.v[ "angles" ] = ( 0,998782, 266,997, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1539,57, -1286,25, 256,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1139,04, 166,352, 164,125 ); + ent.v[ "angles" ] = ( 0,994673, 263,996, -0,104551 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_swirl_tube" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 936,926, 718,65, 165,507 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_swirl_tube" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1432,98, 417,074, 169 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_swirl_tube" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2047,69, 305,064, 168,193 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1820,03, -1169,6, 164,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 219 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2579,88, -368,749, 166,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 179 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1399,3, -1615,39, 138,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1202,72, -1271,48, 136,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 45 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1137,9, 257,75, 166,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 137 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 983,217, -1705,19, 136,02 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2797,6, -297,135, 167,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 231 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2821,9, -191,008, 160,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1905,09, -799,867, 164,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 260,997 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1988,4, -519,642, 256,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270,997 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1560,31, -769,427, 256,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1938,12, -536,754, 250,125 ); + ent.v[ "angles" ] = ( 359, 269,997, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -890,813, -1586,67, 256,125 ); + ent.v[ "angles" ] = ( 0,220358, 273,026, -1,34401 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_skate_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -694774, 416806, 1009240 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2187,82, -906,476, 168,043 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 863,314, 582,275, 164,125 ); + ent.v[ "angles" ] = ( 0,998782, 266,997, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -810,17, 220,77, 164,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2276,83, -515,025, 248,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -258,444, 834,248, 164,125 ); + ent.v[ "angles" ] = ( 0,994673, 263,996, -0,104551 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -464,759, 633,858, 164,125 ); + ent.v[ "angles" ] = ( 0,994673, 263,996, -0,104551 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1416,18, -2099,24, 761,252 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1057,55, -1999,04, 667,403 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -644,763, -1933,24, 759,526 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -85,2617, -1966,6, 791,736 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1225,43, -981,035, 444,647 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1194,33, -812,42, 464,226 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2359,28, 168,284, 556,456 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2713,81, 176,24, 554,473 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -453,053, 1075,66, 604,107 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -573,053, 990,681, 634,994 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1542,71, 272,598, 634,013 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1355,53, 225,847, 572,936 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1694,89, 212,019, 642,524 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_paper_tree_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1887,51, 15,3983, 678,106 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1066,21, -634,358, 404,74 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1066,06, -559,569, 404,735 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1066,53, -484,936, 404,787 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1002,52, -486,686, 404,774 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1002,55, -559,665, 404,751 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1001,82, -633,688, 404,738 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -938,829, -633,718, 404,761 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -842,616, -634,285, 404,745 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -842,187, -560,05, 404,726 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -842,404, -486,349, 404,742 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -746,373, -485,842, 404,731 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -745,87, -633,641, 404,734 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -746,45, -559,687, 404,746 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -52,5196, -353,897, 396,75 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 107,534, -353,834, 396,735 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 267,635, -354,316, 396,77 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 427,583, -353,758, 396,741 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 587,876, -353,651, 396,732 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 747,584, -353,991, 396,739 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -52,0333, -483,212, 396,784 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -211,225, -481,931, 396,768 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -212,283, -609,602, 396,751 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -52,1382, -609,549, 396,737 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 116,991, -609,8, 396,786 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 108,006, -483,093, 396,778 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 108,5, -789,858, 402,74 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 268,678, -789,733, 402,732 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 427,782, -789,681, 402,74 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 587,546, -789,705, 402,745 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 748,481, -788,981, 402,785 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -937,421, -558,97, 404,793 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -937,582, -485,813, 404,737 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -315,257, -307,062, 407,775 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -186,537, -305,446, 407,775 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 710,711, -253,927, 297,775 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 774,344, -250,777, 298,775 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -971,346, -887,58, 439,675 ); + ent.v[ "angles" ] = ( 45,6192, 321,078, 129,794 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -465,693, -590,745, 429,875 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -467,529, -451,884, 429,875 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -470,464, -317,062, 429,875 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1204,73, -887,71, 340,125 ); + ent.v[ "angles" ] = ( 0, 359,997, -1 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1079,14, -548,138, 346 ); + ent.v[ "angles" ] = ( 0, 359,997, -1 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -443,187, -277,867, 328,156 ); + ent.v[ "angles" ] = ( 1, 270,997, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 787,875, -616,608, 241,504 ); + ent.v[ "angles" ] = ( 0, 178, 1 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 395,063, -778,421, 227,497 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1848,58, -1545,43, 375,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1849,36, -1670,85, 375,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1716,15, -1779,75, 375,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1995,54, -1512,73, 401,175 ); + ent.v[ "angles" ] = ( 43,6595, 322,337, 62,6682 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1952,07, -1422,77, 300,125 ); + ent.v[ "angles" ] = ( 359, 271,997, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1587,15, -1852,59, 298,125 ); + ent.v[ "angles" ] = ( 0, 179,997, 1 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_3" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2005,13, -1688,16, 405,175 ); + ent.v[ "angles" ] = ( 39,1217, 319,541, 60,7125 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_lg_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 583,52, -609,755, 428,557 ); + ent.v[ "angles" ] = ( 51,5932, 323,433, 136,976 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -734,895, -888,446, 423,775 ); + ent.v[ "angles" ] = ( 58,858, 331,357, 140,615 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_4" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1937,78, -1837, 421,375 ); + ent.v[ "angles" ] = ( 39,1217, 319,541, 60,7125 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_4" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1749,87, -1839,67, 413,375 ); + ent.v[ "angles" ] = ( 39,1217, 319,541, 60,7125 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_godray_lg_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 266,572, -617,806, 427,875 ); + ent.v[ "angles" ] = ( 51,5932, 323,433, 136,976 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2805,77, -443,645, 250,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3065,46, -422,518, 250,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3448,81, -500,516, 250,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2857,62, -423,1, 250,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3251,74, -404,065, 250,125 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1125,44, 792,669, 161,148 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1048,26, 1627,98, 130 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -90,0779, 1191,85, 160 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 229,246, 1202,5, 155,893 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 547,407, 1278,27, 147,325 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 89,8637, 1754,01, 147,787 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -655,635, 1750,8, 146,159 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1382,01, 2018,33, 122,14 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1524,68, 998,233, 142,886 ); + ent.v[ "angles" ] = ( 360, 269,997, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_toilet_water" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2213,29, -1772,63, 256,125 ); + ent.v[ "angles" ] = ( 270,035, 358,055, -90,0577 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -154,127, 906,933, 204,657 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2112,51, -1764,81, 277,125 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_4" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -508,97, -506,96, 431,798 ); + ent.v[ "angles" ] = ( 39,1217, 319,541, 60,7125 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_4" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -488,73, -267,467, 446,875 ); + ent.v[ "angles" ] = ( 39,1217, 319,541, 60,7125 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 473,157, -1638,97, 141,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 132 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1532,16, 179,911, 168 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 312 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 74,0794, 223,228, 48,1639 ); + ent.v[ "angles" ] = ( 0, 90, 4 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 332,097, 239,007, 45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -378,891, -694,41, 342,635 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 256, -647,765, 256,02 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1446,49, -847,94, 138,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_arc_ramp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1392,94, -790,177, 139,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1036,99, 54,9113, 386,743 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 966,192, 54,4502, 386,749 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1105,19, 55,2792, 355,523 ); + ent.v[ "angles" ] = ( 46, 176, 0 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -883,011, -238,186, 401,961 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -472,346, -943,438, 348,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 177 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -310,282, -603,774, 292,193 ); + ent.v[ "angles" ] = ( 0, 358,996, 1 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -319,667, -306,077, 301,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1198,28, -999,605, 325,933 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -444,272, -1007,21, 328,463 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1286,84, 175,232, 204,002 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -997,889, -217,299, 327,688 ); + ent.v[ "angles" ] = ( 1, 269,997, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 462,559, -872,949, 297,875 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 462,245, -969,577, 297,875 ); + ent.v[ "angles" ] = ( 89, 89,998, -180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 928,616, -448,561, 343,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 927,757, -384,065, 343,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 928,481, -319,961, 343,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 928,592, -256,074, 343,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2122,23, -1819,42, 375,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2122,04, -1569,09, 375,875 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1689,12, -1578,84, 240,125 ); + ent.v[ "angles" ] = ( 359,001, 266,997, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 181,132, -1701,32, 290,584 ); + ent.v[ "angles" ] = ( 353,219, 273,112, -1,31069 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1791,68, -913,456, 255,125 ); + ent.v[ "angles" ] = ( 1, 267,01, 0,775123 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -432,054, 860,857, 163,125 ); + ent.v[ "angles" ] = ( 0, 265,996, -0,207937 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -762,608, 641,574, 164,125 ); + ent.v[ "angles" ] = ( 0, 273,994, -0,342054 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1584,33, -1132,52, 258,125 ); + ent.v[ "angles" ] = ( 1, 266,992, -0,225029 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -113,097, -1887,78, 298,113 ); + ent.v[ "angles" ] = ( 357, 254, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1624,38, 45,5252, 234,125 ); + ent.v[ "angles" ] = ( 0, 277,994, -0,35791 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -212,386, -1574,7, 199,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 46,5117, -1765,86, 297,094 ); + ent.v[ "angles" ] = ( 356, 254, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1923,47, -476,697, 250,125 ); + ent.v[ "angles" ] = ( 1,93186, 272,023, 0,772496 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1880,05, -1829,36, 311,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1932,59, -1568,29, 312,067 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2021,9, -1675,13, 332,432 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_sand_gust_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1462,3, -769,967, 269,125 ); + ent.v[ "angles" ] = ( 2, 266,988, -0,225131 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 746,591, -522,948, 373,15 ); + ent.v[ "angles" ] = ( 90, 335,101, 65,1042 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 747,993, -661,899, 374,157 ); + ent.v[ "angles" ] = ( 90, 335,101, 65,1042 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 108,296, -669,949, 374,159 ); + ent.v[ "angles" ] = ( 90, 335,101, 65,1042 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,177, -668,703, 374,152 ); + ent.v[ "angles" ] = ( 90, 335,101, 65,1042 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,452, -522,264, 374,162 ); + ent.v[ "angles" ] = ( 90, 335,101, 65,1042 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sq_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 107,706, -521,447, 374,159 ); + ent.v[ "angles" ] = ( 90, 335,101, 65,1042 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 757,596, -481,557, 396,751 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_skate_light_sml" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 747,538, -609,668, 396,748 ); + ent.v[ "angles" ] = ( 90, 304,575, 34,5781 ); + ent.v[ "delay" ] = -23; +} diff --git a/mp_skate/maps/mp/mp_skate.gsc b/mp_skate/maps/mp/mp_skate.gsc new file mode 100644 index 0000000..9596551 --- /dev/null +++ b/mp_skate/maps/mp/mp_skate.gsc @@ -0,0 +1,47 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_skate_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_skate_amb::main(); + precachemodel( "collision_physics_cylinder_32x128" ); + precachemodel( "collision_clip_wall_128x128x10" ); + precachemodel( "collision_physics_clip_64x64x10" ); + precachemodel( "paris_construction_scaffold_piece_01" ); + maps/mp/_compass::setupminimap( "compass_map_mp_skate" ); + visionsetnaked( "mp_skate", 1 ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -1045, -418,5, 292 ), vectorScale( ( 0, 1, 0 ), 359,8 ) ); + spawncollision( "collision_physics_cylinder_32x128", "collider", ( -720, -628, 292 ), vectorScale( ( 0, 1, 0 ), 355,6 ) ); + spawncollision( "collision_clip_wall_128x128x10", "collider", ( -2250,5, -837,5, 422,5 ), ( 0, 1, 0 ) ); + spawncollision( "collision_clip_wall_128x128x10", "collider", ( -2333, -837,5, 422,5 ), ( 0, 1, 0 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( -663,5, -1975,5, 314 ), ( 0, 1, 0 ) ); + pipe1 = spawn( "script_model", ( -1368, -1541, 257 ) ); + pipe1.angles = vectorScale( ( 0, 1, 0 ), 90 ); + pipe1 setmodel( "paris_construction_scaffold_piece_01" ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level.remotemotarviewleft = 40; + level.remotemotarviewright = 40; + level.remotemotarviewup = 20; + level.remotemotarviewdown = 65; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2300", reset_dvars ); +} diff --git a/mp_skate/maps/mp/mp_skate_amb.gsc b/mp_skate/maps/mp/mp_skate_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_skate/maps/mp/mp_skate_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_skate/maps/mp/mp_skate_fx.gsc b/mp_skate/maps/mp/mp_skate_fx.gsc new file mode 100644 index 0000000..6262235 --- /dev/null +++ b/mp_skate/maps/mp/mp_skate_fx.gsc @@ -0,0 +1,52 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_skate_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_lf_mp_skate_sun1" ] = loadfx( "lens_flares/fx_lf_mp_skate_sun1" ); + level._effect[ "fx_mp_debris_papers" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers" ); + level._effect[ "fx_mp_skate_dust" ] = loadfx( "maps/mp_maps/fx_mp_skate_dust" ); + level._effect[ "fx_mp_skate_flies" ] = loadfx( "maps/mp_maps/fx_mp_skate_flies" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_mp_skate_seaguls" ] = loadfx( "maps/mp_maps/fx_mp_skate_seaguls" ); + level._effect[ "fx_mp_skate_paper_devil" ] = loadfx( "maps/mp_maps/fx_mp_skate_paper_devil" ); + level._effect[ "fx_mp_skate_paper_tree_gust" ] = loadfx( "maps/mp_maps/fx_mp_skate_paper_tree_gust" ); + level._effect[ "fx_mp_skate_light_sml" ] = loadfx( "maps/mp_maps/fx_mp_skate_light_sml" ); + level._effect[ "fx_mp_skate_light_sq" ] = loadfx( "maps/mp_maps/fx_mp_skate_light_sq" ); + level._effect[ "fx_mp_skate_light_sq_2" ] = loadfx( "maps/mp_maps/fx_mp_skate_light_sq_2" ); + level._effect[ "fx_mp_skate_light_sq_3" ] = loadfx( "maps/mp_maps/fx_mp_skate_light_sq_3" ); + level._effect[ "fx_mp_skate_light_sq_4" ] = loadfx( "maps/mp_maps/fx_mp_skate_light_sq_4" ); + level._effect[ "fx_mp_skate_godray_lg" ] = loadfx( "maps/mp_maps/fx_mp_skate_godray_lg" ); + level._effect[ "fx_mp_skate_godray_lg_2" ] = loadfx( "maps/mp_maps/fx_mp_skate_godray_lg_2" ); + level._effect[ "fx_mp_skate_godray_md" ] = loadfx( "maps/mp_maps/fx_mp_skate_godray_md" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_skate_sand_gust" ] = loadfx( "maps/mp_maps/fx_mp_skate_sand_gust" ); + level._effect[ "fx_mp_skate_sand_gust_sm" ] = loadfx( "maps/mp_maps/fx_mp_skate_sand_gust_sm" ); + level._effect[ "fx_mp_skate_toilet_water" ] = loadfx( "maps/mp_maps/fx_mp_skate_toilet_water" ); + level._effect[ "fx_paper_swirl_tube" ] = loadfx( "debris/fx_paper_swirl_tube" ); + level._effect[ "fx_paper_arc_ramp" ] = loadfx( "debris/fx_paper_arc_ramp" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "air_dancer" ] = %fxanim_mp_skate_air_dancer_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "ferris_wheel_spin" ] = %fxanim_mp_skate_ferris_wheel_spin_anim; + level.scr_anim[ "fxanim_props" ][ "banner_01" ] = %fxanim_mp_skate_banner_01_anim; + level.scr_anim[ "fxanim_props" ][ "teardrop_flag" ] = %fxanim_gp_teardrop_flag_loop_anim; +} diff --git a/mp_slums/aitype/enemy_dog_mp.gsc b/mp_slums/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_slums/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_slums/character/character_mp_german_shepherd.gsc b/mp_slums/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_slums/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_slums/maps/mp/createart/mp_slums_art.gsc b/mp_slums/maps/mp/createart/mp_slums_art.gsc new file mode 100644 index 0000000..d6254fc --- /dev/null +++ b/mp_slums/maps/mp/createart/mp_slums_art.gsc @@ -0,0 +1,18 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_slums", 0 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_slums/maps/mp/createfx/mp_slums_fx.gsc b/mp_slums/maps/mp/createfx/mp_slums_fx.gsc new file mode 100644 index 0000000..3882073 --- /dev/null +++ b/mp_slums/maps/mp/createfx/mp_slums_fx.gsc @@ -0,0 +1,1030 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( -249,136, -855,816, 577,536 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 465,266, 1998,53, 576 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 465,781, 2024,23, 609 ); + ent.v[ "angles" ] = ( 0, 212, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 118,27, 1901,9, 607 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 231 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -487,65, 1013,92, 564,147 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 447,828, 1661,07, 670,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1156,43, 88,4098, 627,011 ); + ent.v[ "angles" ] = ( 0, 188, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -369,269, -457,055, 593,777 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 1257,24, -1055,25, 552 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1193,1, -422,824, 604,538 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1620,1, 280,059, 610 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 204 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1231,25, -1535,76, 564,267 ); + ent.v[ "angles" ] = ( 0, 180, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 814,655, -1700,05, 493,677 ); + ent.v[ "angles" ] = ( 357,037, 260,988, 0,469819 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 904,792, -3351,33, 462 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 63,2546, -2730,9, 449 ); + ent.v[ "angles" ] = ( 0,313483, 174,008, 2,98405 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 852,984, -3226,58, 450 ); + ent.v[ "angles" ] = ( 358,662, 153,859, 3,63692 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 367,72, -1515,4, 576 ); + ent.v[ "angles" ] = ( 0, 180, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 413,342, -1638,04, 552 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 163 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 840,497, -1586,2, 513,235 ); + ent.v[ "angles" ] = ( 336,083, 174,208, 13,3107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 383,867, -2727,93, 471,531 ); + ent.v[ "angles" ] = ( 336,083, 174,208, 13,3107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( -226,231, -2618,3, 468,216 ); + ent.v[ "angles" ] = ( 336,083, 174,208, 13,3107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke" ); + ent.v[ "origin" ] = ( 1468,22, -1524,01, 505,439 ); + ent.v[ "angles" ] = ( 279,824, 328,913, 7,17169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke" ); + ent.v[ "origin" ] = ( 1808,5, -45,308, 599 ); + ent.v[ "angles" ] = ( 280,441, 357,415, -1,90431 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke" ); + ent.v[ "origin" ] = ( -1122,61, 1202,27, 576,057 ); + ent.v[ "angles" ] = ( 310,694, 7,82296, -0,158126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke" ); + ent.v[ "origin" ] = ( 1330,87, 1805,57, 576,327 ); + ent.v[ "angles" ] = ( 296,906, 85,0686, -85,9113 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 994,578, -1127,72, 595 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 675,252, -1128,26, 599 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 344,002, -879,174, 608,982 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -335,945, -2227,9, 532,443 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -268,588, -2309,35, 504,763 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -72,2735, -2483,57, 508 ); + ent.v[ "angles" ] = ( 295, 181, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -450,835, -2411,9, 490,914 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -558,81, -1976,25, 517,153 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -149,851, -1995,69, 492 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 417,446, -2934,3, 510,994 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( -1057,89, -374,858, 583,346 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 355,771, -1000,56, 543 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( -155,401, -171,078, 775 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 238,923, -37,4944, 792 ); + ent.v[ "angles" ] = ( 287,102, 158,295, -94,0742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1212,77, -163,885, 834,399 ); + ent.v[ "angles" ] = ( 286,195, 138,464, -80,1276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1453,76, -420,619, 851 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1464,98, -1125,69, 805 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( -406,35, -585,207, 552,613 ); + ent.v[ "angles" ] = ( 274, 270, 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 395,276, 1158,87, 638,65 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 220,658, 130,059, 598 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 188 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( -273,444, -813,508, 573,981 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 382,28, -260,432, 609,683 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 820,348, -1135,94, 580 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 155,578, -1256,22, 613 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -308,26, -2463,07, 506 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 543,549, -3401,81, 514,374 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -223,19, -2816,17, 510,909 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -648,813, -2473,37, 481 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -212,88, -1977,89, 495,096 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -317,05, -1100,11, 597,572 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -825,658, 218,259, 586,324 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -801,533, 666,124, 596,753 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -898,253, 1448,99, 645,579 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -698,392, 758,429, 635,088 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -799,391, -186,421, 889,125 ); + ent.v[ "angles" ] = ( 273, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -796,912, 63,3163, 901,515 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -690,391, -757,657, 890,888 ); + ent.v[ "angles" ] = ( 270, 358,685, 1,31464 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( 1355,94, -1573,12, 962,79 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "origin" ] = ( 1353,97, -1571,1, 968,789 ); + ent.v[ "angles" ] = ( 6,6847, 102,812, -0,531975 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "origin" ] = ( -433,279, 30,8972, 1029,8 ); + ent.v[ "angles" ] = ( 43,0794, 113,754, 14,5109 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1425,87, -1048,51, 760,649 ); + ent.v[ "angles" ] = ( 289,198, 146,699, -81,271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 680,682, -862,471, 592,694 ); + ent.v[ "angles" ] = ( 349,273, 332,5, -6,82402 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 467,543, -1138,91, 622 ); + ent.v[ "angles" ] = ( 357, 111, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 577,511, -227,768, 601 ); + ent.v[ "angles" ] = ( 357, 295, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 4,6388, -1210,95, 627 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 37 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -1161,52, 1008,91, 919,008 ); + ent.v[ "angles" ] = ( 272, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1243,82, -1660,02, 548,228 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_vista_smoke" ); + ent.v[ "origin" ] = ( -621,875, -5380,24, 876,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_sprinkle_water" ); + ent.v[ "origin" ] = ( -773,034, 1640,41, 718,875 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -771,502, 1647,34, 592,337 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -779,789, 1626,08, 593,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -486,017, -691,068, 551,283 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_splash_detail" ); + ent.v[ "origin" ] = ( -451,241, -687,673, 552,495 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_sprinkle_water" ); + ent.v[ "origin" ] = ( -467,677, -689,812, 689,033 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 294,573, -1115,65, 594,843 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -534,641, -1309,83, 607,994 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1091,07, -615,063, 539,242 ); + ent.v[ "angles" ] = ( 6,5365, 334,891, -6,4085 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1087,59, -512,146, 545,441 ); + ent.v[ "angles" ] = ( 6,5365, 334,891, -6,4085 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1100,09, -631,07, 545,286 ); + ent.v[ "angles" ] = ( 7,16937, 340,901, 23,3092 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 756,021, -1568,17, 496 ); + ent.v[ "angles" ] = ( 339,569, 260,459, 37,8245 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 890,405, -1493,62, 496 ); + ent.v[ "angles" ] = ( 339,569, 260,459, 37,8245 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 805,15, -1617,87, 498,527 ); + ent.v[ "angles" ] = ( 7,67748, 299,488, 21,1493 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 422,165, -2736,92, 448 ); + ent.v[ "angles" ] = ( 9,10744, 258,552, -4,25539 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 258,235, -2743,73, 448 ); + ent.v[ "angles" ] = ( 10,6652, 267,399, 29,324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 298,053, -2672,83, 448 ); + ent.v[ "angles" ] = ( 336,672, 274,973, 9,87578 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -174,186, -2602,68, 453,171 ); + ent.v[ "angles" ] = ( 6,44468, 102,056, 33,3416 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 573,655, 144,609, 575 ); + ent.v[ "angles" ] = ( 339,384, 341,64, -37,8244 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_pipe_water_ground" ); + ent.v[ "origin" ] = ( -609,875, 1752,37, 593,025 ); + ent.v[ "angles" ] = ( 270, 0, -179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 517,208, 139,357, 593 ); + ent.v[ "angles" ] = ( 330,186, 333,887, -8,88146 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 325,279, -1517,28, 612,428 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 352,937, -1682,32, 607,287 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 904,383, -3400,03, 511 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -706,317, 108,196, 595,29 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -896,853, 818,549, 581,999 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 819,409, -715,655, 669,347 ); + ent.v[ "angles" ] = ( 0, 179, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 570,933, 903,671, 682,125 ); + ent.v[ "angles" ] = ( 13,4463, 164,456, 14,2581 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 1091,99, -1697,88, 612,125 ); + ent.v[ "angles" ] = ( 21,7749, 98,6191, 0,218312 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 1046,56, -1699,97, 612,125 ); + ent.v[ "angles" ] = ( 21,7749, 98,6191, 0,218312 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 1054,92, -1689,01, 612,125 ); + ent.v[ "angles" ] = ( 359,461, 6,6804, -21,7696 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -577,855, -1518,53, 655 ); + ent.v[ "angles" ] = ( 21,7749, 98,6191, 0,218312 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -617,034, -1522,15, 657 ); + ent.v[ "angles" ] = ( 21,7749, 98,6191, 0,218312 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -689,729, -3181,92, 637,457 ); + ent.v[ "angles" ] = ( 309,82, 261,617, -1,34511 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( -231,18, -2617,83, 467,701 ); + ent.v[ "angles" ] = ( 288,334, 253,225, 112,074 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -232,756, -2626,43, 471,116 ); + ent.v[ "angles" ] = ( 28,5817, 289,094, 9,61949 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( 1275,41, -1668,1, 505,386 ); + ent.v[ "angles" ] = ( 277,839, 154,121, -150,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( 1259,45, -1663,67, 504,009 ); + ent.v[ "angles" ] = ( 277,839, 154,121, -150,075 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 1259,37, -1664,85, 509,538 ); + ent.v[ "angles" ] = ( 339,569, 260,459, 37,8245 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 1277,53, -1668,25, 503,716 ); + ent.v[ "angles" ] = ( 339,569, 260,459, 37,8245 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( 567,277, 150,251, 570,514 ); + ent.v[ "angles" ] = ( 286,522, 114,537, -138,305 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( -1096,57, -519,634, 543,024 ); + ent.v[ "angles" ] = ( 294,944, 333,252, 26,6578 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke" ); + ent.v[ "origin" ] = ( -2170,65, -781,139, 587,679 ); + ent.v[ "angles" ] = ( 303,202, 101,231, -116,688 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1530,65, -758,395, 618,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_lg" ); + ent.v[ "origin" ] = ( 1429,72, -1509,42, 519,556 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "origin" ] = ( 1625,76, 128,506, 1048,9 ); + ent.v[ "angles" ] = ( 8,73666, 189,715, -127,142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( 1634,52, 126,897, 1036,2 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_lg" ); + ent.v[ "origin" ] = ( -1109,8, -607,005, 544,777 ); + ent.v[ "angles" ] = ( 276,285, 15,571, -16,9603 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( -2241,5, -792,427, 513,146 ); + ent.v[ "angles" ] = ( 354,781, 86,6078, 11,1304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( -2215,89, -3187,99, 450,309 ); + ent.v[ "angles" ] = ( 280,506, 156,362, 101,335 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( 1502,31, -3044,83, 456 ); + ent.v[ "angles" ] = ( 280,506, 156,363, -68,6656 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( -1841,49, 1344,22, 589,248 ); + ent.v[ "angles" ] = ( 280,506, 156,363, -68,6656 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( 1707,9, 2207,51, 579 ); + ent.v[ "angles" ] = ( 280,506, 156,363, -68,6656 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1014,92, 625,071, 583,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( -366,956, 2456,48, 627,511 ); + ent.v[ "angles" ] = ( 280,506, 156,363, -68,6656 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_embers" ); + ent.v[ "origin" ] = ( -1171,67, 1235,39, 577,61 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_lg" ); + ent.v[ "origin" ] = ( -1127,9, 1219,65, 606,683 ); + ent.v[ "angles" ] = ( 276,285, 15,571, -16,9603 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_embers" ); + ent.v[ "origin" ] = ( 1738,58, 2098,89, 599 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_embers" ); + ent.v[ "origin" ] = ( 1865,73, -49,4312, 599 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_embers" ); + ent.v[ "origin" ] = ( 1450,64, -1522,83, 543,426 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( -220,002, -830,659, 552,486 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( 793,626, -361,674, 558 ); + ent.v[ "angles" ] = ( 356,591, 327,205, 22,8033 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( -1666,03, -2387,15, 430,411 ); + ent.v[ "angles" ] = ( 281,958, 95,5086, -29,1018 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 557,212, 629,073, 687,125 ); + ent.v[ "angles" ] = ( 42,0012, 193,021, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 551,54, 652,945, 680,125 ); + ent.v[ "angles" ] = ( 26,9544, 267,226, 26,8022 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -603,546, -1046,59, 604,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -339,741, -944,891, 616,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 927,252, 375,411, 630,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 120 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 639,417, 621,634, 627,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -755,14, 1619,51, 641,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1299,98, -1853,96, 565,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1036,08, -2769,44, 530,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 713,327, -857,275, 610,002 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 680,888, -552,694, 593,979 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_dark_lg" ); + ent.v[ "origin" ] = ( 382,759, -486,13, 604,008 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1037,2, 2053,76, 597 ); + ent.v[ "angles" ] = ( 359,642, 191, -0,933737 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_distant" ); + ent.v[ "origin" ] = ( 2343,25, 705,848, 549,353 ); + ent.v[ "angles" ] = ( 0,488145, 345,522, 50,8411 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1097,87, 1078,23, 639,102 ); + ent.v[ "angles" ] = ( 270, 0, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1172,77, 855,816, 614,471 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -327,432, 1351,39, 576 ); + ent.v[ "angles" ] = ( 16,5768, 1,24074, 17,9215 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -379,064, -586,639, 580 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -113,546, 136,467, 588 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 134,845, 2,65759, 594 ); + ent.v[ "angles" ] = ( 270, 0, 2,90451 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_slums_sun1" ); + ent.v[ "origin" ] = ( -52513,5, 36299,2, 18243 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1096,81, -602,4, 581,951 ); + ent.v[ "angles" ] = ( 38,7356, 347,197, -2,72317 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1102,28, -627,4, 578,111 ); + ent.v[ "angles" ] = ( 33,0446, 280,811, -5,14528 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -871,979, -2830,09, 503,166 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -420,106, 327,428, 595,658 ); + ent.v[ "angles" ] = ( 0,104537, 276, 1,99467 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 548,003, 279,082, 642,484 ); + ent.v[ "angles" ] = ( 270, 0, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 787,562, -2414,41, 464 ); + ent.v[ "angles" ] = ( 357,037, 260,989, 0,469818 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 437,672, 245,592, 612 ); + ent.v[ "angles" ] = ( 2,99305, 94,0061, 0,20947 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1398,18, -438,871, 791 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1028,92, -3035,26, 683,021 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1059,79, -3063,87, 670,037 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1057,26, -3278,09, 676,031 ); + ent.v[ "angles" ] = ( 271, 163, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( -1197,57, -2622, 672 ); + ent.v[ "angles" ] = ( 271, 163, -35 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 297,888, -132,326, 748,125 ); + ent.v[ "angles" ] = ( 271, 163, -26 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( -998,041, 1424,76, 783,087 ); + ent.v[ "angles" ] = ( 276,978, 151,84, 72,1485 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 302,841, -833,125, 588,995 ); + ent.v[ "angles" ] = ( 343,881, 232,044, 11,9529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 438,672, -466,224, 590,998 ); + ent.v[ "angles" ] = ( 354,204, 168,079, -1,55845 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1178,86, 1120,29, 817,571 ); + ent.v[ "angles" ] = ( 283,959, 178,821, -88,7878 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 863,989, 1242,15, 809,472 ); + ent.v[ "angles" ] = ( 291,649, 270,721, -77,0853 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1272,18, 1133,09, 888,682 ); + ent.v[ "angles" ] = ( 283,959, 178,821, -88,7878 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -518,169, 1425,43, 578 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -640,889, 103,133, 533,695 ); + ent.v[ "angles" ] = ( 0,104537, 276, 1,99467 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 265,024, -486,663, 546 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1213,68, -1013,49, 588 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( -79,6434, -249,857, 752,095 ); + ent.v[ "angles" ] = ( 273,296, 218,595, -8,2038 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1217,1, -258,363, 805,326 ); + ent.v[ "angles" ] = ( 271, 163, -29 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( -406,794, 946,959, 801,745 ); + ent.v[ "angles" ] = ( 283,323, 196,447, -96,5895 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( -411,854, 964,125, 758,863 ); + ent.v[ "angles" ] = ( 283,323, 196,447, -141,59 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_leaves" ); + ent.v[ "origin" ] = ( 1018,94, -3190,14, 669,691 ); + ent.v[ "angles" ] = ( 271, 163, -91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 1142,23, -409,063, 552 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 400,226, -1046,04, 552 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 159 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 378,42, -364,824, 552 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 1242,87, -1522,52, 504 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -268,662, -1416,48, 552,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 163 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -505,713, -232,965, 543,438 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 228 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( -236,324, 1372,56, 576 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 228 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "origin" ] = ( 1084,53, 177,122, 581 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 456,554, 650,371, 575,954 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 117 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 251,977, 1001,05, 575,209 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -317,066, 59,5064, 552 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 88,8449, 1944,49, 576 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 243 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 692,53, -2278,9, 448 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( 858,873, 519,901, 715,875 ); + ent.v[ "angles" ] = ( 90, 45,7819, 124,782 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( 797,766, 504,151, 715,875 ); + ent.v[ "angles" ] = ( 90, 45,7819, 124,782 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( 792,916, 846,693, 709,66 ); + ent.v[ "angles" ] = ( 90, 0, -14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -645,246, -1005,58, 689,875 ); + ent.v[ "angles" ] = ( 90, 355,083, -20,9166 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush_splash_sm" ); + ent.v[ "origin" ] = ( -469,252, -688,576, 553,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_fire_sprinkler_gush_splash_sm" ); + ent.v[ "origin" ] = ( -775,723, 1642,17, 593,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_wall_water_bottom" ); + ent.v[ "origin" ] = ( -776,311, 1640,43, 593,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; +} diff --git a/mp_slums/maps/mp/mp_slums.gsc b/mp_slums/maps/mp/mp_slums.gsc new file mode 100644 index 0000000..7bd20eb --- /dev/null +++ b/mp_slums/maps/mp/mp_slums.gsc @@ -0,0 +1,32 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_slums_fx::main(); + maps/mp/_load::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_slums" ); + maps/mp/mp_slums_amb::main(); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + level.remotemotarviewleft = 30; + level.remotemotarviewright = 30; + level.remotemotarviewup = 10; + level.remotemotarviewdown = 25; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2500", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1400", reset_dvars ); +} diff --git a/mp_slums/maps/mp/mp_slums_amb.gsc b/mp_slums/maps/mp/mp_slums_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_slums/maps/mp/mp_slums_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_slums/maps/mp/mp_slums_fx.gsc b/mp_slums/maps/mp/mp_slums_fx.gsc new file mode 100644 index 0000000..492f09a --- /dev/null +++ b/mp_slums/maps/mp/mp_slums_fx.gsc @@ -0,0 +1,56 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_slums_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_debris_papers" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers" ); + level._effect[ "fx_mp_debris_papers_narrow" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers_narrow" ); + level._effect[ "fx_mp_express_train_blow_dust" ] = loadfx( "maps/mp_maps/fx_mp_express_train_blow_dust" ); + level._effect[ "fx_insects_swarm_dark_lg" ] = loadfx( "bio/insects/fx_insects_swarm_dark_lg" ); + level._effect[ "fx_mp_slums_leaves" ] = loadfx( "maps/mp_maps/fx_mp_slums_leaves" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_mp_elec_spark_burst_md_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_md_runner" ); + level._effect[ "fx_insects_butterfly_flutter" ] = loadfx( "bio/insects/fx_insects_butterfly_flutter" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_slums_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_fire_sm" ); + level._effect[ "fx_mp_slums_fire_lg" ] = loadfx( "maps/mp_maps/fx_mp_slums_fire_lg" ); + level._effect[ "fx_mp_slums_fire_distant" ] = loadfx( "maps/mp_maps/fx_mp_slums_fire_distant" ); + level._effect[ "fx_mp_slums_embers" ] = loadfx( "maps/mp_maps/fx_mp_slums_embers" ); + level._effect[ "fx_hvac_steam_md" ] = loadfx( "smoke/fx_hvac_steam_md" ); + level._effect[ "fx_smk_smolder_gray_slow_shrt" ] = loadfx( "smoke/fx_smk_smolder_gray_slow_shrt" ); + level._effect[ "fx_mp_slums_dark_smoke" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke" ); + level._effect[ "fx_smk_tin_hat_sm" ] = loadfx( "smoke/fx_smk_tin_hat_sm" ); + level._effect[ "fx_mp_slums_vista_smoke" ] = loadfx( "maps/mp_maps/fx_mp_slums_vista_smoke" ); + level._effect[ "fx_mp_slums_vista_smoke_low" ] = loadfx( "maps/mp_maps/fx_mp_slums_vista_smoke_low" ); + level._effect[ "fx_mp_slums_dark_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke_sm" ); + level._effect[ "fx_window_god_ray_sm" ] = loadfx( "light/fx_window_god_ray_sm" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_village_tube_light" ] = loadfx( "light/fx_village_tube_light" ); + level._effect[ "fx_mp_slums_sprinkle_water" ] = loadfx( "maps/mp_maps/fx_mp_slums_sprinkle_water" ); + level._effect[ "fx_wall_water_bottom" ] = loadfx( "water/fx_wall_water_bottom" ); + level._effect[ "fx_water_splash_detail" ] = loadfx( "water/fx_water_splash_detail" ); + level._effect[ "fx_pipe_water_ground" ] = loadfx( "water/fx_pipe_water_ground" ); + level._effect[ "fx_water_fire_sprinkler_gush_splash_sm" ] = loadfx( "water/fx_water_fire_sprinkler_gush_splash_sm" ); + level._effect[ "fx_lf_mp_slums_sun1" ] = loadfx( "lens_flares/fx_lf_mp_slums_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "control_wire_sm" ] = %fxanim_gp_control_wire_sm_anim; + level.scr_anim[ "fxanim_props" ][ "roofvent" ] = %fxanim_gp_roofvent_anim; + level.scr_anim[ "fxanim_props" ][ "rope_coil" ] = %fxanim_gp_rope_coil_anim; + level.scr_anim[ "fxanim_props" ][ "dryer_loop" ] = %fxanim_gp_dryer_loop_anim; +} diff --git a/mp_socotra/aitype/enemy_dog_mp.gsc b/mp_socotra/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_socotra/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_socotra/character/character_mp_german_shepherd.gsc b/mp_socotra/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_socotra/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_socotra/maps/mp/createart/mp_socotra_art.gsc b/mp_socotra/maps/mp/createart/mp_socotra_art.gsc new file mode 100644 index 0000000..8352f83 --- /dev/null +++ b/mp_socotra/maps/mp/createart/mp_socotra_art.gsc @@ -0,0 +1,25 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_socotra", 0 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_socotra/maps/mp/createfx/mp_socotra_fx.gsc b/mp_socotra/maps/mp/createfx/mp_socotra_fx.gsc new file mode 100644 index 0000000..ec0d322 --- /dev/null +++ b/mp_socotra/maps/mp/createfx/mp_socotra_fx.gsc @@ -0,0 +1,1730 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -428,667, 1020,38, 227,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -299,283, -1657,69, 211 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 116 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smk_plume_md_blk" ); + ent.v[ "origin" ] = ( -684,98, -2470,29, 271,493 ); + ent.v[ "angles" ] = ( 13,1475, 136,766, -14,1714 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -919,616, -1164,18, 199,961 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 123 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_md" ); + ent.v[ "origin" ] = ( -1113,35, -989,305, 202,779 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -1118,63, -605,538, 199,424 ); + ent.v[ "angles" ] = ( 359, 148, 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -1292,58, -437,347, 208 ); + ent.v[ "angles" ] = ( 358, 79, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -1080,2, -21,7796, 199,386 ); + ent.v[ "angles" ] = ( 360, 100, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -821,967, 276,546, 135,901 ); + ent.v[ "angles" ] = ( 6, 64, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_windy_heavy_md" ); + ent.v[ "origin" ] = ( 2287,92, 574,404, 208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 162,951 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1948,58, 398,333, 215,353 ); + ent.v[ "angles" ] = ( 4,06298, 162,951, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 2128,62, 309,126, 222,428 ); + ent.v[ "angles" ] = ( 359,063, 162,951, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1676, 1504,57, 285,333 ); + ent.v[ "angles" ] = ( 359,063, 162,951, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1577,41, 1108,61, 208,397 ); + ent.v[ "angles" ] = ( 359,063, 162,951, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1609,37, -537,299, 104 ); + ent.v[ "angles" ] = ( 1,06456, 152,953, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_md" ); + ent.v[ "origin" ] = ( 1413,76, -1118,39, 113 ); + ent.v[ "angles" ] = ( 1,86574, 124,938, -0,888848 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1261,97, -572,017, 104 ); + ent.v[ "angles" ] = ( 0,74629, 94,9473, 1,14286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1550,7, 1585,04, 226,624 ); + ent.v[ "angles" ] = ( 359,063, 162,951, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 493,669, -312,98, 107,225 ); + ent.v[ "angles" ] = ( 354,639, 128,607, 9,96805 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 376,001, -576,508, 115 ); + ent.v[ "angles" ] = ( 0,23689, 84,1525, 1,3566 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -14,7859, -976,204, 132,466 ); + ent.v[ "angles" ] = ( 358,783, 156,142, 0,644598 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -331,998, -1281,27, 181,291 ); + ent.v[ "angles" ] = ( 6,44461, 75,2916, -0,688908 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( -534,17, -2031,74, 206 ); + ent.v[ "angles" ] = ( 358, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers" ); + ent.v[ "origin" ] = ( -472,675, -1623,29, 205 ); + ent.v[ "angles" ] = ( 359, 74,9825, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -613,956, -1514,2, 211,983 ); + ent.v[ "angles" ] = ( 1, 122, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -901,652, -637,395, 175,959 ); + ent.v[ "angles" ] = ( 5,76759, 46,0834, 1,65956 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -696,847, -401,109, 151,056 ); + ent.v[ "angles" ] = ( 5,89547, 82,9891, 0,366278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -664,27, -168,367, 129,555 ); + ent.v[ "angles" ] = ( 5,01985, 75,126, 0,959562 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 864,562, 2067,46, 364,905 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 903,675, 2122,7, 355,458 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 738,132, 2006,89, 356,521 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 846,644, 2359,7, 359,182 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 999,565, 1939,78, 363,225 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 769,001, 2309,17, 360,381 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 764,505, 1969,73, 358,987 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1596,5, -392,904, 104 ); + ent.v[ "angles" ] = ( 0,311249, 79,95, -1,01768 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1247,44, -377,946, 105 ); + ent.v[ "angles" ] = ( 1,74609, 94,9673, 1,1433 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( -283,752, -527,138, 216,125 ); + ent.v[ "angles" ] = ( 270,979, 223,667, 54,1511 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 8,88122, 58,394, 114,507 ); + ent.v[ "angles" ] = ( 358,503, 169,732, -0,475275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 302,535, -823,243, 131,256 ); + ent.v[ "angles" ] = ( 1,95937, 58,7663, -0,148735 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 673,43, 665,231, 66,9461 ); + ent.v[ "angles" ] = ( 351,734, 154,516, -1,28083 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 485,741, 1766,49, 286 ); + ent.v[ "angles" ] = ( 359,917, 214,666, -2,5138 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 2122,56, 444,018, 217,298 ); + ent.v[ "angles" ] = ( 2,73693, 122,034, 1,63656 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 1482,08, 1286,01, 205,233 ); + ent.v[ "angles" ] = ( 354,189, 116,634, 1,82825 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 1131,79, 1650,59, 279,69 ); + ent.v[ "angles" ] = ( 358,829, 168,683, -2,35321 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 2298,92, 452,79, 238,662 ); + ent.v[ "angles" ] = ( 358,9, 133,021, -0,617255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge" ); + ent.v[ "origin" ] = ( 2264,17, 295,53, 327,398 ); + ent.v[ "angles" ] = ( 0,165289, 131,407, -4,86239 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 2002,27, 219,609, 267,522 ); + ent.v[ "angles" ] = ( 1,28624, 96,0756, 1,62549 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 2385,88, 749,519, 271,76 ); + ent.v[ "angles" ] = ( 357,164, 159,775, 0,7788 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( -153,71, 703,091, 118,378 ); + ent.v[ "angles" ] = ( 271,131, 58,3991, 112,726 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 655,296, -622,333, 122,125 ); + ent.v[ "angles" ] = ( 271,099, 5,13488, 6,98167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( 430,306, -53,1272, 114,945 ); + ent.v[ "angles" ] = ( 0,793186, 125,188, 4,24615 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 1243,82, -1022,43, 103,227 ); + ent.v[ "angles" ] = ( 357,344, 87,7779, 2,21321 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( 1007,59, -1244,43, 96,343 ); + ent.v[ "angles" ] = ( 1, 117, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 896,394, -1562,37, 185,756 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 862,716, -1415,86, 136,038 ); + ent.v[ "angles" ] = ( 358, 98, 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 542,182, -1589,99, 107,357 ); + ent.v[ "angles" ] = ( 0,483277, 89,9489, -0,948553 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -235,547, -1313,64, 187,995 ); + ent.v[ "angles" ] = ( 7,45735, 104,689, 4,5107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_windy_heavy_sm_slow" ); + ent.v[ "origin" ] = ( -191,268, -1058,69, 140,715 ); + ent.v[ "angles" ] = ( 3,01636, 116,686, 6,97532 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -273,233, -876,34, 146,396 ); + ent.v[ "angles" ] = ( 0,379013, 117,015, 1,25579 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -1012,98, -962,73, 206,9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 113 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -29,9021, -1773,79, 435,866 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 130 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 250,474, -144,697, 148,615 ); + ent.v[ "angles" ] = ( 358,932, 116,562, -0,477644 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1498,19, 818,139, 356,028 ); + ent.v[ "angles" ] = ( 3,53969, 166,051, -2,0746 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( 1391,2, 521,116, 397,125 ); + ent.v[ "angles" ] = ( 1,51758, 172,901, -1,37094 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -438,382, -589,383, 147,291 ); + ent.v[ "angles" ] = ( 358,454, 149,921, -0,622784 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -730,827, -584,895, 163,689 ); + ent.v[ "angles" ] = ( 0,994673, 77, -0,104552 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 214,052, 877,131, 111,236 ); + ent.v[ "angles" ] = ( 354,286, 147,464, 3,01364 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -7,15416, 1176,39, 173,275 ); + ent.v[ "angles" ] = ( 346,045, 84,263, 0,27686 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 710,736, 1701,52, 282 ); + ent.v[ "angles" ] = ( 351,476, 120,732, -0,395834 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 607,241, 2348,43, 289 ); + ent.v[ "angles" ] = ( 345,782, 127,287, 2,25374 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge" ); + ent.v[ "origin" ] = ( 1624,93, 1640,97, 336,129 ); + ent.v[ "angles" ] = ( 3,25051, 190,388, -19,8542 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge" ); + ent.v[ "origin" ] = ( 1847,51, 1462,08, 341,83 ); + ent.v[ "angles" ] = ( 0,321654, 188,733, -28,9518 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 1988,79, -758,457, 144,125 ); + ent.v[ "angles" ] = ( 270, 356,82, 121,18 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 715,418, 1120,62, 348,736 ); + ent.v[ "angles" ] = ( 2,9289, 160,966, 0,889903 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 650,098, 940,689, 201,22 ); + ent.v[ "angles" ] = ( 347,148, 142,304, -10,5408 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 644,365, 1235,2, 236,125 ); + ent.v[ "angles" ] = ( 270, 0, 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 676,651, -188,09, 64,8804 ); + ent.v[ "angles" ] = ( 347,747, 127,37, 10,1578 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 836,866, 12,3742, 30 ); + ent.v[ "angles" ] = ( 355,963, 91,9184, 3,35687 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_md" ); + ent.v[ "origin" ] = ( 708,484, -199,705, 62,7395 ); + ent.v[ "angles" ] = ( 5,02986, 107,371, 8,75006 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 1210,12, -146,126, 78 ); + ent.v[ "angles" ] = ( 270, 0, 105 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( -112,135, 1598,35, 254,375 ); + ent.v[ "angles" ] = ( 281,628, 239,905, -91,2958 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 1050,06, -350,187, 310,031 ); + ent.v[ "angles" ] = ( 12,6728, 136,308, -1,02616 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 1256,35, -1199,55, 131,209 ); + ent.v[ "angles" ] = ( 356,802, 103,969, 1,78147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -57,98, -1767,6, 419,574 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -533,581, -2168,42, 204 ); + ent.v[ "angles" ] = ( 0, 89, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -12,5957, -2022,8, 135,678 ); + ent.v[ "angles" ] = ( 353, 39, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge" ); + ent.v[ "origin" ] = ( 413,439, -1782,14, 115,644 ); + ent.v[ "angles" ] = ( 353,521, 121,957, -3,00394 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( 424,984, -987,308, 382,288 ); + ent.v[ "angles" ] = ( 351,483, 141,527, -7,95857 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 457,247, -1013,04, 391,53 ); + ent.v[ "angles" ] = ( 9,82644, 130,124, -1,83855 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( -518,603, -749,194, 246,612 ); + ent.v[ "angles" ] = ( 0,713854, 105,764, 2,01348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( -963,41, -176,684, 392,302 ); + ent.v[ "angles" ] = ( 3, 126, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -730,808, 102,319, 324,469 ); + ent.v[ "angles" ] = ( 0,937058, 123,048, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( -1003,7, 687,996, 271,049 ); + ent.v[ "angles" ] = ( 354,678, 167,044, 8,34405 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -723,079, 59,7503, 328,999 ); + ent.v[ "angles" ] = ( 0, 115, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -1096,73, -299,022, 338,408 ); + ent.v[ "angles" ] = ( 1,18061, 121,63, -3,3697 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -1408,71, -314,012, 319,907 ); + ent.v[ "angles" ] = ( 2,23243, 62,896, 23,7886 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -1343,26, -636,583, 314,666 ); + ent.v[ "angles" ] = ( 358,677, 92,1731, -4,06551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 644,996, -229,812, 123,402 ); + ent.v[ "angles" ] = ( 356,623, 136,626, -2,09549 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 1778,22, 636,784, 208 ); + ent.v[ "angles" ] = ( 270, 356,634, 141,366 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_md" ); + ent.v[ "origin" ] = ( 1913,52, 1674,94, 434,511 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 528,24, 2717,08, 319 ); + ent.v[ "angles" ] = ( 347,783, 180,45, -4,70543 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 168,472, 1352,82, 543,125 ); + ent.v[ "angles" ] = ( 1,83386, 152,89, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant" ); + ent.v[ "origin" ] = ( 607,987, 1533,49, 539,125 ); + ent.v[ "angles" ] = ( 357,855, 90,9659, -1,72969 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 330,375, 1488,81, 539,125 ); + ent.v[ "angles" ] = ( 1,83386, 152,89, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1541,01, 958,029, 273,631 ); + ent.v[ "angles" ] = ( 0,509164, 123,987, -0,103306 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 2365,2, 588,265, 208,897 ); + ent.v[ "angles" ] = ( 2,37443, 133,039, 2,12878 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 1901,24, 930,968, 197,422 ); + ent.v[ "angles" ] = ( 2,55089, 128,038, 0,913741 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1207,88, 1251,03, 357,449 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1082,67, 774,131, 354,138 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -501,058, 1260,23, 224,565 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -1040,08, 95,0819, 182,463 ); + ent.v[ "angles" ] = ( 0,403872, 103,933, 0,841211 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -842,099, 14,7438, 312,837 ); + ent.v[ "angles" ] = ( 0,251666, 113,932, 1,89856 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 856,004, 189,103, -158,307 ); + ent.v[ "angles" ] = ( 358,297, 186,626, -2,00872 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 497,619, 148,666, -217,398 ); + ent.v[ "angles" ] = ( 357,9, 205,58, -0,908693 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 1084,12, 582,391, 40,3607 ); + ent.v[ "angles" ] = ( 271,691, 32,1267, 113,903 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_runner" ); + ent.v[ "origin" ] = ( 1189,24, 442,334, 39,624 ); + ent.v[ "angles" ] = ( 271,691, 32,1267, 113,903 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( -1491,64, -423,987, 345,897 ); + ent.v[ "angles" ] = ( 0, 83, 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -533,823, -1831,14, 204 ); + ent.v[ "angles" ] = ( 0, 81, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -478,125, -943,409, 354,478 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 438,499, -1414,15, 335,006 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 380,657, -1712,88, 313,985 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 919,828, -1233,76, 128,252 ); + ent.v[ "angles" ] = ( 2, 98, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 1073,67, -1135,86, 121,826 ); + ent.v[ "angles" ] = ( 2, 98, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 818,841, -1281,75, 130,119 ); + ent.v[ "angles" ] = ( 2, 98, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 231,681, -892,675, 123,747 ); + ent.v[ "angles" ] = ( 2,03768, 45,1736, 0,905698 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 379,228, -114,312, 124,517 ); + ent.v[ "angles" ] = ( 6,63058, 143,138, 6,94948 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 489,236, -6,16093, 104,378 ); + ent.v[ "angles" ] = ( 18,778, 117,737, 5,77029 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -104,444, -679,758, 285,325 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 64,423, -290,784, 276,711 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_debris_papers_narrow" ); + ent.v[ "origin" ] = ( 802,242, 32,3345, 30,7429 ); + ent.v[ "angles" ] = ( 0,23689, 84,1525, 1,3566 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 832,125, 1263,28, 336,682 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_swarm" ); + ent.v[ "origin" ] = ( 2622,06, -4378,09, -799,945 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 196 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( 4206,07, -698,541, -258,309 ); + ent.v[ "angles" ] = ( 2, 180, 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( 2320,77, -2465,39, -277,373 ); + ent.v[ "angles" ] = ( 2, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_long" ); + ent.v[ "origin" ] = ( 193,48, -1603,02, 262,443 ); + ent.v[ "angles" ] = ( 0, 273, -11 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 315,457, -1454,86, 255,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 297 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 310,031, -1502,66, 254,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 246 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_drip_light_shrt" ); + ent.v[ "origin" ] = ( 53,6141, -1603,33, 319,961 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 327 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_fuel_sm" ); + ent.v[ "origin" ] = ( -654,418, -2476,15, 218,599 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( -516,391, -1716,12, 204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( -346,704, -1173,06, 167,742 ); + ent.v[ "angles" ] = ( 3, 42, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 387,38, -476,34, 115 ); + ent.v[ "angles" ] = ( 2,71912, 67,0301, 1,26899 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 660,712, -129,057, 57,873 ); + ent.v[ "angles" ] = ( 3,85335, 60,0393, 0,928899 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 672,427, 682,916, 57,109 ); + ent.v[ "angles" ] = ( 354,468, 158,143, -0,44383 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 2294,65, 640,427, 209,085 ); + ent.v[ "angles" ] = ( 359,435, 152,108, -0,174735 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 2162,65, 525,436, 208,13 ); + ent.v[ "angles" ] = ( 359,646, 188,109, 0,52679 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 2010,26, 893,875, 204 ); + ent.v[ "angles" ] = ( 0,228463, 133,111, 0,592133 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 1711,88, 1183,94, 204 ); + ent.v[ "angles" ] = ( 0,19716, 136,111, 0,603278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 1410,3, 1480,1, 211,59 ); + ent.v[ "angles" ] = ( 349,894, 131,905, -0,588894 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 1114,49, 1697,94, 281,048 ); + ent.v[ "angles" ] = ( 359,927, 175,498, -0,382703 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 643,875, 1736,29, 279 ); + ent.v[ "angles" ] = ( 0, 186,498, -0,389533 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 285,347, 1706,97, 273,918 ); + ent.v[ "angles" ] = ( 0,202075, 217,498, -0,333024 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( 360,172, 834,124, 101,096 ); + ent.v[ "angles" ] = ( 357,544, 164,117, 1,9823 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( -1054,08, -987,404, 198,574 ); + ent.v[ "angles" ] = ( 358,511, 93,0131, 4,28793 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( -1274,63, -596,182, 205,534 ); + ent.v[ "angles" ] = ( 1,50271, 93,2374, 4,28795 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "origin" ] = ( -1304,1, -541,903, 233,78 ); + ent.v[ "angles" ] = ( 354,522, 92,7128, 4,30619 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -740,805, 1164,36, 357,972 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,695, 1177,4, 369,241 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -740,633, 1214,96, 385,644 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1208,95, 362,392 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1207,94, 354,186 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1203,48, 405,82 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,214, 1190,81, 385,091 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1197,64, 391,757 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,543, 1183,13, 401,289 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1205,23, 426,036 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -738,181, 1214,46, 414,48 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1178,11, 392,785 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,833, 1172,79, 417,426 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -750,503, 1193,89, 438,609 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -742,294, 1070,12, 372,871 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,183, 1083,16, 366,14 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -742,122, 1120,72, 391,543 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1114,7, 372,291 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1113,69, 360,085 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1109,23, 411,719 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -742,703, 1096,56, 382,99 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1103,39, 397,656 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,032, 1088,88, 407,188 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1110,98, 437,935 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -739,67, 1120,22, 420,378 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1083,86, 398,684 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -741,322, 1078,54, 423,325 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_warm_sm" ); + ent.v[ "origin" ] = ( -751,992, 1099,65, 444,508 ); + ent.v[ "angles" ] = ( 33,9941, 61,2062, 0,674439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_cigarette_room_amb" ); + ent.v[ "origin" ] = ( -435,24, 1055,74, 330,914 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 568,632, 1978,33, 288 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 1110,4, 1672,47, 288 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 168 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 1776,48, 1028,71, 213 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 915,645, 515,697, 57,6754 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 439,258, 795,985, 99,6238 ); + ent.v[ "angles" ] = ( 8, 338, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 14,7404, 500,338, 125,978 ); + ent.v[ "angles" ] = ( 358,071, 81,8688, -0,234714 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -251,773, 138,033, 73,4858 ); + ent.v[ "angles" ] = ( 359,369, 3,85458, -0,16143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -813,864, -533,271, 168,258 ); + ent.v[ "angles" ] = ( 5,31381, 18,8909, -0,226672 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -407,932, -1419,24, 227,317 ); + ent.v[ "angles" ] = ( 2,03436, 58,0035, 0,34443 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -456,855, -1535,95, 213 ); + ent.v[ "angles" ] = ( 2,94029, 140,104, 2,06521 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -28,2685, -924,07, 140,076 ); + ent.v[ "angles" ] = ( 1,42287, 1,9788, -2,49435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 1301,64, -1044,03, 111,326 ); + ent.v[ "angles" ] = ( 2,74164, 44,9893, -0,853829 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 1271,54, -788,359, 112,948 ); + ent.v[ "angles" ] = ( 2,54176, 90,0386, -0,663714 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 853,086, -1357,3, 113,713 ); + ent.v[ "angles" ] = ( 359,88, 12,056, -1,62417 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 1884,41, 854,873, 213 ); + ent.v[ "angles" ] = ( 358,436, 270,048, -0,544642 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 2144,21, 572,547, 213 ); + ent.v[ "angles" ] = ( 358,867, 204,029, 0,207109 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1895,1, 884,776, 204 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 2117,48, 552,453, 204 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1007,92, 1723,79, 285 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 623,778, 1715,64, 279 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 833,656, 2043,51, 325,125 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 956,695, 2138,91, 328,125 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 487,208, 2163,69, 291,647 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 642,222, 2087,73, 299 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1085,06, 1360,13, 225,013 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1020,14, 1254,59, 289,25 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 857,167, 1312,18, 283,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 339 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 1110,35, 1269,43, 283,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 1107,11, 1264,1, 418,875 ); + ent.v[ "angles" ] = ( 0, 168, -91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_roaches_short" ); + ent.v[ "origin" ] = ( 928,332, 1151,45, 418,875 ); + ent.v[ "angles" ] = ( 0,587759, 44,9158, -92,7655 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 930,59, 1285,83, 283,25 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_static_prnt" ); + ent.v[ "origin" ] = ( -1134,84, -893,278, 230,488 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_static_prnt" ); + ent.v[ "origin" ] = ( 1494,94, -967,977, 133,481 ); + ent.v[ "angles" ] = ( 313,693, 176,165, -6,43306 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 1503,98, -1073,77, 111,084 ); + ent.v[ "angles" ] = ( 354, 181, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_flutter" ); + ent.v[ "origin" ] = ( 1188,36, -853,235, 104,965 ); + ent.v[ "angles" ] = ( 349,399, 353,438, 7,41377 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_static_prnt" ); + ent.v[ "origin" ] = ( 1410,33, -365,597, 130,493 ); + ent.v[ "angles" ] = ( 327,984, 226,948, -38,9286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_purple" ); + ent.v[ "origin" ] = ( 1591,55, 294,975, 260,561 ); + ent.v[ "angles" ] = ( 8,96774, 48,9338, -0,633866 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_pink" ); + ent.v[ "origin" ] = ( 1572,61, 303,454, 271,805 ); + ent.v[ "angles" ] = ( 5,96792, 48,967, -0,629531 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_purple" ); + ent.v[ "origin" ] = ( 1578,28, 298,739, 303,798 ); + ent.v[ "angles" ] = ( 353,969, 49,0986, -0,629603 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_pink" ); + ent.v[ "origin" ] = ( 1591,27, 300,873, 289,89 ); + ent.v[ "angles" ] = ( 353,936, 43,065, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_purple" ); + ent.v[ "origin" ] = ( 1591,02, 296,169, 298,529 ); + ent.v[ "angles" ] = ( 357,027, 53,0651, -1,04599 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_purple" ); + ent.v[ "origin" ] = ( 1583,38, 296,169, 285,967 ); + ent.v[ "angles" ] = ( 0, 53,0103, -1,04458 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_purple" ); + ent.v[ "origin" ] = ( 1600,84, 296,169, 281,766 ); + ent.v[ "angles" ] = ( 2,026, 52,9738, -1,04524 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_blue" ); + ent.v[ "origin" ] = ( 1579,03, 296,023, 278,541 ); + ent.v[ "angles" ] = ( 5,0255, 52,9189, -1,04861 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_blue" ); + ent.v[ "origin" ] = ( 1598,67, 296,023, 284,048 ); + ent.v[ "angles" ] = ( 5,90469, 46,8837, -1,2573 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_blue" ); + ent.v[ "origin" ] = ( 1587,55, 296,023, 314,258 ); + ent.v[ "angles" ] = ( 349,028, 53,2133, -1,06403 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_blue" ); + ent.v[ "origin" ] = ( 1570,19, 291,793, 262,931 ); + ent.v[ "angles" ] = ( 11,0245, 52,8072, -1,06422 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 964,812, 1184,6, 337,278 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 900,721, 1178,92, 322,852 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1106,38, 1290,85, 330,415 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1116,07, 1218,73, 330,927 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1563,72, 571,713, 261,162 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1525,18, 343,339, 257,63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1490,34, 338,676, 252,827 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1652,67, 394,473, 256,724 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1066,8, 1444,87, 342,913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1007,2, 1528,61, 292,716 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( 5151,47, 110,746, 287,963 ); + ent.v[ "angles" ] = ( 2, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( 700,43, -3082,15, -384,497 ); + ent.v[ "angles" ] = ( 2, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 141,362, 1638,12, 273,058 ); + ent.v[ "angles" ] = ( 7,81536, 242,167, -1,50751 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -87,8483, 259,648, 99,037 ); + ent.v[ "angles" ] = ( 8, 224, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -851,192, -1199,62, 208,51 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 318 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1363,1, -654,17, 175,159 ); + ent.v[ "angles" ] = ( 356,262, 129,95, 1,16999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1427,19, -666,059, 239,234 ); + ent.v[ "angles" ] = ( 356,262, 129,95, 1,16999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1503,68, -1015,03, 197,776 ); + ent.v[ "angles" ] = ( 357,204, 132,973, 1,0238 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1240,3, -303,689, 104 ); + ent.v[ "angles" ] = ( 357,398, 98,9209, -2,071 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 1758,24, 342,945, 255,308 ); + ent.v[ "angles" ] = ( 359,965, 62,0042, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -18,6295, 1248,16, 181,784 ); + ent.v[ "angles" ] = ( 15,986, 268,284, -2,61464 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 206,858, 843,558, 124,375 ); + ent.v[ "angles" ] = ( 2, 332, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 304,593, 884,716, 122,632 ); + ent.v[ "angles" ] = ( 5, 332, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 805,009, 516,556, 50,4845 ); + ent.v[ "angles" ] = ( 1,43876, 287,983, -1,38981 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1011,04, 1548,22, 283 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 978,594, 1845,3, 322,884 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_butterfly_static_prnt" ); + ent.v[ "origin" ] = ( 88,6087, -1868,49, 203,885 ); + ent.v[ "angles" ] = ( 6,03354, 271,314, -35,1252 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1879,49, -244,125, 295,202 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1800,97, -682,559, 297,873 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 1793,72, -835,498, 110 ); + ent.v[ "angles" ] = ( 359,354, 161,886, -0,882607 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_md" ); + ent.v[ "origin" ] = ( 1482,63, 1069,3, 204,398 ); + ent.v[ "angles" ] = ( 1,86574, 124,938, -0,888848 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_md" ); + ent.v[ "origin" ] = ( 1337,51, 1570,16, 235,242 ); + ent.v[ "angles" ] = ( 351,789, 147,64, -0,173719 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -1230,93, -52,771, 74,876 ); + ent.v[ "angles" ] = ( 41,9836, 129,151, 9,69062 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -1101,04, 301,61, 81,6412 ); + ent.v[ "angles" ] = ( 354,438, 121,931, 7,22208 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -479,455, 1156,87, 212,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( -474,464, 1105,36, 185,125 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -403,648, 116,011, 84,7432 ); + ent.v[ "angles" ] = ( 356,466, 197,97, -0,30639 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -301,636, -1427,11, 204,4 ); + ent.v[ "angles" ] = ( 6, 116, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -77,2682, -969,96, 152,072 ); + ent.v[ "angles" ] = ( 1,67574, 7,97567, -1,33206 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -241,353, -875,267, 172,512 ); + ent.v[ "angles" ] = ( 1,13469, 129,036, -2,36212 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1085,16, 495,734, 56,8909 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1004,92, 922,4, 296,125 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 369,113, 2121,6, 323,372 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 627,41, 1614,24, 334,312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 744,232, 1616,26, 336,336 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 721,963, -126,523, 64,4678 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 1832,51, -442,99, 240,125 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm" ); + ent.v[ "origin" ] = ( 324,501, -1412,22, 264,125 ); + ent.v[ "angles" ] = ( 358,867, 204,029, -0,792892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_faucet_on" ); + ent.v[ "origin" ] = ( 1935,99, 695,071, 242,023 ); + ent.v[ "angles" ] = ( 83, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_faucet_splash" ); + ent.v[ "origin" ] = ( 1929,33, 696,249, 204,239 ); + ent.v[ "angles" ] = ( 273, 1, 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -776,643, 379,363, 125,799 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -714,771, 514,557, 115 ); + ent.v[ "angles" ] = ( 354, 74, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -6,46447, 364,925, 164,844 ); + ent.v[ "angles" ] = ( 358,071, 81,8687, -1,23472 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( -680,417, -523,191, 143,789 ); + ent.v[ "angles" ] = ( 0,369069, 3,88662, 1,838 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( 4672,62, -198,619, 1247,15 ); + ent.v[ "angles" ] = ( 2, 180, 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( 1922,04, -3536,46, 1170,22 ); + ent.v[ "angles" ] = ( 1,15591, 165,017, 176,585 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( -1102,22, -4538,26, 1047,8 ); + ent.v[ "angles" ] = ( 2, 180, 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( -4172,67, -1879,29, 1088,26 ); + ent.v[ "angles" ] = ( 2, 180, 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 533,246, 305,745, 161,23 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 71 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -878,101, -235,076, 329,121 ); + ent.v[ "angles" ] = ( 0, 115, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 545,875, 286,287, 163,76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "origin" ] = ( 74,5502, -445,167, 208,5 ); + ent.v[ "angles" ] = ( 305,86, 17,0497, -96,3044 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "origin" ] = ( 69,7567, -492,776, 205,5 ); + ent.v[ "angles" ] = ( 300,341, 345,752, -85,0169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "origin" ] = ( -31,3304, -549,847, 208,5 ); + ent.v[ "angles" ] = ( 299,559, 230,559, 94,0593 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "origin" ] = ( 6,02181, -540,682, 208,5 ); + ent.v[ "angles" ] = ( 299,083, 255,419, 100,622 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_seagulls_circle_below" ); + ent.v[ "origin" ] = ( -2879,38, 1547,04, 1079,23 ); + ent.v[ "angles" ] = ( 2, 180, 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 732, 2127,86, 349,619 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 865,589, 2205,97, 366,338 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 1032,85, 2029, 372,667 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_fly_swarm_lng" ); + ent.v[ "origin" ] = ( 1329,42, -1118,49, 105,281 ); + ent.v[ "angles" ] = ( 359,572, 204,044, 2,5911 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 1100,3, -1329,92, -293,425 ); + ent.v[ "angles" ] = ( 0,788114, 133, -0,615798 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_stain_glss_pink" ); + ent.v[ "origin" ] = ( 1594,57, 304,802, 306,428 ); + ent.v[ "angles" ] = ( 347,969, 49,1658, -0,640177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -226,441, 614,918, 173,918 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 666,446, 390,311, 209,082 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 173,692, 553,872, 210,921 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1559,99, 607,556, 290,68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -432,632, 887,769, 388,807 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -659,863, 1264,31, 328,627 ); + ent.v[ "angles" ] = ( 14,9977, 269,965, -0,267933 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -1117,73, 15,1349, -317,279 ); + ent.v[ "angles" ] = ( 1,48609, 133,63, 1,71703 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 2156,08, 890,474, 239,741 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 2012,1, 924,563, 228,909 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 440,904, -472,458, 139,958 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( 470,403, -610,971, 162,06 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_fireplace_md" ); + ent.v[ "origin" ] = ( 1987,12, -258,44, 252,658 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant_thin" ); + ent.v[ "origin" ] = ( 119,687, 380,612, 134,812 ); + ent.v[ "angles" ] = ( 358,764, 173,999, -1,86329 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant_thin" ); + ent.v[ "origin" ] = ( -43,8084, 8,52594, 101,195 ); + ent.v[ "angles" ] = ( 357,629, 138,987, -3,03409 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( -156,146, -1069,57, 168,804 ); + ent.v[ "angles" ] = ( 6, 116, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sand_kickup_thin" ); + ent.v[ "origin" ] = ( 237,141, -922,686, 153,971 ); + ent.v[ "angles" ] = ( 359,108, 74,025, 1,49298 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_socotra_flicker_light" ); + ent.v[ "origin" ] = ( -695,177, -787,753, 338,235 ); + ent.v[ "angles" ] = ( 359,895, 267,003, -2,99818 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "origin" ] = ( -690,172, -790,339, 362,369 ); + ent.v[ "angles" ] = ( 81, 74, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sparks_bounce_socotra" ); + ent.v[ "origin" ] = ( -709,882, -748,195, 358,126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -233,708, 323,416, 227,125 ); + ent.v[ "angles" ] = ( 8,91874, 271,853, 17,1653 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -229,885, 350,939, 169,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -594,031, 884,4, 235,125 ); + ent.v[ "angles" ] = ( 6,30834, 161,512, -78,7069 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -652,328, 889,87, 229,125 ); + ent.v[ "angles" ] = ( 2,53584, 327,814, 80,936 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 70,7891, 1431,43, 363,554 ); + ent.v[ "angles" ] = ( 35,9848, 216,144, -21,2539 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -21,0226, 1447,7, 369,293 ); + ent.v[ "angles" ] = ( 39,6913, 267,27, 11,4673 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 55,9814, 1464,14, 300,951 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -593,003, -2204,35, 329 ); + ent.v[ "angles" ] = ( 41, 267, 14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -495,957, -2195,21, 331 ); + ent.v[ "angles" ] = ( 41, 267, 14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant_thin" ); + ent.v[ "origin" ] = ( 1926,97, 563,822, 205 ); + ent.v[ "angles" ] = ( 358,764, 173,999, -1,86329 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant_thin" ); + ent.v[ "origin" ] = ( 859,618, 533,827, 32,8482 ); + ent.v[ "angles" ] = ( 357,794, 126,986, -0,366646 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge" ); + ent.v[ "origin" ] = ( 1061,13, -1228,45, 91,7016 ); + ent.v[ "angles" ] = ( 356,865, 127,791, -3,65074 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant_thin" ); + ent.v[ "origin" ] = ( 62,6718, 216,636, 118,859 ); + ent.v[ "angles" ] = ( 358,495, 153,971, -3,54378 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_wide_distant_thin" ); + ent.v[ "origin" ] = ( 680,441, 78,4259, 24,6143 ); + ent.v[ "angles" ] = ( 356,362, 124,047, -0,505892 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_sun_flare_socotra" ); + ent.v[ "origin" ] = ( -6746,94, -19551,1, 9526,35 ); + ent.v[ "angles" ] = ( 314,686, 143,193, -125,925 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( -1630,71, 339,54, -80 ); + ent.v[ "angles" ] = ( 356,894, 44,49, -2,05213 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_md" ); + ent.v[ "origin" ] = ( 38,5778, 593,921, 119,296 ); + ent.v[ "angles" ] = ( 356,042, 88,5716, -1,64698 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_sml" ); + ent.v[ "origin" ] = ( 986,849, -130,034, 77,4107 ); + ent.v[ "angles" ] = ( 357,364, 177,077, 0,459794 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 1394,73, 969,905, 194,986 ); + ent.v[ "angles" ] = ( 359,131, 250,057, -0,896664 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 2023,85, 1220,5, 288,725 ); + ent.v[ "angles" ] = ( 358,942, 172,044, 0,663439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_ledge_md" ); + ent.v[ "origin" ] = ( 2226,05, 1050,06, 350,851 ); + ent.v[ "angles" ] = ( 358,942, 172,044, 0,663439 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; +} diff --git a/mp_socotra/maps/mp/mp_socotra.gsc b/mp_socotra/maps/mp/mp_socotra.gsc new file mode 100644 index 0000000..d8914bb --- /dev/null +++ b/mp_socotra/maps/mp/mp_socotra.gsc @@ -0,0 +1,40 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_socotra_fx::main(); + maps/mp/_load::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_socotra" ); + maps/mp/mp_socotra_amb::main(); + setheliheightpatchenabled( "war_mode_heli_height_lock", 0 ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + rts_remove(); + level.remotemotarviewleft = 30; + level.remotemotarviewright = 30; + level.remotemotarviewup = 18; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2000", reset_dvars ); +} + +rts_remove() +{ + rtsfloors = getentarray( "overwatch_floor", "targetname" ); + _a38 = rtsfloors; + _k38 = getFirstArrayKey( _a38 ); + while ( isDefined( _k38 ) ) + { + rtsfloor = _a38[ _k38 ]; + if ( isDefined( rtsfloor ) ) + { + rtsfloor delete(); + } + _k38 = getNextArrayKey( _a38, _k38 ); + } +} diff --git a/mp_socotra/maps/mp/mp_socotra_amb.gsc b/mp_socotra/maps/mp/mp_socotra_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_socotra/maps/mp/mp_socotra_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_socotra/maps/mp/mp_socotra_fx.gsc b/mp_socotra/maps/mp/mp_socotra_fx.gsc new file mode 100644 index 0000000..ea173d8 --- /dev/null +++ b/mp_socotra/maps/mp/mp_socotra_fx.gsc @@ -0,0 +1,84 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +precache_util_fx() +{ +} + +precache_scripted_fx() +{ +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "rope_toggle" ] = %fxanim_gp_rope_toggle_anim; + level.scr_anim[ "fxanim_props" ][ "ropes_hang" ] = %fxanim_gp_ropes_hang_01_anim; + level.scr_anim[ "fxanim_props" ][ "rope_arch" ] = %fxanim_mp_socotra_rope_arch_anim; + level.scr_anim[ "fxanim_props" ][ "wire_coil" ] = %fxanim_gp_wire_coil_01_anim; + level.scr_anim[ "fxanim_props" ][ "wirespark_long" ] = %fxanim_gp_wirespark_long_anim; + level.scr_anim[ "fxanim_props" ][ "wirespark_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "yemen_pent_long" ] = %fxanim_gp_flag_yemen_pent_long_anim; + level.scr_anim[ "fxanim_props" ][ "roaches" ] = %fxanim_gp_roaches_anim; + level.scr_anim[ "fxanim_props" ][ "cloth_sheet_med" ] = %fxanim_gp_cloth_sheet_med_anim; + level.scr_anim[ "fxanim_props" ][ "rope_coil" ] = %fxanim_gp_rope_coil_anim; +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_sand_dust_motes" ); + level._effect[ "fx_light_gray_stain_glss_pink" ] = loadfx( "light/fx_light_gray_stain_glss_pink" ); + level._effect[ "fx_light_gray_stain_glss_blue" ] = loadfx( "light/fx_light_gray_stain_glss_blue" ); + level._effect[ "fx_light_gray_stain_glss_purple" ] = loadfx( "light/fx_light_gray_stain_glss_purple" ); + level._effect[ "fx_light_gray_stain_glss_warm_sm" ] = loadfx( "light/fx_light_gray_stain_glss_warm_sm" ); + level._effect[ "fx_mp_sun_flare_socotra" ] = loadfx( "maps/mp_maps/fx_mp_sun_flare_socotra" ); + level._effect[ "fx_light_gray_blue_ribbon" ] = loadfx( "light/fx_light_gray_blue_ribbon" ); + level._effect[ "fx_insects_butterfly_flutter" ] = loadfx( "bio/insects/fx_insects_butterfly_flutter" ); + level._effect[ "fx_insects_butterfly_static_prnt" ] = loadfx( "bio/insects/fx_insects_butterfly_static_prnt" ); + level._effect[ "fx_insects_roaches_short" ] = loadfx( "bio/insects/fx_insects_roaches_short" ); + level._effect[ "fx_insects_fly_swarm_lng" ] = loadfx( "bio/insects/fx_insects_fly_swarm_lng" ); + level._effect[ "fx_insects_fly_swarm" ] = loadfx( "bio/insects/fx_insects_fly_swarm" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_seagulls_circle_below" ] = loadfx( "bio/animals/fx_seagulls_circle_below" ); + level._effect[ "fx_seagulls_circle_swarm" ] = loadfx( "bio/animals/fx_seagulls_circle_swarm" ); + level._effect[ "fx_leaves_falling_lite_sm" ] = loadfx( "foliage/fx_leaves_falling_lite_sm" ); + level._effect[ "fx_debris_papers" ] = loadfx( "env/debris/fx_debris_papers" ); + level._effect[ "fx_debris_papers_narrow" ] = loadfx( "env/debris/fx_debris_papers_narrow" ); + level._effect[ "fx_mp_smk_plume_sm_blk" ] = loadfx( "maps/mp_maps/fx_mp_smk_plume_sm_blk" ); + level._effect[ "fx_mp_smk_plume_md_blk" ] = loadfx( "maps/mp_maps/fx_mp_socotra_smk_plume_blck" ); + level._effect[ "fx_smk_cigarette_room_amb" ] = loadfx( "smoke/fx_smk_cigarette_room_amb" ); + level._effect[ "fx_smk_smolder_gray_slow_shrt" ] = loadfx( "smoke/fx_smk_smolder_gray_slow_shrt" ); + level._effect[ "fx_fire_fuel_sm" ] = loadfx( "fire/fx_fire_fuel_sm" ); + level._effect[ "fx_mp_water_drip_light_long" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_long" ); + level._effect[ "fx_mp_water_drip_light_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_drip_light_shrt" ); + level._effect[ "fx_water_faucet_on" ] = loadfx( "water/fx_water_faucet_on" ); + level._effect[ "fx_water_faucet_splash" ] = loadfx( "water/fx_water_faucet_splash" ); + level._effect[ "fx_mp_sand_kickup_md" ] = loadfx( "maps/mp_maps/fx_mp_sand_kickup_md" ); + level._effect[ "fx_mp_sand_kickup_thin" ] = loadfx( "maps/mp_maps/fx_mp_sand_kickup_thin" ); + level._effect[ "fx_mp_sand_windy_heavy_sm_slow" ] = loadfx( "maps/mp_maps/fx_mp_sand_windy_heavy_sm_slow" ); + level._effect[ "fx_sand_ledge" ] = loadfx( "dirt/fx_sand_ledge" ); + level._effect[ "fx_sand_ledge_sml" ] = loadfx( "dirt/fx_sand_ledge_sml" ); + level._effect[ "fx_sand_ledge_md" ] = loadfx( "dirt/fx_sand_ledge_md" ); + level._effect[ "fx_sand_ledge_wide_distant" ] = loadfx( "dirt/fx_sand_ledge_wide_distant" ); + level._effect[ "fx_sand_windy_heavy_md" ] = loadfx( "dirt/fx_sand_windy_heavy_md" ); + level._effect[ "fx_sand_swirl_sm_runner" ] = loadfx( "dirt/fx_sand_swirl_sm_runner" ); + level._effect[ "fx_sand_moving_in_air_md" ] = loadfx( "dirt/fx_sand_moving_in_air_md" ); + level._effect[ "fx_sand_moving_in_air_pcloud" ] = loadfx( "dirt/fx_sand_moving_in_air_pcloud" ); + level._effect[ "fx_mp_elec_spark_burst_xsm_thin" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_xsm_thin" ); + level._effect[ "fx_fire_fireplace_md" ] = loadfx( "fire/fx_fire_fireplace_md" ); + level._effect[ "fx_sand_ledge_wide_distant_thin" ] = loadfx( "dirt/fx_sand_ledge_wide_distant_thin" ); + level._effect[ "fx_mp_socotra_flicker_light" ] = loadfx( "maps/mp_maps/fx_mp_socotra_flicker_light" ); + level._effect[ "fx_sparks_bounce_socotra" ] = loadfx( "electrical/fx_sparks_bounce_socotra" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_mp_sun_flare_socotra" ] = loadfx( "lens_flares/fx_lf_mp_socotra_sun1" ); +} + +main() +{ + precache_util_fx(); + precache_createfx_fx(); + precache_scripted_fx(); + precache_fxanim_props(); + maps/mp/createfx/mp_socotra_fx::main(); + maps/mp/createart/mp_socotra_art::main(); +} diff --git a/mp_studio/aitype/enemy_dog_mp.gsc b/mp_studio/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_studio/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_studio/character/character_mp_german_shepherd.gsc b/mp_studio/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_studio/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_studio/maps/mp/createfx/mp_studio_fx.gsc b/mp_studio/maps/mp/createfx/mp_studio_fx.gsc new file mode 100644 index 0000000..94956a5 --- /dev/null +++ b/mp_studio/maps/mp/createfx/mp_studio_fx.gsc @@ -0,0 +1,1255 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -419,168, 1077,59, 4,7879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -785,297, 1380,25, -18,085 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 67 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -811,384, 1230,81, -47,236 ); + ent.v[ "angles" ] = ( 345,335, 52,5894, 3,18865 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 428,936, -465,795, -122,995 ); + ent.v[ "angles" ] = ( 355,806, 198,58, 2,40333 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 372,677, -811,2, -124,239 ); + ent.v[ "angles" ] = ( 351,361, 152,691, 1,22483 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 271,098, -547,557, -112,09 ); + ent.v[ "angles" ] = ( 359, 184, 0 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 652,183, -14,9878, -67,2135 ); + ent.v[ "angles" ] = ( 359,018, 195, -0,190854 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1686,03, 1079,32, -60 ); + ent.v[ "angles" ] = ( 353,704, 158,272, -4,94521 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1485,75, 829,45, -65,4603 ); + ent.v[ "angles" ] = ( 346,838, 187,509, -7,50258 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1851,56, 1162,9, 8,29118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1324,87, 581,65, -73,357 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1068,34, 344,956, -97,7356 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 556,429, 71,8617, -81,5154 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 409,78, -467,84, -94,7611 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1449,72, 2170,98, -39,9823 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 342 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1488,93, 2291,52, -36,3985 ); + ent.v[ "angles" ] = ( 27, 360, 3 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 458,226, 2671,17, -48 ); + ent.v[ "angles" ] = ( 349,174, 8,08485, 82,4906 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 372,225, 2598,58, -49,5248 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 554,083, 2626,09, -48 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 679,353, 2603,86, -50,5174 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 561,342, 2567,66, -52,8807 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -147,746, 2346,75, -59,5581 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -203,38, 2393,13, -52,0751 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 341,955, 2621,21, -52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 341 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_debris_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 459,483, 2739,2, 200,836 ); + ent.v[ "angles" ] = ( 30,9528, 293,499, 1,80116 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -512,269, 2436,49, -54,8269 ); + ent.v[ "angles" ] = ( 290,668, 274,677, 89,1924 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -118,479, 2557,07, -50,0739 ); + ent.v[ "angles" ] = ( 290,668, 274,677, 89,1924 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -643,664, 2218,07, -4,0618 ); + ent.v[ "angles" ] = ( 0,464774, 57,3871, -2,10586 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 627,826, 2686,87, 273,555 ); + ent.v[ "angles" ] = ( 9,97538, 297,938, -0,704698 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -689,13, 19,5314, -125,37 ); + ent.v[ "angles" ] = ( 359, 310, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -542,577, -3,85301, -126,906 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -775,348, -168,671, -126,875 ); + ent.v[ "angles" ] = ( 12, 360, -13 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -697,089, -391,881, -127,556 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -609,744, -372,3, -126,518 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -803,265, -199,911, -89,9242 ); + ent.v[ "angles" ] = ( 12, 360, -13 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -793,77, -200,077, -61,6809 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -803,257, -199,41, -85,0372 ); + ent.v[ "angles" ] = ( 8,25951, 338,06, -32,0767 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -802,103, -212,83, -43,3678 ); + ent.v[ "angles" ] = ( 8,25951, 338,06, -32,0767 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1135,05, 621,062, 127,974 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -790,84, 593,596, 129,578 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1469,48, 680,631, 132,341 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -692,435, 711,327, 13,3726 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 103 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1167,18, 731,292, 38,3317 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 65 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -684,129, 1148,08, -2,11566 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 72 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_moving_in_air_pcloud" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -578,878, 1630,4, -2,58031 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -865,916, 840,612, -60 ); + ent.v[ "angles" ] = ( 349, 67, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1361,09, 880,965, -60,2991 ); + ent.v[ "angles" ] = ( 344,062, 41,0805, 4,81067 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -484,115, 698,256, 124,771 ); + ent.v[ "angles" ] = ( 10, 84, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -543,921, -2,38376, -130,689 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -774,796, -168,235, -122,694 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1255,22, 540,549, -36,5148 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 147 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1273,35, 290,621, -81,4672 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1106,1, 74,146, -80,7151 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1041,15, 143,258, -124 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 201 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1244,81, 542,923, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_background" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1354,14, 113,741, -12,3206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_background" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1490,26, 339,428, -37,9775 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_torch" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 391,908, 1092,57, 276,293 ); + ent.v[ "angles" ] = ( 74,9508, 150,486, -1,34998 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_torch" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 905,572, 1212,03, 243,963 ); + ent.v[ "angles" ] = ( 340, 67, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 848,799, 312,775, 6,8703 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 303 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 937,984, 350,049, 0,800499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 323,75, 2679,06, 228,147 ); + ent.v[ "angles" ] = ( 1,75725, 234,021, -9,33929 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,479, 2713,06, 193,781 ); + ent.v[ "angles" ] = ( 359,208, 274,358, 3,02421 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_smoke" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 523,244, 2681,61, 238,884 ); + ent.v[ "angles" ] = ( 359,208, 274,358, 3,02421 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -332,342, 2705,27, 156,457 ); + ent.v[ "angles" ] = ( 311,522, 270,988, -11,2056 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -237,287, 2689,93, 175,177 ); + ent.v[ "angles" ] = ( 311,522, 270,988, -11,2056 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 463,966, 2685,8, 139,64 ); + ent.v[ "angles" ] = ( 300,579, 271,452, -0,337176 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 531,638, 2693,88, 144,83 ); + ent.v[ "angles" ] = ( 300,579, 271,452, -0,337176 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 585,933, 2691,81, 144,965 ); + ent.v[ "angles" ] = ( 300,579, 271,452, -0,337176 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -257,462, 2780,8, 118,891 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -399,398, 2822,33, 174,014 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_torch" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 551,515, 1109,32, 326,621 ); + ent.v[ "angles" ] = ( 75,8612, 45,7869, -39,9325 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -709,94, -215,475, -118,834 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -691,003, 78,2237, -121,875 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -703,517, -348,103, -119,875 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 535,913, 2763,83, 207,956 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sci_fire_burst_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,059, 2686,61, 219,662 ); + ent.v[ "angles" ] = ( 11, 276, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -851,147, 885,891, -71,1348 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -314,439, 1470,67, -58,5135 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -446,494, 1682,59, -58,856 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1390,44, 783,137, -7,40077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 34 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -644,927, 803,374, -26,7342 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 65 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1210,28, 744,201, -64,2686 ); + ent.v[ "angles" ] = ( 346,002, 65,9706, 0,196647 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1194,17, 813,831, -62,8241 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -239,529, 1238,38, -32,1725 ); + ent.v[ "angles" ] = ( 355,134, 75,9827, -1,71667 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 623,534, 1651,12, -17,768 ); + ent.v[ "angles" ] = ( 319,61, 77,8521, -7,74391 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 816,593, 1541,12, 122,125 ); + ent.v[ "angles" ] = ( 290,195, 89,1061, -17,2951 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 894,485, 1213,47, 236,577 ); + ent.v[ "angles" ] = ( 284,571, 96,2015, -24,0754 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 425,234, 1162,01, 334,224 ); + ent.v[ "angles" ] = ( 316,979, 94,2527, 18,0529 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 274,178, 1428,36, -44 ); + ent.v[ "angles" ] = ( 329, 51, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 753,763, 1211,65, -42,875 ); + ent.v[ "angles" ] = ( 301,844, 82,3785, -11,2166 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 512,833, 1265,8, -42,9028 ); + ent.v[ "angles" ] = ( 301,844, 82,3785, -11,2166 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_water_splash_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 41,9622, -1381,64, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_cannon_splash_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -71,266, -944,427, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_background" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 514,399, 453,553, 105,629 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_rolling_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 553,339, 382,479, 5,47084 ); + ent.v[ "angles" ] = ( 3,97865, 322,985, -0,418867 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_rolling_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 317,715, 351,608, 10,1889 ); + ent.v[ "angles" ] = ( 353,952, 337,912, 0,628813 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1190,31, 318,399, -37,1449 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1036,54, 157,642, -64,7168 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_machine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 836,789, 165,325, -117,056 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_machine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 997,473, 262,393, -119,676 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_machine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1079,41, 329,947, -122,352 ); + ent.v[ "angles" ] = ( 359, 336, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_machine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1268,16, 285,853, -122,389 ); + ent.v[ "angles" ] = ( 359, 155,087, 0,994677 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_machine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1188,08, 171,667, -120,523 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 145 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_machine" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 635,872, 103,248, -108,448 ); + ent.v[ "angles" ] = ( 1,94438, 294,661, 0,765812 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 502,281, -982,172, -47 ); + ent.v[ "angles" ] = ( 359,642, 253, -0,933881 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -591,101, -1353,82, -79,5931 ); + ent.v[ "angles" ] = ( 344,517, 73,4634, 4,20901 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 379,533, -657,754, -122,304 ); + ent.v[ "angles" ] = ( 346,341, 167,961, -1,08881 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1172,16, 284,384, -126,8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 236 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_water_splash_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -487,374, -1462,38, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1188,46, 1605,07, 91,125 ); + ent.v[ "angles" ] = ( 46,1181, 260,218, -78,7375 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 967,866, 1010,69, 83,125 ); + ent.v[ "angles" ] = ( 52,0158, 291,037, -103,033 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1313,31, 1602,17, 26,125 ); + ent.v[ "angles" ] = ( 42,7436, 255,04, -81,5432 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -198,722, -74,3946, 43 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -336,9, -179,679, 29,125 ); + ent.v[ "angles" ] = ( 53,5724, 274,199, -65,3909 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -170,015, -303,164, 34,125 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -221,969, 62,8027, 41,125 ); + ent.v[ "angles" ] = ( 49,5137, 273,032, -66,2701 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -405,711, 949,874, 26 ); + ent.v[ "angles" ] = ( 36,3383, 276,516, -85,7276 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -269,703, 52,5723, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 265 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -71,36, 4,94275, -56,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 265 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2,75577, 1407,62, 156,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 256 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1310, 1544,43, -4,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1011,07, 914,597, 16,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 519,241, 1130,37, 272,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 241 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -889,183, 1951,46, -0,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1032,94, 1248,76, -5,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -115,039, 968,801, 7,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,27, 586,687, -24,4169 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 274 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 421,831, 2621,14, 254,433 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 24,8581 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 481,154, 2599, 274,361 ); + ent.v[ "angles" ] = ( 69,2382, 313,006, 46,6788 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 541,076, 2627,28, 281,524 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 32,8582 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 565,47, 2687,3, 271,318 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 30,8581 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 397,134, 2678,27, 233,188 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 9,85815 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,385, 2738,37, 223,155 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 20,8582 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_engine_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 482,007, 2765,06, 230,044 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 35,8583 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_light_flash_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 481,86, 2682,38, 247,188 ); + ent.v[ "angles" ] = ( 69,9541, 311,008, 30,8581 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_electric_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 527,056, 2639,22, 167,925 ); + ent.v[ "angles" ] = ( 55,2138, 315,354, 24,3534 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_forcefield" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 464,213, 2703,16, 327,459 ); + ent.v[ "angles" ] = ( 347,358, 3,33799, -15,2356 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_electric_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 307,651, 2687,88, 326,305 ); + ent.v[ "angles" ] = ( 333,97, 183,123, -60,549 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_electric_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 639,875, 2686,78, 366,318 ); + ent.v[ "angles" ] = ( 323,299, 13,4548, 70,2931 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_ufo_electric_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 448,215, 2637,88, 167,676 ); + ent.v[ "angles" ] = ( 58,4077, 225,61, -49,9951 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -98,6132, -163,694, 30,125 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1292,82, 252,067, -0,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 148 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1154,68, 65,9045, 12,7311 ); + ent.v[ "angles" ] = ( 1, 126, -1 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1318,34, 324,426, 38,9517 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 157 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_spark_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1179,97, 85,1171, 12,8549 ); + ent.v[ "angles" ] = ( 55,9308, 131,044, 141,56 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_spark_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1276,06, 226,214, -0,3836 ); + ent.v[ "angles" ] = ( 55,9308, 131,044, 141,56 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_spark_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1181,21, 96,4925, 27,762 ); + ent.v[ "angles" ] = ( 55,9308, 131,044, 141,56 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1376,49, 548,482, 27,915 ); + ent.v[ "angles" ] = ( 2,99634, 168,004, 0,157163 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 67,489, -787,72, -92,4579 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 59,7321, -809,906, -93,4565 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 68,5933, -801,293, -93,4587 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 69,5039, -771,286, -93,4575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 855,177, 1140,38, 116,989 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 813,079, 1073,07, 91,4545 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 860,166, 1541,18, 183,264 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_area_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 820,13, 1564,09, 133,283 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1158,98, 1598,76, 34,0837 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1101,39, 1752,06, 33,1063 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1037,23, 1928,72, 32,2759 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1262,81, 1308,79, 32,264 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_lamp_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -939,374, 1381,65, 39,7875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -890,686, 1279,31, 33,2206 ); + ent.v[ "angles" ] = ( 270,4, 89,9839, -89,9838 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -838,68, 1422,59, 33,2744 ); + ent.v[ "angles" ] = ( 270,4, 89,9839, -89,9838 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -728,855, 1727,28, 33,294 ); + ent.v[ "angles" ] = ( 270,4, 89,9836, -88,9835 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_sconce_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -836,162, 311,69, -88,8722 ); + ent.v[ "angles" ] = ( 281, 90, -90 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 59,8496, -792,982, -94,4596 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -785,735, -692,449, -22,1113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -788,543, -833,75, -47,7833 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_single_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7,20171, 1443,34, 220,099 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_single_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -83,5025, 1090,09, 204,824 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_flood_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 245,593, -253,426, -62,4976 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 114 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow_shrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -600,636, 2272,15, -48,3718 ); + ent.v[ "angles" ] = ( 290,668, 274,677, 89,1924 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2205,64, 1298, 9,21009 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2423,39, 1285,76, 29,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1746,6, 1135,07, -56,6561 ); + ent.v[ "angles" ] = ( 338,744, 93,2091, 6,98505 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1852,81, 1996,8, -3,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_studio_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10841,5, 66858,9, 96616,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -687,122, 1825,54, 65,0531 ); + ent.v[ "angles" ] = ( 39, 162, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -718,082, 1724,43, 63,6571 ); + ent.v[ "angles" ] = ( 39, 162, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -830,907, 1414,44, 62,561 ); + ent.v[ "angles" ] = ( 39, 162, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -866,961, 1323,08, 62,5687 ); + ent.v[ "angles" ] = ( 39, 162, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -905,444, 1209,66, 64,8412 ); + ent.v[ "angles" ] = ( 39, 162, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -347,563, 827,099, 86,003 ); + ent.v[ "angles" ] = ( 70,9722, 270,973, -49,8717 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -484,324, 853,761, 83,0062 ); + ent.v[ "angles" ] = ( 69,4359, 281,771, -78,0432 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 824,801, 1738,65, 51,0657 ); + ent.v[ "angles" ] = ( 30, 308, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -769,428, 1562,52, 58,875 ); + ent.v[ "angles" ] = ( 43, 158,307, 179,235 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -32,0345, 30,6323, 22,875 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -308,841, -6,63428, 19,875 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -901,167, 1213,3, 59,9585 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -863,82, 1307,43, 59,7489 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -822,942, 1416,42, 59,0963 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -670,448, 1835,08, 60,3287 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -707,478, 1745,17, 60,0388 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_torch" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 824,841, 1562,82, 131,934 ); + ent.v[ "angles" ] = ( 340, 67, 0 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_torch" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 882,248, 1524,09, 165,618 ); + ent.v[ "angles" ] = ( 340, 67, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1471,07, 750,101, 65,4021 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 147 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1599,09, 942,99, 80,8204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 141 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_electric_fence" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1765,22, 1104,75, 65,8096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 119 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -726,994, -761,421, -108,039 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -721,537, -784,228, -108,039 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -719,456, -765,715, -108,038 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -730,445, -745,949, -108,04 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_gold_sparkle_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -718,139, -733,919, -108,038 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 410,79, -554,778, 28,0345 ); + ent.v[ "angles" ] = ( 39, 262, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 405,376, -567,497, 8,19697 ); + ent.v[ "angles" ] = ( 39, 270, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 399,918, -567,545, 10,8062 ); + ent.v[ "angles" ] = ( 39, 270, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1264,27, 185,224, -44,9065 ); + ent.v[ "angles" ] = ( 286,86, 192,632, -134,323 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 992,692, -385,271, 133,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1040,69, -402,387, -2,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1237,23, 138,681, -60,0913 ); + ent.v[ "angles" ] = ( 300,14, 53,9746, 174,671 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 686,532, 206,38, -98,2946 ); + ent.v[ "angles" ] = ( 274,242, 320,125, -87,8804 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1238,11, 140,235, -64,0766 ); + ent.v[ "angles" ] = ( 312,037, 226,395, 3,99303 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_saloon_glare_sq" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -731,539, 1665,89, 61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -179,772, -198,805, 51,875 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -107,18, -302,61, 34,875 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -250,476, -308,096, 18,875 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,751, 104,863, 24,1561 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -684,468, -67,9217, -120,875 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -584,193, 30,6769, -123 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_smoke_ground" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -597,6, -433,891, -121,875 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_toy_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -743,634, 75,652, -129,401 ); + ent.v[ "angles" ] = ( 359, 310, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_tube_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1000,36, -186,555, 158,871 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 551,425, 1620,86, 12,202 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_tube_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -46,4167, 966,638, 82,6585 ); + ent.v[ "angles" ] = ( 89, 0, 15 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_tube_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 22,9989, 1261,39, 83,7595 ); + ent.v[ "angles" ] = ( 89, 0, 15 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_tube_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 71,7504, 1424,09, 83,6555 ); + ent.v[ "angles" ] = ( 89, 360, 15 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_fence_god_ray" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -370,821, 894,577, 86,0089 ); + ent.v[ "angles" ] = ( 66,3877, 309,805, 162,006 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -193,243, 1258,19, 157,125 ); + ent.v[ "angles" ] = ( 14,2643, 294,85, -4,73233 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -176,393, 1262,88, 142,125 ); + ent.v[ "angles" ] = ( 14,2643, 294,85, -4,73233 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_lantern_cave" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -836,878, 344,257, -82,7785 ); + ent.v[ "angles" ] = ( 345,011, 351,907, -80,062 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_lantern_cave" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -839,215, 356,728, -81,1982 ); + ent.v[ "angles" ] = ( 343,974, 9,89278, -85,4343 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -212,912, 143,392, 1,33438 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -148,791, 141,034, 3,67727 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_studio" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -55,8977, -98,3554, 36,1655 ); + ent.v[ "angles" ] = ( 56,2214, 261,044, -76,1716 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_lamp_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -936,325, 1130,6, 60,231 ); + ent.v[ "angles" ] = ( 270,1, 270,018, 89,9824 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_lamp_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -652,628, 1909,25, 58,7255 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 498,48, 2050,04, 107,248 ); + ent.v[ "angles" ] = ( 270, 359,992, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_red_blink" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 438,785, 2026,6, 107,319 ); + ent.v[ "angles" ] = ( 270, 359,992, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 413,526, 2157,43, 58,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 203 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -220,156, 1917,63, 48,125 ); + ent.v[ "angles" ] = ( 0, 22, 1 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1721,89, 1222,08, -18 ); + ent.v[ "angles" ] = ( 355, 75, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_dust_ledge_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1799,67, 1278,58, -52,4704 ); + ent.v[ "angles" ] = ( 355,989, 75,9862, 0,156968 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1919,89, 1271,08, -46,6587 ); + ent.v[ "angles" ] = ( 347,356, 102,632, 2,38988 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_studio_sq_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1831,91, 2232,28, 87,1508 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_studio_sq_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1831,93, 2007,62, 87,3595 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_studio_sq_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1831,42, 2455,72, 87,7513 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_studio_sq_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1960,32, 2231,48, 87,7575 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_studio_sq_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2088,08, 2230,96, 87,5544 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_studio_tube_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -195,981, 1150,52, 76,2635 ); + ent.v[ "angles" ] = ( 89, 0, 15 ); + ent.v[ "delay" ] = -75; +} diff --git a/mp_studio/maps/mp/mp_studio.gsc b/mp_studio/maps/mp/mp_studio.gsc new file mode 100644 index 0000000..703e8cc --- /dev/null +++ b/mp_studio/maps/mp/mp_studio.gsc @@ -0,0 +1,392 @@ +#include maps/mp/_tacticalinsertion; +#include maps/mp/gametypes/_weaponobjects; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_studio_fx::main(); + maps/mp/_load::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_studio" ); + maps/mp/mp_studio_amb::main(); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + level.destructible_callbacks[ "remove_streamers" ] = ::death_streamer_think; + alleytrigger = getent( "alleyTrigger", "targetname" ); + windowtrigger = getent( "triggerwindowTarget", "targetname" ); + target7 = getent( "trailerTarget_Window", "targetname" ); + target8 = getent( "alleyTarget_Cover", "targetname" ); + target9 = getent( "alleyTarget_Path", "targetname" ); + targetlight1_off = getent( "steelBuildingTargetLight1_off", "targetname" ); + targetlight1_on = getent( "steelBuildingTargetLight1_on", "targetname" ); + targetlight2_off = getent( "steelBuildingTargetLight2_off", "targetname" ); + targetlight2_on = getent( "steelBuildingTargetLight2_on", "targetname" ); + level.const_fx_exploder_red_light_1 = 1001; + level.const_fx_exploder_red_light_2 = 1002; + speaker1 = getent( "loudspeaker1", "targetname" ); + speaker2 = getent( "loudspeaker2", "targetname" ); + targetlight1_on hide(); + targetlight2_on hide(); + target8 setcandamage( 1 ); + target9 setcandamage( 1 ); + target8 thread damagetarget( 2 ); + target9 thread damagetarget( 2 ); + target7 thread movetarget( 7, ( 57, 23, 0 ), 3 ); + target8 thread movetarget( 1, 240, 10 ); + target9 thread movetarget( 1, 130, 8,6 ); + alleytrigger thread triggercheck( target9 ); + windowtrigger thread triggercheck( target7 ); +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "1900", reset_dvars ); +} + +triggercheck( target ) +{ + self endon( "game_ended" ); + while ( 1 ) + { + self waittill( "trigger", player ); + distance = distance( target.origin, self.origin ); + while ( distance <= 90 ) + { + target notify( "targetStopMoving" ); + while ( isDefined( player ) && player istouching( self ) && distance <= 90 ) + { + if ( distancesquared( target.origin, target.railpoints[ 0 ] ) < distancesquared( player.origin, target.railpoints[ 0 ] ) ) + { + target.preferrednextpos = 0; + } + else + { + target.preferrednextpos = 1; + } + wait 0,25; + } + } + } +} + +damagetarget( dir ) +{ + self endon( "game_ended" ); + while ( 1 ) + { + self waittill( "damage", damage, attacker, direction ); + switch( dir ) + { + case 1: + self rotateroll( self.angles[ 1 ] + 90, 0,1 ); + wait 0,2; + self rotateroll( self.angles[ 1 ] - 90, 0,1 ); + wait 0,2; + self playsound( "amb_target_flip" ); + break; + continue; + case 2: + rotation = 1; + if ( isDefined( attacker ) && isplayer( attacker ) ) + { + yaw = get2dyaw( attacker.origin, self.origin ); + if ( attacker.angles[ 1 ] > yaw ) + { + rotation = -1; + } + } + self rotateyaw( self.angles[ 2 ] + ( 180 * rotation ), 0,3 ); + self playsound( "amb_target_twirl" ); + self waittill( "rotatedone" ); + break; + continue; + case 3: + self rotatepitch( self.angles[ 1 ] + 90, 0,1 ); + wait 0,2; + self rotatepitch( self.angles[ 1 ] - 90, 0,1 ); + wait 0,2; + self playsound( "amb_target_flip" ); + break; + continue; + case 4: + self rotateroll( self.angles[ 1 ] - 90, 0,1 ); + wait 0,2; + self rotateroll( self.angles[ 1 ] + 90, 0,1 ); + wait 0,2; + self playsound( "amb_target_flip" ); + break; + continue; + case 5: + self rotatepitch( self.angles[ 1 ] - 90, 0,1 ); + wait 0,2; + self rotatepitch( self.angles[ 1 ] + 90, 0,1 ); + wait 0,2; + self playsound( "amb_target_flip" ); + break; + continue; + } + } +} + +damagetargetlights( light_on, light_off, speaker, alias, exploderhandle ) +{ + self endon( "game_ended" ); + while ( 1 ) + { + self waittill( "damage" ); + speaker playsound( alias ); + exploder( exploderhandle ); + light_off hide(); + light_on show(); + wait 0,5; + exploder_stop( exploderhandle ); + light_off show(); + light_on hide(); + } +} + +movetarget( dir, dis, speed ) +{ + self endon( "game_ended" ); + keepmoving = 1; + self thread movement_process(); + startpos = self.origin; + farpos = self.origin; + sound = spawn( "script_origin", self.origin ); + sound linkto( self ); + sound playloopsound( "amb_target_chain" ); + switch( dir ) + { + case 1: + farpos = self.origin + ( 0, dis, 0 ); + break; + case 2: + farpos = self.origin - ( 0, dis, 0 ); + break; + case 3: + farpos = self.origin + ( dis, 0, 0 ); + break; + case 4: + farpos = self.origin - ( dis, 0, 0 ); + break; + case 5: + farpos = self.origin + ( 0, 0, dis ); + break; + case 6: + farpos = self.origin - ( 0, 0, dis ); + break; + case 7: + farpos = self.origin - dis; + break; + } + self.railpoints = []; + self.railpoints[ 0 ] = startpos; + self.railpoints[ 1 ] = farpos; + self.preferrednextpos = 1; + self.playertrigger = 0; + while ( 1 ) + { + nextpos = self.railpoints[ self.preferrednextpos ]; + if ( self.preferrednextpos == 0 ) + { + self.preferrednextpos = 1; + } + else + { + self.preferrednextpos = 0; + } + self moveto( nextpos, speed ); + self waittill_either( "movedone", "targetStopMoving" ); + self playsound( "amb_target_stop" ); + } +} + +rotatetarget( dir, deg, speed, pausetime ) +{ + self endon( "game_ended" ); + while ( 1 ) + { + switch( dir ) + { + case 1: + self rotateyaw( self.angles[ 2 ] + deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + self rotateyaw( self.angles[ 2 ] - deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + break; + continue; + case 2: + self rotateyaw( self.angles[ 2 ] - deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + self rotateyaw( self.angles[ 2 ] + deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + break; + continue; + case 3: + self rotateroll( self.angles[ 0 ] + deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + self rotateroll( self.angles[ 0 ] - deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + break; + continue; + case 4: + self rotateroll( self.angles[ 0 ] - deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + self rotateroll( self.angles[ 0 ] + deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + break; + continue; + case 5: + self rotateroll( self.angles[ 1 ] + deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + self rotateroll( self.angles[ 1 ] - deg, speed ); + self playsound( "amb_target_rotate" ); + wait pausetime; + break; + continue; + case 6: + self rotatepitch( self.angles[ 1 ] - deg, speed ); + wait pausetime; + self rotatepitch( self.angles[ 1 ] + deg, speed ); + wait pausetime; + break; + continue; + case 7: + self rotateto( ( self.angles[ 0 ] + 90, self.angles[ 1 ] - 90, self.angles[ 2 ] + 45 ), speed ); + wait pausetime; + self rotateto( ( self.angles[ 0 ] - 90, self.angles[ 1 ] + 90, self.angles[ 2 ] - 45 ), speed ); + wait pausetime; + } + } +} + +movement_process() +{ + for ( ;; ) + { + entities = getdamageableentarray( self.origin, 50 ); + _a352 = entities; + _k352 = getFirstArrayKey( _a352 ); + while ( isDefined( _k352 ) ) + { + entity = _a352[ _k352 ]; + if ( isDefined( entity.targetname ) || entity.targetname == "alleyTarget_Cover" && entity.targetname == "alleyTarget_Path" ) + { + } + else + { + if ( isplayer( entity ) ) + { + break; + } + else if ( !entity istouching( self ) ) + { + break; + } + else if ( isDefined( entity.classname ) && entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + break; + } + else if ( !isDefined( entity.owner ) ) + { + break; + } + else if ( entity.name == "satchel_charge_mp" ) + { + if ( entity.origin[ 2 ] > ( self.origin[ 2 ] + 5 ) ) + { + break; + } + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + break; + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + } + if ( isDefined( entity.targetname ) ) + { + if ( entity.targetname == "riotshield_mp" ) + { + entity dodamage( 1, self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + break; + } + } + else + { + if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity thread maps/mp/_tacticalinsertion::fizzle(); + } + } + } + _k352 = getNextArrayKey( _a352, _k352 ); + } + wait 0,25; + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +death_streamer_think( notifytype, attacker ) +{ + streamers = getentarray( "airconditioner_streamer", "targetname" ); + i = 0; + while ( i < streamers.size ) + { + streamer = streamers[ i ]; + if ( distancesquared( streamer.origin, self.origin ) < 2500 ) + { + streamer delete(); + } + i++; + } +} diff --git a/mp_studio/maps/mp/mp_studio_amb.gsc b/mp_studio/maps/mp/mp_studio_amb.gsc new file mode 100644 index 0000000..782a35c --- /dev/null +++ b/mp_studio/maps/mp/mp_studio_amb.gsc @@ -0,0 +1,37 @@ + +main() +{ + destructibles = getentarray( "destructible", "targetname" ); + _a5 = destructibles; + _k5 = getFirstArrayKey( _a5 ); + while ( isDefined( _k5 ) ) + { + dest = _a5[ _k5 ]; + if ( dest.destructibledef == "veh_t6_dlc_electric_cart_destructible" ) + { + dest thread cart_fire_think(); + dest thread cart_death_think(); + } + _k5 = getNextArrayKey( _a5, _k5 ); + } +} + +cart_fire_think() +{ + self endon( "car_dead" ); + for ( ;; ) + { + self waittill( "broken", event ); + if ( event == "destructible_car_fire" ) + { + self playloopsound( "amb_fire_med" ); + return; + } + } +} + +cart_death_think() +{ + self waittill( "car_dead" ); + self playsound( "exp_barrel" ); +} diff --git a/mp_studio/maps/mp/mp_studio_fx.gsc b/mp_studio/maps/mp/mp_studio_fx.gsc new file mode 100644 index 0000000..019f88c --- /dev/null +++ b/mp_studio/maps/mp/mp_studio_fx.gsc @@ -0,0 +1,109 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_studio_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_express_train_blow_dust" ] = loadfx( "maps/mp_maps/fx_mp_express_train_blow_dust" ); + level._effect[ "fx_mp_village_grass" ] = loadfx( "maps/mp_maps/fx_mp_village_grass" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_mp_debris_papers" ] = loadfx( "maps/mp_maps/fx_mp_debris_papers" ); + level._effect[ "fx_mp_studio_dust_ledge_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_dust_ledge_runner" ); + level._effect[ "fx_sand_moving_in_air_pcloud" ] = loadfx( "dirt/fx_sand_moving_in_air_pcloud" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_studio_fog" ] = loadfx( "maps/mp_maps/fx_mp_studio_fog" ); + level._effect[ "fx_mp_studio_fog_ground" ] = loadfx( "maps/mp_maps/fx_mp_studio_fog_ground" ); + level._effect[ "fx_mp_studio_fog_background" ] = loadfx( "maps/mp_maps/fx_mp_studio_fog_background" ); + level._effect[ "fx_mp_studio_rolling_fog" ] = loadfx( "maps/mp_maps/fx_mp_studio_rolling_fog" ); + level._effect[ "fx_mp_studio_fog_machine" ] = loadfx( "maps/mp_maps/fx_mp_studio_fog_machine" ); + level._effect[ "fx_mp_studio_fog_sm" ] = loadfx( "maps/mp_maps/fx_mp_studio_fog_sm" ); + level._effect[ "fx_mp_slums_dark_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke_sm" ); + level._effect[ "fx_smk_smolder_gray_slow_shrt" ] = loadfx( "smoke/fx_smk_smolder_gray_slow_shrt" ); + level._effect[ "fx_smk_smolder_gray_slow_dark" ] = loadfx( "smoke/fx_smk_smolder_gray_slow_dark" ); + level._effect[ "fx_mp_studio_ufo_fire" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_fire" ); + level._effect[ "fx_mp_studio_ufo_smoke" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_smoke" ); + level._effect[ "fx_mp_studio_fire_md" ] = loadfx( "maps/mp_maps/fx_mp_studio_fire_md" ); + level._effect[ "fx_mp_studio_smoke_vista" ] = loadfx( "maps/mp_maps/fx_mp_studio_smoke_vista" ); + level._effect[ "fx_mp_studio_smoke_ground" ] = loadfx( "maps/mp_maps/fx_mp_studio_smoke_ground" ); + level._effect[ "fx_mp_studio_smoke_area" ] = loadfx( "maps/mp_maps/fx_mp_studio_smoke_area" ); + level._effect[ "fx_mp_studio_smoke_area_sm" ] = loadfx( "maps/mp_maps/fx_mp_studio_smoke_area_sm" ); + level._effect[ "fx_mp_studio_toy_fire" ] = loadfx( "maps/mp_maps/fx_mp_studio_toy_fire" ); + level._effect[ "fx_mp_studio_torch" ] = loadfx( "maps/mp_maps/fx_mp_studio_torch" ); + level._effect[ "fx_mp_studio_sci_fire_burst_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_sci_fire_burst_runner" ); + level._effect[ "fx_mp_studio_muzzle_tank_sm" ] = loadfx( "maps/mp_maps/fx_mp_studio_muzzle_tank_sm" ); + level._effect[ "fx_mp_studio_sci_fire" ] = loadfx( "maps/mp_maps/fx_mp_studio_sci_fire" ); + level._effect[ "fx_mp_studio_ufo_electric_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_electric_runner" ); + level._effect[ "fx_mp_studio_electric_fence" ] = loadfx( "maps/mp_maps/fx_mp_studio_electric_fence" ); + level._effect[ "fx_mp_studio_spark_sm_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_spark_sm_runner" ); + level._effect[ "fx_mp_studio_water_dock_splash" ] = loadfx( "maps/mp_maps/fx_mp_studio_water_dock_splash" ); + level._effect[ "fx_mp_studio_water_splash_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_water_splash_runner" ); + level._effect[ "fx_mp_studio_cannon_splash_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_cannon_splash_runner" ); + level._effect[ "fx_mp_studio_robot_laser" ] = loadfx( "maps/mp_maps/fx_mp_studio_robot_laser" ); + level._effect[ "fx_light_god_ray_mp_studio" ] = loadfx( "env/light/fx_light_god_ray_mp_studio" ); + level._effect[ "fx_mp_studio_ufo_light_flash" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_light_flash" ); + level._effect[ "fx_mp_studio_ufo_light_flash_lg" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_light_flash_lg" ); + level._effect[ "fx_mp_studio_fence_god_ray" ] = loadfx( "maps/mp_maps/fx_mp_studio_fence_god_ray" ); + level._effect[ "fx_mp_studio_sconce_glare" ] = loadfx( "maps/mp_maps/fx_mp_studio_sconce_glare" ); + level._effect[ "fx_mp_studio_sconce_glare2" ] = loadfx( "maps/mp_maps/fx_mp_studio_sconce_glare2" ); + level._effect[ "fx_mp_studio_lamp_glare" ] = loadfx( "maps/mp_maps/fx_mp_studio_lamp_glare" ); + level._effect[ "fx_mp_studio_flood_light" ] = loadfx( "maps/mp_maps/fx_mp_studio_flood_light" ); + level._effect[ "fx_mp_studio_tube_glare" ] = loadfx( "maps/mp_maps/fx_mp_studio_tube_glare" ); + level._effect[ "fx_mp_studio_lantern_cave" ] = loadfx( "maps/mp_maps/fx_mp_studio_lantern_cave" ); + level._effect[ "fx_mp_studio_red_blink" ] = loadfx( "maps/mp_maps/fx_mp_studio_red_blink" ); + level._effect[ "fx_studio_sq_glare" ] = loadfx( "light/fx_studio_sq_glare" ); + level._effect[ "fx_mp_village_single_glare" ] = loadfx( "maps/mp_maps/fx_mp_village_single_glare" ); + level._effect[ "fx_mp_studio_gold_sparkle_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_gold_sparkle_runner" ); + level._effect[ "fx_mp_studio_gold_glow" ] = loadfx( "maps/mp_maps/fx_mp_studio_gold_glow" ); + level._effect[ "fx_mp_studio_ufo_engine_runner" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_engine_runner" ); + level._effect[ "fx_mp_studio_ufo_forcefield" ] = loadfx( "maps/mp_maps/fx_mp_studio_ufo_forcefield" ); + level._effect[ "fx_mp_studio_saloon_glare" ] = loadfx( "maps/mp_maps/fx_mp_studio_saloon_glare" ); + level._effect[ "fx_mp_studio_saloon_glare_sq" ] = loadfx( "maps/mp_maps/fx_mp_studio_saloon_glare_sq" ); + level._effect[ "fx_lf_mp_studio_sun1" ] = loadfx( "lens_flares/fx_lf_mp_studio_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "roofvent" ] = %fxanim_gp_roofvent_anim; + level.scr_anim[ "fxanim_props" ][ "roofvent_slow" ] = %fxanim_gp_roofvent_slow_anim; + level.scr_anim[ "fxanim_props" ][ "dino_eggs" ] = %fxanim_mp_stu_dino_eggs_anim; + level.scr_anim[ "fxanim_props" ][ "noose" ] = %fxanim_mp_stu_noose_anim; + level.scr_anim[ "fxanim_props" ][ "t_rex_barn" ] = %fxanim_mp_stu_t_rex_barn_anim; + level.scr_anim[ "fxanim_props" ][ "t_rex_fence_01" ] = %fxanim_mp_stu_t_rex_fence_01_anim; + level.scr_anim[ "fxanim_props" ][ "t_rex_fence_02" ] = %fxanim_mp_stu_t_rex_fence_02_anim; + level.scr_anim[ "fxanim_props" ][ "t_rex_fence_03" ] = %fxanim_mp_stu_t_rex_fence_03_anim; + level.scr_anim[ "fxanim_props" ][ "robot_spider_01" ] = %fxanim_mp_stu_robot_01_anim; + level.scr_anim[ "fxanim_props" ][ "robot_spider_02" ] = %fxanim_mp_stu_robot_02_anim; + level.scr_anim[ "fxanim_props" ][ "robot_spider_03" ] = %fxanim_mp_stu_robot_03_anim; + level.scr_anim[ "fxanim_props" ][ "shark_fins" ] = %fxanim_mp_stu_shark_fins_anim; + level.scr_anim[ "fxanim_props" ][ "pirate_boats" ] = %fxanim_mp_stu_pirate_boats_anim; + level.scr_anim[ "fxanim_props" ][ "brontosaurus_chew_anim" ] = %fxanim_mp_stu_brontosaurus_chew_anim; + level.scr_anim[ "fxanim_props" ][ "brontosaurus_look_around" ] = %fxanim_mp_stu_brontosaurus_look_around_anim; + level.scr_anim[ "fxanim_props" ][ "robot_scanning" ] = %fxanim_mp_stu_robot_scanning; + level.scr_anim[ "fxanim_props" ][ "t_rex_stand_01" ] = %fxanim_mp_stu_t_rex_stand_01_anim; + level.scr_anim[ "fxanim_props" ][ "t_rex_stand_02" ] = %fxanim_mp_stu_t_rex_stand_02_anim; + level.scr_anim[ "fxanim_props" ][ "t_rex_stand_03" ] = %fxanim_mp_stu_t_rex_stand_03_anim; + level.scr_anim[ "fxanim_props" ][ "captain_01" ] = %fxanim_mp_stu_pirate_captain_01_anim; + level.scr_anim[ "fxanim_props" ][ "captain_02" ] = %fxanim_mp_stu_pirate_captain_02_anim; + level.scr_anim[ "fxanim_props" ][ "oarsmen_01" ] = %fxanim_mp_stu_pirate_oarsmen_01_anim; + level.scr_anim[ "fxanim_props" ][ "oarsmen_02" ] = %fxanim_mp_stu_pirate_oarsmen_02_anim; + level.scr_anim[ "fxanim_props" ][ "captain_jailed" ] = %fxanim_mp_stu_pirate_jailed_captain_anim; + level.scr_anim[ "fxanim_props" ][ "oarsmen_jailed" ] = %fxanim_mp_stu_pirate_jailed_oarsmen_anim; +} + +precache_fxanim_props_dlc() +{ +} diff --git a/mp_takeoff/aitype/enemy_dog_mp.gsc b/mp_takeoff/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_takeoff/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_takeoff/character/character_mp_german_shepherd.gsc b/mp_takeoff/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_takeoff/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_takeoff/maps/mp/createfx/mp_takeoff_fx.gsc b/mp_takeoff/maps/mp/createfx/mp_takeoff_fx.gsc new file mode 100644 index 0000000..078c2ec --- /dev/null +++ b/mp_takeoff/maps/mp/createfx/mp_takeoff_fx.gsc @@ -0,0 +1,3763 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 983,286, 2910,81, 143,273 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1432,95, 2199,07, 143,367 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 516,53, 1937,87, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,762, 1936,02, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 715,407, 1868,34, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 437,546, 1867,38, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 716,687, 1721,05, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 643,651, 1648,22, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 508,004, 1648,71, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_water_fountain_pool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 434,98, 1725,83, 9,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -648,755, 92,4447, 131,847 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -520,29, 88,8781, 131,849 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -776,327, 88,686, 131,848 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -904,882, 90,2834, 131,952 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -519,447, -34,2767, 131,851 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -648,274, -35,097, 131,85 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -776,23, -33,2154, 131,838 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -904,334, -35,1092, 131,949 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1113,23, 1485,44, 150,001 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -268,701, 3137,87, 149,824 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -658,216, 3233,51, 149,737 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 316 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_tv_glow_blue_flckr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -666,528, -166,834, 127,102 ); + ent.v[ "angles" ] = ( 11, 90, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_tv_glow_blue_flckr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -947,046, -166,757, 127,406 ); + ent.v[ "angles" ] = ( 11, 90, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_tv_glow_blue_flckr" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -974,523, 74,081, 126,104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createexploder( "fx_mp_tak_shuttle_thruster_smk_grnd" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -4203,15, 2484,17, -697 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1274,53, 1550,32, 341,859 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1118,68, 1549,85, 343,033 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -964,467, 1549,77, 342,676 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -807,474, 1550,47, 342,551 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -652,937, 1551,13, 343,008 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -514,133, 1689,14, 342,813 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -370,846, 1832,96, 343,015 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -192,802, 2012,65, 150 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -90,701, 2109,31, 342,559 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 49,4031, 2253,96, 341,674 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 50,0295, 2493,5, 342,768 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 53,7982, 2734,09, 342,956 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -76,6451, 2863,17, 342,752 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -202,801, 2990,97, 342,686 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -330,71, 3117,95, 342,98 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -458,642, 3245,43, 342,437 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1471,33, 1941,59, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1280,62, 1940,2, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1087,5, 1941,78, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -882,108, 1944,29, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -748,217, 2080,12, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -611,627, 2263,44, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -600,638, 2492,16, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -599,449, 2699,52, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -735,423, 2868,6, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -871,764, 3003,13, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1086,72, 3044,26, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1278,05, 3045,15, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1471,16, 3045,03, 370 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -103,254, 2105,74, 150 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -9,05183, 2201,33, 150 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 32,0324, 2336,98, 150 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 29,9413, 2472,52, 150 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 31,069, 2600,87, 150 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_rnd_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -230,584, 1971,09, 341,786 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -272,42, 315,875, 35,2283 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -544,444, 315,875, 37,4136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_steam_loading_dock" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -937,289, 3990,75, -447,667 ); + ent.v[ "angles" ] = ( 271, 180, -180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_heat_distort" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 151,146, 318,68, 36,1864 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1302,14, 958,538, 83,5725 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1073,44, 380,135, 70,409 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1160,71, 174,23, 75,3968 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 803,083, 800,152, 180,576 ); + ent.v[ "angles" ] = ( 18,997, 270,058, 0,344304 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1652,46, 2130,97, 254,498 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1662,24, 2286,18, 217,879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 119,43, 3945,7, 104,156 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -613,325, 3201,74, 115,722 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7,7182, 2734,55, 223,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1171,91, 2764,99, 51,8487 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1154,72, 2493,14, 59,5368 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1298,97, 2195,32, 66,6985 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1316,53, 1673,02, 96,6959 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -826,993, 1705,17, 102 ); + ent.v[ "angles" ] = ( 359,895, 35, 0,994674 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -497,358, 2071,53, 108 ); + ent.v[ "angles" ] = ( 359,724, 45, 0,961412 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -485,146, 2728,7, 113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 14,3494, 2605,83, 92,2667 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -771,889, 2777,05, 89,2267 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -814,044, 2181,69, 74,6889 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 220 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -991,875, -36,6636, 50,4565 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1684,55, 2342,92, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 214 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1131,28, 2863,43, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 235 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1671,72, 2334,25, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 111 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1221,77, 2170,12, 140,508 ); + ent.v[ "angles" ] = ( 318,404, 90,0132, -0,402941 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1613,84, 2057,86, 140,525 ); + ent.v[ "angles" ] = ( 316,404, 90,0327, -0,416093 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1245,63, 2170,15, 276,561 ); + ent.v[ "angles" ] = ( 318,404, 90,0129, -0,402866 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1350,77, 2169,99, 276,689 ); + ent.v[ "angles" ] = ( 317,404, 90,0224, -0,409253 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1874,07, 2056,45, 140,253 ); + ent.v[ "angles" ] = ( 316,404, 90,0327, -0,416109 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1601,34, 2464,26, 145,379 ); + ent.v[ "angles" ] = ( 88,6999, 90, 90 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1496,25, 2318,41, 145,393 ); + ent.v[ "angles" ] = ( 89,6998, 90, 180 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1368,44, 2317,01, 145,415 ); + ent.v[ "angles" ] = ( 89,6998, 90, 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1016,59, 2670,06, 146,314 ); + ent.v[ "angles" ] = ( 89,6999, 179,933, -90,0694 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1111,94, 2892,41, 146,467 ); + ent.v[ "angles" ] = ( 89,8999, 90, 180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1242,91, 2320,22, 278,141 ); + ent.v[ "angles" ] = ( 88,6999, 90, 90 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1714,59, 2361,24, 258,465 ); + ent.v[ "angles" ] = ( 316,404, 90,0327, -0,416109 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1744,81, 2123,62, 258,856 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 328 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -653,524, 1132,6, 87,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 690,566, -261,614, 96,1049 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1121,82, 1795,84, 85,6525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_sign_glow_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1539,62, 2449,89, 142,208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_sign_glow_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1544,48, 2450,13, 142,534 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_sign_glow_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1213,83, 2585,17, 141,868 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_sign_glow_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1217,39, 2581,89, 142,425 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 175,404, 3927,2, 217,875 ); + ent.v[ "angles" ] = ( 270,807, 29,7371, 60,0036 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,709, 3842,63, 212,875 ); + ent.v[ "angles" ] = ( 270,807, 29,7371, 60,0036 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 419,344, 3874,97, 215,875 ); + ent.v[ "angles" ] = ( 270,807, 29,7371, 60,0036 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -797,568, 669,764, -0,500001 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 737,88, 2476,7, 45,9528 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 775,629, 2414,95, 2,65451 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 775,545, 2391,05, -13,078 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 776,413, 2367,01, -29,1524 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 855,92, 2366,99, -29,2167 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 855,913, 2390,98, -13,2231 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 855,876, 2415,02, 2,86906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 855,866, 2439,04, 18,8905 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 737,922, 2591,77, 45,8145 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 932,833, 2481,86, 45,965 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 542,071, 2592,38, 45,7944 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 541,982, 2477,57, 46,36 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 776,042, 2439, 18,8111 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 504,153, 2367,07, -29,0153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 504,122, 2415,04, 2,91993 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 504,044, 2439,01, 18,8256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 423,734, 2367,02, -29,1636 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 424,22, 2415,05, 2,93267 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 424,076, 2438,98, 18,7634 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 989,767, 1889,31, -24,4579 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1016,12, 1630,12, -24,057 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 957,507, 1668,03, -24,2906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 957,499, 1812,11, -23,6634 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 958,077, 1300,67, -24,1765 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 958,075, 1140,73, -24,198 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1019,53, 1345,85, -23,9984 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1391,78, 2099,01, 27,143 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1472, 2099,07, 27,0083 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1471,54, 2074,99, 10,7802 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1392,1, 2075,03, 10,8867 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1095,06, 2040,36, -12,9766 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1071,02, 2040,25, -29,1561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1095,07, 1960,54, -13,0282 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1071,04, 1960,63, -29,0773 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1095,08, 1548,06, -12,9934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1071,05, 1547,95, -29,0742 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1095,08, 1436,51, -12,9819 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1070,96, 1436,56, -29,3406 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 432,881, 1275,59, -22,2206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 335,496, 1373, -22,2644 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 184,017, 1354,71, -22,1986 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 73,5534, 1465,16, -22,1953 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 44 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 423,921, 1202,83, -21,8863 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 262,535, 1363,63, -22,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 134 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 109,96, 1152,18, 45,55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 571,76, 2366,15, -22 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 708,578, 2366,1, -21,9233 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 360,652, 2280,9, -21,0619 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -84,2352, 3038,97, 35,8816 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -81,1992, 3099,76, 36,0374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -144,735, 3100,04, 35,8417 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 134 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1121,93, 1672,24, 15,8461 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1121,91, 1839,47, 15,8827 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1122,03, 1300,31, 15,5516 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1121,91, 1138,94, 16,077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1032,28, 819,028, 26,8803 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1032,55, 795,051, 11,0715 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1112,06, 819,069, 26,9837 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1111,83, 795,05, 11,0518 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,367, 571,055, 10,944 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 856,751, 595,075, 26,9887 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,369, 619,029, 42,8863 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,357, 667,036, 74,9126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,858, 691,063, 90,9648 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,418, 739,069, 122,995 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 792,122, 571,023, 10,9047 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 791,755, 594,997, 27,2133 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 791,823, 619,06, 43,0249 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 792,043, 667,042, 74,9312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 792,084, 691,041, 91,0554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 791,797, 739,05, 122,949 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1172,61, 2452,09, 42,7919 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1107,72, 2452,13, 43,0581 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1108,28, 2428,13, 58,8672 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1108,31, 2404,13, 75,0598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1107,82, 2380,13, 90,7716 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1172,27, 2428,13, 58,979 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1172,02, 2404,13, 74,8982 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1172,81, 2379,97, 90,6866 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1211,88, 2339,57, 106,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1211,88, 2275,89, 106,652 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1235,88, 2275,77, 123,073 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1259,88, 2276,07, 139,058 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1283,88, 2275,93, 154,531 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1235,88, 2339,87, 122,968 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1259,88, 2339,87, 138,789 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1283,88, 2339,95, 154,964 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1079,88, 533,315, 165,875 ); + ent.v[ "angles" ] = ( 90, 180, 0 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1080,04, 579,854, 171,875 ); + ent.v[ "angles" ] = ( 90, 180, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_sqr_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1207,29, 956,834, 175,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -51,3421, 1484,16, 18,939 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -34,3044, 1500,89, 3,0771 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -16,927, 1517,24, -13,0426 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -0,176095, 1534,49, -29,0559 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -89,5913, 1624,58, -29,088 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -106,645, 1606,97, -13,0749 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -123,29, 1589,81, 3,00089 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -140,137, 1572,93, 18,9672 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 584,363, 952,959, 18,9122 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 583,988, 976,968, 2,91464 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 583,988, 1000,95, -13,0733 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 584,489, 1024,96, -28,9313 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 488,049, 1024,94, -29,0188 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 488,011, 1000,92, -12,9862 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 487,806, 976,929, 3,03751 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 487,927, 952,935, 19,0334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -196,219, 1595,26, 48,7045 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -641,931, 1237,99, 7,7812 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -657,878, 1369,34, 39,9439 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -641,901, 1012,52, 7,86399 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -641,951, 728,998, 11,7347 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -641,942, 604,127, 11,7988 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -641,99, 480,622, 11,6406 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -641,902, 356,435, 11,8995 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -604,472, 318,136, 11,9742 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -467,119, 318,073, 11,84 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -331,73, 318,123, 12,0064 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -195,636, 318,018, 11,6762 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -45,1334, 318,114, 11,9143 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 75,8681, 318,051, 11,735 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 195,059, 318,112, 12,0508 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 328,451, 909,492, 46,6491 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 199,855, 910,106, 45,9135 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -56,322, 910,094, 45,8658 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 71,5744, 910,109, 45,6172 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 81,4755, 1291,78, 45,7823 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -9,66185, 1383,02, 45,9526 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 72,0178, 1049,94, 45,7625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -55,6394, 1049,89, 45,9148 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -105,906, 979,873, 45,8574 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -329,152, 1577,68, 48,1444 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -410,167, 1658,74, 47,9093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -312,973, 1282,57, 35,7262 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -312,954, 1357,76, 36,3683 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -412,784, 1364,14, 35,8633 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -412,787, 1276,23, 36,1016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -357,89, 1382,93, 36,0084 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 417,883, 887,503, 45,9123 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 928,036, 2366,03, -24,2746 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -604,97, 923,851, 26,8855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -604,923, 812,002, 27,0028 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -628,923, 812,315, 11,0009 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -628,996, 923,686, 11,153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 332,003, 355,003, 26,8363 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 444,581, 355,039, 26,9293 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 443,718, 331,027, 10,8707 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 331,915, 330,952, 10,6477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 129,896, -447,594, 19,0958 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 129,97, -329,357, 18,7411 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 702,003, -256,255, 18,6353 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 702,053, -444,759, 19,261 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -482,258, 1778,29, 43,2626 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -465,101, 1795,08, 59,2269 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -448,917, 1812,84, 75,2041 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -432,141, 1829,99, 91,2494 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -414,617, 1846,41, 107,159 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -397,226, 1862,97, 123,104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -380,478, 1880,13, 139,3 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -363,445, 1897,03, 155,051 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -426,012, 1722,04, 43,0612 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -409,041, 1739,01, 59,1723 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -392,029, 1755,95, 75,2505 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -374,943, 1772,81, 91,0044 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -358,167, 1789,97, 107,291 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -341,255, 1806,99, 123,295 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -324,174, 1823,81, 139,474 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -307,375, 1840,97, 155,207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -128,75, 2973,71, 43,231 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -111,605, 2956,91, 59,1906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -94,5312, 2940,05, 75,2042 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -77,6862, 2922,95, 91,2482 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -60,6402, 2906,07, 107,052 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -43,7912, 2888,97, 123,032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -26,8833, 2871,97, 139,635 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -10,0032, 2854,91, 155,109 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -185,219, 2917,24, 43,1477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -167,903, 2900,62, 59,2746 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -151,138, 2883,44, 75,1347 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -133,987, 2866,65, 91,0165 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -117,207, 2849,49, 107,104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -99,903, 2832,86, 123,088 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -83,0559, 2815,8, 139,57 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -66,0691, 2798,85, 155,211 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 471,726, 1675,9, 9,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 485,445, 1912,63, 9,75 ); + ent.v[ "angles" ] = ( 354,204, 147,079, -1,55845 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 666,393, 1700,92, 9,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 240 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -65,8765, -288,37, 19,0651 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -65,8591, -450,205, 19,0412 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 862,534, -199,185, 27,2791 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 96,0406, -230,91, 28,2451 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -874,524, 821,716, 7,79738 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -874,599, 901,875, 7,98359 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1121,42, 901,689, 7,92185 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1121,4, 822,056, 8,01758 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -919,938, 949,504, 7,70692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1072,29, 949,432, 8,07931 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -358,513, 1257,05, 35,9739 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1296,49, 1331,04, 26,8928 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1296,41, 1307,05, 11,0698 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1175,95, 1331,03, 26,8884 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1175,91, 1307,07, 10,9683 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1056,07, 1331,05, 27,0573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1055,85, 1307,05, 10,9262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -935,446, 1331,02, 26,8583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -936,704, 1307,03, 10,8885 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -816,392, 1331,04, 27,0997 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -815,798, 1307,07, 10,9746 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -696,457, 1331,08, 27,0036 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -696,196, 1307,05, 11,0719 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -761,187, 4839,2, 172,242 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -927,999, 5222,38, 173,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -761,58, 5607,91, 172,293 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -376,747, 5774,4, 172,692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -278,937, 4681,38, 171,573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -475,324, 4681,4, 173,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10,3508, 4837,39, 171,425 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 175,219, 5222,42, 172,187 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8,72153, 5607,88, 172,437 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1453,14, 3289,36, 946 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1193,21, 2632,27, 906,26 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 711,688, 429,426, 1046,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -623,974, -159,865, 476,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1385,32, 2324,46, 968,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -746,909, 1701,39, 932 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -684,101, 984,58, -0,500004 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1200,64, 580,56, -0,499997 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1198,34, 718,857, -0,499991 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 991,139, -111,185, 6 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 709,233, 1908,43, 9,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 217 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 646,962, 2755,67, 27,5 ); + ent.v[ "angles" ] = ( 354, 183, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -800,256, 510,016, -0,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1301,72, 250,611, -0,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 399,61, 3609,42, 32,5 ); + ent.v[ "angles" ] = ( 359, 179, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -81,1495, 4320,76, 32,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1016,96, 3075,33, 38,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1760,87, 1774,31, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1737,64, 1252,34, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1743,15, 615,582, 3 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 164,619, -579,537, 0 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1299,71, 968,25, -0,499998 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1300,51, 1144,84, -0,500003 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -683,831, 1117,54, -0,499997 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 398,043, 888,465, 45,7374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 661,864, -625,489, -11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 239,886, -704,53, -11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1677,22, -68,5633, -11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1234,19, -48,4095, -11 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1694,63, 1192,36, -0,999999 ); + ent.v[ "angles" ] = ( 0, 172, -1 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1066,68, 3282,2, 29,1427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1988,2, 1513,88, -0,999997 ); + ent.v[ "angles" ] = ( 356,996, 178,012, -0,157153 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1970,02, 799,371, -41,0728 ); + ent.v[ "angles" ] = ( 350,996, 178,029, -0,158891 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 381,014, 4961,92, 44,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1287,68, 3198,4, -28,203 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1219,17, 3198,39, -27,7394 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1414,83, 2974,37, -27,7554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1483,16, 2974,43, -27,8981 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1548,37, 2974,39, -27,7688 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_glow_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1337,04, 3087,22, 63,9211 ); + ent.v[ "angles" ] = ( 326, 180, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_glow_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1464,72, 2022,63, 71,534 ); + ent.v[ "angles" ] = ( 321, 270, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 142,296, 643,942, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -86,9443, 673,226, 29 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -446,986, 3,93933, 117,73 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 90,0745, -294,115, 123,422 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6,40982, -417,262, 128,783 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 273,822, 2405,29, 213,798 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 28,2924, 209,641, -3 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 226,668, 2547,57, 32,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -59,1336, 4222,76, 32,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -79,787, 4091,04, 32,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 752,394, 3596,74, 29,125 ); + ent.v[ "angles" ] = ( 359, 179, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 753,327, 3452,5, 29,125 ); + ent.v[ "angles" ] = ( 359, 179, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 746,71, -405,051, 123,151 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 847,36, -272,165, 123,151 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_steam_hvac" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1048,48, 1271,84, 117,81 ); + ent.v[ "angles" ] = ( 357, 168, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_steam_hvac" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 299,916, 1308,73, 90,8595 ); + ent.v[ "angles" ] = ( 356,608, 132,937, 0,122398 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_steam_hvac" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 172,647, 994,751, 207,315 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 273,36, 3604,84, 32,5 ); + ent.v[ "angles" ] = ( 359, 179, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_takeoff_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 86319,8, 184830, 129198 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 424,119, 3943,38, 202,939 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 381,624, 3943,18, 202,948 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 465,718, 3943,23, 202,928 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 465,84, 3776,95, 202,905 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 424,038, 3777,14, 202,902 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 382,137, 3777,18, 202,92 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 319,696, 4027,9, 166,936 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 359,63, 4028,19, 166,948 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 399,952, 4028,02, 166,895 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 439,816, 4028,19, 166,921 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 479,553, 4027,95, 166,946 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 519,759, 4027,95, 166,911 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 230,838, 3907,97, 202,898 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 230,938, 3948,08, 202,897 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 120,813, 3947,71, 202,941 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 121,014, 3908,11, 202,892 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1151,9, 461,667, 158,933 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1084,04, 461,659, 158,929 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1017,85, 461,753, 158,93 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1018,41, 649,811, 158,944 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1083,59, 650,206, 158,951 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1151,75, 650,008, 158,916 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 865,456, 479,486, 151,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 783,057, 479,824, 151,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 865,459, 421,815, 151,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 783,213, 421,592, 151,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1075,83, 848,391, 174,958 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1010,04, 847,859, 174,908 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1009,96, 991,953, 174,891 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1075,77, 991,966, 174,921 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1158,05, 859,994, 150,332 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1261,87, 860,067, 150,34 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1349,73, 860,07, 150,365 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1261,86, 1047,46, 150,399 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1157,79, 1047,5, 150,397 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1051,65, 1048,22, 150,382 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1130,16, 936,207, 166,916 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1129,89, 976,273, 166,922 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1278,03, 975,903, 166,895 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1277,94, 936,127, 166,901 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1349,53, 1047,96, 150,392 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,125, 959,955, 286,332 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,706, 879,748, 286,379 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,846, 798,449, 286,387 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,02, 722,32, 286,37 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,09, 639,972, 286,328 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,179, 562,047, 286,347 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,228, 562,634, 422,427 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,934, 639,626, 422,382 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,884, 721,974, 422,339 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,957, 797,894, 422,338 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,716, 879,939, 422,361 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 575,772, 959,691, 422,379 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1474,17, 1289,18, 151,014 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1474,54, 1204,81, 150,954 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1650,85, 1204,74, 150,921 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1651,28, 1288,67, 150,949 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 62,3962, 4348,73, 313,622 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 62,2957, 3771,75, 313,857 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 675,772, 863,407, 723,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -778,598, -127,715, 99,005 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -764,966, -126,217, 97,0285 ); + ent.v[ "angles" ] = ( 67, 180, -180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -794,06, -126,758, 97,2618 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 62 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -779,735, -140,756, 97,2735 ); + ent.v[ "angles" ] = ( 64, 90, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -779,573, -113,357, 97,4315 ); + ent.v[ "angles" ] = ( 63, 271, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -898,581, -126,843, 98,663 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 62 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -884,094, -113,441, 98,8328 ); + ent.v[ "angles" ] = ( 63, 271, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -883,119, -127,799, 100,406 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -884,256, -140,84, 98,6748 ); + ent.v[ "angles" ] = ( 64, 90, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -869,487, -126,301, 98,4298 ); + ent.v[ "angles" ] = ( 67, 180, -180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -368,434, 1355,93, 134,387 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -368,529, 1304,26, 134,41 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -909,869, 2933,34, -45,0905 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -888,329, 2957,39, -29,2049 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -866,258, 2980,95, -13,3263 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -843,931, 3004,18, 2,89832 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -821,874, 3027,75, 18,7913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -865,306, 2878,96, -45,0933 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -840,549, 2899,23, -29,2758 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -815,79, 2919,5, -13,3795 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -791,259, 2940,06, 2,85001 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -766,301, 2960,09, 18,7407 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -822,691, 2264,91, -45,2797 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -791,177, 2259,3, -29,1206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -759,688, 2253,58, -13,238 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -728,193, 2247,94, 2,77205 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -696,679, 2242,41, 18,6863 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -807,335, 2351,05, -45,1735 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -775,843, 2345,4, -29,31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -744,335, 2339,81, -13,5038 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -712,883, 2333,88, 2,95604 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -681,271, 2328,9, 18,7888 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1246,2, 1998,99, -45,4696 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1246,45, 1966,98, -30,3683 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1246,36, 1934,98, -13,2638 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1246,43, 1902,98, 2,81664 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1246,24, 1870,98, 18,7651 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1325,64, 1870,99, 18,8021 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1325,8, 1902,99, 2,77237 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1325,95, 1934,99, -13,3164 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1325,86, 1966,98, -29,3535 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_stair_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1325,98, 1998,99, -45,5077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 628,333, 334,603, 59,5787 ); + ent.v[ "angles" ] = ( 334,512, 105,255, -8,17945 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 527,916, 336,229, 59,1082 ); + ent.v[ "angles" ] = ( 332,926, 59,1992, 12,1763 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1047,35, 806,342, -15,875 ); + ent.v[ "angles" ] = ( 317, 273, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -960,556, 830,882, -37,7672 ); + ent.v[ "angles" ] = ( 308,01, 271,725, -1,08843 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 653,557, 877,909, 271,374 ); + ent.v[ "angles" ] = ( 319, 180, 180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_glow_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -159,628, 2550,31, 292,629 ); + ent.v[ "angles" ] = ( 58,6954, 359,606, -89,814 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_glow_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -155,687, 2431,48, 294,46 ); + ent.v[ "angles" ] = ( 60,0946, 359,816, -89,7315 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_glow_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1150,88, 1962,62, 212,343 ); + ent.v[ "angles" ] = ( 90, 0, -90,4 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_flour_glow_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1150,59, 3018,88, 212,332 ); + ent.v[ "angles" ] = ( 90, 0, -90,4 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1070,93, 17,3912, 144,377 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1261,45, 166,907, 144,076 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 728,324, 15,9815, 143,643 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 821,524, 313,055, 148,414 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1260,35, 561,024, 124,251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 953,039, 817,397, 130,096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 952,959, 1046,36, 130,139 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 603,882, 768,966, 44,1204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 587,008, 719,567, 43,834 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 586,979, 559,646, 43,737 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 513,034, 496,762, 43,8888 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 513,037, 374,251, 43,9159 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 695,553, 1634,04, -19,8938 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 307 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 734,405, 1672,63, -21,9928 ); + ent.v[ "angles" ] = ( 360, 322, -180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 419,353, 1671,36, -20,7047 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 217 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 456,661, 1632,58, -21,8037 ); + ent.v[ "angles" ] = ( 0, 231, -180 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 732,729, 1913,98, -20,5855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 38 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 696,37, 1950,15, -20,6845 ); + ent.v[ "angles" ] = ( 0, 51, -180 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 457,625, 1951,12, -19,4472 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 128 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_blue_pulse_curve" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 416,54, 1909,79, -20,5462 ); + ent.v[ "angles" ] = ( 360, 142, -180 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3630,8, 2316,3, 118,388 ); + ent.v[ "angles" ] = ( 87, 180, -180 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3637,9, 2416,64, 133,734 ); + ent.v[ "angles" ] = ( 87, 180, -180 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3798,32, 2488,05, 88 ); + ent.v[ "angles" ] = ( 87, 180, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3630,95, 2661,26, 134,723 ); + ent.v[ "angles" ] = ( 87, 180, -180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3648,16, 2579,75, 132 ); + ent.v[ "angles" ] = ( 87, 180, -180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_frame_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3921,22, 3187,7, 423,648 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_frame_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3920,27, 3187,11, 935,695 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_frame_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3920,85, 3187,05, 1450,43 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_frame_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3925, 3187,79, 1962,55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 2 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam_w" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3728,67, 1859,17, -145,008 ); + ent.v[ "angles" ] = ( 8, 206, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam_w" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3635,65, 3113,8, -99,577 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 154 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_spotlight" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1020,28, 3043,88, 198,93 ); + ent.v[ "angles" ] = ( 23,903, 238,53, -2,22219 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_spotlight" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1050,85, 1917,98, 198,766 ); + ent.v[ "angles" ] = ( 19, 104, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_wall_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1173,59, 1835,3, 187,012 ); + ent.v[ "angles" ] = ( 45,9894, 269,397, 1,24654 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_wall_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -767,364, 3022,42, 195,834 ); + ent.v[ "angles" ] = ( 55, 39, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1640,79, 1673,45, 32,1748 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1480,46, 1673,44, 32,1118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1430,55, 1639,88, 31,847 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1430,54, 1367,17, 31,8153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1224,99, 1134,97, 2,86676 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1224,67, 1113,02, 18,732 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1304,58, 1112,93, 18,9678 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1304,58, 1134,99, 3,14237 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,59, 817,475, 63,9314 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,581, 945,569, 63,9124 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,604, 1057,28, -8,0104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 596,465, 6,55402, 13,8712 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 689,171, -1,88044, 32,4838 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 913,339, -1,87295, 32,3582 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 533,993, 321,006, 12,1779 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 621,583, 321,072, 11,9689 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 672,793, 1089,43, -8,07374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 912,952, 1089,42, -8,09043 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 597,295, 17,4297, 13,9255 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1169,38, 1089,39, 40,0032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1697,54, 1521,2, 31,6123 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1697,41, 1360,26, 32,0627 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1697,43, 1128,86, 32,0431 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1697,99, 975,735, 13,6263 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1697,9, 829,795, 13,8588 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1281,47, 592,892, 32,1985 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1281,43, 336,155, 32,1496 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1281,46, 49,4862, 32,1446 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1649,09, 1078,58, 31,9207 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1456,8, 1078,6, 31,976 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1519,11, 798,059, 13,7796 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1664,56, 798,056, 13,7821 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1665,63, 1009,91, 13,8624 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1522,02, 1009,92, 13,8339 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1486,07, 978,77, 13,8024 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1486,07, 831,541, 13,8139 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1671,73, 1193,41, 32,0709 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1457,79, 1193,45, 31,8305 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,587, 65,0128, 32,0535 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,534, 296,444, 32,1816 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_shuttle_thruster_steam_w" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4297,09, 2076,79, -86,4624 ); + ent.v[ "angles" ] = ( 339,001, 222,048, -7,18342 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -510,773, 3298,08, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 241 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -10,1306, 2497, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 62,5652, 2626,85, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 46,4937, 2276,87, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 227 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -305,802, 2032,39, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -837,933, 1493,27, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -859,011, 1476,01, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 96 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1150,83, 964,907, 0,125004 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 159 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1154,2, 932,522, 0,124999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -627,997, -95,0112, 0,124999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 143 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -166,466, 103,361, 0,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 162 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1264,8, 992,268, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1258,27, 994,823, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 952,542, 619,736, 0,124996 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 310 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 714,211, 99,0093, 0,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 46 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 943,322, 109,799, 0,124999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 161 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -294,714, 1082,19, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1698,79, 1841,52, 0,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1692,43, 1877,86, 0,124997 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 168 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 658,848, 2661,56, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 158 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 629,085, 2654, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 167 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 518,661, 3510,54, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 168 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_exterior_short_sm_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -207,531, 793,291, 32,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 162 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1361,74, 1813,37, 143,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 166 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1153,17, 1423,92, 100,245 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 864,537, 3032,53, 119,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 208 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -619,301, 5562,1, 115,301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 171,604, 755,813, 136,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 624,657, -207,926, 81,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2945,29, 1737,31, -102,881 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2759,13, 1216,56, -58,7997 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2917,57, 1492,47, -326,273 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2565,47, 702,299, -259,373 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2171,8, 3831,34, -315,863 ); + ent.v[ "angles" ] = ( 347,163, 194,233, -2,06839 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1954,82, 4907,56, -478,092 ); + ent.v[ "angles" ] = ( 357,456, 205,035, -1,59106 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2346,22, 2960,37, -567,725 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1988,48, 1920,49, -5,04919 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1931,01, 3116,27, -21,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2224,94, -579,193, -468,523 ); + ent.v[ "angles" ] = ( 351,102, 188,102, -0,785699 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -189,799, -634,757, -525,232 ); + ent.v[ "angles" ] = ( 354,032, 179,033, -0,629524 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 527,666, 1774,13, 99,1583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vent_steam_line_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 452,17, -227,665, 0,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 724,945, 847,713, 154,942 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 724,947, 912,609, 154,94 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 748,926, 913,241, 139,011 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 748,963, 847,764, 138,903 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,691, 715,031, 106,914 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 792,029, 715,047, 106,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 791,936, 643,056, 58,9436 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 857,277, 643,026, 58,8678 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 503,931, 2391,05, -13,0811 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue_stair" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 424,05, 2391,06, -12,9671 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2002; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -592,125, 1207,71, 114,394 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 172 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_steam_hvac" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 241,412, 1142,85, 269,079 ); + ent.v[ "angles" ] = ( 357,185, 168,987, -1,89627 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -451,879, 2755,46, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 238 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -563,421, 2578,01, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 307 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1320,27, 1711,23, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 26 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -822,372, 1921,7, 32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_wall_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1311,53, 2672,75, 159,445 ); + ent.v[ "angles" ] = ( 56,9567, 224,576, 2,54828 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_wall_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -923,639, 1895,27, 186,96 ); + ent.v[ "angles" ] = ( 61,0597, 296,595, 0,136797 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -781,676, 3005,14, 98 ); + ent.v[ "angles" ] = ( 6, 228, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1259,22, 1887,77, 87 ); + ent.v[ "angles" ] = ( 14,979, 87,8943, -0,80343 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1238,04, 3158,22, 215,126 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1134,03, 3154,06, 215,1 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1038,13, 3125,91, 215,12 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -950,262, 3094,03, 215,118 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -870,234, 3049,7, 215,127 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -801,808, 2982,05, 215,122 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -753,974, 2898,15, 215,113 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -725,644, 2821,96, 215,128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -706,028, 2733,44, 215,148 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -697,899, 2641,97, 215,109 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -689,368, 2541,93, 215,151 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -686,227, 2437,93, 215,128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -693,586, 2338,09, 215,145 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -713,92, 2237,89, 215,108 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -765,482, 2145,81, 215,141 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -837,98, 2054,13, 215,11 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -946,049, 1978,34, 215,128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1077,59, 1917,81, 215,141 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1217,85, 1890,04, 215,105 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_upl_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1803,92, 2287,73, 280,207 ); + ent.v[ "angles" ] = ( 89,4613, 158,17, -111,832 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 780,432, 3145,51, 46,6706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 972,405, 3145,5, 46,775 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createexploder( "fx_tak_light_blue" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 659,913, 3689,5, 46,8525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_steam_amb_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -132,209, 4762,87, 290,801 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_tak_steam_hvac" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 214,543, 3134,04, 194,557 ); + ent.v[ "angles" ] = ( 357, 168, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 963,288, 937,543, 151,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -567,787, 2121,14, 205,091 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -568,3, 2265,36, 205,097 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -360,016, 2265,37, 205,083 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -360,054, 2409,07, 205,113 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -464,079, 2409,51, 205,085 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -568,324, 2409,53, 205,112 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -567,731, 2856,69, 205,126 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -567,911, 2697,52, 205,077 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -463,919, 2697,29, 205,076 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -359,705, 2697,6, 205,087 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -359,952, 2569,49, 205,077 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -464,03, 2569,28, 205,081 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -567,591, 2569,18, 205,091 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1237,63, 3157,03, 215,203 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1217,34, 1890,9, 215,172 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1078,51, 1918,02, 215,146 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -946,246, 1978,07, 215,131 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -838,025, 2054,32, 215,116 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -766,197, 2146,19, 215,111 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -714,141, 2238,07, 215,116 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -693,975, 2338,32, 215,117 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -686,745, 2438,16, 215,17 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -689,828, 2542,63, 215,165 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -697,525, 2641,64, 215,16 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -706,664, 2734,36, 215,146 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -726,149, 2821,76, 215,122 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -754,147, 2897,64, 215,137 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -802,209, 2981,43, 215,157 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -870,177, 3049,94, 215,112 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -950,342, 3093,78, 215,15 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1037,98, 3125,61, 215,136 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1134,85, 3153,46, 215,18 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1438,3, 2317,09, 159,125 ); + ent.v[ "angles" ] = ( 90, 351,822, -98,1783 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1610,96, 2494,98, 151,875 ); + ent.v[ "angles" ] = ( 90, 351,822, -98,1783 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1007,68, 2678,46, 151,875 ); + ent.v[ "angles" ] = ( 90, 351,822, -98,1783 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1112,74, 2889,84, 146,587 ); + ent.v[ "angles" ] = ( 90, 351,822, -98,1783 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1239,49, 2313,33, 280,347 ); + ent.v[ "angles" ] = ( 90, 351,822, -98,1783 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -707,732, 1466,49, 134,076 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -771,867, 1466,58, 134,07 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -835,617, 1466,68, 134,085 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -900,001, 1466,36, 134,095 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool_sm_soft" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -963,95, 1466,25, 134,093 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_modern_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1233,38, 334,426, 123,691 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 101 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tak_light_sign_glow_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1430,55, 2115,51, 134,592 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "delay" ] = -64; +} diff --git a/mp_takeoff/maps/mp/mp_takeoff.gsc b/mp_takeoff/maps/mp/mp_takeoff.gsc new file mode 100644 index 0000000..064f859 --- /dev/null +++ b/mp_takeoff/maps/mp/mp_takeoff.gsc @@ -0,0 +1,353 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include common_scripts/utility; +#include maps/mp/_events; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level.overrideplayerdeathwatchtimer = ::leveloverridetime; + level.useintermissionpointsonwavespawn = ::useintermissionpointsonwavespawn; + maps/mp/mp_takeoff_fx::main(); + precachemodel( "collision_nosight_wall_64x64x10" ); + precachemodel( "collision_clip_wall_128x128x10" ); + precachemodel( "collision_mp_takeoff_solar_weap" ); + maps/mp/_load::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_takeoff" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -915, 790, 212 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -979, 790, 212 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -1043, 790, 212 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -1083, 790, 212 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -915, 790, 148 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -979, 790, 148 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -1043, 790, 148 ), ( 0, 0, 1 ) ); + spawncollision( "collision_nosight_wall_64x64x10", "collider", ( -1083, 790, 148 ), ( 0, 0, 1 ) ); + spawncollision( "collision_clip_wall_128x128x10", "collider", ( 136, 2511, 245,5 ), vectorScale( ( 0, 0, 1 ), 90 ) ); + spawncollision( "collision_mp_takeoff_solar_weap", "collider", ( 580, 3239,5, 32,5 ), ( 0, 0, 1 ) ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level thread dog_jump_think(); + level.disableoutrovisionset = 1; + level.mptakeoffrocket = getent( "takeoff_rocket", "targetname" ); +/# + assert( isDefined( level.mptakeoffrocket ), "Unable to find entity with targetname: 'takeoff_rocket'" ); +#/ + level.endgamefunction = ::takeoff_end_game; + level.preendgamefunction = ::takeoff_pre_end_game; + level thread setuprocketcamera(); +/# + execdevgui( "devgui_mp_takeoff" ); + level thread watchdevnotify(); + level thread devgui_endgame(); +#/ +} + +dog_jump_think() +{ + origin = ( 209, 3819, 91 ); + trigger = spawn( "trigger_box", origin, getaitriggerflags(), 64, 32, 64 ); + trigger setexcludeteamfortrigger( "none" ); + for ( ;; ) + { + trigger waittill( "trigger", entity ); + if ( isai( entity ) ) + { + glassradiusdamage( origin, 64, 5001, 5000 ); + trigger delete(); + return; + } + } +} + +setuprocketcamera() +{ + wait 0,1; + getrocketcamera(); +} + +getrocketcamera() +{ + camerastruct = getstruct( "endgame_first_camera", "targetname" ); +/# + assert( isDefined( camerastruct ), "Unable to find entity with targetname: 'endgame_first_camera'" ); +#/ + if ( !isDefined( level.rocketcamera ) ) + { + level.rocketcamera = spawn( "script_model", camerastruct.origin ); + level.rocketcamera setmodel( "tag_origin" ); + } + else + { + level.rocketcamera.origin = camerastruct.origin; + } + level.rocketcamera.angles = camerastruct.angles; + return level.rocketcamera; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2300", reset_dvars ); +} + +watchdevnotify() +{ +/# + startvalue = 0; + setdvarint( "scr_takeoff_rocket", startvalue ); + for ( ;; ) + { + takeoff_rocket = getDvarInt( #"12AE1013" ); + if ( takeoff_rocket != startvalue ) + { + level notify( "dev_takeoff_rocket" ); + startvalue = takeoff_rocket; + } + wait 0,2; +#/ + } +} + +devgui_endgame() +{ +/# + rocket = level.mptakeoffrocket; + assert( isDefined( rocket ), "Unable to find entity with targetname: 'takeoff_rocket'" ); + rocketorigin = rocket.origin; + rocketangles = rocket.angles; + rocketmodel = rocket.model; + for ( ;; ) + { + level waittill( "dev_takeoff_rocket" ); + visionsetnaked( "blackout", 0,1 ); + thread takeoff_pre_end_game(); + wait 1; + visionsetnaked( "mp_takeoff", 0,1 ); + thread takeoff_end_game(); + wait 4,5; + level notify( "debug_end_takeoff" ); + wait 1; + visionsetnaked( "mp_takeoff", 0,1 ); + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + player cameraactivate( 0 ); + i++; + } + stop_exploder( 1001 ); + rocket delete(); + rocket = spawn( "script_model", rocketorigin ); + rocket.angles = rocketangles; + rocket setmodel( rocketmodel ); + level.mptakeoffrocket = rocket; +#/ + } +} + +water_trigger_init() +{ + wait 3; + triggers = getentarray( "trigger_hurt", "classname" ); + _a206 = triggers; + _k206 = getFirstArrayKey( _a206 ); + while ( isDefined( _k206 ) ) + { + trigger = _a206[ _k206 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + trigger thread water_trigger_think(); + } + _k206 = getNextArrayKey( _a206, _k206 ); + } + triggers = getentarray( "water_killbrush", "targetname" ); + _a218 = triggers; + _k218 = getFirstArrayKey( _a218 ); + while ( isDefined( _k218 ) ) + { + trigger = _a218[ _k218 ]; + trigger thread player_splash_think(); + _k218 = getNextArrayKey( _a218, _k218 ); + } +} + +player_splash_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) && isalive( entity ) ) + { + self thread trigger_thread( entity, ::player_water_fx ); + } + } +} + +player_water_fx( player, endon_condition ) +{ + maxs = self.origin + self getmaxs(); + if ( maxs[ 2 ] > 60 ) + { + maxs += vectorScale( ( 0, 0, 1 ), 10 ); + } + origin = ( player.origin[ 0 ], player.origin[ 1 ], maxs[ 2 ] ); + playfx( level._effect[ "water_splash_sm" ], origin ); +} + +water_trigger_think() +{ + for ( ;; ) + { + self waittill( "trigger", entity ); + if ( isplayer( entity ) ) + { + entity playsound( "mpl_splash_death" ); + playfx( level._effect[ "water_splash" ], entity.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + } + } +} + +leveloverridetime( defaulttime ) +{ + if ( self isinwater() ) + { + return 0,4; + } + return defaulttime; +} + +useintermissionpointsonwavespawn() +{ + return self isinwater(); +} + +isinwater() +{ + triggers = getentarray( "trigger_hurt", "classname" ); + _a283 = triggers; + _k283 = getFirstArrayKey( _a283 ); + while ( isDefined( _k283 ) ) + { + trigger = _a283[ _k283 ]; + if ( trigger.origin[ 2 ] > level.mapcenter[ 2 ] ) + { + } + else + { + if ( self istouching( trigger ) ) + { + return 1; + } + } + _k283 = getNextArrayKey( _a283, _k283 ); + } + return 0; +} + +takeoff_pre_end_game( timetillendgame, debug ) +{ + if ( !isDefined( debug ) ) + { + level waittill( "play_final_killcam" ); + wait 10; + } + rocket = level.mptakeoffrocket; +/# + assert( isDefined( rocket ), "Unable to find entity with targetname: 'takeoff_rocket'" ); +#/ + rocket rocket_thrusters_initialize(); +} + +takeoff_end_game() +{ +/# + level endon( "debug_end_takeoff" ); +#/ + level.rocket_camera = 0; + rocket = level.mptakeoffrocket; + rocket playsound( "evt_shuttle_launch" ); +/# + assert( isDefined( rocket ), "Unable to find entity with targetname: 'takeoff_rocket'" ); +#/ + rocket rocket_thrusters_initialize(); + cameraone = getrocketcamera(); + cameraone thread vibrateaftertime( getdvarfloatdefault( "mp_takeoff_shakewait", 0,5 ) ); + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + player camerasetposition( cameraone ); + player camerasetlookat(); + player cameraactivate( 1 ); + player setdepthoffield( 0, 0, 512, 512, 4, 0 ); + i++; + } + level.rocket_camera = 1; + rocket thread rocket_move(); + wait 4; + visionsetnaked( "blackout", getdvarfloatdefault( "mp_takeoff_fade_black", 0,5 ) ); +} + +rocket_thrusters_initialize() +{ + if ( !isDefined( self.thrustersinited ) ) + { + self.thrustersinited = 1; + exploder( 1001 ); + playfxontag( level._effect[ "fx_mp_tak_shuttle_thruster_lg" ], self, "tag_fx" ); + playfxontag( level._effect[ "fx_mp_tak_shuttle_thruster_sm" ], self, "tag_fx5" ); + playfxontag( level._effect[ "fx_mp_tak_shuttle_thruster_md" ], self, "tag_fx6" ); + playfxontag( level._effect[ "fx_mp_tak_shuttle_thruster_sm" ], self, "tag_fx7" ); + } +} + +rocket_move() +{ + origin = self.origin; + heightincrease = getdvarintdefault( "mp_takeoff_rocket_start_height", 0 ); + self.origin += ( 0, 0, heightincrease ); + movetime = getdvarintdefault( "mp_takeoff_moveTime", 17 ); + moveaccelratio = getdvarfloatdefault( "mp_takeoff_moveAccel", 1 ); + self moveto( self.origin + vectorScale( ( 0, 0, 1 ), 50000 ), movetime, movetime * moveaccelratio ); + self waittill( "movedone" ); + origin = self.origin; +} + +vibrateaftertime( waittime ) +{ + self endon( "death" ); +/# + level endon( "debug_end_takeoff" ); +#/ + wait waittime; + pitchvibrateamplitude = getdvarfloatdefault( "mp_takeoff_start", 0,1 ); + vibrateamplitude = getdvarfloatdefault( "mp_takeoff_a_start", 0,1 ); + vibratetime = 0,05; + originalangles = self.angles; + for ( ;; ) + { + angles0 = ( originalangles[ 0 ] - pitchvibrateamplitude, originalangles[ 1 ], originalangles[ 2 ] - vibrateamplitude ); + angles1 = ( originalangles[ 0 ] + pitchvibrateamplitude, originalangles[ 1 ], originalangles[ 2 ] + vibrateamplitude ); + self rotateto( angles0, vibratetime ); + self waittill( "rotatedone" ); + self rotateto( angles1, vibratetime ); + self waittill( "rotatedone" ); + vibrateamplitude *= getdvarfloatdefault( "mp_takeoff_amp_vredux", 1,12 ); + pitchvibrateamplitude = 0 - pitchvibrateamplitude; + pitchvibrateamplitude *= getdvarfloatdefault( "mp_takeoff_amp_predux", 1,11 ); + } +} diff --git a/mp_takeoff/maps/mp/mp_takeoff_amb.gsc b/mp_takeoff/maps/mp/mp_takeoff_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_takeoff/maps/mp/mp_takeoff_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_takeoff/maps/mp/mp_takeoff_fx.gsc b/mp_takeoff/maps/mp/mp_takeoff_fx.gsc new file mode 100644 index 0000000..8ea1560 --- /dev/null +++ b/mp_takeoff/maps/mp/mp_takeoff_fx.gsc @@ -0,0 +1,95 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc4" ); + +main() +{ + maps/mp/createfx/mp_takeoff_fx::main(); + precache_fxanim_props(); + precache_fxanim_props_dlc4(); + precache_scripted_fx(); + precache_createfx_fx(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_light_exit_sign" ] = loadfx( "light/fx_light_exit_sign_glow" ); + level._effect[ "fx_light_flour_glow_cool" ] = loadfx( "light/fx_tak_light_flour_glow_cool" ); + level._effect[ "fx_tak_light_flour_glow_cool_sm" ] = loadfx( "light/fx_tak_light_flour_glow_cool_sm" ); + level._effect[ "fx_light_upl_flour_glow_v_shape_cool" ] = loadfx( "light/fx_light_upl_flour_glow_v_shape_cool" ); + level._effect[ "fx_light_recessed_blue" ] = loadfx( "light/fx_light_recessed_blue" ); + level._effect[ "fx_light_recessed_cool_sm_soft" ] = loadfx( "light/fx_light_recessed_cool_sm_soft" ); + level._effect[ "fx_mp_tak_glow_blue" ] = loadfx( "maps/mp_maps/fx_mp_tak_glow_blue" ); + level._effect[ "fx_mp_tak_glow_orange" ] = loadfx( "maps/mp_maps/fx_mp_tak_glow_orange" ); + level._effect[ "fx_mp_tak_glow_yellow" ] = loadfx( "maps/mp_maps/fx_mp_tak_glow_yellow" ); + level._effect[ "fx_mp_tak_glow_red" ] = loadfx( "maps/mp_maps/fx_mp_tak_glow_red" ); + level._effect[ "fx_tak_light_flour_glow_ceiling" ] = loadfx( "light/fx_tak_light_flour_glow_ceiling" ); + level._effect[ "fx_tak_light_flour_sqr_lg" ] = loadfx( "light/fx_tak_light_flour_sqr_lg" ); + level._effect[ "fx_tak_light_flour_rnd_lg" ] = loadfx( "light/fx_tak_light_flour_rnd_lg" ); + level._effect[ "fx_tak_light_tv_glow_blue" ] = loadfx( "light/fx_tak_light_tv_glow_blue" ); + level._effect[ "fx_tak_light_tv_glow_blue_flckr" ] = loadfx( "light/fx_tak_light_tv_glow_blue_flckr" ); + level._effect[ "fx_drone_light_yellow" ] = loadfx( "light/fx_drone_light_yellow" ); + level._effect[ "fx_tak_light_sign_glow_blue" ] = loadfx( "light/fx_tak_light_sign_glow_blue" ); + level._effect[ "fx_tak_light_blue_stair" ] = loadfx( "light/fx_tak_light_blue_stair" ); + level._effect[ "fx_tak_light_blue_stair_sm" ] = loadfx( "light/fx_tak_light_blue_stair_sm" ); + level._effect[ "fx_tak_light_blue" ] = loadfx( "light/fx_tak_light_blue" ); + level._effect[ "fx_tak_light_blue_pulse" ] = loadfx( "light/fx_tak_light_blue_pulse" ); + level._effect[ "fx_tak_light_blue_pulse_curve" ] = loadfx( "light/fx_tak_light_blue_pulse_curve" ); + level._effect[ "fx_light_beacon_yellow" ] = loadfx( "light/fx_light_beacon_yellow" ); + level._effect[ "fx_light_beacon_red_blink_fst_sm" ] = loadfx( "light/fx_light_beacon_red_blink_fst_sm" ); + level._effect[ "fx_tak_light_modern_sconce" ] = loadfx( "light/fx_tak_light_modern_sconce" ); + level._effect[ "fx_tak_light_spotlight" ] = loadfx( "light/fx_tak_light_spotlight" ); + level._effect[ "fx_tak_light_wall_ext" ] = loadfx( "light/fx_tak_light_wall_ext" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_tak_dust_ground" ] = loadfx( "maps/mp_maps/fx_mp_tak_dust_ground" ); + level._effect[ "fx_tak_water_fountain_pool_sm" ] = loadfx( "water/fx_tak_water_fountain_pool_sm" ); + level._effect[ "fx_paper_interior_short_sm" ] = loadfx( "debris/fx_paper_interior_short_sm" ); + level._effect[ "fx_paper_exterior_short_sm_fst" ] = loadfx( "debris/fx_paper_exterior_short_sm_fst" ); + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_mp_vent_heat_distort" ] = loadfx( "maps/mp_maps/fx_mp_vent_heat_distort" ); + level._effect[ "fx_mp_tak_steam_loading_dock" ] = loadfx( "maps/mp_maps/fx_mp_tak_steam_loading_dock" ); + level._effect[ "fx_mp_vent_steam_line" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_line" ); + level._effect[ "fx_mp_vent_steam_line_sm" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_line_sm" ); + level._effect[ "fx_mp_vent_steam_line_lg" ] = loadfx( "maps/mp_maps/fx_mp_vent_steam_line_lg" ); + level._effect[ "fx_mp_steam_amb_xlg" ] = loadfx( "maps/mp_maps/fx_mp_steam_amb_xlg" ); + level._effect[ "fx_mp_tak_steam_hvac" ] = loadfx( "maps/mp_maps/fx_mp_tak_steam_hvac" ); + level._effect[ "fx_lf_mp_overflow_sun1" ] = loadfx( "lens_flares/fx_lf_mp_overflow_sun1" ); + level._effect[ "fx_lf_mp_takeoff_sun1" ] = loadfx( "lens_flares/fx_lf_mp_takeoff_sun1" ); + level._effect[ "fx_mp_tak_shuttle_thruster_lg" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_thruster_lg" ); + level._effect[ "fx_mp_tak_shuttle_thruster_md" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_thruster_md" ); + level._effect[ "fx_mp_tak_shuttle_thruster_sm" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_thruster_sm" ); + level._effect[ "fx_mp_tak_shuttle_thruster_smk_grnd" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_thruster_smk_grnd" ); + level._effect[ "fx_mp_tak_shuttle_thruster_steam" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_thruster_steam" ); + level._effect[ "fx_mp_tak_shuttle_thruster_steam_w" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_thruster_steam_w" ); + level._effect[ "fx_mp_tak_shuttle_frame_light" ] = loadfx( "maps/mp_maps/fx_mp_tak_shuttle_frame_light" ); + level._effect[ "fx_mp_tak_steam_nozzle" ] = loadfx( "maps/mp_maps/fx_mp_tak_steam_nozzle" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "seagull_circle_01" ] = %fxanim_gp_seagull_circle_01_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_02" ] = %fxanim_gp_seagull_circle_02_anim; + level.scr_anim[ "fxanim_props" ][ "seagull_circle_03" ] = %fxanim_gp_seagull_circle_03_anim; + level.scr_anim[ "fxanim_props" ][ "windsock" ] = %fxanim_gp_windsock_anim; +} + +precache_fxanim_props_dlc4() +{ + level.scr_anim[ "fxanim_props_dlc4" ][ "decont_blasters" ] = %fxanim_mp_takeoff_decont_blasters_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "scaffold_wires_01" ] = %fxanim_mp_takeoff_scaffold_wires_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "crane_hooks" ] = %fxanim_mp_takeoff_crane_hooks_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "rattling_sign" ] = %fxanim_mp_takeoff_rattling_sign_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "radar01" ] = %fxanim_mp_takeoff_satellite_dish_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "radar02" ] = %fxanim_mp_takeoff_satellite_dish_02_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "radar03" ] = %fxanim_mp_takeoff_satellite_dish_03_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "radar04" ] = %fxanim_mp_takeoff_satellite_dish_04_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "radar05" ] = %fxanim_mp_takeoff_satellite_dish_05_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "banners" ] = %fxanim_mp_takeoff_banner_01_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "planets" ] = %fxanim_mp_takeoff_planets_anim; + level.scr_anim[ "fxanim_props_dlc4" ][ "banners_lrg" ] = %fxanim_mp_takeoff_banner_lrg_anim; +} diff --git a/mp_turbine/aitype/enemy_dog_mp.gsc b/mp_turbine/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_turbine/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_turbine/character/character_mp_german_shepherd.gsc b/mp_turbine/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_turbine/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_turbine/maps/mp/createart/mp_turbine_art.gsc b/mp_turbine/maps/mp/createart/mp_turbine_art.gsc new file mode 100644 index 0000000..4062e15 --- /dev/null +++ b/mp_turbine/maps/mp/createart/mp_turbine_art.gsc @@ -0,0 +1,41 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 1866,79; + half_dist = 3885,26; + half_height = 678,638; + base_height = 701,862; + fog_r = 0,52549; + fog_g = 0,258824; + fog_b = 0,117647; + fog_scale = 5,56828; + sun_col_r = 1; + sun_col_g = 1; + sun_col_b = 1; + sun_dir_x = -0,252383; + sun_dir_y = 0,230826; + sun_dir_z = 0,939693; + sun_start_ang = 0; + sun_stop_ang = 104,831; + time = 0; + max_fog_opacity = 0,921463; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); + visionsetnaked( "mp_turbine", 0 ); +} diff --git a/mp_turbine/maps/mp/createfx/mp_turbine_fx.gsc b/mp_turbine/maps/mp/createfx/mp_turbine_fx.gsc new file mode 100644 index 0000000..266a45e --- /dev/null +++ b/mp_turbine/maps/mp/createfx/mp_turbine_fx.gsc @@ -0,0 +1,1150 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_lg" ); + ent.v[ "origin" ] = ( -1406,93, 3142,59, 297,121 ); + ent.v[ "angles" ] = ( 3,199, 2,89313, -1,67808 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_lg" ); + ent.v[ "origin" ] = ( 694,313, 3884,36, -197,426 ); + ent.v[ "angles" ] = ( 350,85, 286,023, 2,62714 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 862,108, 1186,49, 58,4705 ); + ent.v[ "angles" ] = ( 352,049, 249,11, 2,04621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( -1061,35, 1247,45, 404,65 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 325 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1365,35, 1572,96, 440,85 ); + ent.v[ "angles" ] = ( 357,905, 347, 0,501119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_lg" ); + ent.v[ "origin" ] = ( -452,741, -289,627, 279,825 ); + ent.v[ "angles" ] = ( 4,73876, 313,002, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_lg" ); + ent.v[ "origin" ] = ( -295,966, -1209,25, 165,459 ); + ent.v[ "angles" ] = ( 359,505, 327,837, 0,949091 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -902,648, -1952,23, 134,726 ); + ent.v[ "angles" ] = ( 356,138, 353,803, 0,637275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_lg" ); + ent.v[ "origin" ] = ( 583,137, 5121,51, -277,77 ); + ent.v[ "angles" ] = ( 0,373405, 276,843, 1,98135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -631,986, 4760,2, 676,648 ); + ent.v[ "angles" ] = ( 5,19152, 308,8, -4,90136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -696,815, 3879,16, 584,648 ); + ent.v[ "angles" ] = ( 0,354917, 339,065, -1,2632 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -483,116, 2041,97, 687,352 ); + ent.v[ "angles" ] = ( 358,18, 337,067, -0,704263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -611,764, 684,761, 691,902 ); + ent.v[ "angles" ] = ( 1,54352, 354,3, -2,40647 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -408,605, 97,2704, 628,06 ); + ent.v[ "angles" ] = ( 6,862, 306,178, 1,11665 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1223,3, 845,474, 468,491 ); + ent.v[ "angles" ] = ( 357,821, 293,039, 0,224171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( 1129,52, 62,0926, 628,811 ); + ent.v[ "angles" ] = ( 16, 295, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 288,574, 1918,46, 222,648 ); + ent.v[ "angles" ] = ( 350,42, 319,396, -4,28809 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -624,243, 5178,65, 960,096 ); + ent.v[ "angles" ] = ( 8,969, 317,957, -0,13832 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1704,68, 754,97, 444,426 ); + ent.v[ "angles" ] = ( 358,389, 337,971, -0,745886 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1453,59, 3593,12, 303,806 ); + ent.v[ "angles" ] = ( 0,258878, 316, -3,03393 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( -1268,56, 1893,84, 562,844 ); + ent.v[ "angles" ] = ( 1, 336, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( -1163,74, 2334,46, 577,898 ); + ent.v[ "angles" ] = ( 358,873, 338,927, -0,728582 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_edge_md" ); + ent.v[ "origin" ] = ( -556,151, 1033,24, 409,384 ); + ent.v[ "angles" ] = ( 356,012, 346,999, -0,104143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -928,736, -1432,33, 168,393 ); + ent.v[ "angles" ] = ( 359,318, 339,836, 0,825526 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 77,0866, 2485,17, 299,642 ); + ent.v[ "angles" ] = ( 2,99589, 342,843, -3,00365 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( -1466,07, 3172,14, 165 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 352 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -1119,18, 1237,86, 378,199 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( 891,74, 3012,06, -81,939 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( 582,339, 5560,47, -168,019 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 274 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_lg_pipe" ); + ent.v[ "origin" ] = ( 898,253, 2355,64, 13,9226 ); + ent.v[ "angles" ] = ( 353,007, 258,022, -0,315824 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_lg_pipe" ); + ent.v[ "origin" ] = ( 657,024, 1492,34, 122,829 ); + ent.v[ "angles" ] = ( 341,835, 228,312, 1,77078 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_lg_pipe" ); + ent.v[ "origin" ] = ( -747,031, -301,723, 407,955 ); + ent.v[ "angles" ] = ( 14,6823, 296,035, 7,1564 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_sm_pipe" ); + ent.v[ "origin" ] = ( 603,333, 4425,56, -208,672 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -1432,82, 1566,2, 424,351 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -891,049, 960,815, 452,129 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -904,236, 596,015, 369,058 ); + ent.v[ "angles" ] = ( 6, 252, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -951,789, 2715,96, 410,876 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( 270,257, 4517,7, -217,082 ); + ent.v[ "angles" ] = ( 346, 246, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 691,356, 3771,76, -109,39 ); + ent.v[ "angles" ] = ( 356, 282, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -60,6774, 2037,37, 226,398 ); + ent.v[ "angles" ] = ( 359, 267, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 476,955, 2480,05, 4,5545 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 257 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 994,47, 1536,96, 12,0209 ); + ent.v[ "angles" ] = ( 354,007, 248,984, 0,315192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 563,019, 538,721, 204,526 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 243 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 1505,02, 1033,18, 286,484 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( -710,605, -1214,89, 147,245 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 319 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 186,316, -576,102, 208,532 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 274 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( 747,206, -402,197, 662,219 ); + ent.v[ "angles" ] = ( 2,70496, 252,206, -2,5795 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 798,039, -996,082, 534,492 ); + ent.v[ "angles" ] = ( 359,222, 246,005, -2,0119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1077,12, 4209,58, -117,659 ); + ent.v[ "angles" ] = ( 341, 324, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1422,01, 3353,93, 311,228 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 290,243, 3514,05, 124,09 ); + ent.v[ "angles" ] = ( 359,48, 274,72, 2,88561 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -709,655, 98,7326, 629,163 ); + ent.v[ "angles" ] = ( 3,25413, 213,059, 1,12483 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -1181,97, 593,034, 637,965 ); + ent.v[ "angles" ] = ( 2,7712, 237,997, -0,145344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( 1223,19, 4333,18, 172,3 ); + ent.v[ "angles" ] = ( 9,48348, 257,808, -1,28711 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -182,631, 5330,66, 531,998 ); + ent.v[ "angles" ] = ( 5,82793, 312,395, -0,566427 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -3182,82, 4803, -264,381 ); + ent.v[ "angles" ] = ( 349,052, 328,114, -0,905957 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1584,36, 765,031, 333,865 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 288 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 543,265, -836,044, 325,543 ); + ent.v[ "angles" ] = ( 28,5249, 212,902, 4,00985 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1632,56, 337,572, 259,391 ); + ent.v[ "angles" ] = ( 3,24263, 230,166, -0,809293 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1450,28, 920,954, 275,006 ); + ent.v[ "angles" ] = ( 3,33384, 251,994, 4,20092 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1728,84, 1765,33, 167,179 ); + ent.v[ "angles" ] = ( 357,746, 288,527, -3,10413 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1526,29, 1443,57, 220,48 ); + ent.v[ "angles" ] = ( 2,15021, 344,778, -1,62638 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1346,71, 1294,18, 243,9 ); + ent.v[ "angles" ] = ( 357,643, 308,917, 0,301857 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1777,85, 1007,09, 268,742 ); + ent.v[ "angles" ] = ( 356,172, 285,895, 0,293392 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1030,43, -576,162, 339,524 ); + ent.v[ "angles" ] = ( 353,557, 273,802, -0,680109 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 215,396, -496,881, 232,321 ); + ent.v[ "angles" ] = ( 10,4225, 288,799, 17,7869 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1028,23, -510,248, 353,483 ); + ent.v[ "angles" ] = ( 349,971, 208,328, -1,50807 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1689,23, 3332,65, 161 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 1109,59, 2698,12, -156,358 ); + ent.v[ "angles" ] = ( 353,56, 289,597, 5,18696 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 1216,84, 2143,6, -84,5535 ); + ent.v[ "angles" ] = ( 349,469, 258,235, 0,239357 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 1233,65, 1706,03, 1,47629 ); + ent.v[ "angles" ] = ( 356,907, 243,409, 1,31402 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 665,807, 2893,54, -117,775 ); + ent.v[ "angles" ] = ( 355,333, 237,1, -2,65095 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( -124,23, 1346,62, 241,419 ); + ent.v[ "angles" ] = ( 352,984, 265,323, 2,18371 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -223,36, 1107,29, 295,599 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -164,955, -895,34, 238,101 ); + ent.v[ "angles" ] = ( 4, 281, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 348,49, 4977,43, -240,79 ); + ent.v[ "angles" ] = ( 351,05, 234,926, 0,948469 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -1320,12, 3809,01, 259,867 ); + ent.v[ "angles" ] = ( 356,06, 291,024, -0,695781 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( -71,2607, 30,6365, 313,505 ); + ent.v[ "angles" ] = ( 4, 271, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1433,18, 2329,32, 113,125 ); + ent.v[ "angles" ] = ( 4,96089, 307,978, -0,329197 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1138,84, 3202,16, 177,569 ); + ent.v[ "angles" ] = ( 357,408, 357,226, 2,68068 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1691,35, 1820,16, 183,599 ); + ent.v[ "angles" ] = ( 359,672, 308,267, -3,69506 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1860,51, 847,635, 329,508 ); + ent.v[ "angles" ] = ( 358,47, 259,669, -1,60795 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 508,665, 271,964, 204,993 ); + ent.v[ "angles" ] = ( 351,292, 231,873, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -319,246, 818,947, 278,848 ); + ent.v[ "angles" ] = ( 2,03285, 284,245, -1,56861 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 62,9951, 686,778, 277,497 ); + ent.v[ "angles" ] = ( 357,251, 247,31, -0,796102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -111,33, 364,894, 283,781 ); + ent.v[ "angles" ] = ( 354, 269,332, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 357,04, 1861,44, -22,5386 ); + ent.v[ "angles" ] = ( 331,827, 237,315, -16,1332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 430,697, 2282,46, -45,8848 ); + ent.v[ "angles" ] = ( 11,7238, 272,207, -9,03757 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 83,5348, 3368,37, -7,50717 ); + ent.v[ "angles" ] = ( 15,5965, 353,462, -3,73034 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 367,498, 4322,44, -198,948 ); + ent.v[ "angles" ] = ( 352,549, 245,527, -1,26226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 750,257, 4895,05, -248,716 ); + ent.v[ "angles" ] = ( 354,044, 274,732, 4,22172 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_md" ); + ent.v[ "origin" ] = ( 167,674, 3910,4, -81,8178 ); + ent.v[ "angles" ] = ( 335,174, 216,894, 4,2963 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -327,893, 2822,05, 214,486 ); + ent.v[ "angles" ] = ( 357,224, 299,445, -1,83224 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -16,2284, 2226,72, 198,412 ); + ent.v[ "angles" ] = ( 359,035, 251,383, 0,326779 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -124,034, 1764,67, 223,108 ); + ent.v[ "angles" ] = ( 355,984, 265,381, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 134,6, 1610,63, 136,689 ); + ent.v[ "angles" ] = ( 338,939, 209,105, -7,72014 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -904,039, 943,147, 404,487 ); + ent.v[ "angles" ] = ( 13,0126, 279,177, -1,01497 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -933,062, 477,095, 340,013 ); + ent.v[ "angles" ] = ( 10,5988, 245,32, 0,289334 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -912,959, 2441,2, 395,645 ); + ent.v[ "angles" ] = ( 352,99, 272,37, 1,40524 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( 316,517, -2046,73, 155,902 ); + ent.v[ "angles" ] = ( 307,278, 316,232, 1,60742 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_debris_pipe" ); + ent.v[ "origin" ] = ( 883,406, 2330,73, -84,2394 ); + ent.v[ "angles" ] = ( 353,062, 258,978, 1,36671 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_swirl_debris_pipe" ); + ent.v[ "origin" ] = ( 626,428, 1442,38, 27,1133 ); + ent.v[ "angles" ] = ( 340,168, 227,051, 1,76222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( -1299,72, 1213,72, 584,78 ); + ent.v[ "angles" ] = ( 359,573, 352,577, 0,723254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( -1061,38, 735,035, 640,674 ); + ent.v[ "angles" ] = ( 3,64941, 27,952, -2,55961 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( -1418,74, 1782,05, 563,118 ); + ent.v[ "angles" ] = ( 2,54877, 236,92, -1,62888 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -673,314, 4306,65, 606,599 ); + ent.v[ "angles" ] = ( 5,00534, 336,913, -0,352102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1197,18, -337,014, 314,967 ); + ent.v[ "angles" ] = ( 354,762, 231,59, -1,18114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( 903,164, -2184,91, 522,862 ); + ent.v[ "angles" ] = ( 332,336, 322,034, 1,59212 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1029,77, -35,9784, 300,06 ); + ent.v[ "angles" ] = ( 1,43943, 309,283, -2,4544 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( 1565,92, 4039,46, 210,112 ); + ent.v[ "angles" ] = ( 5,25584, 240,93, -0,274937 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1185,17, 539,721, 253,469 ); + ent.v[ "angles" ] = ( 358,534, 319,036, 2,27968 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1188, -51,0568, 285,631 ); + ent.v[ "angles" ] = ( 358,865, 258,48, -3,42533 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1087,26, -793,815, 358,571 ); + ent.v[ "angles" ] = ( 355,909, 262,679, -0,713538 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( 1077,88, 952,251, 463,789 ); + ent.v[ "angles" ] = ( 4,85968, 219,823, -2,88763 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 953,331, -561,401, 630,357 ); + ent.v[ "angles" ] = ( 2,96603, 250,576, 2,567 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1859,09, 1215,24, 408,668 ); + ent.v[ "angles" ] = ( 359,508, 234,396, 1,74307 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 55,7173, 2857,45, 210,442 ); + ent.v[ "angles" ] = ( 4,87442, 339,762, -2,37214 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md_lng" ); + ent.v[ "origin" ] = ( 1060,3, 4635,09, 36,8409 ); + ent.v[ "angles" ] = ( 356,058, 221,958, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( 1166,64, 5035,67, 146,327 ); + ent.v[ "angles" ] = ( 0,994242, 214,035, 0,872628 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1211,34, 1583,81, 408,938 ); + ent.v[ "angles" ] = ( 356,796, 30,0557, -1,87885 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -722,946, -189,859, 291,512 ); + ent.v[ "angles" ] = ( 5,19372, 343,01, -2,07585 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( -605,424, -48,5298, 613,776 ); + ent.v[ "angles" ] = ( 15,2903, 262,743, -0,991539 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -160,668, 2486,05, 224,837 ); + ent.v[ "angles" ] = ( 0,22338, 299,402, -0,83127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1765,67, 493,103, 276,285 ); + ent.v[ "angles" ] = ( 354,872, 228,535, 0,863738 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 955,179, 3379,24, -143,467 ); + ent.v[ "angles" ] = ( 359,82, 291,805, 5,33257 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -543,302, -748,233, 174,419 ); + ent.v[ "angles" ] = ( 7,89651, 290,097, -0,970216 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 971,571, 573,164, 181,306 ); + ent.v[ "angles" ] = ( 1,54568, 213,548, 12,9273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1850,89, 2986,61, 162,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 534,975, 963,656, 148,785 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -590,07, 1409,57, 3895,8 ); + ent.v[ "angles" ] = ( 358,002, 356,999, 90,1046 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -1372,07, -646,927, 2254,94 ); + ent.v[ "angles" ] = ( 359, 358,036, 92,0687 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -3368,62, 4495,3, 2149,2 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -6039,58, -1936,81, 1058,61 ); + ent.v[ "angles" ] = ( 358, 358, 90,0696 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -2097,19, 1027,28, 77,539 ); + ent.v[ "angles" ] = ( 308,643, 351,708, -0,551175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -2229,93, 1774,39, 34,718 ); + ent.v[ "angles" ] = ( 313,479, 340,444, -3,88965 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -2160,24, 2535,25, 52,594 ); + ent.v[ "angles" ] = ( 305,077, 319,115, -3,96055 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -1953,09, 3125,38, -43,654 ); + ent.v[ "angles" ] = ( 315,319, 311,099, 0,545793 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -1811,25, 10,7626, 117,601 ); + ent.v[ "angles" ] = ( 328,577, 5,01471, 2,21768 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -951,567, -1402,14, -13,0464 ); + ent.v[ "angles" ] = ( 332,167, 321,788, -3,18111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -881,541, -2334,83, 10,4008 ); + ent.v[ "angles" ] = ( 316,325, 325,115, -44,0278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -2409,68, -2524,98, -718,561 ); + ent.v[ "angles" ] = ( 326,286, 353,382, 3,55199 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1332,51, 311,914, 328,725 ); + ent.v[ "angles" ] = ( 1,67149, 310,389, 3,0899 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -4312,84, 2115,62, -1135,36 ); + ent.v[ "angles" ] = ( 330, 350, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -3908,19, 4060,75, -939,362 ); + ent.v[ "angles" ] = ( 334,174, 356,653, -3,3286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -4084,99, 1621,01, -834,717 ); + ent.v[ "angles" ] = ( 330, 350, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -2513,38, -1356,8, -759,779 ); + ent.v[ "angles" ] = ( 337,223, 359,328, -15,7628 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -3142,39, -1971,26, -883,386 ); + ent.v[ "angles" ] = ( 353, 350, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1617,47, 1684,63, 337,628 ); + ent.v[ "angles" ] = ( 1,04831, 269,045, 2,36302 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1647,66, 2301,74, 324,983 ); + ent.v[ "angles" ] = ( 358,972, 256,979, 0,44455 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -1673,17, 1264,65, 331,072 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -339,947, 3562,02, 126,633 ); + ent.v[ "angles" ] = ( 351,091, 232,11, -1,05292 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -55,274, 4582,7, -94,3652 ); + ent.v[ "angles" ] = ( 334,74, 201,39, -1,39556 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 524,811, 5541,03, -203,814 ); + ent.v[ "angles" ] = ( 352,351, 271,846, -46,5437 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( 1538,12, -1077,51, 698,234 ); + ent.v[ "angles" ] = ( 339,027, 311,561, 6,44771 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( 1157,6, -1624,21, 651,21 ); + ent.v[ "angles" ] = ( 342,344, 329,511, -2,44014 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -750,024, 2962,74, 257,199 ); + ent.v[ "angles" ] = ( 8,28079, 0,40539, -25,905 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( 846,748, 2422,28, 237,875 ); + ent.v[ "angles" ] = ( 354, 241, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_md" ); + ent.v[ "origin" ] = ( 417,109, 954,571, 537,512 ); + ent.v[ "angles" ] = ( 5,28426, 245,016, 2,6592 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 154,477, 4722,76, -218,505 ); + ent.v[ "angles" ] = ( 336,482, 221,079, -9,59356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -655,181, -338,352, 273,602 ); + ent.v[ "angles" ] = ( 10,5588, 279,873, -2,87696 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_edge_md" ); + ent.v[ "origin" ] = ( -67,8391, -528,105, 331,844 ); + ent.v[ "angles" ] = ( 1,04778, 338,345, 29,656 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1524,38, 1651,94, 376,213 ); + ent.v[ "angles" ] = ( 3, 302, -3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( 1714,09, 1591,07, 378,887 ); + ent.v[ "angles" ] = ( 359,603, 273,18, -2,81221 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -1771,76, 2989,17, 311,681 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( -1990,25, 1063,03, 356,134 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 305 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -680,892, -309,436, 307,394 ); + ent.v[ "angles" ] = ( 11,9834, 287,059, 3,32174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1304,52, 33,8905, 312,819 ); + ent.v[ "angles" ] = ( 356,535, 244,297, -1,32621 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1011,51, -528,143, 374,803 ); + ent.v[ "angles" ] = ( 359,46, 270,22, -2,84866 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1022,63, -514,032, 364,441 ); + ent.v[ "angles" ] = ( 355,313, 204,327, -14,8672 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 922,682, -1124,83, 388,288 ); + ent.v[ "angles" ] = ( 357,017, 190,986, 0,217805 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 615,388, -1144,95, 383,405 ); + ent.v[ "angles" ] = ( 359,291, 299,856, 0,674965 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1481,23, 3845,26, 39,2438 ); + ent.v[ "angles" ] = ( 343,137, 295,681, 8,88461 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -809,971, -194,794, 306,185 ); + ent.v[ "angles" ] = ( 6,83035, 345,622, 1,38671 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -165,392, 79,3756, 336,951 ); + ent.v[ "angles" ] = ( 0,901464, 251,242, -1,76529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 1005,92, 618,549, 180,287 ); + ent.v[ "angles" ] = ( 0,759633, 216,525, 1,47704 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( -57,3561, 2517,21, 290,704 ); + ent.v[ "angles" ] = ( 8,00806, 276,994, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 489,339, 2648,44, -51,6272 ); + ent.v[ "angles" ] = ( 345,482, 233,234, 1,09263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -3826,2, 2772,7, -1118,32 ); + ent.v[ "angles" ] = ( 330,02, 347,691, 1,15431 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_shrt" ); + ent.v[ "origin" ] = ( 1754,99, 2519,99, 305,875 ); + ent.v[ "angles" ] = ( 270, 76,8444, -30,8444 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1392,75, 2151,22, 3,16943 ); + ent.v[ "angles" ] = ( 337,23, 6,69176, -2,24398 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1787,43, 2193,51, 30 ); + ent.v[ "angles" ] = ( 358, 44, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1914,54, 1812,28, 162,155 ); + ent.v[ "angles" ] = ( 359, 76, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -537,296, 345,119, 674,374 ); + ent.v[ "angles" ] = ( 2,77689, 353,123, 1,38902 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_edge_md" ); + ent.v[ "origin" ] = ( -459,019, 1015,95, 339,523 ); + ent.v[ "angles" ] = ( 356,012, 343,991, 0,105049 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 854,095, 2456,99, -110,479 ); + ent.v[ "angles" ] = ( 343,062, 277,297, -3,37125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1665,03, 1255,46, 222,378 ); + ent.v[ "angles" ] = ( 352,637, 262,829, 0,156695 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 936,244, 3811,16, 35,1558 ); + ent.v[ "angles" ] = ( 12,9656, 208,561, 3,91753 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1214,31, 3935,27, 122,169 ); + ent.v[ "angles" ] = ( 0,241001, 28,4359, -0,116949 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall_md" ); + ent.v[ "origin" ] = ( 1784,61, 3600,66, 303,572 ); + ent.v[ "angles" ] = ( 0,909339, 210,216, 3,08126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 800,532, -1358,27, 385,492 ); + ent.v[ "angles" ] = ( 352,679, 49,6001, 2,98446 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( 1584,38, 597,151, 392,45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( 1395,95, 4714,79, 398,945 ); + ent.v[ "angles" ] = ( 354,075, 303,537, 9,59351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( 2488,28, 3744,28, 689,949 ); + ent.v[ "angles" ] = ( 354,075, 303,537, 9,59351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( 2161,8, 3162,21, 357,595 ); + ent.v[ "angles" ] = ( 354,075, 303,537, 9,59348 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( 2219,05, 1944,76, 495,746 ); + ent.v[ "angles" ] = ( 354,075, 303,537, 0,593492 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( 2230,27, 1269,62, 571,55 ); + ent.v[ "angles" ] = ( 354,549, 285,454, 2,40076 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( 2128,16, 742,859, 510,444 ); + ent.v[ "angles" ] = ( 348,554, 285,198, 2,43842 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_edge_md" ); + ent.v[ "origin" ] = ( 377,23, -721,381, 325,883 ); + ent.v[ "angles" ] = ( 312,675, 332,421, 24,5171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_sm" ); + ent.v[ "origin" ] = ( 597,794, -1104,02, 429,105 ); + ent.v[ "angles" ] = ( 3,62999, 315,089, -2,40076 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1017,49, -1161,6, 370,77 ); + ent.v[ "angles" ] = ( 356,101, 232,605, 1,43087 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( 1220,08, 2467,62, -129,983 ); + ent.v[ "angles" ] = ( 356,077, 282,644, 6,72534 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_edge_md" ); + ent.v[ "origin" ] = ( 419,987, -141,665, 409,727 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 214 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -166,7, 80,6192, 330,945 ); + ent.v[ "angles" ] = ( 357,131, 257,281, 0,251018 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -2049,43, -1949,75, -545,314 ); + ent.v[ "angles" ] = ( 334,141, 356,871, -0,747941 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -2862,43, -513,632, -518,882 ); + ent.v[ "angles" ] = ( 339,776, 356,207, -5,21178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -3720,78, 3398,31, -1041,49 ); + ent.v[ "angles" ] = ( 334,174, 356,653, -3,3286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -3589,52, 370,865, -470,538 ); + ent.v[ "angles" ] = ( 337,785, 356,403, -5,28281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( -4705,81, 843,088, -891,159 ); + ent.v[ "angles" ] = ( 337,785, 356,403, -5,28281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista_shrt" ); + ent.v[ "origin" ] = ( -1638,64, 3645,8, -151,782 ); + ent.v[ "angles" ] = ( 315,319, 311,099, 0,545793 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg" ); + ent.v[ "origin" ] = ( -1503,99, 3225,7, 379,144 ); + ent.v[ "angles" ] = ( 356,561, 263,443, 0,803355 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -1458,27, 4320,31, 563,779 ); + ent.v[ "angles" ] = ( 2,5728, 263,023, 1,04024 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_door" ); + ent.v[ "origin" ] = ( -808,679, 2751,36, 391,125 ); + ent.v[ "angles" ] = ( 359, 214, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_ground_sm" ); + ent.v[ "origin" ] = ( -860,591, 1707,07, 415,062 ); + ent.v[ "angles" ] = ( 359,199, 311,006, 2,45768 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_fall" ); + ent.v[ "origin" ] = ( -295,101, 4907,56, 467,116 ); + ent.v[ "angles" ] = ( 5,96933, 317,912, 0,855779 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_blowing_lg_vista" ); + ent.v[ "origin" ] = ( 1153,05, 5350,95, 235,29 ); + ent.v[ "angles" ] = ( 349,262, 315,056, 7,91743 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_shrt" ); + ent.v[ "origin" ] = ( 2150,68, 2342,27, 304,875 ); + ent.v[ "angles" ] = ( 270, 0, -9 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_shrt" ); + ent.v[ "origin" ] = ( 2075,51, 2009,18, 307,875 ); + ent.v[ "angles" ] = ( 270, 356,634, 93,3664 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_dbl_shrt" ); + ent.v[ "origin" ] = ( 2161,57, 2537,25, 136,875 ); + ent.v[ "angles" ] = ( 270, 1,84761, 43,1524 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( 4277,04, -2840,86, 4747,97 ); + ent.v[ "angles" ] = ( 358, 358, 90,0696 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -1312,81, -4708,91, 3280,53 ); + ent.v[ "angles" ] = ( 358,002, 356,999, 92,1045 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( 3111,08, 6638, 3278,44 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( 2096,3, 12553, 3102,72 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -437,189, 20165,9, 2272,85 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -14126,7, 6210,72, -2760,33 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -17910,8, 9899,93, -2760,71 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -14170,9, 476,198, -2762,81 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_wind_turbine" ); + ent.v[ "origin" ] = ( -18720,7, -3704,99, -1752,84 ); + ent.v[ "angles" ] = ( 358,052, 358, 89,07 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_turbine_sun1" ); + ent.v[ "origin" ] = ( -565,631, 56070,4, 24146,6 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_sand_gust_cliff_edge_md" ); + ent.v[ "origin" ] = ( 44,2128, 2107,05, 182,558 ); + ent.v[ "angles" ] = ( 0, 342, -7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; +} diff --git a/mp_turbine/maps/mp/mp_turbine.gsc b/mp_turbine/maps/mp/mp_turbine.gsc new file mode 100644 index 0000000..ca5d218 --- /dev/null +++ b/mp_turbine/maps/mp/mp_turbine.gsc @@ -0,0 +1,51 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_turbine_fx::main(); + maps/mp/_load::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_turbine" ); + maps/mp/mp_turbine_amb::main(); + if ( !level.console ) + { + precachemodel( "collision_clip_32x32x32" ); + spawncollision( "collision_clip_32x32x32", "collider", ( -1400, 550, 360 ), ( 0, 0, 0 ) ); + } + level.remotemotarviewleft = 50; + level.remotemotarviewright = 50; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); + ss.koth_objective_influencer_inner_radius = 2400; +} + +turbine_spin_init() +{ + level endon( "game_ended" ); + turbine1 = getent( "turbine_blades", "targetname" ); + turbine1 thread rotate_blades( 4 ); + turbine2 = getent( "turbine_blades2", "targetname" ); + turbine2 thread rotate_blades( 3 ); + turbine3 = getent( "turbine_blades3", "targetname" ); + turbine3 thread rotate_blades( 6 ); + turbine4 = getent( "turbine_blades4", "targetname" ); + turbine4 thread rotate_blades( 3 ); + turbine6 = getent( "turbine_blades6", "targetname" ); + turbine6 thread rotate_blades( 4 ); +} + +rotate_blades( time ) +{ + self endon( "game_ended" ); + revolutions = 1000; + while ( 1 ) + { + self rotateroll( 360 * revolutions, time * revolutions ); + self waittill( "rotatedone" ); + } +} diff --git a/mp_turbine/maps/mp/mp_turbine_amb.gsc b/mp_turbine/maps/mp/mp_turbine_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_turbine/maps/mp/mp_turbine_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_turbine/maps/mp/mp_turbine_fx.gsc b/mp_turbine/maps/mp/mp_turbine_fx.gsc new file mode 100644 index 0000000..6c4c348 --- /dev/null +++ b/mp_turbine/maps/mp/mp_turbine_fx.gsc @@ -0,0 +1,50 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_turbine_fx::main(); + maps/mp/createart/mp_turbine_art::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_sand_blowing_lg" ] = loadfx( "dirt/fx_sand_blowing_lg" ); + level._effect[ "fx_sand_blowing_md" ] = loadfx( "dirt/fx_sand_blowing_md" ); + level._effect[ "fx_sand_blowing_sm" ] = loadfx( "dirt/fx_sand_blowing_sm" ); + level._effect[ "fx_sand_gust_ground_lg" ] = loadfx( "dirt/fx_sand_gust_ground_lg" ); + level._effect[ "fx_sand_gust_ground_sm" ] = loadfx( "dirt/fx_sand_gust_ground_sm" ); + level._effect[ "fx_sand_gust_ground_md" ] = loadfx( "dirt/fx_sand_gust_ground_md" ); + level._effect[ "fx_sand_gust_door" ] = loadfx( "dirt/fx_sand_gust_door" ); + level._effect[ "fx_sand_blowing_lg_vista" ] = loadfx( "dirt/fx_sand_blowing_lg_vista" ); + level._effect[ "fx_sand_blowing_lg_vista_shrt" ] = loadfx( "dirt/fx_sand_blowing_lg_vista_shrt" ); + level._effect[ "fx_sand_gust_cliff_fall" ] = loadfx( "dirt/fx_sand_gust_cliff_fall" ); + level._effect[ "fx_sand_gust_cliff_fall_md" ] = loadfx( "dirt/fx_sand_gust_cliff_fall_md" ); + level._effect[ "fx_sand_gust_cliff_fall_md_lng" ] = loadfx( "dirt/fx_sand_gust_cliff_fall_md_lng" ); + level._effect[ "fx_sand_gust_cliff_edge_md" ] = loadfx( "dirt/fx_sand_gust_cliff_edge_md" ); + level._effect[ "fx_sand_swirl_lg_pipe" ] = loadfx( "dirt/fx_sand_swirl_lg_pipe" ); + level._effect[ "fx_sand_swirl_sm_pipe" ] = loadfx( "dirt/fx_sand_swirl_sm_pipe" ); + level._effect[ "fx_sand_swirl_debris_pipe" ] = loadfx( "dirt/fx_sand_swirl_debris_pipe" ); + level._effect[ "fx_mp_light_wind_turbine" ] = loadfx( "maps/mp_maps/fx_mp_light_wind_turbine" ); + level._effect[ "fx_light_floodlight_sqr_cool" ] = loadfx( "light/fx_light_floodlight_sqr_cool" ); + level._effect[ "fx_light_flour_glow_cool_dbl_shrt" ] = loadfx( "light/fx_light_flour_glow_cool_dbl_shrt" ); + level._effect[ "fx_mp_sun_flare_turbine_streak" ] = loadfx( "maps/mp_maps/fx_mp_sun_flare_turbine_streak" ); + level._effect[ "fx_mp_sun_flare_turbine" ] = loadfx( "maps/mp_maps/fx_mp_sun_flare_turbine" ); + level._effect[ "fx_lf_mp_turbine_sun1" ] = loadfx( "lens_flares/fx_lf_mp_turbine_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "wires_01" ] = %fxanim_mp_turbine_wires_01_anim; + level.scr_anim[ "fxanim_props" ][ "wires_02" ] = %fxanim_mp_turbine_wires_02_anim; + level.scr_anim[ "fxanim_props" ][ "wires_03" ] = %fxanim_mp_turbine_wires_03_anim; + level.scr_anim[ "fxanim_props" ][ "bridge_cables" ] = %fxanim_mp_turbine_bridge_cables_anim; +} diff --git a/mp_uplink/aitype/enemy_dog_mp.gsc b/mp_uplink/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_uplink/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_uplink/character/character_mp_german_shepherd.gsc b/mp_uplink/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_uplink/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_uplink/maps/mp/createfx/mp_uplink_fx.gsc b/mp_uplink/maps/mp/createfx/mp_uplink_fx.gsc new file mode 100644 index 0000000..b39792a --- /dev/null +++ b/mp_uplink/maps/mp/createfx/mp_uplink_fx.gsc @@ -0,0 +1,4328 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3087,23, 1201,53, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4112,75, -1202,05, 335,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3063,42, -3473,09, 352 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1724,52, -1103,73, 178,979 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3087,23, 1201,53, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4112,75, -1202,05, 335,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3063,42, -3473,09, 352 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1724,52, -1103,73, 178,979 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3235,78, 1891,73, 288,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3524,17, 1282,11, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3187,27, 1200,69, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2469,29, 1260,57, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2818,94, 1134,75, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3583,66, 986,25, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3345,38, 981,247, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3074,21, 932,518, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2783,32, 899,299, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2352,24, 1035,47, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2554,78, 874,469, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2918,6, 1955, 288,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2617,7, 1846,38, 288,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2495,7, 1673,11, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2497,06, 1558,67, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3092,52, 1379,85, 335,125 ); + ent.v[ "angles" ] = ( 296, 270, 90 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3167,84, 1378,01, 334,261 ); + ent.v[ "angles" ] = ( 296, 270, 90 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3239,42, 1381,56, 335,931 ); + ent.v[ "angles" ] = ( 296, 270, 90 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2817,1, 1787,71, 352,125 ); + ent.v[ "angles" ] = ( 270, 356,32, 3,68219 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3377,37, 1666,21, 296,815 ); + ent.v[ "angles" ] = ( 277, 90, -90 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3375,89, 1553,32, 310,961 ); + ent.v[ "angles" ] = ( 277, 90, -90 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3856,19, 948,704, 304,323 ); + ent.v[ "angles" ] = ( 278,062, 352,869, 7,13089 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3888,42, 790,33, 298,946 ); + ent.v[ "angles" ] = ( 279,483, 341,714, 18,5216 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3875,64, 694,651, 296,096 ); + ent.v[ "angles" ] = ( 279,039, 6,61275, -6,06275 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3889,02, 609,307, 297,574 ); + ent.v[ "angles" ] = ( 275,993, 0,156288, 0,157217 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3710,8, 375,639, 290,961 ); + ent.v[ "angles" ] = ( 271, 270,005, 89,9947 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3860,81, 467,664, 295 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3708,93, 162,401, 282,648 ); + ent.v[ "angles" ] = ( 271, 179,989, 179,976 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3679,6, -19,0127, 290,334 ); + ent.v[ "angles" ] = ( 273,6, 56,1405, -56,4022 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3029,78, 685,631, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3069,58, 506,669, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3115,37, 291,434, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2945,86, -26,6236, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3550,88, -259,095, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2943,28, -255,755, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3123,25, -256,32, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3313,52, -241,425, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3136,04, -109,121, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3099,39, 138,382, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3017,19, 186,914, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3098,63, -4,73839, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2612,01, -20,6763, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2758,39, 76,3419, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2753,33, -16,836, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3789,31, -263,511, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3847,64, -446,28, 319,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3852,47, -536,307, 319,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3849,31, -633,662, 319,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3939,55, -626,792, 319,125 ); + ent.v[ "angles" ] = ( 270, 353,157, 59,8427 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4023,38, -801,844, 319,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4014,17, -940,094, 319,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3972,33, -712,302, 319,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4005,35, -1034,7, 319,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3453,43, -327,662, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3373,04, -327,588, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3799,55, -813,546, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3790,38, -982,76, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3718,98, -1358,11, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3719,62, -1267,33, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3719,93, -1176,53, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3719,77, -702,075, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3721,31, -524,952, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3720,06, -433,124, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4014,53, -1126,9, 314,625 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4014,43, -1181,33, 314,625 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4015,93, -1237,73, 314,625 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4011,77, -1280,73, 314,625 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4014,11, -1333,41, 314,625 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4013,85, -1388,29, 314,625 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3911,11, -1573,07, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3555,62, -1591,67, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3737,09, -1613,83, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3707,3, -1855,38, 367,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3706,79, -1986,15, 367,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3708,63, -2067,76, 367,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3682,24, -2179,69, 367,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3635,2, -2319,23, 367,625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3708,5, -1918,45, 367,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3410,64, -1923,07, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3065,06, -1640,67, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2735,89, -2267,72, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3079,12, -2235,35, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2726,96, -1711,74, 457,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3140,36, -1850,68, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3223,68, -2026,12, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3261,83, -1861,82, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2664,01, -2014,14, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3292,53, -2411,98, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3123,35, -2499,15, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3719,45, -613,46, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3720,73, -1088,77, 456,125 ); + ent.v[ "angles" ] = ( 270, 5,71059, 83,2893 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3122,62, -2673,1, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3286,09, -2624,23, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3301,87, -2927,35, 416,687 ); + ent.v[ "angles" ] = ( 283,296, 288,275, 82,0096 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_400" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2843,71, -3257,66, 353 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3168,83, -3357,95, 352,7 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_300" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3539,02, -3387,06, 352 ); + ent.v[ "angles" ] = ( 270, 345,714, 59,2841 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3387,14, -3161,83, 364,238 ); + ent.v[ "angles" ] = ( 276, 310, 71 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3006,54, -2975,48, 371,784 ); + ent.v[ "angles" ] = ( 280,813, 261,713, -98,8559 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2804,61, -2857,58, 373,235 ); + ent.v[ "angles" ] = ( 280,627, 200,394, -38,2626 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2445,5, -2833,93, 351,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2450,68, -2731,92, 351,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2446,17, -2620,92, 351,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2449,01, -2502,86, 351,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2446,2, -2391,78, 351,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2560,28, -2833,6, 353,177 ); + ent.v[ "angles" ] = ( 270, 359,951, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2658, -2838,55, 354,2 ); + ent.v[ "angles" ] = ( 272,234, 204,524, 153,564 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3109,89, -3148,96, 353,792 ); + ent.v[ "angles" ] = ( 271,951, 252,322, 133,786 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2411,7, -2233,17, 391,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2336,62, -2235,99, 391,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2166,1, -77,9054, 199,079 ); + ent.v[ "angles" ] = ( 283, 138, -92 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2260,05, -191,682, 259,305 ); + ent.v[ "angles" ] = ( 276,585, 116,5, -87,5666 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1613,97, -868,628, 87,849 ); + ent.v[ "angles" ] = ( 271, 270,002, 89,9982 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1573,17, -961,668, 89,6629 ); + ent.v[ "angles" ] = ( 274,467, 26,3489, -26,5931 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1572,37, -1065,19, 97,0635 ); + ent.v[ "angles" ] = ( 277,262, 74,0182, -73,8785 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1646,34, -953,694, 93,1614 ); + ent.v[ "angles" ] = ( 277,072, 134,737, -135,113 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1654,62, -786,629, 89,1833 ); + ent.v[ "angles" ] = ( 271, 270,002, 89,9982 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1492,99, -876,047, 89,8954 ); + ent.v[ "angles" ] = ( 291,023, 357,397, 2,78851 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1577,92, -801,562, 88,5811 ); + ent.v[ "angles" ] = ( 272,236, 296,57, 63,4299 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1594,79, -1156,01, 110,308 ); + ent.v[ "angles" ] = ( 279,047, 80,4123, -66,2089 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1669,24, -1111,69, 104,485 ); + ent.v[ "angles" ] = ( 276,686, 124,846, -110,168 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1671,54, -1225,24, 123,552 ); + ent.v[ "angles" ] = ( 281,4, 96,0336, -81,5713 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1887,8, -131,782, 124,961 ); + ent.v[ "angles" ] = ( 274,471, 243,413, 135,516 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1735,74, -501,35, 99,6427 ); + ent.v[ "angles" ] = ( 274,299, 272,897, 106,15 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1713,27, -663,278, 90,5723 ); + ent.v[ "angles" ] = ( 276,082, 189,428, 170,52 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1688,98, -339,767, 115,081 ); + ent.v[ "angles" ] = ( 275, 323,161, 36,8734 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1732,64, -262,963, 123,818 ); + ent.v[ "angles" ] = ( 273,446, 302,674, 26,1758 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1772,54, -187,08, 126,675 ); + ent.v[ "angles" ] = ( 279,815, 301,542, 20,1458 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1768,61, -309,726, 115,019 ); + ent.v[ "angles" ] = ( 279,497, 213,441, 125,974 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1818,88, -234,87, 122,392 ); + ent.v[ "angles" ] = ( 271,433, 58,9327, -78,6734 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2015,95, 2,04534, 135,971 ); + ent.v[ "angles" ] = ( 275,733, 156,224, -175,946 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1893,44, -486,273, 99,9823 ); + ent.v[ "angles" ] = ( 271,766, 147,015, -166,751 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1531,69, -1250,91, 177,847 ); + ent.v[ "angles" ] = ( 324,024, 38,4498, -58,9118 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1560,63, -1388,53, 207,619 ); + ent.v[ "angles" ] = ( 312,557, 5,68326, 43,4902 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2132,23, 658,324, 189,843 ); + ent.v[ "angles" ] = ( 286,425, 278,352, 73,8569 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2121,61, 604,716, 177,43 ); + ent.v[ "angles" ] = ( 280,768, 259,842, 91,8343 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2115,3, 553,615, 167,628 ); + ent.v[ "angles" ] = ( 277,79, 266,523, 85,2121 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2114,16, 523,587, 153,082 ); + ent.v[ "angles" ] = ( 277,79, 266,523, 85,2121 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2107,01, 476,656, 143,141 ); + ent.v[ "angles" ] = ( 279,043, 292,771, 59,2362 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2088,2, 422,676, 132,894 ); + ent.v[ "angles" ] = ( 282,365, 313,242, 39,1052 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2088,69, 374,004, 130,359 ); + ent.v[ "angles" ] = ( 274,338, 97,58, -107,369 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2092,69, 298,894, 126,662 ); + ent.v[ "angles" ] = ( 275,73, 263,353, 77,2518 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2070,19, 212, 128,976 ); + ent.v[ "angles" ] = ( 273,303, 73,1266, -83,4922 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1981,57, 261,369, 111,934 ); + ent.v[ "angles" ] = ( 293,945, 356,158, -8,97631 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2128,6, 785,538, 222,722 ); + ent.v[ "angles" ] = ( 293,894, 247,964, 148,586 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2151,39, 874,1, 271,302 ); + ent.v[ "angles" ] = ( 294,448, 233,341, -168,06 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2132,79, 708,153, 198,57 ); + ent.v[ "angles" ] = ( 279,771, 259,658, 91,9464 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2078,66, 843,37, 240,044 ); + ent.v[ "angles" ] = ( 296,12, 252,133, 99,7416 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2007,14, 841,782, 235,83 ); + ent.v[ "angles" ] = ( 295,764, 329,357, 49,3951 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2011,36, 969,641, 281,783 ); + ent.v[ "angles" ] = ( 302,965, 311,179, 31,7985 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2157,38, 991,644, 306,45 ); + ent.v[ "angles" ] = ( 285,024, 223,462, 118,112 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2201,35, 934,941, 301,709 ); + ent.v[ "angles" ] = ( 287,112, 209,113, -172,022 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2092,12, 1005,95, 296,818 ); + ent.v[ "angles" ] = ( 282,532, 241,259, 110,079 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2002,73, -231,271, 125,873 ); + ent.v[ "angles" ] = ( 275,603, 286,402, 54,6416 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2057,06, -290,869, 113,887 ); + ent.v[ "angles" ] = ( 275,603, 286,404, 55,6402 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1992,59, -369,705, 110,684 ); + ent.v[ "angles" ] = ( 286,817, 299,003, 97,0871 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1937,7, -422,648, 102,641 ); + ent.v[ "angles" ] = ( 284,835, 298,04, 98,014 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2068,15, -395,119, 110,55 ); + ent.v[ "angles" ] = ( 279,235, 151,714, -115,962 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2118,42, -345,922, 117,847 ); + ent.v[ "angles" ] = ( 280,369, 185,592, -148,356 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2018,44, -479,374, 114,535 ); + ent.v[ "angles" ] = ( 280,345, 120,334, -84,7543 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1655,09, -436,894, 106,234 ); + ent.v[ "angles" ] = ( 278,748, 311,623, 124,8 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1809,41, -392,022, 111,942 ); + ent.v[ "angles" ] = ( 282,864, 242,751, -111,826 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1710,15, -1388,27, 172,457 ); + ent.v[ "angles" ] = ( 289,11, 119,335, -99,0903 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1683,8, -1669,83, 221,487 ); + ent.v[ "angles" ] = ( 302,566, 55,4783, -24,1213 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1626,37, -1570,24, 193,731 ); + ent.v[ "angles" ] = ( 301,446, 50,2248, -19,6654 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1852,57, -1683,38, 274,033 ); + ent.v[ "angles" ] = ( 287,995, 130,87, -80,1598 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_200" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2032,19, -1784,49, 335,841 ); + ent.v[ "angles" ] = ( 286,307, 166,537, -78,0757 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2210,71, -1743,75, 392,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2216,58, -1793,65, 391,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2207,87, -1836,18, 392,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2168,25, -1711,42, 384,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2166,38, -1767,27, 384,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2171,22, -1827,9, 384,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2173,55, -1872,45, 384,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2105,82, -1728,07, 365,321 ); + ent.v[ "angles" ] = ( 300, 180, 180 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2112,01, -1899,42, 363,152 ); + ent.v[ "angles" ] = ( 297,358, 199,842, 162,932 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2115,42, -1801,51, 369,679 ); + ent.v[ "angles" ] = ( 299,062, 180,022, -179,326 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2186,3, -1929,14, 372,242 ); + ent.v[ "angles" ] = ( 281,294, 252,423, 112,833 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1760,69, -1566,57, 248,219 ); + ent.v[ "angles" ] = ( 330,763, 40,4594, -18,9409 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1804,06, -1551,37, 234,26 ); + ent.v[ "angles" ] = ( 288,518, 149,089, -116,897 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2235,76, -2212,58, 371,46 ); + ent.v[ "angles" ] = ( 285,102, 167,067, -130,782 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2214,18, -2149,35, 362,599 ); + ent.v[ "angles" ] = ( 287,79, 185,28, 174,928 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2217,25, -2079,91, 364,633 ); + ent.v[ "angles" ] = ( 285,784, 174,869, -175,659 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2209,48, -2031,73, 362,52 ); + ent.v[ "angles" ] = ( 286,738, 199,827, 160,352 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2154,13, -1963,72, 364,575 ); + ent.v[ "angles" ] = ( 285,8, 201,062, 159,166 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3210,67, 795,412, 569,936 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3233,64, 147,105, 562,289 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2288,2, 828,515, 456,209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2241,42, 341,138, 530,181 ); + ent.v[ "angles" ] = ( 14, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2261,71, 550,367, 532,696 ); + ent.v[ "angles" ] = ( 8, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2108,32, -739,403, 468,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2096,29, -1059,55, 470,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2229,16, 101,232, 282,088 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1562,68, -649,563, 165,623 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1491,8, -1340, 242,044 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2507, -2470,8, 601,272 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3330,63, -1625,15, 562,022 ); + ent.v[ "angles" ] = ( 359, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3746,36, 1416,94, 570,771 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3886,46, 482,37, 302,573 ); + ent.v[ "angles" ] = ( 359, 216, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3812,7, -146,868, 403,947 ); + ent.v[ "angles" ] = ( 357, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3453,04, -2618,88, 627,36 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3683,74, -2963,74, 567,143 ); + ent.v[ "angles" ] = ( 0, 182,998, -1 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2550,15, -2995,04, 456,625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3001,02, -2667,14, 619,226 ); + ent.v[ "angles" ] = ( 341, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2841,15, -2021,7, 590,125 ); + ent.v[ "angles" ] = ( 358, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3298,04, 1520,3, 507,686 ); + ent.v[ "angles" ] = ( 356, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2504,68, -216,337, 508,125 ); + ent.v[ "angles" ] = ( 358, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1919,92, -803,211, 265,391 ); + ent.v[ "angles" ] = ( 0,994673, 174, -0,104553 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1899,29, -1356,46, 337,359 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_lightning_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 21039,8, -40047,4, 18228,9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 7001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_lightning_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -13763,7, -58199,1, 16443,7 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 7002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_lightning_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -31130,8, 44879,9, 18839,3 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 307 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 7003; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_lightning_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -58515, 907,609, 42269,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 18 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 7004; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3652,63, -1041,24, 518,392 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5005; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3652,63, -1182,69, 520,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5006; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3652,63, -750,81, 517,562 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5004; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3652,63, -605,924, 517,272 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5003; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2815,15, 584,929, 596,125 ); + ent.v[ "angles" ] = ( 90, 0, -1 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2818,54, 326,218, 596,125 ); + ent.v[ "angles" ] = ( 90, 0, 1 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2823,95, 585,55, 596,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2818,25, 328,157, 596,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3151,31, -771,116, 758,154 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5007; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3152,57, -893,313, 758,434 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5008; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3150,76, -1018,36, 757,994 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5009; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2981,49, -770,546, 720,819 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5010; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2981,55, -899,381, 720,832 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5011; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2986,09, -1019,8, 721,831 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5012; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2800,49, -772,68, 681,024 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5013; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2804,65, -895,649, 681,939 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5014; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2806,05, -1017,29, 682,245 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5015; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2622,56, -775,869, 641,903 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5016; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2625,82, -894,455, 642,62 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5017; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2620,73, -1018,28, 641,502 ); + ent.v[ "angles" ] = ( 283, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5018; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2300,61, -1027,73, 590,125 ); + ent.v[ "angles" ] = ( 270, 21,1127, 158,887 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5019; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2298,93, -1182,6, 590,125 ); + ent.v[ "angles" ] = ( 270, 21,1127, 158,887 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5020; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2201, -458,865, 518,277 ); + ent.v[ "angles" ] = ( 334, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5021; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2200,15, -761,454, 516,57 ); + ent.v[ "angles" ] = ( 334, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5022; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2198,94, -894,747, 514,15 ); + ent.v[ "angles" ] = ( 334, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5023; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2198,53, -1030,06, 513,336 ); + ent.v[ "angles" ] = ( 334, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5024; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2200,73, -1184,52, 517,736 ); + ent.v[ "angles" ] = ( 334, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5025; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2199,64, -1326,53, 515,56 ); + ent.v[ "angles" ] = ( 334, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5026; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2170, -475,943, 380,123 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5027; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2042,04, -854,669, 380,014 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5028; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2042,04, -935,608, 380,211 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5028; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_window_rain1_splash" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2170, -1309,49, 380,031 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5029; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_gust" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3727,25, -1167,66, 545,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6006; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_gust" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3726,61, -1036,29, 544,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6005; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_gust" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3722,78, -760,999, 544,088 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6004; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_gust" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3723,43, -601,983, 544,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6003; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3155,96, -1018,32, 759,096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6009; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3167,06, -894,453, 761,624 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6008; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3169,1, -772,392, 762,131 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6007; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2977,96, -772,326, 720,036 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6010; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2978,77, -897,002, 720,221 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6011; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2979,64, -1014,98, 720,386 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6012; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2808,89, -1015,73, 682,833 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6015; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2808,67, -892,727, 682,838 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6014; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2811,45, -774,519, 683,433 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6013; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2631,9, -777,514, 643,957 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6016; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2631,86, -899,159, 643,948 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6017; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2628,45, -1021,75, 643,198 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6018; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2305,53, -1027,74, 588,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6019; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_window_roof_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2304,22, -1175,28, 588,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6020; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2827,57, 323,755, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2792,78, 302,703, 320 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2807,34, 607,117, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2772,56, 586,064, 320 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3125,05, -772,312, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6007; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3129,18, -904,968, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6008; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3118,34, -1041,52, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6009; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2952,53, -758,719, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6010; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2950,78, -899,116, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6011; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2945,69, -1056,01, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6012; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2807,33, -753,84, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6013; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2847,38, -880,752, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6014; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2803,71, -1050,76, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6015; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2611,65, -784,761, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6016; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2578,19, -915,489, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6017; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2600,02, -1047,13, 320,125 ); + ent.v[ "angles" ] = ( 270, 1,4321, 132,568 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6018; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2288,24, -1178,19, 320,125 ); + ent.v[ "angles" ] = ( 270, 7,12502, 113,875 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6020; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2294,41, -1042,77, 320,125 ); + ent.v[ "angles" ] = ( 270, 7,12502, 113,875 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6019; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3588,44, -1184,34, 457,125 ); + ent.v[ "angles" ] = ( 270, 359,851, 179,149 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6006; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3598,33, -1043,36, 456,125 ); + ent.v[ "angles" ] = ( 270, 359,851, 179,149 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6005; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3603,47, -765,402, 456,125 ); + ent.v[ "angles" ] = ( 270, 359,851, 179,149 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6004; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3595,91, -607,819, 456,125 ); + ent.v[ "angles" ] = ( 270, 359,851, 179,149 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 6003; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3446,51, 1265,7, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3288,33, 1013,08, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2553,1, 1210,46, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2293,53, 1010,91, 319,806 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2732,3, 1867,09, 288,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3181,28, 1898,16, 288,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3372,71, -245,821, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 167 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3078,48, 62,8625, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 186 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4046,05, -899,27, 319 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3953,91, -1635,27, 319 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3746,81, -1588,63, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3446,92, -1904,83, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3160,87, -1653,54, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3173,61, -2256,4, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2999,53, -2532,03, 620,261 ); + ent.v[ "angles" ] = ( 338, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2786,09, -2647,43, 633,113 ); + ent.v[ "angles" ] = ( 3, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2784,32, -2512,32, 633,513 ); + ent.v[ "angles" ] = ( 360, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2641,83, 1504,47, 563,642 ); + ent.v[ "angles" ] = ( 356, 180, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2440,64, 1227,82, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 349 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2870,7, 681,959, 623,992 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2874,59, 225,487, 623,995 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2741,77, -241,466, 508,001 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3498,66, -309,091, 460,219 ); + ent.v[ "angles" ] = ( 357, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3677,5, -493,221, 685,248 ); + ent.v[ "angles" ] = ( 356,002, 357,995, 0,139827 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3656,42, -736,87, 688,767 ); + ent.v[ "angles" ] = ( 356,002, 357,995, 0,139827 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3663,41, -1323,71, 686,084 ); + ent.v[ "angles" ] = ( 356,002, 357,995, 0,139827 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3667,51, -1040,32, 682,723 ); + ent.v[ "angles" ] = ( 356,002, 357,995, 0,139827 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3868,62, -801,021, 457,125 ); + ent.v[ "angles" ] = ( 357, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3868,49, -988,623, 460,125 ); + ent.v[ "angles" ] = ( 354, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3625,4, -1628,77, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3872,03, -1524,73, 320 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3678,5, -287,467, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3482,64, -1867,04, 456,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3352,4, -2356,24, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3003,48, -2299,03, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2590,87, -2269,11, 457,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2655,66, -1649,01, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2901,48, -1681,08, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3102,71, -1915,32, 456 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3456,13, -2170,92, 598,262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3010,28, -1960,8, 591,954 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2925,41, -2483,73, 641,835 ); + ent.v[ "angles" ] = ( 351, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2879,08, -2727,84, 633,593 ); + ent.v[ "angles" ] = ( 350,006, 0, -0,352578 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2862,04, -3293,85, 353 ); + ent.v[ "angles" ] = ( 0, 359,97, -0,347226 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2763,53, -2895,95, 361,441 ); + ent.v[ "angles" ] = ( 347,006, 0, -0,356352 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3180,76, -2887,53, 438,385 ); + ent.v[ "angles" ] = ( 355,968, 192,344, -9,44461 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3249,73, -3057,78, 391,704 ); + ent.v[ "angles" ] = ( 354,707, 202,739, -10,0294 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2491,13, -2050,51, 710,203 ); + ent.v[ "angles" ] = ( 357,006, 359,988, -0,347701 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2487,9, -1804,57, 706,202 ); + ent.v[ "angles" ] = ( 354,006, 0, -0,349134 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2260,4, -201,449, 262,592 ); + ent.v[ "angles" ] = ( 359,989, 171,004, -0,208784 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2160,55, -82,9182, 197,975 ); + ent.v[ "angles" ] = ( 356,993, 171,003, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3866,21, 1353,18, 563,345 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1886,41, -1720,6, 291,672 ); + ent.v[ "angles" ] = ( 345,215, 330,096, 0,110719 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1996,19, -1901,78, 323,575 ); + ent.v[ "angles" ] = ( 344,09, 351,76, 1,71682 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1466,62, -1386,24, 262,573 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1559,7, -672,363, 158,596 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2105,41, 560,552, 162,845 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2091,28, 350,864, 129,82 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2106,43, 602,916, 175,598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2091,49, 354,395, 129,804 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2897,99, 1401,18, 576,357 ); + ent.v[ "angles" ] = ( 356, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3307, 1464,03, 514,125 ); + ent.v[ "angles" ] = ( 359, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -226800, -189884, 52587,9 ); + ent.v[ "angles" ] = ( 270, 357,138, 86,8624 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2965,98, 173,107, 323,125 ); + ent.v[ "angles" ] = ( 273,143, 342,78, -75,8207 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3082,87, 1761,98, 289,243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3512,1, -347,475, 322,029 ); + ent.v[ "angles" ] = ( 271,414, 134,994, -135,002 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3111,31, 802,297, 321,125 ); + ent.v[ "angles" ] = ( 270, 0,190965, -0,190966 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2672,68, 801,287, 321,737 ); + ent.v[ "angles" ] = ( 273,013, 3,31781, -8,31019 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2579,83, -2178,28, 457,473 ); + ent.v[ "angles" ] = ( 271,035, 179,961, 90,0203 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3289,36, -5042,63, 1165,68 ); + ent.v[ "angles" ] = ( 360, 5, -2 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2610,55, 75,2607, 430,081 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2714,17, 815,818, 435,938 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2544,72, 1336,9, 500,634 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3314,69, 865,11, 518,104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3511,42, 953,866, 520,042 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3780,82, 853,044, 539,584 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3694,58, 846,783, 629,209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2833,24, 806,486, 517 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2523,96, 813,021, 587,368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2201,89, 573,124, 511,436 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy_lng" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2200,94, 345,845, 509,457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2456,86, -2517,19, 571,507 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3029,04, -2697,65, 580,23 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2596,93, -2120,95, 628,675 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2602,11, -1894,12, 627,461 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2833,59, 104,144, 516,747 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2487,06, 96,0294, 587,434 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3708,88, 503,941, 536,4 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2539,21, 1526,71, 324,371 ); + ent.v[ "angles" ] = ( 274,01, 174,034, -86,01 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2974,1, 659,42, 515,983 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2974,97, 208,728, 517,813 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3741,04, -1165,87, 664,186 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3738,96, -784,9, 661,706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3738,97, -479,192, 665,19 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3648,14, 1539,94, 318 ); + ent.v[ "angles" ] = ( 270, 356,479, -50,4785 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3779,86, 1606,83, 318 ); + ent.v[ "angles" ] = ( 270, 357,274, -84,2737 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3895,99, 1589,47, 318 ); + ent.v[ "angles" ] = ( 270, 355,236, -111,236 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3988,26, 1515,23, 318 ); + ent.v[ "angles" ] = ( 270, 2,38594, -149,386 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4023,11, 1373,69, 318 ); + ent.v[ "angles" ] = ( 270, 0, 165 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3968,89, 1249,47, 318 ); + ent.v[ "angles" ] = ( 270, 0, 131 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3845,36, 1178,36, 318 ); + ent.v[ "angles" ] = ( 270, 358,091, 107,909 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3180,26, 1412,88, 490,111 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3208,49, 1742,55, 486,425 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3028,84, -2481,21, 579,955 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2599,58, -1726,28, 627,684 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_md_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3511,31, -318,887, 450,941 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3738,85, -1335,56, 662,027 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_lg_hvy" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2172,25, -2081,71, 681,754 ); + ent.v[ "angles" ] = ( 357, 179, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1838,81, 471,932, -170,716 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2782,82, 450,194, 281,481 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,61, -433,509, 561,724 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2781,73, -223,881, 439,554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3017,24, -1394,9, 563,634 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3632,96, -893,265, 575,628 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3520,39, -1374,8, 441,174 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3888,8, -896,447, 440,999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2624,4, 150,528, 437,838 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2751,65, 762,975, 438,071 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2987,72, -2551,74, 564,396 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2656,23, -2458,26, 564,505 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3416,4, -536,09, 580,947 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,99, -584,489, 580,943 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3416,63, -632,75, 580,941 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,71, -680,362, 580,943 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,59, -728,113, 580,953 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,99, -776,38, 580,955 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,23, -824,431, 580,955 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,56, -968,144, 580,943 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,96, -1015,96, 580,952 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,84, -1063,94, 580,952 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,67, -1112,11, 580,944 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3416,31, -1160,46, 580,953 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,21, -1208, 580,942 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3415,29, -1256,1, 580,941 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3560,36, -536,039, 580,956 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3559,88, -583,886, 580,956 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3559,6, -632,116, 580,952 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3559,13, -680,421, 580,95 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3560, -728,238, 580,949 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3559,53, -776,009, 580,945 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3560,38, -823,971, 580,944 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3488,03, -463,266, 580,954 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3487,84, -1327,34, 580,951 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3344,3, -1327,99, 580,957 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3295,31, -1328,12, 580,955 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3247,91, -1328, 580,941 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3199,75, -1328,33, 580,943 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3152,13, -1327,91, 580,945 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2864,04, -1328,12, 580,946 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2912,21, -1327,8, 580,958 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2960,02, -1328,16, 580,94 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3008,39, -1327,95, 580,949 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3055,99, -1328,06, 580,952 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3103,77, -1328,04, 580,941 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3618,15, -966,04, 445,95 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3617,09, -1109,75, 445,96 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3617,81, -1158,28, 445,949 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3617,51, -1205,93, 445,94 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3616,61, -1254,04, 445,95 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3737,07, -893,996, 445,947 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3689,14, -894,096, 445,955 ); + ent.v[ "angles" ] = ( 89, 269,001, -1,99844 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_water_pipe_gutter_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3440,57, -1437,51, 320,125 ); + ent.v[ "angles" ] = ( 270, 0, -179 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2057,54, 890,7, 952,498 ); + ent.v[ "angles" ] = ( 270, 0, 1 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1907,61, -311,076, 1493,03 ); + ent.v[ "angles" ] = ( 270, 0, 1 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2361,04, 312,741, 500,362 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3193,93, 394,877, 454,961 ); + ent.v[ "angles" ] = ( 41, 180, -180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2590,07, 1374,54, 463,373 ); + ent.v[ "angles" ] = ( 48, 225, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2644,48, 1318,85, 464,697 ); + ent.v[ "angles" ] = ( 52, 225, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3326,65, 845,763, 446,961 ); + ent.v[ "angles" ] = ( 42,9959, 90,2672, 0,489776 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3660,94, -458,65, 568,145 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3661,15, -1341,74, 567,816 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3520,72, -1424,37, 432,098 ); + ent.v[ "angles" ] = ( 41, 271, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3461,96, -1094,02, 416,264 ); + ent.v[ "angles" ] = ( 43, 271, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3151,95, 1468,03, 484,625 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3152,25, 1584,34, 484,625 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3153,03, 1683,81, 484,625 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3329,69, 1676,98, 484,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3328,03, 1565,2, 483,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3329,39, 1479,34, 483,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2960,56, 1683,07, 483,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2959,44, 1467,28, 483,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2960,23, 1568,43, 483,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2823,39, -225,612, 432,118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2949,01, 1533,92, 461,267 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2351,88, 608,315, 273,373 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2351,88, 455,895, 273,806 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2351,88, 303,208, 274,522 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2354,88, 600,976, 499,639 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2354,88, 505,95, 501,692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2354,88, 404,029, 501,749 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2354,88, 310,087, 501,633 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2357,13, 309,969, 499,584 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2357,13, 405,538, 501,118 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2357,13, 508,354, 501,64 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2357,13, 600,27, 500,057 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2784,96, 1740,32, 471,764 ); + ent.v[ "angles" ] = ( 43, 90, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3919,8, -894,684, 432,555 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3794,66, -1218,66, 431,818 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2302,97, -371,047, 429,001 ); + ent.v[ "angles" ] = ( 42,6, 90, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2753,74, 795,268, 441,295 ); + ent.v[ "angles" ] = ( 16, 90, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3326,49, 855,314, 454,848 ); + ent.v[ "angles" ] = ( 16, 90, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2562,42, 1327,05, 435,508 ); + ent.v[ "angles" ] = ( 30, 226, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2607,56, 1273,2, 420,677 ); + ent.v[ "angles" ] = ( 30, 226, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2782,23, 1751,44, 482,413 ); + ent.v[ "angles" ] = ( 19, 90, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2309,29, -358,84, 433,584 ); + ent.v[ "angles" ] = ( 16, 90, 1 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3790,87, -535,481, 436,573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3582,67, -2141,47, 476,36 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3711,34, 514,207, 447,481 ); + ent.v[ "angles" ] = ( 43, 270, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2519,26, -2406,24, 597,177 ); + ent.v[ "angles" ] = ( 11,9976, 89,9281, 0 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3544,36, -3507,43, 449,929 ); + ent.v[ "angles" ] = ( 3,01821, 59,571, -1,81287 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3553,52, -3500,25, 476,533 ); + ent.v[ "angles" ] = ( 354,023, 59,8561, -1,82026 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3511,38, -1436,38, 440,787 ); + ent.v[ "angles" ] = ( 9, 270, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3800,4, -1216,48, 438,561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3931,09, -888,366, 439,714 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3805,88, -533,379, 446,894 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3704,72, 493,377, 448,333 ); + ent.v[ "angles" ] = ( 21, 270, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3177,56, 392,591, 465,691 ); + ent.v[ "angles" ] = ( 20,9699, 182,213, 1,15094 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2835,92, -224,335, 439,901 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 21 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3407,11, -368,089, 568,58 ); + ent.v[ "angles" ] = ( 43,9, 90,1386, 0,120855 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2990,87, -3629,94, 552,665 ); + ent.v[ "angles" ] = ( 23,9966, 91,0931, 0,392252 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3593,98, -2141,16, 482,712 ); + ent.v[ "angles" ] = ( 18,973, 3,17252, 1,0324 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2824,75, 772,625, 503,709 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2549,72, 772,518, 502,413 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2940,63, 645,311, 503,195 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2940,99, 241,255, 501,32 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2820,88, 138,39, 503,01 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2544,78, 138,375, 503,609 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_window_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2940,34, 364,312, 500,931 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2948,04, -1440,63, 572,801 ); + ent.v[ "angles" ] = ( 18,997, 271,058, 0,344309 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2941,81, -1423,3, 567,642 ); + ent.v[ "angles" ] = ( 42, 270, -1 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2405,75, 573,203, 71,1382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 222 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3661,97, -894,547, 564,731 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 39,9 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_window_ray_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2826,26, 772,625, 505,195 ); + ent.v[ "angles" ] = ( 26,9647, 87,6397, -1,42039 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_window_ray_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2551,86, 772,625, 505,559 ); + ent.v[ "angles" ] = ( 27,9847, 88,7434, -0,937363 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_window_ray_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2940,63, 647,096, 506,251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 24 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_window_ray_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2940,63, 297,078, 500,199 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 24 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_window_ray_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2824,44, 138,375, 503,259 ); + ent.v[ "angles" ] = ( 25, 268, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_window_ray_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2545,44, 137,779, 500,514 ); + ent.v[ "angles" ] = ( 26, 268, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2391,66, 611,776, 103,031 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 218 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2396,57, 253,641, 76,3186 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_bttm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2235,5, 374,268, -110,141 ); + ent.v[ "angles" ] = ( 357, 168, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1306,79, 568,701, -676,571 ); + ent.v[ "angles" ] = ( 344,867, 134,648, 9,63852 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_fst" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1301,05, 579,184, -666,672 ); + ent.v[ "angles" ] = ( 344,835, 214,428, -0,969892 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2902,42, 264,533, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2902,38, 360,376, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2902,38, 456,675, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2902,21, 648,517, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2880,29, 734,71, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2879,96, 174,158, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2783,01, 733,56, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2688,09, 733,84, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2591,59, 733,826, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2495,45, 733,606, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2495,34, 173,999, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2590,97, 173,697, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2784,74, 174,146, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3537,28, -3526,41, 442,718 ); + ent.v[ "angles" ] = ( 38,3295, 47,781, 7,65557 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3523,3, -3514,35, 442,871 ); + ent.v[ "angles" ] = ( 39,0145, 57,0682, 13,484 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3543,61, -3519,54, 465,513 ); + ent.v[ "angles" ] = ( 18,4776, 52,0136, 11,0123 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2517,22, -2421,74, 586,074 ); + ent.v[ "angles" ] = ( 10, 95, 0 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2701,04, -2778,22, 584,774 ); + ent.v[ "angles" ] = ( 13,9913, 269,061, 0,498551 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2516,71, -2778,17, 585,529 ); + ent.v[ "angles" ] = ( 13,9913, 269,061, 0,498551 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2984,72, -3641,05, 550,556 ); + ent.v[ "angles" ] = ( 42,87, 89,5384, -3,7218 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1872,9, -228,446, 314,628 ); + ent.v[ "angles" ] = ( 14,9977, 114,965, -0,267934 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1738,99, -303,484, 315,212 ); + ent.v[ "angles" ] = ( 15,9976, 114,96, -0,26924 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1793,12, -417,802, 315,731 ); + ent.v[ "angles" ] = ( 14,9977, 296,035, 0,267942 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1929,44, -339,026, 315,253 ); + ent.v[ "angles" ] = ( 14,9977, 296,035, 0,267942 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2943,06, -1812,14, 898,594 ); + ent.v[ "angles" ] = ( 82, 269, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2944,74, -1682,84, 898,483 ); + ent.v[ "angles" ] = ( 84, 89, 180 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3007,78, -1748,38, 898,422 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_wrm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2880,25, -1745,33, 898,433 ); + ent.v[ "angles" ] = ( 85, 180, -180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1874,11, -215,119, 323,655 ); + ent.v[ "angles" ] = ( 15, 116, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1746,59, -291,645, 328,851 ); + ent.v[ "angles" ] = ( 15, 116, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1798,97, -429,447, 325,798 ); + ent.v[ "angles" ] = ( 15, 279, 0 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1934,31, -354,322, 328,017 ); + ent.v[ "angles" ] = ( 11,4846, 294,293, 3,91956 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2750,86, 784,498, 432,981 ); + ent.v[ "angles" ] = ( 40,5918, 91,3119, 0,940854 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2878,58, -1743,57, 901,234 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2944,42, -1811,47, 898,517 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3009,25, -1747,08, 898,626 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2946,59, -1680,37, 898,393 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2488,4, -2474,09, 570,393 ); + ent.v[ "angles" ] = ( 31,951, 178,536, -1,12694 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2487,37, -2728,05, 571,976 ); + ent.v[ "angles" ] = ( 40,7852, 180,079, 0,196099 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3140,54, -1068,69, 778,076 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2960,64, -1073,55, 750,639 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2787,47, -1082,96, 718,765 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2572,65, -1044,42, 664,627 ); + ent.v[ "angles" ] = ( 33,1569, 63,0048, 2,99854 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3149,58, -911,372, 773,073 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2969,56, -938,68, 754,46 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2786,79, -931,982, 709,494 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2800,86, -809,553, 710,896 ); + ent.v[ "angles" ] = ( 32,949, 66,5757, -41,0534 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2599,22, -954,256, 686,9 ); + ent.v[ "angles" ] = ( 33,1479, 56,4605, 19,7349 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2010,45, -910,178, 394,208 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, -173,608 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2168,04, -942,698, 504,532 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, -163,608 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2173,29, -795,487, 520,607 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, -160,608 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_lg_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2168,17, -1077,79, 543,967 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, -160,608 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_lg_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2194,26, -1210,9, 556,544 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, 169,392 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_lg_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2200,12, -1334,96, 523,961 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, -160,608 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2189,32, -891,1, 492,362 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, 8,39143 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2193,02, -762,365, 499,763 ); + ent.v[ "angles" ] = ( 20,0221, 38,5956, 8,39143 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_lg_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2177,44, -1021,97, 523,211 ); + ent.v[ "angles" ] = ( 20,022, 38,5956, -1,60847 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_lg_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2164,83, -1185,87, 521,831 ); + ent.v[ "angles" ] = ( 20,022, 38,5956, -1,60847 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_lg_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2184,51, -1323,61, 518,717 ); + ent.v[ "angles" ] = ( 20,022, 38,5956, -1,60847 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3477,63, 744,377, 511,35 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3661,63, 744,133, 511,323 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3672,01, 571,437, 511,303 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3316,68, 743,289, 511,398 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3327,38, 565,932, 516,325 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3477,01, 571,949, 511,312 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2612,1, -1061,28, 655,885 ); + ent.v[ "angles" ] = ( 31,0783, 65,7405, -162,496 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2619,65, -910,818, 655,989 ); + ent.v[ "angles" ] = ( 31,0784, 65,7407, -159,496 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2786,84, -1077,98, 708,262 ); + ent.v[ "angles" ] = ( 31,0784, 65,7407, -159,496 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2823,01, -955,32, 700,916 ); + ent.v[ "angles" ] = ( 31,0784, 65,7407, -159,496 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2979,26, -1046,74, 723,032 ); + ent.v[ "angles" ] = ( 31,0783, 65,7406, -155,496 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3004,75, -943,689, 753,719 ); + ent.v[ "angles" ] = ( 31,0783, 65,7406, -155,496 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_upl_light_ray_sun_window_1s" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3134,99, -1055,34, 762,436 ); + ent.v[ "angles" ] = ( 31,0783, 65,7405, -144,496 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2801,38, 1489,6, 523,002 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2800,69, 1520,69, 522,973 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2717,94, 1506,33, 486,462 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3358,52, -969,8, 569,052 ); + ent.v[ "angles" ] = ( 11,099, 1,01578, 0,115354 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3229,48, 1066,06, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3263,01, -234,375, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3457,47, -3326,07, 358,594 ); + ent.v[ "angles" ] = ( 359, 165, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2946,91, -3904,54, 722,786 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3558,05, -3930,7, 1058,46 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3612,05, -2744, 651,99 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2067,08, -1478,53, 441,206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1903,98, -430,666, 104,366 ); + ent.v[ "angles" ] = ( 356, 170, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2165,39, 1104,85, 329,093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_distant_cloud_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3544,4, -4948,18, 1251,61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 6 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_generator_grays" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2688,72, 455,641, 442,073 ); + ent.v[ "angles" ] = ( 90, 54,5764, -65,4236 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_generator_grays" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2688,43, 455,536, 441,807 ); + ent.v[ "angles" ] = ( 90, 0, -67 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1895,9, 565,687, -167,766 ); + ent.v[ "angles" ] = ( 353, 174, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1244,07, 576,876, -693,697 ); + ent.v[ "angles" ] = ( 352,001, 156,99, 0,140534 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2035,49, 402,351, -157,643 ); + ent.v[ "angles" ] = ( 353, 174, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1698,96, 605,132, -332,233 ); + ent.v[ "angles" ] = ( 353,608, 198,16, -4,85904 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_splash_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1854,55, 364,939, -163,948 ); + ent.v[ "angles" ] = ( 12,2948, 156,405, -3,17996 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3146,53, -1254,28, 754,635 ); + ent.v[ "angles" ] = ( 356,034, 180,014, -0,259465 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3335,71, -1736,28, 491,454 ); + ent.v[ "angles" ] = ( 359,034, 180, -0,258879 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2282,31, 19,375, 371,727 ); + ent.v[ "angles" ] = ( 359, 165, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4092,12, 25,6861, 227,641 ); + ent.v[ "angles" ] = ( 299,012, 166,991, -1,483 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4014,55, 1070,04, 147,36 ); + ent.v[ "angles" ] = ( 293,795, 181,757, 2,51828 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4034,02, -1979,78, 161,189 ); + ent.v[ "angles" ] = ( 320,41, 195,549, 1,61723 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3930,39, -1243,23, 38,6635 ); + ent.v[ "angles" ] = ( 283, 177, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3066,92, 1500,46, 562,823 ); + ent.v[ "angles" ] = ( 340,888, 181,296, -5,4186 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3800,89, 1023,33, 307,845 ); + ent.v[ "angles" ] = ( 356,292, 165,145, -2,06136 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3327,88, -2180,56, 659,855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2730,34, 1019,05, 320,125 ); + ent.v[ "angles" ] = ( 358,024, 7,0048, -0,313043 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2666,99, 13,2197, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3840,36, -886,492, 469,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3652,03, -1884,81, 367 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3584,13, -2329,73, 367,602 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2729,35, -2605,48, 674,223 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2939,2, -1258,96, 713,811 ); + ent.v[ "angles" ] = ( 340, 358, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1844,41, -2066,98, 130,677 ); + ent.v[ "angles" ] = ( 305,479, 33,6167, -5,24349 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1488,43, -85,7405, -94,2962 ); + ent.v[ "angles" ] = ( 305,096, 324,366, 24,4648 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2148,81, 1365,86, 174 ); + ent.v[ "angles" ] = ( 311,723, 301,631, 4,35761 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3479,9, 69,7155, 577,992 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3393,92, -2166,14, 640,596 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2898,54, -3727,83, 653,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2599,13, -3497,7, 438,397 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3273,14, -3189,64, 371,75 ); + ent.v[ "angles" ] = ( 0, 359,97, -0,347226 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3250,31, -3669,57, 421 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 6 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_lg_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1200,31, -797,216, -118,451 ); + ent.v[ "angles" ] = ( 303,009, 1,71394, -1,07919 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2687,87, 174,395, 543,875 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,634, 961,201, 168,752 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 5679,35, 993,631, 155,872 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 735,897, -3419,67, 220,894 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -26,8205, -1383,48, 242,054 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2891,21, 3493,35, 248 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 5009,29, -3159,64, 321,414 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_neg_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 6261,82, -1324,44, 236,601 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 638,634, 961,201, 168,752 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 5679,35, 993,631, 155,872 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 735,897, -3419,67, 220,894 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -26,8205, -1383,48, 242,054 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2891,21, 3493,35, 248 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 5009,29, -3159,64, 321,414 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_uplink_rain_med_fast_os_vista" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 6261,82, -1324,44, 236,601 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3233,67, 1272,61, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 4 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md_neg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3628,61, 1076,71, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 358 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_upl_rain_gust_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2860,24, 1062,4, 320,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3017,58, -2551,49, 567,224 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3028,01, -2556,53, 580,353 ); + ent.v[ "angles" ] = ( 18,973, 3,17252, 1,0324 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1747,69, -371,353, 315,133 ); + ent.v[ "angles" ] = ( 15, 215, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2567,28, -2114,59, 576,162 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2740,27, -1165,56, 562,277 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2612,3, -1166,33, 562,446 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2483,58, -1168,2, 562,438 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2867,96, -1167,72, 562,468 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2994,64, -1166,52, 562,419 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3124,06, -1164,4, 562,41 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2450,1, -963,719, 561,481 ); + ent.v[ "angles" ] = ( 90, 180, 178 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2449,89, -835,767, 561,508 ); + ent.v[ "angles" ] = ( 90, 0, -1 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2739,31, -628,267, 561,481 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2611,53, -626,74, 561,429 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2482,33, -625,875, 561,467 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3292,49, -1327,71, 448,875 ); + ent.v[ "angles" ] = ( 90, 180, -179 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3774,4, -372,242, 433,634 ); + ent.v[ "angles" ] = ( 16, 95, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3775,66, -355,62, 448,144 ); + ent.v[ "angles" ] = ( 11,9976, 89,9281, -1 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3414,04, -355,076, 577,001 ); + ent.v[ "angles" ] = ( 11,9976, 89,9281, -1 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3330,07, 847,411, 448,407 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2750,21, 784,602, 432,931 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3193,35, 394,038, 455,554 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2701,39, -2421,88, 585,312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2518,01, -2421,92, 585,018 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2699,54, -2778,23, 586,122 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2943,67, -1433,41, 566,958 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1793,24, -417,901, 316,191 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1876,85, -226,804, 315,052 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2647,23, 1318,38, 463,205 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3714,34, 513,339, 448,347 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2823,92, -225,783, 431,642 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3408,79, -362,614, 567,01 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3588,14, -2144,4, 474,095 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2784,65, 1751,88, 469,64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2588,01, 1376,51, 463,901 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3470,19, -126,583, 433,483 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3920,17, -896,397, 431,918 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3520,14, -1425,21, 433,069 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3017,15, -2552,36, 566,764 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1926,76, -339,881, 313,908 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1740,11, -302,663, 316,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2566,61, -1984,25, 576,152 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2565,88, -1882,2, 576,158 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2567,25, -1779,98, 576,159 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3673,68, -1342,69, 567,442 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3661,37, -455,664, 567,63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3661,91, -894,117, 564,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2326, -2170,21, 536,667 ); + ent.v[ "angles" ] = ( 0, 90, 90 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3773,65, -370,826, 434,251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3738,4, 1461,08, 515,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3738,59, 1320,72, 516,327 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3878,09, 1320,41, 516,584 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_red_blink_fst_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3879,14, 1460,53, 516,166 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2497,65, -1565,42, 555,583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2835,73, 785,691, 596,712 ); + ent.v[ "angles" ] = ( 89, 269,001, -179,999 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3365,49, 1465,38, 485,456 ); + ent.v[ "angles" ] = ( 82,0703, 1,06083, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3364,25, 1576,03, 485,581 ); + ent.v[ "angles" ] = ( 82,0703, 1,06083, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3365,54, 1687,88, 485,464 ); + ent.v[ "angles" ] = ( 80,0701, 1,06083, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2947,53, 1323,95, 465,596 ); + ent.v[ "angles" ] = ( 86,0703, 1,06093, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3216,15, -624,56, 562,515 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3087,43, -627,051, 562,442 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2959,56, -628,339, 562,419 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_water_roof_spill_splash_xshrt" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3769,85, 859,714, 312,33 ); + ent.v[ "angles" ] = ( 0, 94, 3 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3326,86, 413,644, 514,384 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_blue" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3327,34, 221,83, 514,415 ); + ent.v[ "angles" ] = ( 90, 182,261, 172,261 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3802,06, -1217,94, 431,603 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3799,41, -535,69, 435,268 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3535,59, -3515,08, 440,302 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3549,54, -3522,36, 465,993 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2984,68, -3638,38, 550,642 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2979,9, 489,025, 584,433 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3192,67, -0,733948, 495,467 ); + ent.v[ "angles" ] = ( 87, 359, 180 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3314,4, -123,48, 486,63 ); + ent.v[ "angles" ] = ( 88, 271, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2508,79, -1403,91, 559,435 ); + ent.v[ "angles" ] = ( 86,9221, 285,568, -166,707 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2459,33, -388,164, 434,112 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2463,35, -388,286, 564,318 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2657,51, -387,155, 564,093 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2795,29, -580,639, 564,116 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2274,68, -388,055, 564,066 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3324,31, -1073,95, 545,179 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3326,28, -879,715, 546,352 ); + ent.v[ "angles" ] = ( 89, 180, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2731,64, -470,318, 421,55 ); + ent.v[ "angles" ] = ( 89, 89,0067, -90,9904 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2689,24, 813,23, 584,131 ); + ent.v[ "angles" ] = ( 89, 269,001, -179,999 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2540,74, 786,614, 597,017 ); + ent.v[ "angles" ] = ( 89, 269, -180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2557,83, 1649,72, 464,661 ); + ent.v[ "angles" ] = ( 90, 0, 180 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3042,32, -1328,95, 448,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2848,63, -1329,33, 448,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2690,67, 99,9502, 583,895 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2835,79, 126,446, 597,654 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2539,37, 126,216, 596,738 ); + ent.v[ "angles" ] = ( 90, 303,785, 33,7846 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3009,78, 2657,43, 236,582 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -1; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3296,22, 2813,38, 236,641 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -3; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3464,34, 3198,94, 236,907 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -1; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3296,97, 3583,83, 235,657 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -3; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2812,71, 2657,35, 236,368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -1; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2527,11, 2813,08, 237,006 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -3; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2359,99, 3198,51, 235,603 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -1; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2525,95, 3583,82, 235,208 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -2; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3843,6, 712,485, 431,667 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1780,67, -1500,64, 215,981 ); + ent.v[ "angles" ] = ( 287,701, 143,213, -111,277 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_splash_50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2184,77, -2010,49, 368,128 ); + ent.v[ "angles" ] = ( 286,738, 199,827, 160,352 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2415,14, -2032,5, 586,446 ); + ent.v[ "angles" ] = ( 90, 180, -90 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2320,32, -2030,8, 586,517 ); + ent.v[ "angles" ] = ( 90, 180, -90 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2319,48, -1839,7, 586,533 ); + ent.v[ "angles" ] = ( 90, 180, -90 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2415,42, -1840,7, 586,568 ); + ent.v[ "angles" ] = ( 90, 180, -90 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_beacon_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2911,94, 3750,4, 235,324 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -3; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2766,4, -1522,78, 555,981 ); + ent.v[ "angles" ] = ( 89, 0, 90 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2900,13, -710,16, 583,42 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2263,95, -1405,44, 562,252 ); + ent.v[ "angles" ] = ( 88,7786, 307,686, -142,601 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2860,67, 1419,32, 505,692 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2717,54, 1371,51, 506,439 ); + ent.v[ "angles" ] = ( 90, 0, -1 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2713,89, 1660,05, 506,501 ); + ent.v[ "angles" ] = ( 90, 0, -1 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2859,86, 1609,59, 506,493 ); + ent.v[ "angles" ] = ( 90, 6,82842, -83,1716 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3710,94, 842,765, 441,59 ); + ent.v[ "angles" ] = ( 89, 269,001, -179,999 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_waterfall_vista" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4816,73, 1666,45, -1332,04 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2719,81, -200,111, 442,41 ); + ent.v[ "angles" ] = ( 90, 0, -1 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2591,82, -199,66, 442,372 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2587,52, -327,324, 442,388 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2719,44, -327,046, 442,393 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_yellow_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3590,45, 0,530397, 498,463 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 42 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_uplink_anamorphic" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3597,12, 0,783489, 496,05 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_rain_lit_corona" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3594,73, 1,78948, 498,904 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 19 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2120,85, -992,157, 448,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2119,18, -799,892, 448,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_yllw_ribbon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3716,42, -1149,08, 316 ); + ent.v[ "angles" ] = ( 283,198, 268,636, 87,3101 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_yllw_ribbon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3717,97, -1165,89, 317 ); + ent.v[ "angles" ] = ( 307,034, 304,402, 84,0626 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2516,83, 177,232, 444,875 ); + ent.v[ "angles" ] = ( 59,9688, 23,6611, 142,454 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2501,88, 163,664, 444,875 ); + ent.v[ "angles" ] = ( 81,3319, 292,048, -137,69 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_gray_blue_ribbon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2481,79, 174,633, 444,875 ); + ent.v[ "angles" ] = ( 72,1109, 107,254, -136,205 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3336,12, -3690,73, 441,488 ); + ent.v[ "angles" ] = ( 30,3973, 254,117, -5,36284 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3352,13, -3695,58, 439 ); + ent.v[ "angles" ] = ( 23,6594, 258,087, -3,89569 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_recessed_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3330,07, -3698,78, 465 ); + ent.v[ "angles" ] = ( 17,6727, 258,514, -3,74476 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_v_shape_cool" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2726,34, -2609,72, 573,865 ); + ent.v[ "angles" ] = ( 90, 0, -1 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2227,58, -385,139, 437,403 ); + ent.v[ "angles" ] = ( 89, 88,9987, 177,999 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2817,56, -1404,78, 559,692 ); + ent.v[ "angles" ] = ( 86,9221, 285,568, -166,707 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3104,21, -1405,86, 556,982 ); + ent.v[ "angles" ] = ( 86,9221, 285,569, -165,706 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3592,37, -1406,25, 555,203 ); + ent.v[ "angles" ] = ( 88,3686, 219,881, 128,611 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3339,6, -619,213, 557,677 ); + ent.v[ "angles" ] = ( 89, 180, -179 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3339,22, -1143,37, 559,54 ); + ent.v[ "angles" ] = ( 89, 180, -179 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3027,63, -1226,82, 563,208 ); + ent.v[ "angles" ] = ( 86,9221, 285,572, 15,2971 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2370,34, -627,876, 556,139 ); + ent.v[ "angles" ] = ( 89, 89,001, 89,0103 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3325,9, -691,829, 546,293 ); + ent.v[ "angles" ] = ( 89, 180, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_floodlight_sqr_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3098,57, -1427,3, 578,914 ); + ent.v[ "angles" ] = ( 89, 0, 90 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_upl_floodlight_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2443,42, -1683,2, 560,04 ); + ent.v[ "angles" ] = ( 89, 88,9989, 179,999 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2784,87, 1717,74, 475,695 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_exit_sign" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2630,37, 1366,49, 475,987 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "delay" ] = -21; +} diff --git a/mp_uplink/maps/mp/mp_uplink.gsc b/mp_uplink/maps/mp/mp_uplink.gsc new file mode 100644 index 0000000..5a16718 --- /dev/null +++ b/mp_uplink/maps/mp/mp_uplink.gsc @@ -0,0 +1,93 @@ +#include maps/mp/gametypes/_spawning; +#include maps/mp/_compass; +#include maps/mp/gametypes/_globallogic_utils; +#include maps/mp/_utility; +#include common_scripts/utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_uplink_fx::main(); + precachemodel( "collision_physics_128x128x10" ); + precachemodel( "collision_physics_256x256x10" ); + precachemodel( "collision_physics_64x64x10" ); + precachemodel( "collision_physics_32x32x10" ); + maps/mp/_load::main(); + maps/mp/mp_uplink_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_uplink" ); + setdvar( "compassmaxrange", "2100" ); + registerclientfield( "world", "trigger_lightning", 1, 1, "int" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + spawncollision( "collision_physics_128x128x10", "collider", ( 1661, 345,5, 298,5 ), ( 0, 1, 0 ) ); + spawncollision( "collision_physics_128x128x10", "collider", ( 1661, 345,5, 313,5 ), ( 0, 1, 0 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 3257, -3,5, 872,5 ), ( 360, 270, 90 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 3394, -136,5, 872,5 ), ( 270, 183,902, 86,0983 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 3270,5, -3,5, 872,5 ), ( 360, 270, 90 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 3394, 129,5, 872,5 ), ( 270, 183,902, 86,0983 ) ); + spawncollision( "collision_physics_256x256x10", "collider", ( 3399,5, 1, 990 ), ( 1,12, 270, 180 ) ); + spawncollision( "collision_physics_128x128x10", "collider", ( 2343,5, 865,5, 320,5 ), vectorScale( ( 0, 1, 0 ), 332,7 ) ); + spawncollision( "collision_physics_64x64x10", "collider", ( 2291, 904, 316 ), ( 355,461, 27,1924, -2,32818 ) ); + spawncollision( "collision_physics_32x32x10", "collider", ( 3049,5, -3452, 339 ), ( 78,6193, 281,502, -105,573 ) ); + maps/mp/gametypes/_spawning::level_use_unified_spawning( 1 ); + level.remotemotarviewdown = 50; + level thread gondola_sway(); + glasses = getstructarray( "glass_shatter_on_spawn", "targetname" ); + i = 0; + while ( i < glasses.size ) + { + radiusdamage( glasses[ i ].origin, 64, 101, 100 ); + i++; + } +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2350", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1000", reset_dvars ); +} + +gondola_sway() +{ + gondola_cab = getent( "gondola_cab", "targetname" ); + gondola_cab setmovingplatformenabled( 1 ); + while ( 1 ) + { + randomswingangle = randomfloatrange( 0,25, 0,5 ); + randomswingtime = randomfloatrange( 2,5, 4 ); + gondola_cab rotateto( ( randomswingangle * 0,5, randomswingangle * 0,6, randomswingangle * 0,8 ), randomswingtime, randomswingtime * 0,3, randomswingtime * 0,3 ); + gondola_cab playsound( "amb_gondola_swing" ); + wait randomswingtime; + gondola_cab rotateto( ( ( randomswingangle * 0,5 ) * -1, ( randomswingangle * -1 ) * 0,6, ( randomswingangle * 0,8 ) * -1 ), randomswingtime, randomswingtime * 0,3, randomswingtime * 0,3 ); + gondola_cab playsound( "amb_gondola_swing_back" ); + wait randomswingtime; + gondola_cab destroy_corpses(); + } +} + +destroy_corpses() +{ + time = getTime(); + corpses = getcorpsearray(); + i = 0; + while ( i < corpses.size ) + { + if ( ( corpses[ i ].birthtime + 3000 ) < time ) + { + if ( distance2dsquared( corpses[ i ].origin, self.origin ) < 10000 ) + { + corpses[ i ] delete(); + } + } + i++; + } +} diff --git a/mp_uplink/maps/mp/mp_uplink_amb.gsc b/mp_uplink/maps/mp/mp_uplink_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_uplink/maps/mp/mp_uplink_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_uplink/maps/mp/mp_uplink_fx.gsc b/mp_uplink/maps/mp/mp_uplink_fx.gsc new file mode 100644 index 0000000..581cb6b --- /dev/null +++ b/mp_uplink/maps/mp/mp_uplink_fx.gsc @@ -0,0 +1,106 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc3" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc3(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_uplink_fx::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_uplink_rain_med_fast_os" ] = loadfx( "weather/fx_mp_uplink_rain_med_fast_os" ); + level._effect[ "fx_mp_uplink_rain_med_fast_os_vista" ] = loadfx( "weather/fx_mp_uplink_rain_med_fast_os_vista" ); + level._effect[ "fx_mp_uplink_rain_med_fast_neg_os" ] = loadfx( "weather/fx_mp_uplink_rain_med_fast_neg_os" ); + level._effect[ "fx_mp_uplink_rain_med_fast_neg_os_vista" ] = loadfx( "weather/fx_mp_uplink_rain_med_fast_neg_os_vista" ); + level._effect[ "fx_mp_upl_rain_gust_md" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_gust_md" ); + level._effect[ "fx_mp_upl_rain_gust_lg" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_gust_lg" ); + level._effect[ "fx_mp_upl_rain_gust_lg_neg" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_gust_lg" ); + level._effect[ "fx_mp_upl_rain_gust_md_neg" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_gust_md_neg" ); + level._effect[ "fx_mp_upl_rain_splash_50" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_splash_50" ); + level._effect[ "fx_mp_upl_rain_splash_100" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_splash_100" ); + level._effect[ "fx_mp_upl_rain_splash_200" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_splash_200" ); + level._effect[ "fx_mp_upl_rain_splash_300" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_splash_300" ); + level._effect[ "fx_mp_upl_rain_splash_400" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_splash_400" ); + level._effect[ "fx_water_pipe_gutter_md" ] = loadfx( "water/fx_water_pipe_gutter_md" ); + level._effect[ "fx_mp_water_roof_spill_lg_hvy" ] = loadfx( "maps/mp_maps/fx_mp_water_roof_spill_lg_hvy" ); + level._effect[ "fx_mp_water_roof_spill_lg_hvy_lng" ] = loadfx( "maps/mp_maps/fx_mp_water_roof_spill_lg_hvy_lng" ); + level._effect[ "fx_mp_water_roof_spill_md_hvy" ] = loadfx( "maps/mp_maps/fx_mp_water_roof_spill_md_hvy" ); + level._effect[ "fx_mp_water_roof_spill_splash_shrt" ] = loadfx( "maps/mp_maps/fx_mp_water_roof_spill_splash_shrt" ); + level._effect[ "fx_mp_water_roof_spill_splash_xshrt" ] = loadfx( "maps/mp_maps/fx_mp_water_roof_spill_splash_xshrt" ); + level._effect[ "fx_mp_fog_cool_ground" ] = loadfx( "maps/mp_maps/fx_mp_fog_cool_ground" ); + level._effect[ "fx_mp_distant_cloud_vista" ] = loadfx( "maps/mp_maps/fx_mp_upl_distant_cloud_vista" ); + level._effect[ "fx_mp_uplink_lightning_lg" ] = loadfx( "weather/fx_mp_uplink_lightning_lg" ); + level._effect[ "fx_mp_upl_window_rain1_splash" ] = loadfx( "maps/mp_maps/fx_mp_upl_window_rain1_splash" ); + level._effect[ "fx_mp_uplink_rain_window_roof_med" ] = loadfx( "weather/fx_mp_uplink_rain_window_roof_med" ); + level._effect[ "fx_mp_uplink_rain_window_gust" ] = loadfx( "weather/fx_mp_uplink_rain_window_gust" ); + level._effect[ "fx_mp_upl_cloud_geo" ] = loadfx( "maps/mp_maps/fx_mp_upl_cloud_geo" ); + level._effect[ "fx_lf_mp_uplink_sun1" ] = loadfx( "lens_flares/fx_lf_mp_uplink_sun1" ); + level._effect[ "fx_lf_mp_uplink_anamorphic" ] = loadfx( "lens_flares/fx_lf_mp_uplink_anamorphic" ); + level._effect[ "fx_lf_mp_uplink_anamorphic2" ] = loadfx( "lens_flares/fx_lf_mp_uplink_anamorphic2" ); + level._effect[ "fx_mp_upl_rain_lit_corona" ] = loadfx( "maps/mp_maps/fx_mp_upl_rain_lit_corona" ); + level._effect[ "fx_drone_rectangle_light" ] = loadfx( "light/fx_light_flour_glow_yellow" ); + level._effect[ "fx_light_flour_glow_yellow_sm" ] = loadfx( "light/fx_light_flour_glow_yellow_sm" ); + level._effect[ "fx_light_flour_glow_yellow_xsm" ] = loadfx( "light/fx_light_flour_glow_yellow_xsm" ); + level._effect[ "fx_drone_rectangle_light_03" ] = loadfx( "light/fx_drone_rectangle_light_03" ); + level._effect[ "fx_drone_rectangle_light_blue" ] = loadfx( "maps/mp_maps/fx_mp_upl_rectangle_light_blue" ); + level._effect[ "fx_light_beacon_yellow" ] = loadfx( "light/fx_light_beacon_yellow" ); + level._effect[ "fx_light_beacon_red_blink_fst" ] = loadfx( "light/fx_light_beacon_red_blink_fst" ); + level._effect[ "fx_light_beacon_red_blink_fst_sm" ] = loadfx( "light/fx_light_beacon_red_blink_fst_sm" ); + level._effect[ "fx_light_exit_sign" ] = loadfx( "light/fx_light_exit_sign_gLow" ); + level._effect[ "fx_light_recessed_cool" ] = loadfx( "maps/mp_maps/fx_mp_upl_light_recessed_cool" ); + level._effect[ "fx_light_recessed_blue" ] = loadfx( "light/fx_light_recessed_blue" ); + level._effect[ "fx_light_window_glow" ] = loadfx( "light/fx_light_window_glow" ); + level._effect[ "fx_mp_upl_window_ray_cool" ] = loadfx( "maps/mp_maps/fx_mp_upl_window_ray_cool" ); + level._effect[ "fx_light_floodlight_sqr_wrm" ] = loadfx( "maps/mp_maps/fx_mp_upl_floodlight_sqr_warm" ); + level._effect[ "fx_light_floodlight_sqr_cool" ] = loadfx( "maps/mp_maps/fx_mp_upl_floodlight_sqr_cool" ); + level._effect[ "fx_light_floodlight_sqr_cool_thin" ] = loadfx( "maps/mp_maps/fx_mp_upl_floodlight_sqr_cool_thin" ); + level._effect[ "fx_light_floodlight_sqr_cool_sm" ] = loadfx( "maps/mp_maps/fx_mp_upl_floodlight_sqr_cool_sm" ); + level._effect[ "fx_light_floodlight_sqr_cool_md" ] = loadfx( "maps/mp_maps/fx_mp_upl_floodlight_sqr_cool_md" ); + level._effect[ "fx_mp_upl_floodlight_yellow" ] = loadfx( "maps/mp_maps/fx_mp_upl_floodlight_yellow" ); + level._effect[ "fx_upl_light_ray_sun_window_1s" ] = loadfx( "light/fx_upl_light_ray_sun_window_1s" ); + level._effect[ "fx_upl_light_ray_sun_window_lg_1s" ] = loadfx( "light/fx_upl_light_ray_sun_window_lg_1s" ); + level._effect[ "fx_mp_upl_generator_grays" ] = loadfx( "maps/mp_maps/fx_mp_upl_generator_grays" ); + level._effect[ "fx_light_flour_glow_v_shape_cool_sm" ] = loadfx( "light/fx_light_flour_glow_v_shape_cool_sm" ); + level._effect[ "fx_light_flour_glow_v_shape_cool" ] = loadfx( "light/fx_light_upl_flour_glow_v_shape_cool" ); + level._effect[ "fx_light_gray_yllw_ribbon" ] = loadfx( "light/fx_light_gray_yllw_ribbon" ); + level._effect[ "fx_light_gray_blue_ribbon" ] = loadfx( "light/fx_light_gray_blue_ribbon" ); + level._effect[ "fx_mp_upl_waterfall01" ] = loadfx( "maps/mp_maps/fx_mp_upl_waterfall01" ); + level._effect[ "fx_mp_upl_waterfall02" ] = loadfx( "maps/mp_maps/fx_mp_upl_waterfall02" ); + level._effect[ "fx_mp_upl_waterfall_splash_bttm" ] = loadfx( "maps/mp_maps/fx_mp_upl_waterfall_splash_bttm" ); + level._effect[ "fx_mp_upl_waterfall_splash_fst" ] = loadfx( "maps/mp_maps/fx_mp_upl_waterfall_splash_fst" ); + level._effect[ "fx_mp_upl_waterfall_splash_md" ] = loadfx( "maps/mp_maps/fx_mp_upl_waterfall_splash_md" ); + level._effect[ "fx_mp_upl_waterfall_vista" ] = loadfx( "maps/mp_maps/fx_mp_upl_waterfall_vista" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "ant_rooftop" ] = %fxanim_gp_antenna_rooftop_anim; +} + +precache_fxanim_props_dlc3() +{ + level.scr_anim[ "fxanim_props_dlc3" ][ "uplink_gate" ] = %fxanim_mp_uplink_gate_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "uplink_gate_b" ] = %fxanim_mp_uplink_gate_b_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "cliff_sign" ] = %fxanim_mp_uplink_cliff_sign_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "radar01" ] = %fxanim_mp_uplink_vista_radar01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "radar02" ] = %fxanim_mp_uplink_vista_radar02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "radar03" ] = %fxanim_mp_uplink_vista_radar03_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "radar04" ] = %fxanim_mp_uplink_vista_radar04_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "radar05" ] = %fxanim_mp_uplink_vista_radar05_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "sat_dish2" ] = %fxanim_gp_satellite_dish2_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "ant_rooftop2_small" ] = %fxanim_gp_antenna_rooftop2_small_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "fence01" ] = %fxanim_mp_uplink_fence01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "fence02" ] = %fxanim_mp_uplink_fence02_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "vines_01" ] = %fxanim_mp_uplink_vines_01_anim; + level.scr_anim[ "fxanim_props_dlc3" ][ "vines_02" ] = %fxanim_mp_uplink_vines_02_anim; +} diff --git a/mp_vertigo/aitype/enemy_dog_mp.gsc b/mp_vertigo/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_vertigo/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_vertigo/character/character_mp_german_shepherd.gsc b/mp_vertigo/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_vertigo/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_vertigo/maps/mp/createart/mp_vertigo_art.gsc b/mp_vertigo/maps/mp/createart/mp_vertigo_art.gsc new file mode 100644 index 0000000..65c28e0 --- /dev/null +++ b/mp_vertigo/maps/mp/createart/mp_vertigo_art.gsc @@ -0,0 +1,41 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "3759.28" ); + setdvar( "scr_fog_exp_halfheight", "243.735" ); + setdvar( "scr_fog_nearplane", "601.593" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "-475.268" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 11424,9; + half_dist = 16020; + half_height = 1164; + base_height = -2675; + fog_r = 0,372549; + fog_g = 0,454902; + fog_b = 0,447059; + fog_scale = 1; + sun_col_r = 1; + sun_col_g = 0,686275; + sun_col_b = 0,337255; + sun_dir_x = -0,196011; + sun_dir_y = 0,785122; + sun_dir_z = 0,587506; + sun_start_ang = 0; + sun_stop_ang = 61,3208; + time = 0; + max_fog_opacity = 0,962; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); + visionsetnaked( "mp_la", 0 ); +} diff --git a/mp_vertigo/maps/mp/createfx/mp_vertigo_fx.gsc b/mp_vertigo/maps/mp/createfx/mp_vertigo_fx.gsc new file mode 100644 index 0000000..9ded7ca --- /dev/null +++ b/mp_vertigo/maps/mp/createfx/mp_vertigo_fx.gsc @@ -0,0 +1,2649 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_tube_cloud" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 139,088, -197,21, -1090,66 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_engine_exhaust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2116,6, 257,579, 189,246 ); + ent.v[ "angles" ] = ( 90, 0, -153 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_engine_exhaust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2387,62, -304,607, 189,2 ); + ent.v[ "angles" ] = ( 90, 0, -177 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 383,971, -692,532, 349,989 ); + ent.v[ "angles" ] = ( 346,078, 179,818, 1,49289 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 383,224, -2341,53, -71,7422 ); + ent.v[ "angles" ] = ( 348,687, 242,656, -16,6018 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 682,909, 2308,98, -71,875 ); + ent.v[ "angles" ] = ( 348,733, 161,589, 1,15808 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 255,875, 2252,37, 130,641 ); + ent.v[ "angles" ] = ( 28, 182, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 388,63, 1764,81, 147,138 ); + ent.v[ "angles" ] = ( 28, 182, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 539,673, 2134,39, 109,463 ); + ent.v[ "angles" ] = ( 28, 182, 0 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 734,582, 1954,95, 72,125 ); + ent.v[ "angles" ] = ( 356, 182, 0 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1012,06, 1670,04, 81,125 ); + ent.v[ "angles" ] = ( 355,089, 167,956, 0,728233 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1365,49, 1324,73, 74,125 ); + ent.v[ "angles" ] = ( 350,773, 166,351, -1,67269 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1026,65, 1995,24, 72,125 ); + ent.v[ "angles" ] = ( 354, 181,791, 1 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 350,492, 2723, -13,875 ); + ent.v[ "angles" ] = ( 352, 182, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 359,875, 1470,73, 196,767 ); + ent.v[ "angles" ] = ( 28, 182, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -38,8576, 2086,44, 43 ); + ent.v[ "angles" ] = ( 348, 182, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1321,85, 206,888, 124,125 ); + ent.v[ "angles" ] = ( 0,96607, 197, 0,258881 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1313,21, -237,616, 127,125 ); + ent.v[ "angles" ] = ( 354,921, 206,978, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1332,27, -657,416, 117,125 ); + ent.v[ "angles" ] = ( 347,217, 207,286, -1,9486 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 664,279, -1262,18, 0,125004 ); + ent.v[ "angles" ] = ( 348, 182, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 410,713, -1369,66, 31,125 ); + ent.v[ "angles" ] = ( 1, 182, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 462,54, -2115,38, 2,125 ); + ent.v[ "angles" ] = ( 348,995, 187,978, 0,106493 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -318,446, -1572,76, -2,875 ); + ent.v[ "angles" ] = ( 0,913676, 157,996, -0,406835 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -615,344, -1420,88, 20,125 ); + ent.v[ "angles" ] = ( 0,933716, 160,996, -0,358456 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -906,191, -553,71, 23,125 ); + ent.v[ "angles" ] = ( 0,933716, 160,996, -0,358456 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1273,94, -438,487, 36 ); + ent.v[ "angles" ] = ( 1,05676, 140, 2,31437 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -938,567, 534,347, 52,125 ); + ent.v[ "angles" ] = ( 0,913537, 206,002, 0,406772 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -785,622, 733,686, 8,125 ); + ent.v[ "angles" ] = ( 0, 194,995, 0,58329 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1312,7, 502,122, 36 ); + ent.v[ "angles" ] = ( 351,891, 208,931, 0,458623 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_vertigo_sun1" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -74189,3, -104308, 60968,7 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1132,96, 866,058, 8 ); + ent.v[ "angles" ] = ( 356,901, 218,993, -0,298072 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 479,779, 1198,28, 263 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 470,203, 1348,06, 251 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -381,454, 701,188, 346,125 ); + ent.v[ "angles" ] = ( 0, 189,973, -0,609694 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 286,132, 1294,43, 285,426 ); + ent.v[ "angles" ] = ( 346, 186, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -864,222, 486,128, 333,193 ); + ent.v[ "angles" ] = ( 0, 191,97, -0,609241 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1810,16, 143,205, 123 ); + ent.v[ "angles" ] = ( 348,665, 186,49, 3,58956 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1819,15, -5,93272, 123 ); + ent.v[ "angles" ] = ( 348,665, 186,49, 3,58956 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1854,17, -214,174, 123 ); + ent.v[ "angles" ] = ( 348,665, 186,49, 3,58956 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 699,495, -611,343, 343 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,04, -753,007, 344 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -108,889, -789,21, 380,423 ); + ent.v[ "angles" ] = ( 359,59, 169,448, 4,05614 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1496,66, -147,763, -422,176 ); + ent.v[ "angles" ] = ( 306, 180, 180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -749,541, 871,793, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 222 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1238,29, 803,232, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 245 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1329,29, 554,237, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 228 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1196,37, 403,889, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 196 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -996,39, 535,179, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 195 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1344,26, 198,479, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 219 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1519,23, 392,059, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 232 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1484,54, 616,615, 29 ); + ent.v[ "angles" ] = ( 351,953, 220,041, -1,10739 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -808,7, -995,611, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 116 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -811,49, -783,811, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 116 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -965,573, -550,956, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 147 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -823,113, -1086,01, 28,125 ); + ent.v[ "angles" ] = ( 353,303, 102,035, 0,350131 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1069,79, -837,07, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 154 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1223,64, -681,98, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 112 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1251,23, -461,442, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 123 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1391,81, -608,475, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 117 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1531,57, -401,499, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 113 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1346,11, -193,437, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 117 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -904,515, -447,715, 338,345 ); + ent.v[ "angles" ] = ( 1,8007, 173,947, -0,788855 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1127,29, -911,202, 21 ); + ent.v[ "angles" ] = ( 353,441, 117,136, -1,40291 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1423,88, -705,278, 26 ); + ent.v[ "angles" ] = ( 353,303, 102,035, 0,350131 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1525,49, -580,443, 26 ); + ent.v[ "angles" ] = ( 353,976, 131,211, -2,95299 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -524,691, -1454,61, -14,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 157 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -755,647, -1410,35, -14,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 161 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -252,028, -1504, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 173 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 20,7631, -1446,83, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 193 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 268,159, -1432,7, 2,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 185 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 584,314, -1249,13, 2,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 212 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 352,552, -2103, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 190 ); + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1261,56, -514,406, 24 ); + ent.v[ "angles" ] = ( 355,379, 138,189, -0,662342 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 42,1688, -2157,57, -38,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 165 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 29,6573, -2361,63, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -51,0343, -2053,51, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 160 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -547,346, -2367,91, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -829,511, -2388,75, -14,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 172 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -791,389, -2217,15, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -819,013, -2074,44, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 178 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -376,224, -2440,92, -29,875 ); + ent.v[ "angles" ] = ( 347,983, 168,315, 2,02679 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 58,6174, -2513,36, -35,0498 ); + ent.v[ "angles" ] = ( 347,983, 168,315, 2,02679 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1138,18, -654,639, 104,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 228 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1325,12, -582,159, 104,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 206 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1353,16, -277,399, 104,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 206 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1181,88, -253,866, 104,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 203 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1384,77, -489,427, 111,125 ); + ent.v[ "angles" ] = ( 348,982, 199,856, 1,00443 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1352,9, 1078,52, 77,9802 ); + ent.v[ "angles" ] = ( 348,76, 156,314, 1,96767 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1195,41, 1072,81, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 150 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1177,14, 1269,39, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 140 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1021,45, 1110,85, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 130 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1036,72, 1548,7, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 140 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 854,725, 1660,87, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 140 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1036,13, 1939,57, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 159 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 998,407, 2088,38, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 168 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 867,215, 2016,76, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 185 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -65,4101, 1911,44, 8,12498 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 159 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 457,73, 2082,63, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 178 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 456,679, 1895,15, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 162 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 236,465, 2098,45, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 163 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -70,0854, 2167,19, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 217 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -204,676, 2059,53, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 210 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -380,955, 1962,13, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 215 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -512,594, 1881,23, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 223 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 483,054, 1998,27, 8,125 ); + ent.v[ "angles" ] = ( 357,968, 179,4, -1,40884 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 275,949, 1758,43, 18,125 ); + ent.v[ "angles" ] = ( 356,869, 207,474, -2,2006 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -36,7725, 1867,95, 8,125 ); + ent.v[ "angles" ] = ( 356,718, 141,358, 1,96938 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -200,347, 1292,04, 26,125 ); + ent.v[ "angles" ] = ( 356,288, 186,444, -0,931219 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 173,615, 1344,49, 26,125 ); + ent.v[ "angles" ] = ( 356,406, 192,455, -1,31456 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 11,1581, 1656,28, 19,125 ); + ent.v[ "angles" ] = ( 358,034, 231,471, -3,28361 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -442,443, 1228,04, 14,125 ); + ent.v[ "angles" ] = ( 357,03, 211,477, -2,41371 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 271,864, 1536,48, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 235 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 41,2617, 1755,28, 8,12499 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 224 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -81,2866, 1412,98, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 224 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -377,841, 1260,05, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 212 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -531,233, 1159,78, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 208 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -511,794, 1693,49, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 261 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -466,151, 1894,2, 24,125 ); + ent.v[ "angles" ] = ( 354,94, 217,695, 0,752233 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1152,88, -854,066, -68,5767 ); + ent.v[ "angles" ] = ( 354,886, 229,214, -4,78672 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1364,43, -775,2, 83,0182 ); + ent.v[ "angles" ] = ( 344,838, 214,713, -3,39837 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 761,395, -1830,95, -14,875 ); + ent.v[ "angles" ] = ( 354,886, 229,214, -4,78672 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1500,93, 160,562, -392,879 ); + ent.v[ "angles" ] = ( 284,923, 195,69, -15,4778 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1386,85, -0,40712, 104,125 ); + ent.v[ "angles" ] = ( 344,921, 206,978, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1299,44, 240,533, 104,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1149,11, 258,088, 104,125 ); + ent.v[ "angles" ] = ( 0, 203, 1 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1058,65, 242,355, 104,125 ); + ent.v[ "angles" ] = ( 352,993, 226,945, 0,315841 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1025,44, -306,635, 104,125 ); + ent.v[ "angles" ] = ( 351, 120, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1410,34, 1397,92, 64,456 ); + ent.v[ "angles" ] = ( 356,003, 116,027, 0,30977 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1104,01, 2185,4, 34,628 ); + ent.v[ "angles" ] = ( 360, 117, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -61,6901, -2529,28, -35,036 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 160 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -620,515, 1071,99, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 223 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -786,342, 942,03, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 213 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 161,709, 475,711, 253,315 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 414,705, 475,51, 253,512 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -128,84, 476,21, 253,019 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 166,246, -477,193, 257,013 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 419,242, -477,394, 253,111 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -124,303, -476,695, 253,317 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,564, 227,519, -28,5444 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 493,012, 227,148, -28,4856 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 402,841, 239,038, -20,5703 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 493,275, 239,146, -20,4755 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,853, 251,146, -12,5319 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,165, 250,941, -12,1948 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 402,717, 262,938, -4,20705 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 493,237, 263,159, -4,49432 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 402,988, 274,96, 3,72217 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,728, 275,093, 3,63967 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -411,512, 227,769, 3,57521 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -411,064, 215,772, -4,41254 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -411,388, 203,869, -12,788 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -410,648, 191,85, -20,7621 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,816, 191,918, -20,7033 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,974, 215,916, -4,74964 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,553, 203,916, -12,6932 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,6, 227,729, 3,28794 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -410,065, -227,751, 3,25096 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -409,681, -215,738, -4,78662 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -410,102, -203,738, -12,7302 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -409,839, -191,74, -20,7403 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -305,744, -227,642, 3,53823 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,192, -215,645, -4,44952 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -305,868, -203,742, -12,825 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -306,616, -191,924, -20,7991 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,816, -227,766, -28,6694 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,974, -251,764, -12,7157 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,553, -239,764, -20,6593 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 403,59, -263,777, -4,6781 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 404,099, -275,711, 3,45589 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,242, -275,675, 3,53839 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,065, -251,656, -12,3786 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,513, -263,653, -4,39083 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 492,389, -239,753, -20,7541 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 491,769, -227,139, -28,7282 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2082,61, -1,01203, 26,9824 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -150,194, 632,125, 125,662 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 485,992, -616,359, 126,075 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 693,681, 299,8, -28,4497 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 639,292, 299,774, -28,41 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,743, 323,778, -12,2831 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,473, 347,778, 3,68284 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,639, 371,835, 19,535 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,657, 395,833, 35,4332 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,673, 323,766, -12,3056 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,959, 347,825, 3,5542 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,97, 371,825, 19,4223 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,737, 395,796, 35,3611 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,444, 419,799, 51,3686 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,431, 419,777, 51,6694 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,598, 443,775, 67,6715 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,265, 443,77, 67,7783 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,156, 467,834, 83,4719 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,908, 467,784, 83,6632 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,631, 491,84, 99,5161 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_step_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 638,857, 491,813, 99,405 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -167,653, 841,118, 161,486 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 120,435, 840,829, 161,519 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 963,427, 932,405, 226,97 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 963,566, 828,126, 226,99 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 963,515, 700,186, 226,946 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 963,216, 579,167, 226,938 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1067,72, 579,378, 226,982 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1195,92, 579,024, 226,959 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1315,83, 579,121, 227,008 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 773,168, 931,6, 226,93 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 772,333, 827,754, 226,934 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 772,128, 699,719, 226,917 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 772,17, 579,753, 226,913 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 772,335, 459,918, 226,925 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 773,061, 340,964, 226,932 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 900,534, 341,812, 226,904 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1020,29, 340,464, 226,957 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1148,39, 340,17, 226,938 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1252,56, 340,682, 227 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1137,22, 329,999, 222,614 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1167,26, 591,005, 222,041 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1134,73, 319,875, 221,855 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 484,221, -907,598, 138,928 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 396,173, -907,707, 138,921 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 314,338, -907,49, 138,962 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 228,535, -907,985, 138,952 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 228,136, -824,176, 138,901 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 228,389, -720,292, 138,936 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 228,342, -630,07, 138,922 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 307,67, -628,383, 138,941 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 396,018, -627,999, 138,87 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 477,511, -628,4, 138,963 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 562,819, -627,973, 138,933 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 563,755, -719,835, 138,903 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 563,851, -816,061, 138,893 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 564,186, -907,832, 138,902 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 763,629, -260,158, 110,257 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 666,206, -260,229, 110,19 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 666,371, -517,457, 110,245 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 763,225, -516,866, 110,182 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 895,875, 959,012, 222,433 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 896,137, 968,985, 221,969 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1221,59, 1193,39, -32,3915 ); + ent.v[ "angles" ] = ( 353,172, 210,076, -5,06534 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1914,29, 475,083, -98,5827 ); + ent.v[ "angles" ] = ( 356,863, 226,856, -6,28727 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1907,93, -523,041, -101,72 ); + ent.v[ "angles" ] = ( 354,75, 130,559, 5,69202 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1751,52, -318,157, -73,924 ); + ent.v[ "angles" ] = ( 354,494, 119,12, -1,62881 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1736,65, 324,336, -77,8728 ); + ent.v[ "angles" ] = ( 3,07512, 224,911, -4,85074 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1451,19, -743,178, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 112 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1415,04, 710,398, 8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 235 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 132,032, 1326,79, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 198 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_light_yellow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1170,25, 600,996, 221,456 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 858,106, 1119,56, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -60,0527, 1622,76, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 111,503, 1259,6, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -841,676, 696,682, 8,12501 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -857,078, -839,934, 8,12499 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -813,156, -1390,77, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -360,583, -1532,07, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -299,273, -1961,18, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -64,2093, -2215,95, -38,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 258,71, -1393,37, 2,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1063,44, -652,588, 104,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 913,612, 1625,07, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -486,997, -0,34445, 131,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -486,258, 65,9312, 131,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -487,054, -65,6625, 131,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 55,6919, 553,974, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 87,4143, 554,415, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 119,298, 554,324, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 151,278, 554,342, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 183,427, 554,225, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 55,4838, 445,547, 147,675 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 0,221552, 446,094, 147,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -64,1532, 446,451, 147,775 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -120,541, 444,114, 147,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -120,279, 514,237, 147,975 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -62,2018, 514,628, 147,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 0,885532, 514,311, 148,075 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 56,3233, 514,524, 147,775 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -36,2142, -538,871, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12,4754, -538,573, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 11,7402, -538,678, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 55,2983, -445,035, 147,375 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -0,633395, -445,515, 147,575 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -64,7383, -445,413, 147,475 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -120,461, -445,296, 147,375 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 55,1512, -514,847, 147,575 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -0,716966, -515,157, 147,575 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -64,0745, -514,529, 147,275 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -121,025, -514,744, 147,475 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 243,696, -539,428, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 275,842, -539,417, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 307,835, -539,438, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 339,771, -539,372, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 371,585, -539,575, 143,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 439,913, -514,518, 147,488 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 384,045, -514,828, 147,488 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,687, -514,2, 147,188 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 263,737, -514,415, 147,388 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 264,301, -444,968, 147,288 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,024, -445,085, 147,388 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 384,129, -445,187, 147,488 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 440,06, -444,706, 147,288 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 439,61, 445,411, 147,387 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 383,742, 445,101, 147,387 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,384, 445,73, 147,087 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 263,434, 445,515, 147,287 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 263,998, 514,962, 147,187 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 319,721, 514,845, 147,287 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 383,825, 514,743, 147,387 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 439,757, 515,224, 147,187 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1131,99, -1162,94, -35,0664 ); + ent.v[ "angles" ] = ( 352,41, 166,72, 1,50995 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1019,32, -2462,65, -165,875 ); + ent.v[ "angles" ] = ( 348,921, 153,033, 5,10368 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1087,36, -2073,48, -164,875 ); + ent.v[ "angles" ] = ( 347,82, 176,495, 0,309443 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1019,34, -2130,27, -164,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1002,59, -2414,97, -164,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 161 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -839,085, -2526,31, -165,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -618,858, -2535,85, -165,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1056,89, -1422,37, -164,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1075,03, -1422,39, -165,875 ); + ent.v[ "angles" ] = ( 347,82, 176,495, 0,309443 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1137,08, -1725,78, -165,875 ); + ent.v[ "angles" ] = ( 347,82, 176,495, 0,309443 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 82,7181, 716,205, 130,414 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_mag_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -127,984, 715,832, 130,285 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -86,7862, 800,508, 269,592 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -23,1172, 800,587, 269,581 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 40,8077, 800,617, 269,566 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 104,999, 800,361, 269,578 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 168,631, 800,134, 269,516 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -151,392, 800,161, 269,5 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -215,677, 799,702, 269,484 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1166,22, 1228,2, 72,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8,88535, 2738,81, -25,875 ); + ent.v[ "angles" ] = ( 352, 182, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 249,542, 2439,57, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 173 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 288,154, 2647,37, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 191 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 286,908, 2807,39, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 187 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 83,4179, 2835,79, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 173 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -69,8988, 2749,31, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 167 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -45,3872, 2416,13, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 164 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 75,4267, 2483,04, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 164 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 21,5958, 2403,97, -23,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -592,784, 2,75473, 143,495 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -634,921, 2,44208, 143,457 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1265,11, -262,639, 258 ); + ent.v[ "angles" ] = ( 14,5514, 170,533, 4,19063 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_fountain2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 908,787, 1379,48, 141,626 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_fountain2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 859,033, 1379,95, 141,624 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_fountain2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 859,441, 1430,14, 141,621 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_fountain2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 908,674, 1429,57, 141,626 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -550,842, 1,93084, 143,418 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_cloud_vista01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4176,68, -1558,32, -265,88 ); + ent.v[ "angles" ] = ( 356,218, 90,936, 15,4889 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_cloud_vista01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4123,72, 2820,82, -160,92 ); + ent.v[ "angles" ] = ( 3,80286, 94,5069, 16,5068 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -203,562, -311,435, 452,875 ); + ent.v[ "angles" ] = ( 31, 47, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 267,231, -701,351, 169,875 ); + ent.v[ "angles" ] = ( 39,9927, 358,695, -0,839002 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 407,841, -705,041, 171,999 ); + ent.v[ "angles" ] = ( 39,9927, 358,695, -0,839002 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1731,03, -98,9847, 160,834 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1730,95, 98,0763, 161,032 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1887,13, 385,512, 160,689 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2272,02, 552,056, 160,752 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2657,71, 385,377, 160,602 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2825,86, -0,414622, 160,702 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2657,37, -385,33, 160,739 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2271,75, -552,032, 160,614 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1886,41, -385,326, 160,75 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 800,335, -1150,44, 49,4157 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1038,38, -911,995, 146,931 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1380,42, -740,291, 146,835 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 326,222, -883,306, 56,9769 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 66 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 469,581, -564,856, 53,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 94 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -90,72, -458,701, 47,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,238, 585,337, 56,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -127,314, 472,814, 57,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -329,886, -191,875, 60,3687 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 88 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 664,013, 557,267, 180,125 ); + ent.v[ "angles" ] = ( 22,9984, 270,059, 0,188646 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 875,494, 939,356, 167,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 264 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -172,074, 694,08, 78,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 38 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1041,95, -5,36076, 44,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 497,014, -1401,67, 2,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 184 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 699,705, -1112,65, 2,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 227 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -579,589, -1555,87, 174,901 ); + ent.v[ "angles" ] = ( 270,1, 89,9824, -89,9824 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -423,362, -1712,07, 174,395 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_hvac_steam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -732,81, -1729, 170,305 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_landing_light_vertigo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 23,9426, -2007,99, 124,917 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 386,703, -1523,1, 85,3447 ); + ent.v[ "angles" ] = ( 36, 90, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 584,358, -1637,63, 85,5607 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 44 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -226,04, 2168,42, 108,122 ); + ent.v[ "angles" ] = ( 42, 270, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -641,169, -1541,63, 85,34 ); + ent.v[ "angles" ] = ( 45, 90, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 250,309, -2019,86, 93,6452 ); + ent.v[ "angles" ] = ( 42, 270, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -137,563, -2445,94, -39,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 194,49, -2120,83, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -84,0866, -2048,9, -38,875 ); + ent.v[ "angles" ] = ( 354,008, 179,017, -0,315168 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -556,644, -2377,1, -15,875 ); + ent.v[ "angles" ] = ( 2, 176, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 95,3456, -1425,73, 0,124997 ); + ent.v[ "angles" ] = ( 356, 176,996, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 610,68, -1909,84, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 221 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med_dark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 107,509, 2652,71, -24,875 ); + ent.v[ "angles" ] = ( 355, 177, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_leaves" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 70,2246, 1966,59, 236,093 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -868,654, 935,581, 8,125 ); + ent.v[ "angles" ] = ( 359,939, 204,995, 0,58151 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 926,906, 93,2134, -30,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 919,822, 0,470383, -31,675 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 910,76, -81,669, -30,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 809,796, -82,3613, -31,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 185 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 805,749, 81,2526, -31,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 939,436, 9,13624, 22,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 936,147, 106,635, 25,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 946,549, -102,599, 22,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 648,747, -63,0647, -8,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 653,365, 83,0813, -8,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -537,313, 102,399, 149,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -707,767, 131,302, 149,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -537,69, -73,0583, 149,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -706,103, -129,935, 149,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1375,61, 989,379, 82,125 ); + ent.v[ "angles" ] = ( 359,066, 148, -0,35845 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1199,92, 283,929, 145,125 ); + ent.v[ "angles" ] = ( 359,06, 146,999, -0,342117 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1039,47, 1054,02, 82,9967 ); + ent.v[ "angles" ] = ( 342,07, 209,015, 1,94891 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 732,851, 2360,24, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 173 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 552,6, 2375,11, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 173 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 958,315, 2224,68, -16,6024 ); + ent.v[ "angles" ] = ( 2,74195, 155,824, -4,37488 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 389,484, 2408,95, -71,875 ); + ent.v[ "angles" ] = ( 323,84, 185,566, -5,90976 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -642,125, 859,219, 150,697 ); + ent.v[ "angles" ] = ( 28,3977, 183,831, -2,77951 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -821,479, 1014,5, 137,195 ); + ent.v[ "angles" ] = ( 18,4505, 252,99, 10,3824 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 405,84, -1081,51, 17,125 ); + ent.v[ "angles" ] = ( 354,531, 117,179, 0,385648 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 526,185, -1171,74, 10,125 ); + ent.v[ "angles" ] = ( 357,54, 156,217, 0,607548 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 79,9893, -2228,97, -25,8254 ); + ent.v[ "angles" ] = ( 343,583, 186,444, -0,980469 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -187,233, -2320,71, -39,875 ); + ent.v[ "angles" ] = ( 343,583, 186,444, -0,980469 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1115,59, 1039,79, 15,5127 ); + ent.v[ "angles" ] = ( 352,146, 239,242, 6,57324 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -660,494, -1348,97, 6,125 ); + ent.v[ "angles" ] = ( 356,459, 157,895, -6,48668 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -403,679, -1659,3, 0,124992 ); + ent.v[ "angles" ] = ( 348,422, 130,713, -4,92561 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 74,5673, -1506, 0,125 ); + ent.v[ "angles" ] = ( 348,315, 188,387, -11,7419 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -335,937, -1665,94, -14,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 139 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1167,88, -149,835, 71,125 ); + ent.v[ "angles" ] = ( 11,899, 140,524, -6,36916 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1181,91, 156,689, 71,7639 ); + ent.v[ "angles" ] = ( 10,5463, 207,968, 8,43506 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 272,377, 156,772, 294,446 ); + ent.v[ "angles" ] = ( 20,4738, 168,143, -0,190327 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 280,783, -157,498, 304,554 ); + ent.v[ "angles" ] = ( 20,062, 201,383, 12,4488 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_wind_cloud_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 359,501, 2,97124, 374,064 ); + ent.v[ "angles" ] = ( 3,85253, 177,929, -0,592478 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1316,42, 1532,06, 9,45738 ); + ent.v[ "angles" ] = ( 13,7406, 138,541, 2,39633 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_window_exploder" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 832,702, 2420,86, -63,875 ); + ent.v[ "angles" ] = ( 352,486, 184,368, -2,59096 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1087,41, 1790,99, -15,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1004; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1154,04, 1781,46, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1004; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1089,45, 1722,5, -16,375 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1090,77, 1658,11, -13,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1006; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1153,31, 1716,83, -70,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 177 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1147,73, 1655,14, -70,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1006; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 460,062, -5,77599, 241,875 ); + ent.v[ "angles" ] = ( 70,985, 357,368, -1,97359 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 602,999, 2,65791, 247,875 ); + ent.v[ "angles" ] = ( 73,9827, 356,995, -2,33009 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 550,875, -834,571, 151,889 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 179 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 249,171, -832,189, 144,875 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1169,75, 428,055, 241,997 ); + ent.v[ "angles" ] = ( 35, 359,064, -178,965 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 993,56, 489,823, 247,855 ); + ent.v[ "angles" ] = ( 32, 359, -179 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 830,228, 490,995, 261,875 ); + ent.v[ "angles" ] = ( 37, 359, 180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 894,313, 367,333, 232,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 93 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1068,96, 363,937, 232,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 93 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1242,24, 367,463, 232,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 93 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 98,2005, 951,081, 210,713 ); + ent.v[ "angles" ] = ( 45,9909, 271,035, -178,561 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -111,793, 938,676, 216,647 ); + ent.v[ "angles" ] = ( 45,9909, 271,035, -178,561 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_god_ray_mp_vertigo_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -23,9163, 940,398, 216,935 ); + ent.v[ "angles" ] = ( 45,9909, 271,035, -178,561 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_dirt_swirl" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 878,19, 1654,11, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1005; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_wind_med" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1049,99, 1721,41, -71,875 ); + ent.v[ "angles" ] = ( 353,499, 159,441, 1,40194 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1064,93, 2083,99, -4,45833 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1007; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1066,97, 2015,5, -4,95833 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1008; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_window_exploder_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1068,29, 1951,11, -2,45833 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1009; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1062,04, 1944,34, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1009; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1064,31, 2008,03, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 177 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1008; + ent = maps/mp/_utility::createexploder( "fx_mp_vertigo_ground_dust_lite" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1065,07, 2083,63, -71,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1007; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 416,036, -993,68, 124,603 ); + ent.v[ "angles" ] = ( 37, 180, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 531,298, 417,494, 111,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 531,907, 469,291, 111,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 531,294, 520,883, 111,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1157,37, 11,9901, 56,9112 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 351 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -997,433, -117,621, 20,6506 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1036,17, -115,582, 20,5776 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 83 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1073,82, -110,394, 20,6955 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 73 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -960,17, -115,855, 20,7174 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 94 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -921,688, -110,503, 20,7792 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 102 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1074,04, 110,256, 20,7069 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 283 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1035,62, 115,503, 20,8145 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -998,143, 117,164, 20,6784 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -959,506, 115,432, 20,7077 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 261 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_scanner_glare" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -921,932, 109,942, 20,7696 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 250 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4960, -14193,7, 1559,32 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4945,9, -14767,3, 1557,57 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5559,13, -14165,1, 1558,79 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5250,75, -14450,8, 3634,11 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3796,34, 1023,36, 3187,05 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4441,48, -265,302, 4685,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -17579,9, -8675,96, -1260,8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -17935,2, -6071,58, 95,2771 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5536,33, 24316,3, 901,667 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12759,3, 8842,79, 1076,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_cloud_vista02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 14660,5, -1574,92, -3077,22 ); + ent.v[ "angles" ] = ( 272,996, 272, -80 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_cloud_vista02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12533,4, 2949,43, -3652,95 ); + ent.v[ "angles" ] = ( 272,996, 272, -102 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_cloud_vista02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8026,13, 17166,5, -3406,23 ); + ent.v[ "angles" ] = ( 275,107, 73,0283, 61,0151 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 248,515, -578,392, 110,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 301,871, -578,087, 110,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 352,932, -576,978, 110,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 584,976, -433,18, 111,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 585,555, -484,838, 111,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 585,231, -536,431, 111,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 702,856, 1117,16, 199,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 699,4, 1309,12, 178,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 705,887, 1437,78, 135,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 701,718, 1221,89, 178,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 702,928, 1512,3, 157,375 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_vertigo_ceiling_light" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 704,998, 1627,89, 135,875 ); + ent.v[ "angles" ] = ( 90, 359,935, -1,06532 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -648,854, 804,452, 143,772 ); + ent.v[ "angles" ] = ( 42, 180, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -885,009, 1162,61, 113,108 ); + ent.v[ "angles" ] = ( 40,7, 90, 0 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -700,175, 1310,6, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,727, 1315,04, 135 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -890,214, 1315,26, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -697,896, 1441,97, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,668, 1439,3, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -892,328, 1441,47, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -892, 1566,8, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,344, 1568,09, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -698,9, 1567,67, 137 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -702,955, -2137,27, -47,4609 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -702,795, -2260,32, -47,4965 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -891,843, -2398,4, -47,4919 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -914,01, -2258,67, -47,5889 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -914,119, -2144,49, -47,6094 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12598,5, 12054,5, -3256,24 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 21165,2, 13485,9, 794,341 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -14485,4, 4189,54, -2414,1 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -916,875, 1303,61, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 61 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_paper_interior_short" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -706,259, 1544,53, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 243 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3701,46, -24961, -3912,72 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5469,52, -23030,6, -1608,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_vista_glare02" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12338,3, 8835,45, 247,365 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -922,059, -1734,65, 106,431 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -921,365, -1859,69, 106,374 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -813,061, -1859,79, 106,463 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_vertigo_rectangle_light01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -787,081, -1605,17, 106,596 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "delay" ] = -44; +} diff --git a/mp_vertigo/maps/mp/mp_vertigo.gsc b/mp_vertigo/maps/mp/mp_vertigo.gsc new file mode 100644 index 0000000..a2fcbd6 --- /dev/null +++ b/mp_vertigo/maps/mp/mp_vertigo.gsc @@ -0,0 +1,178 @@ +#include maps/mp/gametypes/_deathicons; +#include maps/mp/mp_vertigo_doors; +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + level.ragdoll_override = ::ragdoll_override; + maps/mp/mp_vertigo_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_vertigo_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_vertigo" ); + setdvar( "compassmaxrange", "2100" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; + level thread waitforglassbreak(); + if ( getgametypesetting( "allowMapScripting" ) ) + { + level maps/mp/mp_vertigo_doors::init(); + } +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2400", reset_dvars ); + ss.hq_objective_influencer_inner_radius = set_dvar_float_if_unset( "scr_spawn_hq_objective_influencer_inner_radius", "1400", reset_dvars ); +} + +waitforglassbreak() +{ + if ( glassexploderssetupcorrectly( 1000, 3 ) == 0 ) + { + return; + } + if ( glassexploderssetupcorrectly( 1004, 3 ) == 0 ) + { + return; + } + if ( glassexploderssetupcorrectly( 1007, 3 ) == 0 ) + { + return; + } + for ( ;; ) + { + level waittill( "glass_smash", origin ); + playglassexploder( origin, 1000, 3 ); + playglassexploder( origin, 1004, 3 ); + playglassexploder( origin, 1007, 3 ); + } +} + +playglassexploder( origin, exploderbase, explodercount ) +{ + distancesq = distancesquared( origin, level.createfxexploders[ exploderbase ][ 0 ].v[ "origin" ] ); + if ( distancesq > 21000 ) + { + return; + } + nearestpane = exploderbase; + if ( distancesq > 5000 ) + { + nearestpane = -1; + distancesq = 5000; + } + nearestpanedistsq = distancesq; + glassexploderindex = 1; + while ( glassexploderindex < explodercount ) + { + glassexploder = glassexploderindex + exploderbase; + currentdistsq = distancesquared( origin, level.createfxexploders[ glassexploder ][ 0 ].v[ "origin" ] ); + if ( currentdistsq < nearestpanedistsq ) + { + nearestpane = glassexploder; + nearestpanedistsq = currentdistsq; + } + glassexploderindex++; + } + if ( nearestpane != -1 ) + { + exploder( nearestpane ); + level thread window_smash_wind_sound( origin ); + } +} + +window_smash_wind_sound( origin ) +{ + wind_ent = spawn( "script_origin", origin ); + wind_ent playloopsound( "evt_window_wind", 1 ); + level waittill( "game_ended" ); + wind_ent stoploopsound( 0,5 ); + wind_ent delete(); +} + +glassexploderssetupcorrectly( exploderbase, explodercount ) +{ + glassexploderindex = 0; + while ( glassexploderindex < explodercount ) + { + glassexploder = glassexploderindex + exploderbase; + if ( !isDefined( level.createfxexploders[ glassexploder ] ) ) + { +/# + assertmsg( "Glass exploder " + glassexploder + " is undefined" ); +#/ + return 0; + } + if ( isDefined( level.createfxexploders[ glassexploder ][ 0 ] ) || !isDefined( level.createfxexploders[ glassexploder ][ 0 ].v ) && !isDefined( level.createfxexploders[ glassexploder ][ 0 ].v[ "origin" ] ) ) + { +/# + assertmsg( "Glass exploder " + glassexploder + " is undefined" ); +#/ + return 0; + } + glassexploderindex++; + } + return 1; +} + +ragdoll_override( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, deathanimduration, einflictor, ragdoll_jib, body ) +{ + if ( smeansofdeath == "MOD_FALLING" ) + { + deathanim = body getcorpseanim(); + startfrac = deathanimduration / 1000; + if ( animhasnotetrack( deathanim, "start_ragdoll" ) ) + { + times = getnotetracktimes( deathanim, "start_ragdoll" ); + if ( isDefined( times ) ) + { + startfrac = times[ 0 ]; + } + } + self.body = body; + if ( !isDefined( self.switching_teams ) ) + { + thread maps/mp/gametypes/_deathicons::adddeathicon( body, self, self.team, 5 ); + } + thread startragdollonground( startfrac ); + return 1; + } + return 0; +} + +startragdollonground( deathanimduration ) +{ + timer = 0; + while ( timer < deathanimduration ) + { + if ( !isDefined( self ) || !isDefined( self.body ) ) + { + return; + } + if ( self isonground() ) + { + break; + } + else + { + wait 0,05; + timer += 0,05; + } + } + if ( !isDefined( self ) || !isDefined( self.body ) ) + { + return; + } + self.body startragdoll(); +} diff --git a/mp_vertigo/maps/mp/mp_vertigo_amb.gsc b/mp_vertigo/maps/mp/mp_vertigo_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_vertigo/maps/mp/mp_vertigo_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_vertigo/maps/mp/mp_vertigo_doors.gsc b/mp_vertigo/maps/mp/mp_vertigo_doors.gsc new file mode 100644 index 0000000..01aa7bc --- /dev/null +++ b/mp_vertigo/maps/mp/mp_vertigo_doors.gsc @@ -0,0 +1,326 @@ +#include maps/mp/_tacticalinsertion; +#include maps/mp/gametypes/_weaponobjects; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + triggers = getentarray( "trigger_multiple", "classname" ); + i = 0; + while ( i < 2 ) + { + door = getent( "vertigo_door" + i, "targetname" ); + o = ( i + 1 ) % 2; + otherdoor = getent( "vertigo_door" + o, "targetname" ); + if ( !isDefined( door ) ) + { + i++; + continue; + } + else right = anglesToForward( door.angles ); + right = vectorScale( right, 54 ); + door.opened = 1; + door.origin_opened = door.origin; + door.force_open_time = 0; + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "flip" ) + { + door.origin_closed = door.origin - right; + } + else + { + door.origin_closed = door.origin + right; + } + door.origin = door.origin_closed; + pointa = door getpointinbounds( 1, 1, 1 ); + pointb = door getpointinbounds( -1, -1, -1 ); + door.mins = getminpoint( pointa, pointb ) - door.origin; + door.maxs = getmaxpoint( pointa, pointb ) - door.origin; + door setcandamage( 1 ); + door allowbottargetting( 0 ); + door.triggers = []; + _a57 = triggers; + _k57 = getFirstArrayKey( _a57 ); + while ( isDefined( _k57 ) ) + { + trigger = _a57[ _k57 ]; + if ( isDefined( trigger.target ) ) + { + if ( trigger.target == door.targetname ) + { + trigger.mins = trigger getmins(); + trigger.maxs = trigger getmaxs(); + door.triggers[ door.triggers.size ] = trigger; + } + } + _k57 = getNextArrayKey( _a57, _k57 ); + } + door thread door_damage_think( otherdoor ); + if ( i > 0 ) + { + door thread door_notify_think( i ); + i++; + continue; + } + else + { + door thread door_think( i ); + } + i++; + } +} + +getminpoint( pointa, pointb ) +{ + point = []; + point[ 0 ] = pointa[ 0 ]; + point[ 1 ] = pointa[ 1 ]; + point[ 2 ] = pointa[ 2 ]; + i = 0; + while ( i < 3 ) + { + if ( point[ i ] > pointb[ i ] ) + { + point[ i ] = pointb[ i ]; + } + i++; + } + return ( point[ 0 ], point[ 1 ], point[ 2 ] ); +} + +getmaxpoint( pointa, pointb ) +{ + point = []; + point[ 0 ] = pointa[ 0 ]; + point[ 1 ] = pointa[ 1 ]; + point[ 2 ] = pointa[ 2 ]; + i = 0; + while ( i < 3 ) + { + if ( point[ i ] < pointb[ i ] ) + { + point[ i ] = pointb[ i ]; + } + i++; + } + return ( point[ 0 ], point[ 1 ], point[ 2 ] ); +} + +door_think( index ) +{ + wait ( 0,05 * index ); + self door_close(); + for ( ;; ) + { + wait 0,25; + if ( self door_should_open() ) + { + level notify( "dooropen" ); + self door_open(); + } + else + { + level notify( "doorclose" ); + self door_close(); + } + self movement_process(); + } +} + +door_notify_think( index ) +{ + wait ( 0,05 * index ); + self door_close(); + for ( ;; ) + { + event = level waittill_any_return( "dooropen", "doorclose" ); + if ( !isDefined( event ) ) + { + continue; + } + else + { + if ( event == "dooropen" ) + { + self door_open(); + } + else + { + self door_close(); + } + self movement_process(); + } + } +} + +door_should_open() +{ + if ( getTime() < self.force_open_time ) + { + return 1; + } + _a170 = self.triggers; + _k170 = getFirstArrayKey( _a170 ); + while ( isDefined( _k170 ) ) + { + trigger = _a170[ _k170 ]; + if ( trigger trigger_is_occupied() ) + { + return 1; + } + _k170 = getNextArrayKey( _a170, _k170 ); + } + return 0; +} + +door_open() +{ + if ( self.opened ) + { + return; + } + dist = distance( self.origin_opened, self.origin ); + frac = dist / 54; + time = clamp( frac * 0,3, 0,1, 0,3 ); + self moveto( self.origin_opened, time ); + self playsound( "mpl_drone_door_open" ); + self.opened = 1; +} + +door_close() +{ + if ( !self.opened ) + { + return; + } + dist = distance( self.origin_closed, self.origin ); + frac = dist / 54; + time = clamp( frac * 0,3, 0,1, 0,3 ); + self moveto( self.origin_closed, time ); + self playsound( "mpl_drone_door_close" ); + self.opened = 0; +} + +movement_process() +{ + moving = 0; + if ( self.opened ) + { + if ( distancesquared( self.origin, self.origin_opened ) > 0,001 ) + { + moving = 1; + } + } + else + { + if ( distancesquared( self.origin, self.origin_closed ) > 0,001 ) + { + moving = 1; + } + } + while ( moving ) + { + entities = gettouchingvolume( self.origin, self.mins, self.maxs ); + _a238 = entities; + _k238 = getFirstArrayKey( _a238 ); + while ( isDefined( _k238 ) ) + { + entity = _a238[ _k238 ]; + if ( isDefined( entity.classname ) && entity.classname == "grenade" ) + { + if ( !isDefined( entity.name ) ) + { + } + else if ( !isDefined( entity.owner ) ) + { + } + else watcher = entity.owner getwatcherforweapon( entity.name ); + if ( !isDefined( watcher ) ) + { + } + else watcher thread maps/mp/gametypes/_weaponobjects::waitanddetonate( entity, 0, undefined ); + } + if ( self.opened ) + { + } + else if ( isDefined( entity.classname ) && entity.classname == "auto_turret" ) + { + if ( !isDefined( entity.damagedtodeath ) || !entity.damagedtodeath ) + { + entity domaxdamage( self.origin + ( 0, 0, 1 ), self, self, 0, "MOD_CRUSH" ); + } + } + else + { + if ( isDefined( entity.model ) && entity.model == "t6_wpn_tac_insert_world" ) + { + entity maps/mp/_tacticalinsertion::destroy_tactical_insertion(); + } + } + _k238 = getNextArrayKey( _a238, _k238 ); + } + } +} + +trigger_is_occupied() +{ + entities = gettouchingvolume( self.origin, self.mins, self.maxs ); + _a294 = entities; + _k294 = getFirstArrayKey( _a294 ); + while ( isDefined( _k294 ) ) + { + entity = _a294[ _k294 ]; + if ( isalive( entity ) ) + { + if ( !isplayer( entity ) || isai( entity ) && isvehicle( entity ) ) + { + return 1; + } + } + _k294 = getNextArrayKey( _a294, _k294 ); + } + return 0; +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +door_damage_think( otherdoor ) +{ + self.maxhealth = 99999; + self.health = self.maxhealth; + for ( ;; ) + { + self waittill( "damage", damage, attacker, dir, point, mod, model, tag, part, weapon, flags ); + self.maxhealth = 99999; + self.health = self.maxhealth; + if ( mod == "MOD_PISTOL_BULLET" || mod == "MOD_RIFLE_BULLET" ) + { + self.force_open_time = getTime() + 1500; + otherdoor.force_open_time = getTime() + 1500; + } + } +} diff --git a/mp_vertigo/maps/mp/mp_vertigo_fx.gsc b/mp_vertigo/maps/mp/mp_vertigo_fx.gsc new file mode 100644 index 0000000..bcb6525 --- /dev/null +++ b/mp_vertigo/maps/mp/mp_vertigo_fx.gsc @@ -0,0 +1,78 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); +#using_animtree( "fxanim_props_dlc" ); + +main() +{ + precache_fxanim_props(); + precache_fxanim_props_dlc(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_vertigo_fx::main(); + maps/mp/createart/mp_vertigo_art::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_vertigo_tube_cloud" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_tube_cloud" ); + level._effect[ "fx_mp_vertigo_engine_exhaust" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_engine_exhaust" ); + level._effect[ "fx_mp_vertigo_hvac_steam" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_hvac_steam" ); + level._effect[ "fx_mp_vertigo_wind_cloud_med" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_wind_cloud_med" ); + level._effect[ "fx_mp_vertigo_wind_med" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_wind_med" ); + level._effect[ "fx_mp_vertigo_wind_med_dark" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_wind_med_dark" ); + level._effect[ "fx_mp_vertigo_ground_dust" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_ground_dust" ); + level._effect[ "fx_mp_vertigo_ground_dust_lite" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_ground_dust_lite" ); + level._effect[ "fx_mp_vertigo_dirt_swirl" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_dirt_swirl" ); + level._effect[ "fx_mp_vertigo_cloud_vista01" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_cloud_vista01" ); + level._effect[ "fx_mp_vertigo_cloud_vista02" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_cloud_vista02" ); + level._effect[ "fx_mp_vertigo_window_exploder" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_window_exploder" ); + level._effect[ "fx_mp_vertigo_window_exploder_sm" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_window_exploder_sm" ); + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_vertigo_leaves" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_leaves" ); + level._effect[ "fx_paper_interior_short" ] = loadfx( "debris/fx_paper_interior_short" ); + level._effect[ "fx_mp_vertigo_fountain" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_fountain" ); + level._effect[ "fx_mp_vertigo_fountain2" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_fountain2" ); + level._effect[ "fx_drone_red_blink" ] = loadfx( "light/fx_drone_red_blink" ); + level._effect[ "fx_vertigo_rectangle_light_skinny" ] = loadfx( "light/fx_vertigo_rectangle_light_skinny" ); + level._effect[ "fx_drone_light_yellow" ] = loadfx( "light/fx_drone_light_yellow" ); + level._effect[ "fx_vertigo_step_light" ] = loadfx( "light/fx_vertigo_step_light" ); + level._effect[ "fx_vertigo_step_light_sm" ] = loadfx( "light/fx_vertigo_step_light_sm" ); + level._effect[ "fx_mp_vertigo_pillar_lights" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_pillar_lights" ); + level._effect[ "fx_mp_vertigo_ceiling_light" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_ceiling_light" ); + level._effect[ "fx_mp_vertigo_ceiling_light_sm" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_ceiling_light_sm" ); + level._effect[ "fx_light_god_ray_mp_vertigo" ] = loadfx( "env/light/fx_light_god_ray_mp_vertigo" ); + level._effect[ "fx_light_god_ray_mp_vertigo_sm" ] = loadfx( "env/light/fx_light_god_ray_mp_vertigo_sm" ); + level._effect[ "fx_light_mag_ceiling_light" ] = loadfx( "light/fx_light_mag_ceiling_light" ); + level._effect[ "fx_landing_light_vertigo" ] = loadfx( "light/fx_landing_light_vertigo" ); + level._effect[ "fx_mp_vertigo_scanner_glare" ] = loadfx( "maps/mp_maps/fx_mp_vertigo_scanner_glare" ); + level._effect[ "fx_vertigo_vista_glare01" ] = loadfx( "light/fx_vertigo_vista_glare01" ); + level._effect[ "fx_vertigo_vista_glare02" ] = loadfx( "light/fx_vertigo_vista_glare02" ); + level._effect[ "fx_vertigo_rectangle_light01" ] = loadfx( "light/fx_vertigo_rectangle_light01" ); + level._effect[ "fx_lf_mp_vertigo_sun1" ] = loadfx( "lens_flares/fx_lf_mp_vertigo_sun1" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "wirespark_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "stair_chain" ] = %fxanim_mp_ver_stair_chain_sign_anim; + level.scr_anim[ "fxanim_props" ][ "roofvent_modern" ] = %fxanim_gp_roofvent_slow_anim; + level.scr_anim[ "fxanim_props" ][ "cell_antenna" ] = %fxanim_gp_cell_antenna_anim; + level.scr_anim[ "fxanim_props" ][ "antenna_rooftop" ] = %fxanim_gp_antenna_rooftop_anim; + level.scr_anim[ "fxanim_props" ][ "deck_antenna" ] = %fxanim_gp_deck_antenna_anim; + level.scr_anim[ "fxanim_props" ][ "ant_rooftop_small" ] = %fxanim_gp_antenna_rooftop_small_anim; + level.scr_anim[ "fxanim_props" ][ "sat_dish" ] = %fxanim_gp_satellite_dish_anim; + level.scr_anim[ "fxanim_props" ][ "com_tower" ] = %fxanim_gp_communication_tower_anim; +} + +precache_fxanim_props_dlc() +{ + level.scr_anim[ "fxanim_props_dlc" ][ "hook" ] = %fxanim_mp_ver_hook_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "blinds_impact" ] = %fxanim_gp_blinds_long_impact_anim; + level.scr_anim[ "fxanim_props_dlc" ][ "blinds_idle" ] = %fxanim_gp_blinds_long_idle_anim; +} diff --git a/mp_village/aitype/enemy_dog_mp.gsc b/mp_village/aitype/enemy_dog_mp.gsc new file mode 100644 index 0000000..17b711f --- /dev/null +++ b/mp_village/aitype/enemy_dog_mp.gsc @@ -0,0 +1,42 @@ + +main() +{ + self.accuracy = 1; + self.animstatedef = ""; + self.animtree = "dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "dog"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/character_mp_german_shepherd::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + character/character_mp_german_shepherd::precache(); +} diff --git a/mp_village/character/character_mp_german_shepherd.gsc b/mp_village/character/character_mp_german_shepherd.gsc new file mode 100644 index 0000000..00a4879 --- /dev/null +++ b/mp_village/character/character_mp_german_shepherd.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "german_shepherd" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "german_shepherd" ); +} diff --git a/mp_village/maps/mp/createart/mp_village_art.gsc b/mp_village/maps/mp/createart/mp_village_art.gsc new file mode 100644 index 0000000..b12e7ac --- /dev/null +++ b/mp_village/maps/mp/createart/mp_village_art.gsc @@ -0,0 +1,18 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + visionsetnaked( "mp_village", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1 ); + setdvar( "r_lightGridContrast", 0 ); +} diff --git a/mp_village/maps/mp/createfx/mp_village_fx.gsc b/mp_village/maps/mp/createfx/mp_village_fx.gsc new file mode 100644 index 0000000..6e72d8c --- /dev/null +++ b/mp_village/maps/mp/createfx/mp_village_fx.gsc @@ -0,0 +1,1030 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1813,99, -1057,09, 105,081 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_tower" ); + ent.v[ "origin" ] = ( -191,62, 296,453, 414,336 ); + ent.v[ "angles" ] = ( 291,776, 308,388, 1,73155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -210,571, 316,289, 356,25 ); + ent.v[ "angles" ] = ( 282, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -230,998, 235,91, 433,022 ); + ent.v[ "angles" ] = ( 282, 304, -17 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -147,721, 335,748, 400,938 ); + ent.v[ "angles" ] = ( 274, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -244,801, 271,62, 570,051 ); + ent.v[ "angles" ] = ( 282,163, 294,467, 20,3233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_med" ); + ent.v[ "origin" ] = ( -248,784, 275,206, 594,056 ); + ent.v[ "angles" ] = ( 298,271, 319,756, -1,84345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_med" ); + ent.v[ "origin" ] = ( -217,965, 251,159, 512,247 ); + ent.v[ "angles" ] = ( 286,281, 321,123, -3,11529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -558,044, -759,024, 30 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1346,47, -2216,44, 48,1873 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1371,65, -1164,77, 53 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1556,65, -2526,23, 68,055 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1330,26, -1845,9, 63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1785,33, -765,98, 71 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1619,11, -313,069, 54 ); + ent.v[ "angles" ] = ( 0, 111, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1090,24, 183,883, 63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -413,984, 196,57, 68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 337,617, 502,419, 53,3354 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 146 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 887,008, 1175,17, 48,401 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 968,22, 1644,06, 35,7693 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 141 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1239,62, 921,875, 22,625 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1791,78, 52,5281, 41,662 ); + ent.v[ "angles" ] = ( 0, 134, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1975,07, -361,061, 62,7907 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1958,69, -674,701, 89,5614 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 128 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 197,522, -1232,76, 18,2266 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 134 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 779,89, -1271,39, 68,979 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 199,043, -1775,94, 41,6918 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -378,84, 407,307, 1,45424 ); + ent.v[ "angles" ] = ( 358,798, 355,184, -1,78151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_fire_sm" ); + ent.v[ "origin" ] = ( -364,485, 405,894, 3,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -352,909, 403,105, -3,8992 ); + ent.v[ "angles" ] = ( 346,02, 0,747598, -3,09166 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1180,88, 988,778, 63 ); + ent.v[ "angles" ] = ( 359, 131, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1124,68, 1267,53, 59 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 162 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 32,072, -423,24, 61,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 352 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 235,832, -265,525, 207,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 265 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -483,932, -1081,38, 76,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 287 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1163,42, -1382,08, 63,5 ); + ent.v[ "angles" ] = ( 0, 315, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -1165,87, -1113,05, 193,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -1822,56, -1542,7, 145,182 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -1755,26, -1242,48, 74,125 ); + ent.v[ "angles" ] = ( 359,708, 75, -0,956315 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1781,29, -1479,9, 25 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -651,754, 509,066, 119,508 ); + ent.v[ "angles" ] = ( 359,307, 95,0041, 89,9016 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -1169,88, -748,4, 80,3306 ); + ent.v[ "angles" ] = ( 2,92213, 94,0682, 76,0184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -1819,67, -98,3161, 66,71 ); + ent.v[ "angles" ] = ( 359,61, 69, -0,920557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -1875,49, -4,31169, 40,1502 ); + ent.v[ "angles" ] = ( 359,553, 73, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1836,25, -238,945, 74,5251 ); + ent.v[ "angles" ] = ( 0,207931, 99, 0,978301 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -1600,68, 627,364, 57,5066 ); + ent.v[ "angles" ] = ( 0,207931, 99, 0,978301 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( -501,126, 1307,26, 64 ); + ent.v[ "angles" ] = ( 359,212, 162,995, 0,61552 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -115,218, 368,125, 442,786 ); + ent.v[ "angles" ] = ( 311,574, 10,8533, -27,6896 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1410,44, -576,939, 38,7539 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 137 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -2090,97, -2277,18, 77,6188 ); + ent.v[ "angles" ] = ( 1,49495, 165,949, 71,2984 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 1082,09, 2083,07, 29,4473 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 141 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_papers" ); + ent.v[ "origin" ] = ( -651,623, 1051,25, 16 ); + ent.v[ "angles" ] = ( 354, 148, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_papers" ); + ent.v[ "origin" ] = ( 780,66, -605,108, 10 ); + ent.v[ "angles" ] = ( 355, 100, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_papers" ); + ent.v[ "origin" ] = ( -1798,52, -1729,65, 7,99999 ); + ent.v[ "angles" ] = ( 350,001, 21,9847, 0,158839 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( 884,348, 675,346, 19,2016 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 117 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( 1345,5, 588,924, 18,4655 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( 1775,24, -7,4167, 35,6556 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( 1384,49, -1358,68, 21,0023 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( 513,1, -1248,82, 28,5544 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( -253,587, -1731,46, -12,4567 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( -1794,98, -1507,68, 107,064 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( -1772,46, -1218,43, 60,7191 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_sm" ); + ent.v[ "origin" ] = ( 174,843, -389,479, 253,125 ); + ent.v[ "angles" ] = ( 27, 358, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_dust_ceiling" ); + ent.v[ "origin" ] = ( 1185,28, 132,521, 228,36 ); + ent.v[ "angles" ] = ( 358,071, 2,03485, -2,06856 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 936,636, 177,256, 190,125 ); + ent.v[ "angles" ] = ( 23,996, 0, 0,44519 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 925,107, 19,4493, 178,469 ); + ent.v[ "angles" ] = ( 24, 359, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 1339,55, 279,875, 184,595 ); + ent.v[ "angles" ] = ( 31,1604, 278,623, 4,91071 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smoke_vista" ); + ent.v[ "origin" ] = ( -2099,1, 1048,5, 28,4734 ); + ent.v[ "angles" ] = ( 5, 121, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_smoke_vista" ); + ent.v[ "origin" ] = ( -770,419, -4674,93, 23,078 ); + ent.v[ "angles" ] = ( 296,659, 125,262, -162,638 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 912,848, 26,5797, 221,029 ); + ent.v[ "angles" ] = ( 8,72117, 235,36, 52,9501 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 900,848, 174,059, 240,62 ); + ent.v[ "angles" ] = ( 359,703, 222,057, 51,825 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 913,006, 259,51, 230,232 ); + ent.v[ "angles" ] = ( 353,981, 216,367, 52,1394 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 1376,1, 268,679, 219,875 ); + ent.v[ "angles" ] = ( 32,293, 32,3817, -44,3969 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 1284,71, 285,308, 240,087 ); + ent.v[ "angles" ] = ( 22,669, 20,8383, -49,897 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 973,84, 692,361, 246,125 ); + ent.v[ "angles" ] = ( 32,4936, 193,226, 30,4891 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 908,378, 1303,28, 159,172 ); + ent.v[ "angles" ] = ( 25,6135, 109,745, -22,2253 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 918,094, 178,839, 230,125 ); + ent.v[ "angles" ] = ( 40,1079, 155,323, 5,99661 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 913,077, 90,231, 229,452 ); + ent.v[ "angles" ] = ( 40,1079, 155,323, 5,99661 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -299,297, -807,207, 58,106 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1873,37, -651,692, 57,739 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1662,52, 402,372, 59,9872 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 1319,87, 921,454, 53,2581 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( 942,983, 341,61, 425,739 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( 291,429, -593,014, 407,06 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -822,937, -1175,59, 430,223 ); + ent.v[ "angles" ] = ( 277,613, 203,088, 165,729 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_tin_hat_sm" ); + ent.v[ "origin" ] = ( -986,871, -342,934, 269,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -358,229, 1461,05, 100,125 ); + ent.v[ "angles" ] = ( 15,9336, 175,648, 15,162 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 228,178, 1011,59, 204,125 ); + ent.v[ "angles" ] = ( 0, 179, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -297,788, 922,356, 204,125 ); + ent.v[ "angles" ] = ( 1, 87,9966, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -276,759, 1281,41, 210,125 ); + ent.v[ "angles" ] = ( 0,875146, 59,993, 0,514866 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 214,797, 1232,47, 63,125 ); + ent.v[ "angles" ] = ( 359,252, 166,985, 0,686445 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -349,762, 1449,72, 63,125 ); + ent.v[ "angles" ] = ( 0,631591, 337,985, -0,795021 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 781,374, -808,218, 134,125 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 783,156, -714,052, 135,875 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 784,744, -906,287, 135,875 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 975,973, -713,423, 134,875 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 980,667, -808,839, 135,875 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_drone_rectangle_light_03" ); + ent.v[ "origin" ] = ( 977,268, -968,699, 135,875 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -76,4057, 1204,65, 131,875 ); + ent.v[ "angles" ] = ( 90, 1,09202, 91,092 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 1400,8, 279,875, 354,18 ); + ent.v[ "angles" ] = ( 18,8097, 17,4381, -51,1021 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 1306,53, 286, 233,551 ); + ent.v[ "angles" ] = ( 9,11614, 176,045, 52,9863 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 898, 114,4, 246,618 ); + ent.v[ "angles" ] = ( 1,86742, 78,6708, -41,0302 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 1294, 286, 358,222 ); + ent.v[ "angles" ] = ( 18,8097, 17,4381, -51,1021 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( 952,644, 685,316, 211,125 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -1156,81, -1210,64, 231,125 ); + ent.v[ "angles" ] = ( 21,378, 181,56, 24,8377 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -1171,42, -1194,04, 209,125 ); + ent.v[ "angles" ] = ( 338,969, 248,779, 56,8713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_mp_village_sun1" ); + ent.v[ "origin" ] = ( -38009,8, 47714,5, 28695,4 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 945,914, 1190,32, 152 ); + ent.v[ "angles" ] = ( 25,2608, 174,294, 23,0988 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 942,484, 1141,01, 155,207 ); + ent.v[ "angles" ] = ( 25,8009, 173,551, 25,769 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 939,005, 1098,78, 157,686 ); + ent.v[ "angles" ] = ( 24,8771, 160,285, 22,7013 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 935,66, 1055,82, 159,812 ); + ent.v[ "angles" ] = ( 21,5704, 162,094, 18,5521 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 920,113, 1210,65, 164,104 ); + ent.v[ "angles" ] = ( 8,9977, 234,539, 60,9576 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( 920,44, 1302,62, 168 ); + ent.v[ "angles" ] = ( 47, 179, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 926,183, 1118,53, 157,164 ); + ent.v[ "angles" ] = ( 19,4211, 228,395, 59,4418 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -549,859, -1253,8, 135,159 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( -549,077, -1164,38, 135,205 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_rectangle_light_01" ); + ent.v[ "origin" ] = ( -960,26, -1375,54, 134,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1848,66, -1397,18, 92,8647 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1230,53, -1841,74, 46 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -807,588, -1606,77, 36,5376 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -340,739, -1793,53, 29,9801 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 53,9012, -1650,58, 3,15843 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 461,622, -1132,94, 59,5028 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 252,204, -928,109, 45,0477 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( 472,348, 1482,87, 53 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -1759,4, 35,3998, 48,7831 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( 600,239, -1214,29, 33,5164 ); + ent.v[ "angles" ] = ( 351,709, 137,106, -0,714527 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( 113,833, -1703,52, 13,8842 ); + ent.v[ "angles" ] = ( 351,829, 143,167, -1,58309 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -405,78, -1822,65, 34,8997 ); + ent.v[ "angles" ] = ( 351,829, 143,167, -1,58309 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -1242,57, -1887,42, 36 ); + ent.v[ "angles" ] = ( 351,829, 143,167, -1,58309 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_grass" ); + ent.v[ "origin" ] = ( -1819,15, -967,84, 62,6134 ); + ent.v[ "angles" ] = ( 353,645, 91,755, 5,38352 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -2076,22, 1091,22, 4,05616 ); + ent.v[ "angles" ] = ( 283,397, 277,182, 26,1863 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -817,744, -4709,2, 1 ); + ent.v[ "angles" ] = ( 282, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -805,943, -4686,76, -12 ); + ent.v[ "angles" ] = ( 282, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( 813,546, 2758,29, 128 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( 1723,89, 2220,71, 179,746 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( 63,9353, 2214,58, 119,624 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( -2608,83, 593,16, 156,903 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 106 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( 1307,28, -1948,94, 93,1001 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( -209,649, -2376,22, 130,134 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( -1246,72, -2891,95, 93,3384 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 190 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_vista_dust" ); + ent.v[ "origin" ] = ( -2359,62, -2768,92, 126,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_express_train_blow_dust" ); + ent.v[ "origin" ] = ( 912,7, 76,0871, 67,9724 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 146 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -2124,18, 1052,12, 12,5861 ); + ent.v[ "angles" ] = ( 284,961, 266,703, 60,3493 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "origin" ] = ( -2098,48, -2364,86, 7,8243 ); + ent.v[ "angles" ] = ( 326,356, 10,272, -18,1131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_md_runner" ); + ent.v[ "origin" ] = ( -1797,63, -1819,84, 358,971 ); + ent.v[ "angles" ] = ( 54,1716, 331,969, -34,4583 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -2093,66, -2367,55, -3,59778 ); + ent.v[ "angles" ] = ( 346,967, 359,667, -18,8306 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_single_glare" ); + ent.v[ "origin" ] = ( -232,778, 1421,11, 252,875 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( 414,294, -151,083, 137,512 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_tube_light" ); + ent.v[ "origin" ] = ( 414,61, 34,1189, 138,393 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_barrel_fire" ); + ent.v[ "origin" ] = ( -200,968, -1135,08, 32,5375 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_fire_med" ); + ent.v[ "origin" ] = ( -744,447, -4687,3, -6,99999 ); + ent.v[ "angles" ] = ( 282, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_village_rectangle_light_01" ); + ent.v[ "origin" ] = ( -344,857, -1255,08, 166,875 ); + ent.v[ "angles" ] = ( 90, 180, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,152, 143,133, 257,051 ); + ent.v[ "angles" ] = ( 14,6493, 219,838, 57,9798 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,876, 141,162, 236,842 ); + ent.v[ "angles" ] = ( 15,703, 221,6, 58,441 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,665, 141,467, 215,101 ); + ent.v[ "angles" ] = ( 16,7424, 223,379, 58,9382 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,683, 137,658, 195,015 ); + ent.v[ "angles" ] = ( 16,7424, 223,379, 58,9382 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,561, 36,6521, 193,65 ); + ent.v[ "angles" ] = ( 12,5037, 216,365, 57,1641 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,543, 40,4613, 213,736 ); + ent.v[ "angles" ] = ( 14,6493, 219,838, 57,9798 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,754, 40,1557, 235,477 ); + ent.v[ "angles" ] = ( 15,703, 221,6, 58,441 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,03, 42,1269, 255,686 ); + ent.v[ "angles" ] = ( 14,1175, 218,964, 57,7626 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,242, 239,73, 196,02 ); + ent.v[ "angles" ] = ( 14,2521, 221,329, 57,4713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 899,224, 243,54, 216,106 ); + ent.v[ "angles" ] = ( 12,4374, 220,042, 58,2885 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 899,435, 243,234, 237,847 ); + ent.v[ "angles" ] = ( 11,9601, 215,506, 56,9821 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,711, 245,205, 258,056 ); + ent.v[ "angles" ] = ( 13,0445, 217,228, 57,3548 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 1356,57, 279,182, 254,086 ); + ent.v[ "angles" ] = ( 349,552, 50,6812, -60,8956 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 1356,21, 279,19, 232,922 ); + ent.v[ "angles" ] = ( 355,023, 41,0474, -59,5981 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 1353,9, 279,184, 212,182 ); + ent.v[ "angles" ] = ( 355,023, 41,0474, -59,5981 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 1352,74, 286,508, 194,909 ); + ent.v[ "angles" ] = ( 13,6987, 62,8947, -60,7796 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -323,464, -466,393, 44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -142,017, -73,3138, 44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -171,254, -619,333, 51 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_lg_light" ); + ent.v[ "origin" ] = ( -31,754, -301,623, 36 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_hole_god_ray" ); + ent.v[ "origin" ] = ( 1005,18, 1318,32, 178,504 ); + ent.v[ "angles" ] = ( 27,9938, 332,352, -22,222 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_hole_god_ray" ); + ent.v[ "origin" ] = ( 1090,45, 1297,82, 170,996 ); + ent.v[ "angles" ] = ( 30,4315, 327,456, -25,5511 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_hole_god_ray" ); + ent.v[ "origin" ] = ( 1136,72, 1294,88, 160,954 ); + ent.v[ "angles" ] = ( 30,4948, 327,476, -26,1648 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_hole_god_ray" ); + ent.v[ "origin" ] = ( 1195,15, 1226,48, 159,977 ); + ent.v[ "angles" ] = ( 29,9515, 331,597, -23,9325 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_statue_water" ); + ent.v[ "origin" ] = ( -156,217, 36,656, 60,3238 ); + ent.v[ "angles" ] = ( 270, 359,97, 179,03 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( -1017,28, -1058,86, 220,773 ); + ent.v[ "angles" ] = ( 6,87046, 45,9913, -50,977 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -290,411, 913,023, 222,125 ); + ent.v[ "angles" ] = ( 17,4239, 184,067, -76,3969 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -144,233, 900,932, 220,125 ); + ent.v[ "angles" ] = ( 39,6414, 190,921, -73,0574 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -302,441, 915,411, 263,125 ); + ent.v[ "angles" ] = ( 18, 273, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray" ); + ent.v[ "origin" ] = ( -140,095, 906,855, 219,125 ); + ent.v[ "angles" ] = ( 42,705, 347,652, 72,2191 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_light_dust_motes_md" ); + ent.v[ "origin" ] = ( -353,056, 1020,95, 206,515 ); + ent.v[ "angles" ] = ( 359,93, 355,997, -0,997716 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,999, 177,858, 197,966 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,989, 178,457, 217,576 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,994, 178,381, 237,001 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 897,984, 178,876, 256,689 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,004, 79,6484, 261,293 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,014, 79,1534, 241,604 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,009, 79,2299, 222,18 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_village" ); + ent.v[ "origin" ] = ( 898,02, 78,6311, 202,57 ); + ent.v[ "angles" ] = ( 11,267, 57,2399, -57,898 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 136,857, -339,268, 236,125 ); + ent.v[ "angles" ] = ( 1,02272, 217,865, 59,1694 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 141,63, -351,598, 249,125 ); + ent.v[ "angles" ] = ( 36,1769, 187,871, 24,4501 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 135,422, -410,54, 262,373 ); + ent.v[ "angles" ] = ( 28,3807, 204,441, 33,3643 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -1540,86, -710,073, 61,2767 ); + ent.v[ "angles" ] = ( 352,402, 207,901, 90,8231 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -1529,09, -705,57, 62,0473 ); + ent.v[ "angles" ] = ( 352,402, 207,901, 89,8231 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -892,788, 623,037, 71,6458 ); + ent.v[ "angles" ] = ( 352,402, 139,9, 90,8233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_smoke_xsm" ); + ent.v[ "origin" ] = ( -884,204, 613,814, 72,4164 ); + ent.v[ "angles" ] = ( 352,402, 139,9, 89,8233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -945,821, 641,789, 28,4432 ); + ent.v[ "angles" ] = ( 288,722, 291,032, 18,3503 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1028,82, 580,346, 30,5602 ); + ent.v[ "angles" ] = ( 288,722, 291,032, 18,3503 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1575,09, -768,375, 24,1325 ); + ent.v[ "angles" ] = ( 288,722, 9,03239, 18,3503 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_slums_dark_smoke_sm" ); + ent.v[ "origin" ] = ( -1532,25, -862,331, 26,2496 ); + ent.v[ "angles" ] = ( 288,722, 9,03239, 18,3503 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_window_god_ray_sm" ); + ent.v[ "origin" ] = ( 133,112, -445,545, 230,906 ); + ent.v[ "angles" ] = ( 40,1869, 82,7384, -56,261 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_village_single_glare" ); + ent.v[ "origin" ] = ( -72,9229, 1563,44, 252,712 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; +} diff --git a/mp_village/maps/mp/mp_village.gsc b/mp_village/maps/mp/mp_village.gsc new file mode 100644 index 0000000..2b3247d --- /dev/null +++ b/mp_village/maps/mp/mp_village.gsc @@ -0,0 +1,27 @@ +#include maps/mp/_compass; +#include maps/mp/_utility; + +main() +{ + level.levelspawndvars = ::levelspawndvars; + maps/mp/mp_village_fx::main(); + maps/mp/_load::main(); + maps/mp/mp_village_amb::main(); + maps/mp/_compass::setupminimap( "compass_map_mp_village" ); + game[ "strings" ][ "war_callsign_a" ] = &"MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings" ][ "war_callsign_b" ] = &"MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings" ][ "war_callsign_c" ] = &"MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings" ][ "war_callsign_d" ] = &"MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings" ][ "war_callsign_e" ] = &"MPUI_CALLSIGN_MAPNAME_E"; + game[ "strings_menu" ][ "war_callsign_a" ] = "@MPUI_CALLSIGN_MAPNAME_A"; + game[ "strings_menu" ][ "war_callsign_b" ] = "@MPUI_CALLSIGN_MAPNAME_B"; + game[ "strings_menu" ][ "war_callsign_c" ] = "@MPUI_CALLSIGN_MAPNAME_C"; + game[ "strings_menu" ][ "war_callsign_d" ] = "@MPUI_CALLSIGN_MAPNAME_D"; + game[ "strings_menu" ][ "war_callsign_e" ] = "@MPUI_CALLSIGN_MAPNAME_E"; +} + +levelspawndvars( reset_dvars ) +{ + ss = level.spawnsystem; + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); +} diff --git a/mp_village/maps/mp/mp_village_amb.gsc b/mp_village/maps/mp/mp_village_amb.gsc new file mode 100644 index 0000000..df33b64 --- /dev/null +++ b/mp_village/maps/mp/mp_village_amb.gsc @@ -0,0 +1,6 @@ +#include maps/mp/_ambientpackage; +#include maps/mp/_utility; + +main() +{ +} diff --git a/mp_village/maps/mp/mp_village_fx.gsc b/mp_village/maps/mp/mp_village_fx.gsc new file mode 100644 index 0000000..d8ecbac --- /dev/null +++ b/mp_village/maps/mp/mp_village_fx.gsc @@ -0,0 +1,59 @@ +#include maps/mp/_utility; + +#using_animtree( "fxanim_props" ); + +main() +{ + precache_fxanim_props(); + precache_scripted_fx(); + precache_createfx_fx(); + maps/mp/createfx/mp_village_fx::main(); + maps/mp/createart/mp_village_art::main(); +} + +precache_scripted_fx() +{ +} + +precache_createfx_fx() +{ + level._effect[ "fx_mp_light_dust_motes_md" ] = loadfx( "maps/mp_maps/fx_mp_light_dust_motes_md" ); + level._effect[ "fx_mp_express_train_blow_dust" ] = loadfx( "maps/mp_maps/fx_mp_express_train_blow_dust" ); + level._effect[ "fx_mp_village_grass" ] = loadfx( "maps/mp_maps/fx_mp_village_grass" ); + level._effect[ "fx_mp_village_papers" ] = loadfx( "maps/mp_maps/fx_mp_village_papers" ); + level._effect[ "fx_mp_village_dust_sm" ] = loadfx( "maps/mp_maps/fx_mp_village_dust_sm" ); + level._effect[ "fx_mp_village_dust_ceiling" ] = loadfx( "maps/mp_maps/fx_mp_village_dust_ceiling" ); + level._effect[ "fx_insects_swarm_lg_light" ] = loadfx( "bio/insects/fx_insects_swarm_lg_light" ); + level._effect[ "fx_mp_elec_spark_burst_md_runner" ] = loadfx( "maps/mp_maps/fx_mp_elec_spark_burst_md_runner" ); + level._effect[ "fx_mp_village_vista_dust" ] = loadfx( "maps/mp_maps/fx_mp_village_vista_dust" ); + level._effect[ "fx_mp_village_smoke_fire_lg" ] = loadfx( "maps/mp_maps/fx_mp_village_smoke_fire_lg" ); + level._effect[ "fx_mp_carrier_smoke_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_carrier_smoke_fire_sm" ); + level._effect[ "fx_mp_village_smoke_fire_med" ] = loadfx( "maps/mp_maps/fx_mp_village_smoke_fire_med" ); + level._effect[ "fx_mp_slums_fire_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_fire_sm" ); + level._effect[ "fx_mp_village_barrel_fire" ] = loadfx( "maps/mp_maps/fx_mp_village_barrel_fire" ); + level._effect[ "fx_mp_slums_dark_smoke_sm" ] = loadfx( "maps/mp_maps/fx_mp_slums_dark_smoke_sm" ); + level._effect[ "fx_mp_village_smoke_tower" ] = loadfx( "maps/mp_maps/fx_mp_village_smoke_tower" ); + level._effect[ "fx_mp_village_smoke_med" ] = loadfx( "maps/mp_maps/fx_mp_village_smoke_med" ); + level._effect[ "fx_mp_village_smoke_xsm" ] = loadfx( "maps/mp_maps/fx_mp_village_smoke_xsm" ); + level._effect[ "fx_mp_smoke_vista" ] = loadfx( "maps/mp_maps/fx_mp_smoke_vista" ); + level._effect[ "fx_smk_tin_hat_sm" ] = loadfx( "smoke/fx_smk_tin_hat_sm" ); + level._effect[ "fx_window_god_ray" ] = loadfx( "light/fx_window_god_ray" ); + level._effect[ "fx_window_god_ray_village" ] = loadfx( "light/fx_window_god_ray_village" ); + level._effect[ "fx_window_god_ray_sm" ] = loadfx( "light/fx_window_god_ray_sm" ); + level._effect[ "fx_drone_rectangle_light_03" ] = loadfx( "light/fx_drone_rectangle_light_03" ); + level._effect[ "fx_village_tube_light" ] = loadfx( "light/fx_village_tube_light" ); + level._effect[ "fx_village_tube_light_sq" ] = loadfx( "light/fx_village_tube_light_sq" ); + level._effect[ "fx_village_rectangle_light_01" ] = loadfx( "light/fx_village_rectangle_light_01" ); + level._effect[ "fx_mp_village_single_glare" ] = loadfx( "maps/mp_maps/fx_mp_village_single_glare" ); + level._effect[ "fx_mp_village_hole_god_ray" ] = loadfx( "maps/mp_maps/fx_mp_village_hole_god_ray" ); + level._effect[ "fx_mp_village_statue_water" ] = loadfx( "maps/mp_maps/fx_mp_village_statue_water" ); + level._effect[ "fx_lf_mp_village_sun1" ] = loadfx( "lens_flares/fx_lf_mp_village_sun1" ); +} + +precache_fxanim_props() +{ + level.scr_anim[ "fxanim_props" ][ "sparking_wires_med" ] = %fxanim_gp_wirespark_med_anim; + level.scr_anim[ "fxanim_props" ][ "windsock" ] = %fxanim_gp_windsock_anim; + level.scr_anim[ "fxanim_props" ][ "wire_coil_01" ] = %fxanim_gp_wire_coil_01_anim; + level.scr_anim[ "fxanim_props" ][ "sign_sway_lrg" ] = %fxanim_gp_sign_sway_lrg_anim; +} diff --git a/patch_mp/maps/mp/animscripts/dog_combat.gsc b/patch_mp/maps/mp/animscripts/dog_combat.gsc new file mode 100644 index 0000000..54d4f91 --- /dev/null +++ b/patch_mp/maps/mp/animscripts/dog_combat.gsc @@ -0,0 +1,106 @@ +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + debug_anim_print( "dog_combat::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); +/# + if ( !debug_allow_combat() ) + { + combatidle(); + return; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + combatidle(); + return; + } +/# + assert( isDefined( self.enemy ) ); +#/ + if ( !isalive( self.enemy ) ) + { + combatidle(); + return; + } + if ( isplayer( self.enemy ) ) + { + self meleebiteattackplayer( self.enemy ); + } +} + +combatidle() +{ + self set_orient_mode( "face enemy" ); + self animmode( "zonly_physics", 0 ); + idleanims = []; + idleanims[ 0 ] = "combat_attackidle"; + idleanims[ 1 ] = "combat_attackidle_bark"; + idleanims[ 2 ] = "combat_attackidle_growl"; + idleanim = random( idleanims ); + debug_anim_print( "dog_combat::combatIdle() - Setting " + idleanim ); + self setanimstate( idleanim ); + self maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_combat::combatIdle() - " + idleanim + " notify done." ); +} + +meleebiteattackplayer( player ) +{ + self set_orient_mode( "face enemy" ); + self animmode( "gravity", 0 ); + self.safetochangescript = 0; + if ( use_low_attack() ) + { + self animmode( "angle deltas", 0 ); + self setanimstate( "combat_attack_player_close_range" ); + wait 0,35; + if ( isplayer( self.enemy ) && self.enemy getstance() == "prone" ) + { + self meleewithoffset( vectorScale( ( 0, 0, -1 ), 9 ) ); + } + else + { + self melee(); + } + self maps/mp/animscripts/shared::donotetracksfortime( 1,2, "done" ); + self animmode( "gravity", 0 ); + } + else + { + attack_time = 1,2 + randomfloat( 0,4 ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_run_attack" ); + self setanimstate( "combat_attack_run" ); + self maps/mp/animscripts/shared::donotetracksfortime( attack_time, "done", ::handlemeleebiteattacknotetracks, player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_run notify done." ); + } + self.safetochangescript = 1; + self animmode( "none", 0 ); +} + +handlemeleebiteattacknotetracks( note, player ) +{ + if ( note == "dog_melee" ) + { + self melee( anglesToForward( self.angles ) ); + } +} + +use_low_attack() +{ + if ( isplayer( self.enemy ) ) + { + if ( self.enemy getstance() == "prone" ) + { + attack_height = self.origin[ 2 ] + 16; + if ( self.enemy.origin[ 2 ] < attack_height ) + { + return 1; + } + } + } + return 0; +} diff --git a/patch_mp/maps/mp/animscripts/dog_init.gsc b/patch_mp/maps/mp/animscripts/dog_init.gsc new file mode 100644 index 0000000..c8439f7 --- /dev/null +++ b/patch_mp/maps/mp/animscripts/dog_init.gsc @@ -0,0 +1,62 @@ +#include maps/mp/animscripts/dog_combat; +#include maps/mp/animscripts/dog_move; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + level.dog_debug_orient = 0; + level.dog_debug_anims = 0; + level.dog_debug_anims_ent = 0; + level.dog_debug_turns = 0; + debug_anim_print( "dog_init::main() " ); + maps/mp/animscripts/dog_move::setup_sound_variables(); + anim_get_dvar_int( "debug_dog_sound", "0" ); + anim_get_dvar_int( "debug_dog_notetracks", "0" ); + anim_get_dvar_int( "dog_force_walk", 0 ); + anim_get_dvar_int( "dog_force_run", 0 ); + self.ignoresuppression = 1; + self.chatinitialized = 0; + self.nododgemove = 1; + level.dogrunturnspeed = 20; + level.dogrunpainspeed = 20; + self.meleeattackdist = 0; + self thread setmeleeattackdist(); + self.a = spawnstruct(); + self.a.pose = "stand"; + self.a.nextstandinghitdying = 0; + self.a.movement = "run"; + set_anim_playback_rate(); + self.suppressionthreshold = 1; + self.disablearrivals = 0; + level.dogstoppingdistsq = 3416,82; + self.stopanimdistsq = level.dogstoppingdistsq; + self.pathenemyfightdist = 512; + self settalktospecies( "dog" ); + level.lastdogmeleeplayertime = 0; + level.dogmeleeplayercounter = 0; + if ( !isDefined( level.dog_hits_before_kill ) ) + { + level.dog_hits_before_kill = 1; + } +} + +set_anim_playback_rate() +{ + self.animplaybackrate = 0,9 + randomfloat( 0,2 ); + self.moveplaybackrate = 1; +} + +setmeleeattackdist() +{ + self endon( "death" ); + while ( 1 ) + { + self.meleeattackdist = 0; + if ( self maps/mp/animscripts/dog_combat::use_low_attack() ) + { + self.meleeattackdist = 64; + } + wait 1; + } +} diff --git a/patch_zm/maps/mp/animscripts/dog_combat.gsc b/patch_zm/maps/mp/animscripts/dog_combat.gsc new file mode 100644 index 0000000..54d4f91 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_combat.gsc @@ -0,0 +1,106 @@ +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + debug_anim_print( "dog_combat::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); +/# + if ( !debug_allow_combat() ) + { + combatidle(); + return; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + combatidle(); + return; + } +/# + assert( isDefined( self.enemy ) ); +#/ + if ( !isalive( self.enemy ) ) + { + combatidle(); + return; + } + if ( isplayer( self.enemy ) ) + { + self meleebiteattackplayer( self.enemy ); + } +} + +combatidle() +{ + self set_orient_mode( "face enemy" ); + self animmode( "zonly_physics", 0 ); + idleanims = []; + idleanims[ 0 ] = "combat_attackidle"; + idleanims[ 1 ] = "combat_attackidle_bark"; + idleanims[ 2 ] = "combat_attackidle_growl"; + idleanim = random( idleanims ); + debug_anim_print( "dog_combat::combatIdle() - Setting " + idleanim ); + self setanimstate( idleanim ); + self maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_combat::combatIdle() - " + idleanim + " notify done." ); +} + +meleebiteattackplayer( player ) +{ + self set_orient_mode( "face enemy" ); + self animmode( "gravity", 0 ); + self.safetochangescript = 0; + if ( use_low_attack() ) + { + self animmode( "angle deltas", 0 ); + self setanimstate( "combat_attack_player_close_range" ); + wait 0,35; + if ( isplayer( self.enemy ) && self.enemy getstance() == "prone" ) + { + self meleewithoffset( vectorScale( ( 0, 0, -1 ), 9 ) ); + } + else + { + self melee(); + } + self maps/mp/animscripts/shared::donotetracksfortime( 1,2, "done" ); + self animmode( "gravity", 0 ); + } + else + { + attack_time = 1,2 + randomfloat( 0,4 ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_run_attack" ); + self setanimstate( "combat_attack_run" ); + self maps/mp/animscripts/shared::donotetracksfortime( attack_time, "done", ::handlemeleebiteattacknotetracks, player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_run notify done." ); + } + self.safetochangescript = 1; + self animmode( "none", 0 ); +} + +handlemeleebiteattacknotetracks( note, player ) +{ + if ( note == "dog_melee" ) + { + self melee( anglesToForward( self.angles ) ); + } +} + +use_low_attack() +{ + if ( isplayer( self.enemy ) ) + { + if ( self.enemy getstance() == "prone" ) + { + attack_height = self.origin[ 2 ] + 16; + if ( self.enemy.origin[ 2 ] < attack_height ) + { + return 1; + } + } + } + return 0; +} diff --git a/patch_zm/maps/mp/animscripts/dog_death.gsc b/patch_zm/maps/mp/animscripts/dog_death.gsc new file mode 100644 index 0000000..8f65047 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_death.gsc @@ -0,0 +1,30 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + debug_anim_print( "dog_death::main()" ); + self setaimanimweights( 0, 0 ); + self endon( "killanimscript" ); + if ( isDefined( self.a.nodeath ) ) + { +/# + assert( self.a.nodeath, "Nodeath needs to be set to true or undefined." ); +#/ + wait 3; + return; + } + self unlink(); + if ( isDefined( self.enemy ) && isDefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self ) + { + self.enemy.syncedmeleetarget = undefined; + } + death_anim = "death_" + getanimdirection( self.damageyaw ); +/# + println( death_anim ); +#/ + self animmode( "gravity", 0 ); + debug_anim_print( "dog_death::main() - Setting " + death_anim ); + self setanimstate( death_anim ); + self maps/mp/animscripts/shared::donotetracks( "done" ); +} diff --git a/patch_zm/maps/mp/animscripts/dog_flashed.gsc b/patch_zm/maps/mp/animscripts/dog_flashed.gsc new file mode 100644 index 0000000..e86fde0 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_flashed.gsc @@ -0,0 +1,29 @@ +#include maps/mp/animscripts/shared; + +main() +{ + self endon( "killanimscript" ); + self endon( "stop_flashbang_effect" ); + wait randomfloatrange( 0, 0,4 ); + duration = self startflashbanged() * 0,001; + self setanimstate( "flashed" ); + self maps/mp/animscripts/shared::donotetracks( "done" ); + self setflashbanged( 0 ); + self.flashed = 0; + self notify( "stop_flashbang_effect" ); +} + +startflashbanged() +{ + if ( isDefined( self.flashduration ) ) + { + duration = self.flashduration; + } + else + { + duration = self getflashbangedstrength() * 1000; + } + self.flashendtime = getTime() + duration; + self notify( "flashed" ); + return duration; +} diff --git a/patch_zm/maps/mp/animscripts/dog_init.gsc b/patch_zm/maps/mp/animscripts/dog_init.gsc new file mode 100644 index 0000000..c8439f7 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_init.gsc @@ -0,0 +1,62 @@ +#include maps/mp/animscripts/dog_combat; +#include maps/mp/animscripts/dog_move; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + level.dog_debug_orient = 0; + level.dog_debug_anims = 0; + level.dog_debug_anims_ent = 0; + level.dog_debug_turns = 0; + debug_anim_print( "dog_init::main() " ); + maps/mp/animscripts/dog_move::setup_sound_variables(); + anim_get_dvar_int( "debug_dog_sound", "0" ); + anim_get_dvar_int( "debug_dog_notetracks", "0" ); + anim_get_dvar_int( "dog_force_walk", 0 ); + anim_get_dvar_int( "dog_force_run", 0 ); + self.ignoresuppression = 1; + self.chatinitialized = 0; + self.nododgemove = 1; + level.dogrunturnspeed = 20; + level.dogrunpainspeed = 20; + self.meleeattackdist = 0; + self thread setmeleeattackdist(); + self.a = spawnstruct(); + self.a.pose = "stand"; + self.a.nextstandinghitdying = 0; + self.a.movement = "run"; + set_anim_playback_rate(); + self.suppressionthreshold = 1; + self.disablearrivals = 0; + level.dogstoppingdistsq = 3416,82; + self.stopanimdistsq = level.dogstoppingdistsq; + self.pathenemyfightdist = 512; + self settalktospecies( "dog" ); + level.lastdogmeleeplayertime = 0; + level.dogmeleeplayercounter = 0; + if ( !isDefined( level.dog_hits_before_kill ) ) + { + level.dog_hits_before_kill = 1; + } +} + +set_anim_playback_rate() +{ + self.animplaybackrate = 0,9 + randomfloat( 0,2 ); + self.moveplaybackrate = 1; +} + +setmeleeattackdist() +{ + self endon( "death" ); + while ( 1 ) + { + self.meleeattackdist = 0; + if ( self maps/mp/animscripts/dog_combat::use_low_attack() ) + { + self.meleeattackdist = 64; + } + wait 1; + } +} diff --git a/patch_zm/maps/mp/animscripts/dog_jump.gsc b/patch_zm/maps/mp/animscripts/dog_jump.gsc new file mode 100644 index 0000000..acfb82a --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_jump.gsc @@ -0,0 +1,13 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_jump::main()" ); + self setaimanimweights( 0, 0 ); + self.safetochangescript = 0; + self setanimstate( "traverse_wallhop" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + self.safetochangescript = 1; +} diff --git a/patch_zm/maps/mp/animscripts/dog_move.gsc b/patch_zm/maps/mp/animscripts/dog_move.gsc new file mode 100644 index 0000000..af8604d --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_move.gsc @@ -0,0 +1,185 @@ +#include maps/mp/animscripts/dog_stop; +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +setup_sound_variables() +{ + level.dog_sounds[ "far" ] = spawnstruct(); + level.dog_sounds[ "close" ] = spawnstruct(); + level.dog_sounds[ "close" ].minrange = 0; + level.dog_sounds[ "close" ].maxrange = 500; + level.dog_sounds[ "close" ].sound = "aml_dog_bark_close"; + level.dog_sounds[ "close" ].soundlengthplaceholder = 0,2; + level.dog_sounds[ "close" ].aftersoundwaitmin = 0,1; + level.dog_sounds[ "close" ].aftersoundwaitmax = 0,3; + level.dog_sounds[ "close" ].minrangesqr = level.dog_sounds[ "close" ].minrange * level.dog_sounds[ "close" ].minrange; + level.dog_sounds[ "close" ].maxrangesqr = level.dog_sounds[ "close" ].maxrange * level.dog_sounds[ "close" ].maxrange; + level.dog_sounds[ "far" ].minrange = 500; + level.dog_sounds[ "far" ].maxrange = 0; + level.dog_sounds[ "far" ].sound = "aml_dog_bark"; + level.dog_sounds[ "far" ].soundlengthplaceholder = 0,2; + level.dog_sounds[ "far" ].aftersoundwaitmin = 0,1; + level.dog_sounds[ "far" ].aftersoundwaitmax = 0,3; + level.dog_sounds[ "far" ].minrangesqr = level.dog_sounds[ "far" ].minrange * level.dog_sounds[ "far" ].minrange; + level.dog_sounds[ "far" ].maxrangesqr = level.dog_sounds[ "far" ].maxrange * level.dog_sounds[ "far" ].maxrange; +} + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_move::main()" ); + self setaimanimweights( 0, 0 ); + do_movement = 1; +/# + if ( !debug_allow_movement() ) + { + do_movement = 0; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + do_movement = 0; + } + if ( !isDefined( self.traversecomplete ) && !isDefined( self.skipstartmove ) && self.a.movement == "run" && do_movement ) + { + self startmove(); + blendtime = 0; + } + else + { + blendtime = 0,2; + } + self.traversecomplete = undefined; + self.skipstartmove = undefined; + if ( do_movement ) + { + if ( shouldrun() ) + { + debug_anim_print( "dog_move::main() - Setting move_run" ); + self setanimstate( "move_run" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,1, "done" ); + debug_anim_print( "dog_move::main() - move_run wait 0.1 done " ); + } + else + { + debug_anim_print( "dog_move::main() - Setting move_start " ); + self setanimstate( "move_walk" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,1, "done" ); + } + } + self thread maps/mp/animscripts/dog_stop::lookattarget( "normal" ); + while ( 1 ) + { + self moveloop(); + if ( self.a.movement == "run" ) + { + if ( self.disablearrivals == 0 ) + { + self thread stopmove(); + } + self waittill( "run" ); + } + } +} + +moveloop() +{ + self endon( "killanimscript" ); + self endon( "stop_soon" ); + while ( 1 ) + { + do_movement = 1; +/# + if ( !debug_allow_movement() ) + { + do_movement = 0; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + do_movement = 0; + } + while ( !do_movement ) + { + self setaimanimweights( 0, 0 ); + self setanimstate( "stop_idle" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + } + if ( self.disablearrivals ) + { + self.stopanimdistsq = 0; + } + else + { + self.stopanimdistsq = level.dogstoppingdistsq; + } + if ( shouldrun() ) + { + debug_anim_print( "dog_move::moveLoop() - Setting move_run" ); + self setanimstate( "move_run" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,2, "done" ); + debug_anim_print( "dog_move::moveLoop() - move_run wait 0.2 done " ); + continue; + } + else + { + debug_anim_print( "dog_move::moveLoop() - Setting move_walk " ); + self setanimstate( "move_walk" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,2, "done" ); + debug_anim_print( "dog_move::moveLoop() - move_walk wait 0.2 done " ); + } + } +} + +startmove() +{ + debug_anim_print( "dog_move::startMove() - Setting move_start " ); + self setanimstate( "move_start" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_move::startMove() - move_start notify done." ); + self animmode( "none", 0 ); + self set_orient_mode( "face motion" ); +} + +stopmove() +{ + self endon( "killanimscript" ); + self endon( "run" ); + debug_anim_print( "dog_move::stopMove() - Setting move_stop" ); + self setanimstate( "move_stop" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_move::stopMove() - move_stop notify done." ); +} + +shouldrun() +{ +/# + if ( getDvarInt( #"DFB12081" ) != 0 ) + { + return 1; + } + else + { + if ( getDvarInt( #"D5D7999B" ) != 0 ) + { + return 0; +#/ + } + } + if ( isDefined( self.enemy ) ) + { + return 1; + } + if ( self.lookaheaddist <= 90 ) + { + return 0; + } + angles = vectorToAngle( self.lookaheaddir ); + yaw_desired = absangleclamp180( angles[ 1 ] ); + yaw = absangleclamp180( self.angles[ 1 ] ); + if ( abs( yaw_desired - yaw ) >= 8 ) + { + return 0; + } + return 1; +} diff --git a/patch_zm/maps/mp/animscripts/dog_pain.gsc b/patch_zm/maps/mp/animscripts/dog_pain.gsc new file mode 100644 index 0000000..d218129 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_pain.gsc @@ -0,0 +1,26 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + debug_anim_print( "dog_pain::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); + if ( isDefined( self.enemy ) && isDefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self ) + { + self unlink(); + self.enemy.syncedmeleetarget = undefined; + } + speed = length( self getvelocity() ); + pain_anim = getanimdirection( self.damageyaw ); + if ( speed > level.dogrunpainspeed ) + { + pain_anim = "pain_run_" + pain_anim; + } + else + { + pain_anim = "pain_" + pain_anim; + } + self setanimstate( pain_anim ); + self maps/mp/animscripts/shared::donotetracksfortime( 0,2, "done" ); +} diff --git a/patch_zm/maps/mp/animscripts/dog_stop.gsc b/patch_zm/maps/mp/animscripts/dog_stop.gsc new file mode 100644 index 0000000..0b6e630 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_stop.gsc @@ -0,0 +1,132 @@ +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + debug_anim_print( "dog_stop::main()" ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); + self thread lookattarget( "attackIdle" ); + while ( 1 ) + { + if ( shouldattackidle() ) + { + self randomattackidle(); + maps/mp/animscripts/shared::donotetracks( "done" ); + } + else + { + self set_orient_mode( "face current" ); + debug_anim_print( "dog_stop::main() - Setting stop_idle" ); + self notify( "stop tracking" ); + self setaimanimweights( 0, 0 ); + self setanimstate( "stop_idle" ); + maps/mp/animscripts/shared::donotetracks( "done" ); + self thread lookattarget( "attackIdle" ); + } + debug_anim_print( "dog_stop::main() - stop idle loop notify done." ); + } +} + +isfacingenemy( tolerancecosangle ) +{ +/# + assert( isDefined( self.enemy ) ); +#/ + vectoenemy = self.enemy.origin - self.origin; + disttoenemy = length( vectoenemy ); + if ( disttoenemy < 1 ) + { + return 1; + } + forward = anglesToForward( self.angles ); + val1 = ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ); + val2 = ( ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ) ) / disttoenemy; + return ( ( ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ) ) / disttoenemy ) > tolerancecosangle; +} + +randomattackidle() +{ + if ( isfacingenemy( -0,5 ) ) + { + self set_orient_mode( "face current" ); + } + else + { + self set_orient_mode( "face enemy" ); + } + if ( should_growl() ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl" ); + self setanimstate( "stop_attackidle_growl" ); + return; + } + idlechance = 33; + barkchance = 66; + if ( isDefined( self.mode ) ) + { + if ( self.mode == "growl" ) + { + idlechance = 15; + barkchance = 30; + } + else + { + if ( self.mode == "bark" ) + { + idlechance = 15; + barkchance = 85; + } + } + } + rand = randomint( 100 ); + if ( rand < idlechance ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle" ); + self setanimstate( "stop_attackidle" ); + } + else if ( rand < barkchance ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_bark " ); + self setanimstate( "stop_attackidle_bark" ); + } + else + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl " ); + self setanimstate( "stop_attackidle_growl" ); + } +} + +shouldattackidle() +{ + if ( isDefined( self.enemy ) && isalive( self.enemy ) ) + { + return distancesquared( self.origin, self.enemy.origin ) < 1000000; + } +} + +should_growl() +{ + if ( isDefined( self.script_growl ) ) + { + return 1; + } + if ( !isalive( self.enemy ) ) + { + return 1; + } + return !self cansee( self.enemy ); +} + +lookattarget( lookposeset ) +{ + self endon( "killanimscript" ); + self endon( "stop tracking" ); + debug_anim_print( "dog_stop::lookAtTarget() - Starting look at " + lookposeset ); + self.rightaimlimit = 90; + self.leftaimlimit = -90; + self.upaimlimit = 45; + self.downaimlimit = -45; + self maps/mp/animscripts/shared::setanimaimweight( 1, 0,2 ); + self maps/mp/animscripts/shared::trackloop(); +} diff --git a/patch_zm/maps/mp/animscripts/dog_turn.gsc b/patch_zm/maps/mp/animscripts/dog_turn.gsc new file mode 100644 index 0000000..4d759cc --- /dev/null +++ b/patch_zm/maps/mp/animscripts/dog_turn.gsc @@ -0,0 +1,117 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + self endon( "killanimscript" ); + debug_turn_print( "dog_turn::main()" ); + self setaimanimweights( 0, 0 ); + self.safetochangescript = 0; + deltayaw = self getdeltaturnyaw(); + if ( need_to_turn_around( deltayaw ) ) + { + turn_180( deltayaw ); + } + else + { + turn_90( deltayaw ); + } + move_out_of_turn(); + self.skipstartmove = 1; + self.safetochangescript = 1; +} + +need_to_turn_around( deltayaw ) +{ + angle = getDvarFloat( "dog_turn180_angle" ); + if ( deltayaw >= angle || deltayaw <= ( -1 * angle ) ) + { + debug_turn_print( "dog_turn::need_to_turn_around(): " + deltayaw + " YES" ); + return 1; + } + debug_turn_print( "dog_turn::need_to_turn_around(): " + deltayaw + " NO" ); + return 0; +} + +do_turn_anim( stopped_anim, run_anim, wait_time, run_wait_time ) +{ + speed = length( self getvelocity() ); + do_anim = stopped_anim; + if ( level.dogrunturnspeed < speed ) + { + do_anim = run_anim; + wait_time = run_wait_time; + } + debug_turn_print( "dog_turn::do_turn_anim() - Setting " + do_anim ); + self setanimstate( do_anim ); + maps/mp/animscripts/shared::donotetracksfortime( run_wait_time, "done" ); + debug_turn_print( "dog_turn::do_turn_anim() - done with " + do_anim + " wait time " + run_wait_time ); +} + +turn_left() +{ + self do_turn_anim( "move_turn_left", "move_run_turn_left", 0,5, 0,5 ); +} + +turn_right() +{ + self do_turn_anim( "move_turn_right", "move_run_turn_right", 0,5, 0,5 ); +} + +turn_180_left() +{ + self do_turn_anim( "move_turn_around_left", "move_run_turn_around_left", 0,5, 0,7 ); +} + +turn_180_right() +{ + self do_turn_anim( "move_turn_around_right", "move_run_turn_around_right", 0,5, 0,7 ); +} + +move_out_of_turn() +{ + if ( self.a.movement == "run" ) + { + debug_turn_print( "dog_turn::move_out_of_turn() - Setting move_run" ); + self setanimstate( "move_run" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,1, "done" ); + debug_turn_print( "dog_turn::move_out_of_turn() - move_run wait 0.1 done " ); + } + else + { + debug_turn_print( "dog_turn::move_out_of_turn() - Setting move_start " ); + self setanimstate( "move_walk" ); + } +} + +turn_90( deltayaw ) +{ + self animmode( "zonly_physics", 0 ); + debug_turn_print( "dog_turn::turn_90() deltaYaw: " + deltayaw ); + if ( deltayaw > 0 ) + { + debug_turn_print( "dog_turn::turn_90() left", 1 ); + self turn_left(); + } + else + { + debug_turn_print( "dog_turn::turn_90() right", 1 ); + self turn_right(); + } +} + +turn_180( deltayaw ) +{ + self animmode( "zonly_physics", 0 ); + debug_turn_print( "dog_turn::turn_180() deltaYaw: " + deltayaw ); + if ( deltayaw > 0 ) + { + debug_turn_print( "dog_turn::turn_180() left", 1 ); + self turn_180_left(); + } + else + { + debug_turn_print( "dog_turn::turn_180() right", 1 ); + self turn_180_right(); + } +} diff --git a/patch_zm/maps/mp/animscripts/shared.gsc b/patch_zm/maps/mp/animscripts/shared.gsc new file mode 100644 index 0000000..ee523c7 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/shared.gsc @@ -0,0 +1,306 @@ +#include maps/mp/_utility; +#include maps/mp/animscripts/utility; +#include common_scripts/utility; + +handledogsoundnotetracks( note ) +{ + if ( note == "sound_dogstep_run_default" ) + { + return 1; + } + prefix = getsubstr( note, 0, 5 ); + if ( prefix != "sound" ) + { + return 0; + } + return 1; +} + +growling() +{ + return isDefined( self.script_growl ); +} + +handlenotetrack( note, flagname, customfunction, var1 ) +{ +/# + if ( getDvarInt( #"6EBEB982" ) ) + { + println( "dog notetrack: " + flagname + " " + note + " " + getTime() ); +#/ + } + if ( isai( self ) && self.type == "dog" ) + { + if ( handledogsoundnotetracks( note ) ) + { + return; + } + } + switch( note ) + { + case "end": + case "finish": + case "undefined": + return note; + default: + if ( isDefined( customfunction ) ) + { + if ( !isDefined( var1 ) ) + { + return [[ customfunction ]]( note ); + } + else + { + return [[ customfunction ]]( note, var1 ); + } + } + } + } +} + +donotetracks( flagname, customfunction, var1 ) +{ + for ( ;; ) + { + self waittill( flagname, note ); + if ( !isDefined( note ) ) + { + note = "undefined"; + } + val = self handlenotetrack( note, flagname, customfunction, var1 ); + if ( isDefined( val ) ) + { + return val; + } + } +} + +donotetracksforeverproc( notetracksfunc, flagname, killstring, customfunction, var1 ) +{ + if ( isDefined( killstring ) ) + { + self endon( killstring ); + } + self endon( "killanimscript" ); + for ( ;; ) + { + time = getTime(); + returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 ); + timetaken = getTime() - time; + if ( timetaken < 0,05 ) + { + time = getTime(); + returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 ); + timetaken = getTime() - time; + if ( timetaken < 0,05 ) + { +/# + println( getTime() + " mapsmpanimscriptsshared::DoNoteTracksForever is trying to cause an infinite loop on anim " + flagname + ", returned " + returnednote + "." ); +#/ + wait ( 0,05 - timetaken ); + } + } + } +} + +donotetracksforever( flagname, killstring, customfunction, var1 ) +{ + donotetracksforeverproc( ::donotetracks, flagname, killstring, customfunction, var1 ); +} + +donotetracksfortimeproc( donotetracksforeverfunc, time, flagname, customfunction, ent, var1 ) +{ + ent endon( "stop_notetracks" ); + [[ donotetracksforeverfunc ]]( flagname, undefined, customfunction, var1 ); +} + +donotetracksfortime( time, flagname, customfunction, var1 ) +{ + ent = spawnstruct(); + ent thread donotetracksfortimeendnotify( time ); + donotetracksfortimeproc( ::donotetracksforever, time, flagname, customfunction, ent, var1 ); +} + +donotetracksfortimeendnotify( time ) +{ + wait time; + self notify( "stop_notetracks" ); +} + +trackloop() +{ + players = get_players(); + deltachangeperframe = 5; + aimblendtime = 0,05; + prevyawdelta = 0; + prevpitchdelta = 0; + maxyawdeltachange = 5; + maxpitchdeltachange = 5; + pitchadd = 0; + yawadd = 0; + if ( self.type != "dog" || self.type == "zombie" && self.type == "zombie_dog" ) + { + domaxanglecheck = 0; + self.shootent = self.enemy; + } + else + { + domaxanglecheck = 1; + if ( self.a.script == "cover_crouch" && isDefined( self.a.covermode ) && self.a.covermode == "lean" ) + { + pitchadd = -1 * anim.covercrouchleanpitch; + } + if ( self.a.script != "cover_left" && self.a.script == "cover_right" && isDefined( self.a.cornermode ) && self.a.cornermode == "lean" ) + { + yawadd = self.covernode.angles[ 1 ] - self.angles[ 1 ]; + } + } + yawdelta = 0; + pitchdelta = 0; + firstframe = 1; + for ( ;; ) + { + incranimaimweight(); + selfshootatpos = ( self.origin[ 0 ], self.origin[ 1 ], self geteye()[ 2 ] ); + shootpos = undefined; + if ( isDefined( self.enemy ) ) + { + shootpos = self.enemy getshootatpos(); + } + if ( !isDefined( shootpos ) ) + { + yawdelta = 0; + pitchdelta = 0; + } + else + { + vectortoshootpos = shootpos - selfshootatpos; + anglestoshootpos = vectorToAngle( vectortoshootpos ); + pitchdelta = 360 - anglestoshootpos[ 0 ]; + pitchdelta = angleClamp180( pitchdelta + pitchadd ); + yawdelta = self.angles[ 1 ] - anglestoshootpos[ 1 ]; + yawdelta = angleClamp180( yawdelta + yawadd ); + } + if ( domaxanglecheck || abs( yawdelta ) > 60 && abs( pitchdelta ) > 60 ) + { + yawdelta = 0; + pitchdelta = 0; + } + else + { + if ( yawdelta > self.rightaimlimit ) + { + yawdelta = self.rightaimlimit; + } + else + { + if ( yawdelta < self.leftaimlimit ) + { + yawdelta = self.leftaimlimit; + } + } + if ( pitchdelta > self.upaimlimit ) + { + pitchdelta = self.upaimlimit; + break; + } + else + { + if ( pitchdelta < self.downaimlimit ) + { + pitchdelta = self.downaimlimit; + } + } + } + if ( firstframe ) + { + firstframe = 0; + } + else + { + yawdeltachange = yawdelta - prevyawdelta; + if ( abs( yawdeltachange ) > maxyawdeltachange ) + { + yawdelta = prevyawdelta + ( maxyawdeltachange * sign( yawdeltachange ) ); + } + pitchdeltachange = pitchdelta - prevpitchdelta; + if ( abs( pitchdeltachange ) > maxpitchdeltachange ) + { + pitchdelta = prevpitchdelta + ( maxpitchdeltachange * sign( pitchdeltachange ) ); + } + } + prevyawdelta = yawdelta; + prevpitchdelta = pitchdelta; + updown = 0; + leftright = 0; + if ( yawdelta > 0 ) + { +/# + assert( yawdelta <= self.rightaimlimit ); +#/ + weight = ( yawdelta / self.rightaimlimit ) * self.a.aimweight; + leftright = weight; + } + else + { + if ( yawdelta < 0 ) + { +/# + assert( yawdelta >= self.leftaimlimit ); +#/ + weight = ( yawdelta / self.leftaimlimit ) * self.a.aimweight; + leftright = -1 * weight; + } + } + if ( pitchdelta > 0 ) + { +/# + assert( pitchdelta <= self.upaimlimit ); +#/ + weight = ( pitchdelta / self.upaimlimit ) * self.a.aimweight; + updown = weight; + } + else + { + if ( pitchdelta < 0 ) + { +/# + assert( pitchdelta >= self.downaimlimit ); +#/ + weight = ( pitchdelta / self.downaimlimit ) * self.a.aimweight; + updown = -1 * weight; + } + } + self setaimanimweights( updown, leftright ); + wait 0,05; + } +} + +setanimaimweight( goalweight, goaltime ) +{ + if ( !isDefined( goaltime ) || goaltime <= 0 ) + { + self.a.aimweight = goalweight; + self.a.aimweight_start = goalweight; + self.a.aimweight_end = goalweight; + self.a.aimweight_transframes = 0; + } + else + { + self.a.aimweight = goalweight; + self.a.aimweight_start = self.a.aimweight; + self.a.aimweight_end = goalweight; + self.a.aimweight_transframes = int( goaltime * 20 ); + } + self.a.aimweight_t = 0; +} + +incranimaimweight() +{ + if ( self.a.aimweight_t < self.a.aimweight_transframes ) + { + self.a.aimweight_t++; + t = ( 1 * self.a.aimweight_t ) / self.a.aimweight_transframes; + self.a.aimweight = ( self.a.aimweight_start * ( 1 - t ) ) + ( self.a.aimweight_end * t ); + } +} diff --git a/patch_zm/maps/mp/animscripts/traverse/shared.gsc b/patch_zm/maps/mp/animscripts/traverse/shared.gsc new file mode 100644 index 0000000..cbd7fe5 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/traverse/shared.gsc @@ -0,0 +1,227 @@ +#include maps/mp/animscripts/shared; +#include common_scripts/utility; +#include maps/mp/_utility; +#include maps/mp/animscripts/utility; + +init_traverse() +{ + point = getent( self.target, "targetname" ); + if ( isDefined( point ) ) + { + self.traverse_height = point.origin[ 2 ]; + point delete(); + } + else + { + point = getstruct( self.target, "targetname" ); + if ( isDefined( point ) ) + { + self.traverse_height = point.origin[ 2 ]; + } + } +} + +teleportthread( verticaloffset ) +{ + self endon( "killanimscript" ); + self notify( "endTeleportThread" ); + self endon( "endTeleportThread" ); + reps = 5; + offset = ( 0, 0, verticaloffset / reps ); + i = 0; + while ( i < reps ) + { + self teleport( self.origin + offset ); + wait 0,05; + i++; + } +} + +teleportthreadex( verticaloffset, delay, frames ) +{ + self endon( "killanimscript" ); + self notify( "endTeleportThread" ); + self endon( "endTeleportThread" ); + if ( verticaloffset == 0 ) + { + return; + } + wait delay; + amount = verticaloffset / frames; + if ( amount > 10 ) + { + amount = 10; + } + else + { + if ( amount < -10 ) + { + amount = -10; + } + } + offset = ( 0, 0, amount ); + i = 0; + while ( i < frames ) + { + self teleport( self.origin + offset ); + wait 0,05; + i++; + } +} + +dog_wall_and_window_hop( traversename, height ) +{ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 36 ) + { + self thread teleportthreadex( height - 36, 0,2, 7 ); + } + } + debug_anim_print( "traverse::dog_wall_and_window_hop() - Setting " + traversename ); + self setanimstate( traversename ); + maps/mp/animscripts/shared::donotetracksfortime( 1, "done" ); + debug_anim_print( "traverse::dog_wall_and_window_hop() - " + traversename ); + self.traversecomplete = 1; +} + +dog_jump_down( height, frames, time ) +{ + self endon( "killanimscript" ); + self traversemode( "noclip" ); + if ( !isDefined( time ) ) + { + time = 0,3; + } + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 40 ) + { + self thread teleportthreadex( height - 40, 0,1, frames ); + } + } + debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_40" ); + self setanimstate( "traverse_jump_down_40" ); + maps/mp/animscripts/shared::donotetracksfortime( time, "done" ); + debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_40 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} + +dog_jump_down_far( height, frames, time ) +{ + self endon( "killanimscript" ); + self traversemode( "noclip" ); + if ( !isDefined( time ) ) + { + time = 0,3; + } + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 80 ) + { + self thread teleportthreadex( 80 - height, 0,1, frames ); + } + } + debug_anim_print( "traverse::dog_jump_down() - Setting traverse_jump_down_80" ); + self setanimstate( "traverse_jump_down_80" ); + maps/mp/animscripts/shared::donotetracksfortime( time, "done" ); + debug_anim_print( "traverse::dog_jump_down() - traverse_jump_down_80 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} + +dog_jump_up( height, frames ) +{ + self endon( "killanimscript" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthread( realheight - height ); + } + else + { + if ( height != 40 ) + { + self thread teleportthreadex( height - 40, 0,2, frames ); + } + } + debug_anim_print( "traverse::dog_jump_up() - Setting traverse_jump_up_40" ); + self setanimstate( "traverse_jump_up_40" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,5, "done" ); + debug_anim_print( "traverse::dog_jump_up() - traverse_jump_up_40 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} + +dog_jump_up_high( height, frames ) +{ +/# + assert( self.type == "dog", "Only dogs can do this traverse currently." ); +#/ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + startnode = self getnegotiationstartnode(); +/# + assert( isDefined( startnode ) ); +#/ + self orientmode( "face angle", startnode.angles[ 1 ] ); + if ( isDefined( startnode.traverse_height ) ) + { + realheight = startnode.traverse_height - startnode.origin[ 2 ]; + self thread teleportthreadex( height - 80, 0,2, frames ); + } + else + { + if ( height != 80 ) + { + self thread teleportthreadex( height - 80, 0,2, frames ); + } + } + debug_anim_print( "traverse::dog_jump_up_80() - Setting traverse_jump_up_80" ); + self setanimstate( "traverse_jump_up_80" ); + maps/mp/animscripts/shared::donotetracksfortime( 0,6, "done" ); + debug_anim_print( "traverse::dog_jump_up_80() - traverse_jump_up_80 " ); + self traversemode( "gravity" ); + self.traversecomplete = 1; +} diff --git a/patch_zm/maps/mp/animscripts/traverse/zm_mantle_over_40.gsc b/patch_zm/maps/mp/animscripts/traverse/zm_mantle_over_40.gsc new file mode 100644 index 0000000..2e00566 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/traverse/zm_mantle_over_40.gsc @@ -0,0 +1,44 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + traversestate = "zm_traverse_barrier"; + traversealias = "barrier_walk"; + if ( self.has_legs ) + { + switch( self.zombie_move_speed ) + { + case "low_gravity_walk": + case "walk": + case "walk_slide": + traversealias = "barrier_walk"; + break; + case "low_gravity_run": + case "run": + case "run_slide": + traversealias = "barrier_run"; + break; + case "low_gravity_sprint": + case "sprint": + case "sprint_slide": + case "super_sprint": + traversealias = "barrier_sprint"; + break; + default: + if ( isDefined( level.zm_mantle_over_40_move_speed_override ) ) + { + traversealias = self [[ level.zm_mantle_over_40_move_speed_override ]](); + } + else /# + assertmsg( "Zombie '" + self.classname + "' move speed of '" + self.zombie_move_speed + "' is not supported for mantle_over_40." ); +#/ + } + } + else + { + traversestate = "zm_traverse_barrier_crawl"; + traversealias = "barrier_crawl"; + } + self dotraverse( traversestate, traversealias ); +} diff --git a/patch_zm/maps/mp/animscripts/traverse/zm_shared.gsc b/patch_zm/maps/mp/animscripts/traverse/zm_shared.gsc new file mode 100644 index 0000000..b1f767c --- /dev/null +++ b/patch_zm/maps/mp/animscripts/traverse/zm_shared.gsc @@ -0,0 +1,151 @@ +#include maps/mp/animscripts/zm_run; +#include maps/mp/animscripts/zm_shared; +#include common_scripts/utility; +#include maps/mp/_utility; +#include maps/mp/animscripts/utility; + +init_traverse() +{ + point = getent( self.target, "targetname" ); + if ( isDefined( point ) ) + { + self.traverse_height = point.origin[ 2 ]; + point delete(); + } + else + { + point = getstruct( self.target, "targetname" ); + if ( isDefined( point ) ) + { + self.traverse_height = point.origin[ 2 ]; + } + } +} + +teleportthread( verticaloffset ) +{ + self endon( "killanimscript" ); + self notify( "endTeleportThread" ); + self endon( "endTeleportThread" ); + reps = 5; + offset = ( 0, 0, verticaloffset / reps ); + i = 0; + while ( i < reps ) + { + self teleport( self.origin + offset ); + wait 0,05; + i++; + } +} + +teleportthreadex( verticaloffset, delay, frames ) +{ + self endon( "killanimscript" ); + self notify( "endTeleportThread" ); + self endon( "endTeleportThread" ); + if ( verticaloffset == 0 ) + { + return; + } + wait delay; + amount = verticaloffset / frames; + if ( amount > 10 ) + { + amount = 10; + } + else + { + if ( amount < -10 ) + { + amount = -10; + } + } + offset = ( 0, 0, amount ); + i = 0; + while ( i < frames ) + { + self teleport( self.origin + offset ); + wait 0,05; + i++; + } +} + +handletraversealignment() +{ + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + if ( isDefined( self.traverseheight ) && isDefined( self.traversestartnode.traverse_height ) ) + { + currentheight = self.traversestartnode.traverse_height - self.traversestartz; + self thread teleportthread( currentheight - self.traverseheight ); + } +} + +dosimpletraverse( traversealias, no_powerups, traversestate ) +{ + if ( !isDefined( traversestate ) ) + { + traversestate = "zm_traverse"; + } + if ( isDefined( level.ignore_traverse ) ) + { + if ( self [[ level.ignore_traverse ]]() ) + { + return; + } + } + if ( isDefined( level.zm_traversal_override ) ) + { + traversealias = self [[ level.zm_traversal_override ]]( traversealias ); + } + if ( !self.has_legs ) + { + traversestate += "_crawl"; + traversealias += "_crawl"; + } + self dotraverse( traversestate, traversealias, no_powerups ); +} + +dotraverse( traversestate, traversealias, no_powerups ) +{ + self endon( "killanimscript" ); + self traversemode( "nogravity" ); + self traversemode( "noclip" ); + old_powerups = 0; + if ( isDefined( no_powerups ) && no_powerups ) + { + old_powerups = self.no_powerups; + self.no_powerups = 1; + } + self.is_traversing = 1; + self notify( "zombie_start_traverse" ); + self.traversestartnode = self getnegotiationstartnode(); +/# + assert( isDefined( self.traversestartnode ) ); +#/ + self orientmode( "face angle", self.traversestartnode.angles[ 1 ] ); + self.traversestartz = self.origin[ 2 ]; + if ( isDefined( self.pre_traverse ) ) + { + self [[ self.pre_traverse ]](); + } + self setanimstatefromasd( traversestate, traversealias ); + self maps/mp/animscripts/zm_shared::donotetracks( "traverse_anim" ); + self traversemode( "gravity" ); + self.a.nodeath = 0; + if ( isDefined( self.post_traverse ) ) + { + self [[ self.post_traverse ]](); + } + self maps/mp/animscripts/zm_run::needsupdate(); + if ( !self.isdog ) + { + self maps/mp/animscripts/zm_run::moverun(); + } + self.is_traversing = 0; + self notify( "zombie_end_traverse" ); + if ( isDefined( no_powerups ) && no_powerups ) + { + self.no_powerups = old_powerups; + } +} diff --git a/patch_zm/maps/mp/animscripts/utility.gsc b/patch_zm/maps/mp/animscripts/utility.gsc new file mode 100644 index 0000000..6b325aa --- /dev/null +++ b/patch_zm/maps/mp/animscripts/utility.gsc @@ -0,0 +1,166 @@ + +anim_get_dvar_int( dvar, def ) +{ + return int( anim_get_dvar( dvar, def ) ); +} + +anim_get_dvar( dvar, def ) +{ + if ( getDvar( dvar ) != "" ) + { + return getDvarFloat( dvar ); + } + else + { + setdvar( dvar, def ); + return def; + } +} + +set_orient_mode( mode, val1 ) +{ +/# + if ( level.dog_debug_orient == self getentnum() ) + { + if ( isDefined( val1 ) ) + { + println( "DOG: Setting orient mode: " + mode + " " + val1 + " " + getTime() ); + } + else + { + println( "DOG: Setting orient mode: " + mode + " " + getTime() ); +#/ + } + } + if ( isDefined( val1 ) ) + { + self orientmode( mode, val1 ); + } + else + { + self orientmode( mode ); + } +} + +debug_anim_print( text ) +{ +/# + if ( level.dog_debug_anims ) + { + println( ( text + " " ) + getTime() ); + } + if ( level.dog_debug_anims_ent == self getentnum() ) + { + println( ( text + " " ) + getTime() ); +#/ + } +} + +debug_turn_print( text, line ) +{ +/# + if ( level.dog_debug_turns == self getentnum() ) + { + duration = 200; + currentyawcolor = ( 1, 0, 1 ); + lookaheadyawcolor = ( 1, 0, 1 ); + desiredyawcolor = ( 1, 0, 1 ); + currentyaw = angleClamp180( self.angles[ 1 ] ); + desiredyaw = angleClamp180( self.desiredangle ); + lookaheaddir = self.lookaheaddir; + lookaheadangles = vectorToAngle( lookaheaddir ); + lookaheadyaw = angleClamp180( lookaheadangles[ 1 ] ); + println( ( text + " " ) + getTime() + " cur: " + currentyaw + " look: " + lookaheadyaw + " desired: " + desiredyaw ); +#/ + } +} + +debug_allow_movement() +{ +/# + return anim_get_dvar_int( "debug_dog_allow_movement", "1" ); +#/ + return 1; +} + +debug_allow_combat() +{ +/# + return anim_get_dvar_int( "debug_dog_allow_combat", "1" ); +#/ + return 1; +} + +current_yaw_line_debug( duration ) +{ +/# + currentyawcolor = []; + currentyawcolor[ 0 ] = ( 1, 0, 1 ); + currentyawcolor[ 1 ] = ( 1, 0, 1 ); + current_color_index = 0; + start_time = getTime(); + if ( !isDefined( level.lastdebugheight ) ) + { + level.lastdebugheight = 15; + } + while ( ( getTime() - start_time ) < 1000 ) + { + pos1 = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + level.lastdebugheight ); + pos2 = pos1 + vectorScale( anglesToForward( self.angles ), ( current_color_index + 1 ) * 10 ); + line( pos1, pos2, currentyawcolor[ current_color_index ], 0,3, 1, duration ); + current_color_index = ( current_color_index + 1 ) % currentyawcolor.size; + wait 0,05; + } + if ( level.lastdebugheight == 15 ) + { + level.lastdebugheight = 30; + } + else + { + level.lastdebugheight = 15; +#/ + } +} + +getanimdirection( damageyaw ) +{ + if ( damageyaw > 135 || damageyaw <= -135 ) + { + return "front"; + } + else + { + if ( damageyaw > 45 && damageyaw <= 135 ) + { + return "right"; + } + else + { + if ( damageyaw > -45 && damageyaw <= 45 ) + { + return "back"; + } + else + { + return "left"; + } + } + } + return "front"; +} + +setfootstepeffect( name, fx ) +{ +/# + assert( isDefined( name ), "Need to define the footstep surface type." ); +#/ +/# + assert( isDefined( fx ), "Need to define the mud footstep effect." ); +#/ + if ( !isDefined( anim.optionalstepeffects ) ) + { + anim.optionalstepeffects = []; + } + anim.optionalstepeffects[ anim.optionalstepeffects.size ] = name; + level._effect[ "step_" + name ] = fx; +} diff --git a/patch_zm/maps/mp/animscripts/zm_combat.gsc b/patch_zm/maps/mp/animscripts/zm_combat.gsc new file mode 100644 index 0000000..3b06ef3 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_combat.gsc @@ -0,0 +1,71 @@ +#include maps/mp/animscripts/zm_melee; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + self endon( "killanimscript" ); + self endon( "melee" ); + maps/mp/animscripts/zm_utility::initialize( "zombie_combat" ); + self animmode( "zonly_physics", 0 ); + if ( isDefined( self.combat_animmode ) ) + { + self [[ self.combat_animmode ]](); + } + self orientmode( "face angle", self.angles[ 1 ] ); + for ( ;; ) + { + if ( trymelee() ) + { + return; + } + exposedwait(); + } +} + +exposedwait() +{ + if ( !isDefined( self.can_always_see ) || !isDefined( self.enemy ) && !self cansee( self.enemy ) ) + { + self endon( "enemy" ); + wait ( 0,2 + randomfloat( 0,1 ) ); + } + else + { + if ( !isDefined( self.enemy ) ) + { + self endon( "enemy" ); + wait ( 0,2 + randomfloat( 0,1 ) ); + return; + } + else + { + wait 0,05; + } + } +} + +trymelee() +{ + if ( isDefined( self.cant_melee ) && self.cant_melee ) + { + return 0; + } + if ( !isDefined( self.enemy ) ) + { + return 0; + } + if ( distancesquared( self.origin, self.enemy.origin ) > 262144 ) + { + return 0; + } + canmelee = maps/mp/animscripts/zm_melee::canmeleedesperate(); + if ( !canmelee ) + { + return 0; + } + self thread maps/mp/animscripts/zm_melee::meleecombat(); + return 1; +} diff --git a/patch_zm/maps/mp/animscripts/zm_death.gsc b/patch_zm/maps/mp/animscripts/zm_death.gsc new file mode 100644 index 0000000..2c5fcc0 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_death.gsc @@ -0,0 +1,439 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/_utility; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + debug_anim_print( "zm_death::main()" ); + self setaimanimweights( 0, 0 ); + self endon( "killanimscript" ); + if ( isDefined( self.deathfunction ) ) + { + successful_death = self [[ self.deathfunction ]](); + if ( !isDefined( successful_death ) || successful_death ) + { + return; + } + } + if ( isDefined( self.a.nodeath ) && self.a.nodeath == 1 ) + { +/# + assert( self.a.nodeath, "Nodeath needs to be set to true or undefined." ); +#/ + wait 3; + return; + } + self unlink(); + if ( isDefined( self.anchor ) ) + { + self.anchor delete(); + } + if ( isDefined( self.enemy ) && isDefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self ) + { + self.enemy.syncedmeleetarget = undefined; + } + self thread do_gib(); + if ( isDefined( self.a.gib_ref ) && self.a.gib_ref != "no_legs" || self.a.gib_ref == "right_leg" && self.a.gib_ref == "left_leg" ) + { + self.has_legs = 0; + } + if ( !isDefined( self.deathanim ) ) + { + self.deathanim = "zm_death"; + self.deathanim_substate = undefined; + } + self.deathanim = append_missing_legs_suffix( self.deathanim ); + self animmode( "gravity" ); + self setanimstatefromasd( self.deathanim, self.deathanim_substate ); + if ( !self getanimhasnotetrackfromasd( "start_ragdoll" ) ) + { + self thread waitforragdoll( self getanimlengthfromasd() * 0,35 ); + } + if ( isDefined( self.skip_death_notetracks ) && self.skip_death_notetracks ) + { + self waittillmatch( "death_anim" ); + return "end"; + } + else + { + self maps/mp/animscripts/zm_shared::donotetracks( "death_anim", self.handle_death_notetracks ); + } +} + +waitforragdoll( time ) +{ + wait time; + do_ragdoll = 1; + if ( isDefined( self.nodeathragdoll ) && self.nodeathragdoll ) + { + do_ragdoll = 0; + } + if ( isDefined( self ) && do_ragdoll ) + { + self startragdoll(); + } +} + +on_fire_timeout() +{ + self endon( "death" ); + wait 12; + if ( isDefined( self ) && isalive( self ) ) + { + self.is_on_fire = 0; + self notify( "stop_flame_damage" ); + } +} + +flame_death_fx() +{ + self endon( "death" ); + if ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + return; + } + self.is_on_fire = 1; + self thread on_fire_timeout(); + if ( isDefined( level._effect ) && isDefined( level._effect[ "character_fire_death_torso" ] ) ) + { + if ( !self.isdog ) + { + playfxontag( level._effect[ "character_fire_death_torso" ], self, "J_SpineLower" ); + } + } + else + { +/# + println( "^3ANIMSCRIPT WARNING: You are missing level._effect["character_fire_death_torso"], please set it in your levelname_fx.gsc. Use "env/fire/fx_fire_player_torso"" ); +#/ + } + if ( isDefined( level._effect ) && isDefined( level._effect[ "character_fire_death_sm" ] ) ) + { + wait 1; + tagarray = []; + tagarray[ 0 ] = "J_Elbow_LE"; + tagarray[ 1 ] = "J_Elbow_RI"; + tagarray[ 2 ] = "J_Knee_RI"; + tagarray[ 3 ] = "J_Knee_LE"; + tagarray = randomize_array( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); + wait 1; + tagarray[ 0 ] = "J_Wrist_RI"; + tagarray[ 1 ] = "J_Wrist_LE"; + if ( isDefined( self.a ) || !isDefined( self.a.gib_ref ) && self.a.gib_ref != "no_legs" ) + { + tagarray[ 2 ] = "J_Ankle_RI"; + tagarray[ 3 ] = "J_Ankle_LE"; + } + tagarray = randomize_array( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 1 ] ); + } + else + { +/# + println( "^3ANIMSCRIPT WARNING: You are missing level._effect["character_fire_death_sm"], please set it in your levelname_fx.gsc. Use "env/fire/fx_fire_zombie_md"" ); +#/ + } +} + +randomize_array( array ) +{ + i = 0; + while ( i < array.size ) + { + j = randomint( array.size ); + temp = array[ i ]; + array[ i ] = array[ j ]; + array[ j ] = temp; + i++; + } + return array; +} + +get_tag_for_damage_location() +{ + tag = "J_SpineLower"; + if ( self.damagelocation == "helmet" ) + { + tag = "j_head"; + } + else if ( self.damagelocation == "head" ) + { + tag = "j_head"; + } + else if ( self.damagelocation == "neck" ) + { + tag = "j_neck"; + } + else if ( self.damagelocation == "torso_upper" ) + { + tag = "j_spineupper"; + } + else if ( self.damagelocation == "torso_lower" ) + { + tag = "j_spinelower"; + } + else if ( self.damagelocation == "right_arm_upper" ) + { + tag = "j_elbow_ri"; + } + else if ( self.damagelocation == "left_arm_upper" ) + { + tag = "j_elbow_le"; + } + else if ( self.damagelocation == "right_arm_lower" ) + { + tag = "j_wrist_ri"; + } + else + { + if ( self.damagelocation == "left_arm_lower" ) + { + tag = "j_wrist_le"; + } + } + return tag; +} + +set_last_gib_time() +{ + anim notify( "stop_last_gib_time" ); + anim endon( "stop_last_gib_time" ); + wait 0,05; + anim.lastgibtime = getTime(); + anim.totalgibs = randomintrange( anim.mingibs, anim.maxgibs ); +} + +get_gib_ref( direction ) +{ + if ( isDefined( self.a.gib_ref ) ) + { + return; + } + if ( self.damagetaken < 165 ) + { + return; + } + if ( getTime() > ( anim.lastgibtime + anim.gibdelay ) && anim.totalgibs > 0 ) + { + anim.totalgibs--; + + anim thread set_last_gib_time(); + refs = []; + switch( direction ) + { + case "right": + refs[ refs.size ] = "left_arm"; + refs[ refs.size ] = "left_leg"; + gib_ref = get_random( refs ); + break; + case "left": + refs[ refs.size ] = "right_arm"; + refs[ refs.size ] = "right_leg"; + gib_ref = get_random( refs ); + break; + case "forward": + refs[ refs.size ] = "right_arm"; + refs[ refs.size ] = "left_arm"; + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "guts"; + refs[ refs.size ] = "no_legs"; + gib_ref = get_random( refs ); + break; + case "back": + refs[ refs.size ] = "right_arm"; + refs[ refs.size ] = "left_arm"; + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "no_legs"; + gib_ref = get_random( refs ); + break; + default: + refs[ refs.size ] = "right_arm"; + refs[ refs.size ] = "left_arm"; + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "no_legs"; + refs[ refs.size ] = "guts"; + gib_ref = get_random( refs ); + break; + } + self.a.gib_ref = gib_ref; + } + else + { + self.a.gib_ref = undefined; + } +} + +get_random( array ) +{ + return array[ randomint( array.size ) ]; +} + +do_gib() +{ + if ( !is_mature() ) + { + return; + } + if ( !isDefined( self.a.gib_ref ) ) + { + return; + } + if ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + return; + } + if ( self is_zombie_gibbed() ) + { + return; + } + self set_zombie_gibbed(); + gib_ref = self.a.gib_ref; + limb_data = get_limb_data( gib_ref ); + if ( !isDefined( limb_data ) ) + { +/# + println( "^3animscriptszm_death.gsc - limb_data is not setup for gib_ref on model: " + self.model + " and gib_ref of: " + self.a.gib_ref ); +#/ + return; + } + if ( isDefined( self.dont_throw_gib ) && !self.dont_throw_gib ) + { + self thread throw_gib( limb_data[ "spawn_tags_array" ] ); + } + if ( gib_ref == "head" ) + { + self.hat_gibbed = 1; + self.head_gibbed = 1; + size = self getattachsize(); + i = 0; + while ( i < size ) + { + model = self getattachmodelname( i ); + if ( issubstr( model, "head" ) ) + { + if ( isDefined( self.hatmodel ) ) + { + self detach( self.hatmodel, "" ); + } + self detach( model, "" ); + if ( isDefined( self.torsodmg5 ) ) + { + self attach( self.torsodmg5, "", 1 ); + } + break; + } + else + { + i++; + } + } + } + else self setmodel( limb_data[ "body_model" ] ); + self attach( limb_data[ "legs_model" ] ); +} + +precache_gib_fx() +{ + anim._effect[ "animscript_gib_fx" ] = loadfx( "weapon/bullet/fx_flesh_gib_fatal_01" ); + anim._effect[ "animscript_gibtrail_fx" ] = loadfx( "trail/fx_trail_blood_streak" ); + anim._effect[ "death_neckgrab_spurt" ] = loadfx( "impacts/fx_flesh_hit_neck_fatal" ); +} + +get_limb_data( gib_ref ) +{ + temp_array = []; + if ( gib_ref == "right_arm" && isDefined( self.torsodmg2 ) && isDefined( self.legdmg1 ) && isDefined( self.gibspawn1 ) && isDefined( self.gibspawntag1 ) ) + { + temp_array[ "right_arm" ][ "body_model" ] = self.torsodmg2; + temp_array[ "right_arm" ][ "legs_model" ] = self.legdmg1; + temp_array[ "right_arm" ][ "spawn_tags_array" ] = []; + temp_array[ "right_arm" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_right_arm; + } + if ( gib_ref == "left_arm" && isDefined( self.torsodmg3 ) && isDefined( self.legdmg1 ) && isDefined( self.gibspawn2 ) && isDefined( self.gibspawntag2 ) ) + { + temp_array[ "left_arm" ][ "body_model" ] = self.torsodmg3; + temp_array[ "left_arm" ][ "legs_model" ] = self.legdmg1; + temp_array[ "left_arm" ][ "spawn_tags_array" ] = []; + temp_array[ "left_arm" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_left_arm; + } + if ( gib_ref == "right_leg" && isDefined( self.torsodmg1 ) && isDefined( self.legdmg2 ) && isDefined( self.gibspawn3 ) && isDefined( self.gibspawntag3 ) ) + { + temp_array[ "right_leg" ][ "body_model" ] = self.torsodmg1; + temp_array[ "right_leg" ][ "legs_model" ] = self.legdmg2; + temp_array[ "right_leg" ][ "spawn_tags_array" ] = []; + temp_array[ "right_leg" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_right_leg; + } + if ( gib_ref == "left_leg" && isDefined( self.torsodmg1 ) && isDefined( self.legdmg3 ) && isDefined( self.gibspawn4 ) && isDefined( self.gibspawntag4 ) ) + { + temp_array[ "left_leg" ][ "body_model" ] = self.torsodmg1; + temp_array[ "left_leg" ][ "legs_model" ] = self.legdmg3; + temp_array[ "left_leg" ][ "spawn_tags_array" ] = []; + temp_array[ "left_leg" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_left_leg; + } + if ( gib_ref == "no_legs" && isDefined( self.torsodmg1 ) && isDefined( self.legdmg4 ) && isDefined( self.gibspawn4 ) && isDefined( self.gibspawn3 ) && isDefined( self.gibspawntag3 ) && isDefined( self.gibspawntag4 ) ) + { + temp_array[ "no_legs" ][ "body_model" ] = self.torsodmg1; + temp_array[ "no_legs" ][ "legs_model" ] = self.legdmg4; + temp_array[ "no_legs" ][ "spawn_tags_array" ] = []; + temp_array[ "no_legs" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_right_leg; + temp_array[ "no_legs" ][ "spawn_tags_array" ][ 1 ] = level._zombie_gib_piece_index_left_leg; + } + if ( gib_ref == "guts" && isDefined( self.torsodmg4 ) && isDefined( self.legdmg1 ) ) + { + temp_array[ "guts" ][ "body_model" ] = self.torsodmg4; + temp_array[ "guts" ][ "legs_model" ] = self.legdmg1; + temp_array[ "guts" ][ "spawn_tags_array" ] = []; + temp_array[ "guts" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_guts; + if ( isDefined( self.gibspawn2 ) && isDefined( self.gibspawntag2 ) ) + { + temp_array[ "guts" ][ "spawn_tags_array" ][ 1 ] = level._zombie_gib_piece_index_left_arm; + } + } + if ( gib_ref == "head" && isDefined( self.torsodmg5 ) && isDefined( self.legdmg1 ) ) + { + temp_array[ "head" ][ "body_model" ] = self.torsodmg5; + temp_array[ "head" ][ "legs_model" ] = self.legdmg1; + temp_array[ "head" ][ "spawn_tags_array" ] = []; + temp_array[ "head" ][ "spawn_tags_array" ][ 0 ] = level._zombie_gib_piece_index_head; + if ( isDefined( self.hat_gibbed ) && !self.hat_gibbed && isDefined( self.gibspawn5 ) && isDefined( self.gibspawntag5 ) ) + { + temp_array[ "head" ][ "spawn_tags_array" ][ 1 ] = level._zombie_gib_piece_index_hat; + } + } + if ( isDefined( temp_array[ gib_ref ] ) ) + { + return temp_array[ gib_ref ]; + } + else + { + return undefined; + } +} + +throw_gib( limb_tags_array ) +{ + if ( isDefined( limb_tags_array ) ) + { + if ( isDefined( level.track_gibs ) ) + { + level [[ level.track_gibs ]]( self, limb_tags_array ); + } + if ( isDefined( self.launch_gib_up ) ) + { + self gib( "up", limb_tags_array ); + return; + } + else + { + self gib( "normal", limb_tags_array ); + } + } +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_combat.gsc b/patch_zm/maps/mp/animscripts/zm_dog_combat.gsc new file mode 100644 index 0000000..c5fed44 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_combat.gsc @@ -0,0 +1,510 @@ +#include maps/mp/animscripts/dog_stop; +#include maps/mp/animscripts/utility; +#include common_scripts/utility; + +main() +{ + debug_anim_print( "dog_combat::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); +/# + if ( !debug_allow_combat() ) + { + combatidle(); + return; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + combatidle(); + return; + } +/# + assert( isDefined( self.enemy ) ); +#/ + if ( !isalive( self.enemy ) ) + { + combatidle(); + return; + } + if ( isplayer( self.enemy ) ) + { + self meleebiteattackplayer( self.enemy ); + } +} + +combatidle() +{ + self set_orient_mode( "face enemy" ); + self animmode( "zonly_physics" ); + idleanim = "zm_combat_attackidle"; + debug_anim_print( "dog_combat::combatIdle() - Setting " + idleanim ); + self setanimstatefromasd( idleanim ); + maps/mp/animscripts/zm_shared::donotetracks( "attack_combat" ); + debug_anim_print( "dog_combat::combatIdle() - " + idleanim + " notify done." ); +} + +shouldwaitincombatidle() +{ + if ( isDefined( level.hostmigrationtimer ) ) + { + return 1; + } +/# + if ( isDefined( self.enemy ) ) + { + assert( isalive( self.enemy ) ); + } +#/ + if ( isDefined( self.enemy.dogattackallowtime ) ) + { + return getTime() < self.enemy.dogattackallowtime; + } +} + +setnextdogattackallowtime( time ) +{ + self.dogattackallowtime = getTime() + time; +} + +meleebiteattackplayer( player ) +{ + self animmode( "gravity", 0 ); + self.safetochangescript = 0; + prepareattackplayer( player ); + attack_time = 1,2 + randomfloat( 0,4 ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_run_attack" ); + self setanimstatefromasd( "zm_combat_attackidle" ); + maps/mp/animscripts/zm_shared::donotetracksfortime( attack_time, "attack_combat", ::handlemeleebiteattacknotetracks, player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_run notify done." ); + self.safetochangescript = 1; + self animmode( "none", 0 ); +} + +meleebiteattackplayer2( player ) +{ + attackrangebuffer = 30; + for ( ;; ) + { + if ( !isalive( self.enemy ) ) + { + break; + } + else meleerange = self.meleeattackdist + attackrangebuffer; + if ( isDefined( player.syncedmeleetarget ) && player.syncedmeleetarget != self ) + { + if ( checkendcombat( meleerange ) ) + { + break; + } + else combatidle(); + continue; + } + else + { + if ( self shouldwaitincombatidle() ) + { + combatidle(); + break; + } + else + { + self set_orient_mode( "face enemy" ); + self animmode( "gravity" ); + self.safetochangescript = 0; +/# + if ( getDvarInt( "debug_dog_sound" ) ) + { + iprintln( "dog " + self getentnum() + " attack player " + getTime() ); +#/ + } + player setnextdogattackallowtime( 200 ); + if ( dog_cant_kill_in_one_hit( player ) ) + { + level.lastdogmeleeplayertime = getTime(); + level.dogmeleeplayercounter++; + if ( use_low_attack() ) + { + self animmode( "angle deltas" ); + self setanimstatefromasd( "zm_combat_attack_player_close_range" ); + domeleeafterwait( 0,1 ); + maps/mp/animscripts/zm_shared::donotetracksfortime( 1,4, "attack_combat" ); + self animmode( "gravity" ); + } + else + { + attack_time = 1,2 + randomfloat( 0,4 ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_run_attack" ); + self setanimstatefromasd( "zm_combat_attackidle" ); + domeleeafterwait( 0,1 ); + maps/mp/animscripts/zm_shared::donotetracksfortime( attack_time, "attack_combat", ::handlemeleebiteattacknotetracks, player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_run notify done." ); + } + } + else + { + self thread dog_melee_death( player ); + player.attacked_by_dog = 1; + self thread clear_player_attacked_by_dog_on_death( player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - Setting combat_attack_player" ); + self setanimstate( "combat_attack_player" ); + self maps/mp/animscripts/shared::donotetracks( "done", ::handlemeleefinishattacknotetracks, player ); + debug_anim_print( "dog_combat::meleeBiteAttackPlayer() - combat_attack_player notify done." ); + self notify( "dog_no_longer_melee_able" ); + self setcandamage( 1 ); + self unlink(); + } + self.safetochangescript = 1; + if ( checkendcombat( meleerange ) ) + { + break; + } + } + } + else + { + } + } + self.safetochangescript = 1; + self animmode( "none" ); +} + +domeleeafterwait( time ) +{ + self endon( "death" ); + wait time; + hitent = self melee(); + if ( isDefined( hitent ) ) + { + if ( isplayer( hitent ) ) + { + hitent shellshock( "dog_bite", 1 ); + } + } +} + +handlemeleebiteattacknotetracks2( note, player ) +{ + if ( note == "dog_melee" ) + { + self melee( anglesToForward( self.angles ) ); + } +} + +handlemeleebiteattacknotetracks( note, player ) +{ + switch( note ) + { + case "dog_melee": + if ( !isDefined( level.dogmeleebiteattacktime ) ) + { + level.dogmeleebiteattacktime = getTime() - level.dogmeleebiteattacktimestart; + level.dogmeleebiteattacktime += 50; + } + hitent = self melee( anglesToForward( self.angles ) ); + if ( isDefined( hitent ) ) + { + if ( isplayer( hitent ) ) + { + hitent shellshock( "dog_bite", 1 ); + } + } + else + { + if ( isDefined( level.dog_melee_miss ) ) + { + self [[ level.dog_melee_miss ]]( player ); + } + } + break; + case "stop_tracking": + melee_time = 200; + if ( !isDefined( level.dogmeleebiteattacktime ) ) + { + level.dogmeleebiteattacktimestart = getTime(); + } + else + { + melee_time = level.dogmeleebiteattacktime; + } + self thread orienttoplayerdeadreckoning( player, melee_time ); + break; + } +} + +handlemeleefinishattacknotetracks( note, player ) +{ + switch( note ) + { + case "dog_melee": + if ( !isDefined( level.dogmeleefinishattacktime ) ) + { + level.dogmeleefinishattacktime = getTime() - level.dogmeleefinishattacktimestart; + level.dogmeleefinishattacktime += 50; + } + hitent = self melee( anglesToForward( self.angles ) ); + if ( isDefined( hitent ) && isalive( player ) ) + { + if ( hitent == player ) + { + break; + } + else } + else attackmiss(); + return 1; + case "dog_early": + self notify( "dog_early_notetrack" ); + debug_anim_print( "dog_combat::handleMeleeFinishAttackNoteTracks() - Setting combat_attack_player_early" ); + self setanimstate( "combat_attack_player_early" ); + break; + case "dog_lunge": + thread set_melee_timer( player ); + debug_anim_print( "dog_combat::handleMeleeFinishAttackNoteTracks() - Setting combat_attack_player_lunge" ); + self setanimstate( "combat_attack_player_lunge" ); + break; + case "dogbite_damage": + self thread killplayer( player ); + break; + case "stop_tracking": + melee_time = 200; + if ( !isDefined( level.dogmeleefinishattacktime ) ) + { + level.dogmeleefinishattacktimestart = getTime(); + } + else + { + melee_time = level.dogmeleefinishattacktime; + } + self thread orienttoplayerdeadreckoning( player, melee_time ); + break; + } +} + +orienttoplayerdeadreckoning( player, time_till_bite ) +{ + enemy_attack_current_origin = player.origin; + enemy_attack_current_time = getTime(); + enemy_motion_time_delta = enemy_attack_current_time - self.enemy_attack_start_time; + enemy_motion_direction = enemy_attack_current_origin - self.enemy_attack_start_origin; + if ( enemy_motion_time_delta == 0 ) + { + enemy_predicted_position = player.origin; + } + else + { + enemy_velocity = enemy_motion_direction / enemy_motion_time_delta; + enemy_predicted_position = player.origin + ( enemy_velocity * time_till_bite ); + } + self set_orient_mode( "face point", enemy_predicted_position ); +} + +checkendcombat( meleerange ) +{ + if ( !isDefined( self.enemy ) ) + { + return 0; + } + disttotargetsq = distancesquared( self.origin, self.enemy.origin ); + return disttotargetsq > ( meleerange * meleerange ); +} + +use_low_attack( player ) +{ + height_diff = self.enemy_attack_start_origin[ 2 ] - self.origin[ 2 ]; + low_enough = 30; + if ( height_diff < low_enough && self.enemy_attack_start_stance == "prone" ) + { + return 1; + } + melee_origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 65 ); + enemy_origin = ( self.enemy.origin[ 0 ], self.enemy.origin[ 1 ], self.enemy.origin[ 2 ] + 32 ); + if ( !bullettracepassed( melee_origin, enemy_origin, 0, self ) ) + { + return 1; + } + return 0; +} + +prepareattackplayer( player ) +{ + level.dog_death_quote = &"SCRIPT_PLATFORM_DOG_DEATH_DO_NOTHING"; + distancetotarget = distance( self.origin, self.enemy.origin ); + targetheight = abs( self.enemy.origin[ 2 ] - self.origin[ 2 ] ); + self.enemy_attack_start_distance = distancetotarget; + self.enemy_attack_start_origin = player.origin; + self.enemy_attack_start_time = getTime(); + self.enemy_attack_start_stance = player getstance(); +} + +attackteleportthread( offset ) +{ + self endon( "death" ); + self endon( "killanimscript" ); + reps = 5; + increment = ( offset[ 0 ] / reps, offset[ 1 ] / reps, offset[ 2 ] / reps ); + i = 0; + while ( i < reps ) + { + self teleport( self.origin + increment ); + wait 0,05; + i++; + } +} + +player_attacked() +{ + if ( isalive( self ) ) + { + return self meleebuttonpressed(); + } +} + +set_melee_timer( player ) +{ + wait 0,15; + self.melee_able_timer = getTime(); +} + +clear_player_attacked_by_dog_on_death( player ) +{ + self waittill( "death" ); + player.attacked_by_dog = undefined; +} + +dog_cant_kill_in_one_hit( player ) +{ + return 1; + if ( isDefined( player.dogs_dont_instant_kill ) ) + { +/# + assert( player.dogs_dont_instant_kill, "Dont set player.dogs_dont_instant_kill to false, set to undefined" ); +#/ + return 1; + } + if ( ( getTime() - level.lastdogmeleeplayertime ) > 8000 ) + { + level.dogmeleeplayercounter = 0; + } + if ( level.dogmeleeplayercounter < level.dog_hits_before_kill ) + { + return player.health > 25; + } +} + +dog_melee_death( player ) +{ + self endon( "killanimscript" ); + self endon( "dog_no_longer_melee_able" ); + pressed = 0; + press_time = anim.dog_presstime; + self waittill( "dog_early_notetrack" ); + while ( player player_attacked() ) + { + wait 0,05; + } + for ( ;; ) + { + if ( !pressed ) + { + if ( player player_attacked() ) + { + pressed = 1; + if ( isDefined( self.melee_able_timer ) && isalive( player ) ) + { + if ( ( getTime() - self.melee_able_timer ) <= press_time ) + { + player.player_view.custom_dog_save = "neck_snap"; + self notify( "melee_stop" ); + debug_anim_print( "dog_combat::dog_melee_death() - Setting combat_player_neck_snap" ); + self setanimstate( "combat_player_neck_snap" ); + self waittillmatch( "done" ); + return "dog_death"; + debug_anim_print( "dog_combat::dog_melee_death() - combat_player_neck_snap notify done." ); + self playsound( "aml_dog_neckbreak" ); + self setcandamage( 1 ); + self.a.nodeath = 1; + dif = player.origin - self.origin; + dif = ( dif[ 0 ], dif[ 1 ], 0 ); + self dodamage( self.health + 503, self geteye() - dif, player ); + self notify( "killanimscript" ); + } + else + { + debug_anim_print( "dog_combat::dog_melee_death() - Setting combat_player_neck_snap" ); + self setanimstate( "combat_attack_player" ); + level.dog_death_quote = &"SCRIPT_PLATFORM_DOG_DEATH_TOO_LATE"; + } + return; + } + level.dog_death_quote = &"SCRIPT_PLATFORM_DOG_DEATH_TOO_SOON"; + debug_anim_print( "dog_combat::dog_melee_death() - Setting combat_player_neck_miss" ); + self setanimstate( "combat_player_neck_miss" ); + return; + } + } + else + { + if ( !player player_attacked() ) + { + pressed = 0; + } + } + wait 0,05; + } +} + +attackmiss() +{ + if ( isDefined( self.enemy ) ) + { + forward = anglesToForward( self.angles ); + dirtoenemy = self.enemy.origin - ( self.origin + vectorScale( forward, 50 ) ); + if ( vectordot( dirtoenemy, forward ) > 0 ) + { + debug_anim_print( "dog_combat::attackMiss() - Setting combat_attack_miss" ); + self setanimstate( "combat_attack_miss" ); + self thread maps/mp/animscripts/dog_stop::lookattarget( "normal" ); + } + else self.skipstartmove = 1; + self thread attackmisstracktargetthread(); + if ( ( ( dirtoenemy[ 0 ] * forward[ 1 ] ) - ( dirtoenemy[ 1 ] * forward[ 0 ] ) ) > 0 ) + { + debug_anim_print( "dog_combat::attackMiss() - Setting combat_attack_miss_right" ); + self setanimstate( "combat_attack_miss_right" ); + } + else + { + debug_anim_print( "dog_combat::attackMiss() - Setting combat_attack_miss_left" ); + self setanimstate( "combat_attack_miss_left" ); + } + } + else + { + debug_anim_print( "dog_combat::attackMiss() - Setting combat_attack_miss" ); + self setanimstate( "combat_attack_miss" ); + } + self maps/mp/animscripts/shared::donotetracks( "done" ); + debug_anim_print( "dog_combat::attackMiss() - attackMiss notify done." ); + self notify( "stop tracking" ); + debug_anim_print( "dog_combat::attackMiss() - Stopped tracking" ); +} + +attackmisstracktargetthread() +{ + self endon( "killanimscript" ); + wait 0,6; + self set_orient_mode( "face enemy" ); +} + +killplayer( player ) +{ + self endon( "pvd_melee_interrupted" ); + player.specialdeath = 1; + player setcandamage( 1 ); + wait 1; + damage = player.health + 1; + if ( !isalive( player ) ) + { + return; + } +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_death.gsc b/patch_zm/maps/mp/animscripts/zm_dog_death.gsc new file mode 100644 index 0000000..6fec47d --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_death.gsc @@ -0,0 +1,30 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/utility; + +main() +{ + debug_anim_print( "dog_death::main()" ); + self setaimanimweights( 0, 0 ); + self endon( "killanimscript" ); + if ( isDefined( self.a.nodeath ) ) + { +/# + assert( self.a.nodeath, "Nodeath needs to be set to true or undefined." ); +#/ + wait 3; + return; + } + self unlink(); + if ( isDefined( self.enemy ) && isDefined( self.enemy.syncedmeleetarget ) && self.enemy.syncedmeleetarget == self ) + { + self.enemy.syncedmeleetarget = undefined; + } + death_anim = "death_" + getanimdirection( self.damageyaw ); +/# + println( death_anim ); +#/ + self animmode( "gravity" ); + debug_anim_print( "dog_death::main() - Setting " + death_anim ); + self setanimstatefromasd( death_anim ); + maps/mp/animscripts/zm_shared::donotetracks( "dead_dog" ); +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_flashed.gsc b/patch_zm/maps/mp/animscripts/zm_dog_flashed.gsc new file mode 100644 index 0000000..af53db4 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_flashed.gsc @@ -0,0 +1,6 @@ + +main() +{ + self endon( "killanimscript" ); + self endon( "stop_flashbang_effect" ); +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_init.gsc b/patch_zm/maps/mp/animscripts/zm_dog_init.gsc new file mode 100644 index 0000000..5d1b1ba --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_init.gsc @@ -0,0 +1,61 @@ +#include maps/mp/animscripts/dog_move; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + level.dog_debug_orient = 0; + level.dog_debug_anims = 0; + level.dog_debug_anims_ent = 0; + level.dog_debug_turns = 0; + debug_anim_print( "dog_init::main() " ); + maps/mp/animscripts/dog_move::setup_sound_variables(); + anim_get_dvar_int( "debug_dog_sound", "0" ); + anim_get_dvar_int( "debug_dog_notetracks", "0" ); + self.ignoresuppression = 1; + self.chatinitialized = 0; + self.nododgemove = 1; + level.dogattackplayerdist = 102; + level.dogattackplayercloserangedist = 102; + level.dogrunturnspeed = 20; + level.dogrunpainspeed = 20; + self.meleeattackdist = 0; + self thread setmeleeattackdist(); + self.a = spawnstruct(); + self.a.pose = "stand"; + self.a.nextstandinghitdying = 0; + self.a.movement = "walk"; + self.suppressionthreshold = 1; + self.disablearrivals = 0; + level.dogstoppingdistsq = 3416,82; + self.stopanimdistsq = level.dogstoppingdistsq; + self.pathenemyfightdist = 512; + self settalktospecies( "zombiedog" ); + level.lastdogmeleeplayertime = 0; + level.dogmeleeplayercounter = 0; + if ( !isDefined( level.dog_hits_before_kill ) ) + { + level.dog_hits_before_kill = 1; + } +} + +setmeleeattackdist() +{ + self endon( "death" ); + while ( 1 ) + { + if ( isDefined( self.enemy ) ) + { + if ( isplayer( self.enemy ) ) + { + self.meleeattackdist = 64; + break; + } + else + { + self.meleeattackdist = 102; + } + } + wait 1; + } +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_jump.gsc b/patch_zm/maps/mp/animscripts/zm_dog_jump.gsc new file mode 100644 index 0000000..11ddcb8 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_jump.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_jump::main()" ); + self setaimanimweights( 0, 0 ); + self.safetochangescript = 0; + self setanimstatefromasd( "zm_traverse_wallhop" ); + maps/mp/animscripts/zm_shared::donotetracks( "traverse_wallhop" ); + self.safetochangescript = 1; +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_move.gsc b/patch_zm/maps/mp/animscripts/zm_dog_move.gsc new file mode 100644 index 0000000..53dbe04 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_move.gsc @@ -0,0 +1,259 @@ +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/dog_stop; +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +setup_sound_variables() +{ + level.dog_sounds[ "far" ] = spawnstruct(); + level.dog_sounds[ "close" ] = spawnstruct(); + level.dog_sounds[ "close" ].minrange = 0; + level.dog_sounds[ "close" ].maxrange = 500; + level.dog_sounds[ "close" ].sound = "aml_dog_bark_close"; + level.dog_sounds[ "close" ].soundlengthplaceholder = 0,2; + level.dog_sounds[ "close" ].aftersoundwaitmin = 0,1; + level.dog_sounds[ "close" ].aftersoundwaitmax = 0,3; + level.dog_sounds[ "close" ].minrangesqr = level.dog_sounds[ "close" ].minrange * level.dog_sounds[ "close" ].minrange; + level.dog_sounds[ "close" ].maxrangesqr = level.dog_sounds[ "close" ].maxrange * level.dog_sounds[ "close" ].maxrange; + level.dog_sounds[ "far" ].minrange = 500; + level.dog_sounds[ "far" ].maxrange = 0; + level.dog_sounds[ "far" ].sound = "aml_dog_bark"; + level.dog_sounds[ "far" ].soundlengthplaceholder = 0,2; + level.dog_sounds[ "far" ].aftersoundwaitmin = 0,1; + level.dog_sounds[ "far" ].aftersoundwaitmax = 0,3; + level.dog_sounds[ "far" ].minrangesqr = level.dog_sounds[ "far" ].minrange * level.dog_sounds[ "far" ].minrange; + level.dog_sounds[ "far" ].maxrangesqr = level.dog_sounds[ "far" ].maxrange * level.dog_sounds[ "far" ].maxrange; +} + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_move::main()" ); + self setaimanimweights( 0, 0 ); + do_movement = 1; +/# + if ( !debug_allow_movement() ) + { + do_movement = 0; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + do_movement = 0; + } + if ( !isDefined( self.traversecomplete ) && !isDefined( self.skipstartmove ) && self.a.movement == "run" && do_movement ) + { + self startmove(); + blendtime = 0; + } + else + { + blendtime = 0,2; + } + self.traversecomplete = undefined; + self.skipstartmove = undefined; + if ( do_movement ) + { + if ( self.a.movement == "run" ) + { + debug_anim_print( "dog_move::main() - Setting move_run" ); + self setanimstatefromasd( "zm_move_run" ); + maps/mp/animscripts/zm_shared::donotetracksfortime( 0,1, "move_run" ); + debug_anim_print( "dog_move::main() - move_run wait 0.1 done " ); + } + else + { + debug_anim_print( "dog_move::main() - Setting move_start " ); + self setanimstatefromasd( "zm_move_walk" ); + maps/mp/animscripts/zm_shared::donotetracks( "move_walk" ); + } + } + self thread maps/mp/animscripts/dog_stop::lookattarget( "normal" ); + while ( 1 ) + { + self moveloop(); + if ( self.a.movement == "run" ) + { + if ( self.disablearrivals == 0 ) + { + self thread stopmove(); + } + self waittill( "run" ); + } + } +} + +moveloop() +{ + self endon( "killanimscript" ); + self endon( "stop_soon" ); + while ( 1 ) + { + do_movement = 1; +/# + if ( !debug_allow_movement() ) + { + do_movement = 0; +#/ + } + if ( isDefined( level.hostmigrationtimer ) ) + { + do_movement = 0; + } + while ( !do_movement ) + { + self setaimanimweights( 0, 0 ); + self setanimstatefromasd( "zm_stop_idle" ); + maps/mp/animscripts/zm_shared::donotetracks( "stop_idle" ); + } + if ( self.disablearrivals ) + { + self.stopanimdistsq = 0; + } + else + { + self.stopanimdistsq = level.dogstoppingdistsq; + } + if ( self.a.movement == "run" ) + { + debug_anim_print( "dog_move::moveLoop() - Setting move_run" ); + self setanimstatefromasd( "zm_move_run" ); + maps/mp/animscripts/zm_shared::donotetracksfortime( 0,2, "move_run" ); + debug_anim_print( "dog_move::moveLoop() - move_run wait 0.2 done " ); + continue; + } + else + { +/# + assert( self.a.movement == "walk" ); +#/ + debug_anim_print( "dog_move::moveLoop() - Setting move_walk " ); + self setanimstatefromasd( "zm_move_walk" ); + maps/mp/animscripts/zm_shared::donotetracksfortime( 0,1, "move_walk" ); + if ( self need_to_run() ) + { + self.a.movement = "run"; + self notify( "dog_running" ); + } + debug_anim_print( "dog_move::moveLoop() - move_walk wait 0.2 done " ); + } + } +} + +startmovetracklookahead() +{ + self endon( "killanimscript" ); + i = 0; + while ( i < 2 ) + { + lookaheadangle = vectorToAngle( self.lookaheaddir ); + self set_orient_mode( "face angle", lookaheadangle ); + i++; + } +} + +startmove() +{ + debug_anim_print( "dog_move::startMove() - Setting move_start " ); + self setanimstatefromasd( "zm_move_start" ); + maps/mp/animscripts/zm_shared::donotetracks( "move_start" ); + debug_anim_print( "dog_move::startMove() - move_start notify done." ); + self animmode( "none" ); + self set_orient_mode( "face motion" ); +} + +stopmove() +{ + self endon( "killanimscript" ); + self endon( "run" ); + debug_anim_print( "dog_move::stopMove() - Setting move_stop" ); + self setanimstatefromasd( "zm_move_stop" ); + maps/mp/animscripts/zm_shared::donotetracks( "move_stop" ); + debug_anim_print( "dog_move::stopMove() - move_stop notify done." ); +} + +getenemydistancesqr() +{ + if ( isDefined( self.enemy ) ) + { + return distancesquared( self.origin, self.enemy.origin ); + } + return 100000000; +} + +getsoundkey( distancesqr ) +{ + keys = getarraykeys( level.dog_sounds ); + i = 0; + while ( i < keys.size ) + { + sound_set = level.dog_sounds[ keys[ i ] ]; + if ( sound_set.minrangesqr > distancesqr ) + { + i++; + continue; + } + else if ( sound_set.maxrangesqr && sound_set.maxrangesqr < distancesqr ) + { + i++; + continue; + } + else + { + return keys[ i ]; + } + i++; + } + return keys[ keys.size - 1 ]; +} + +need_to_run() +{ + run_dist_squared = 147456; + if ( getDvar( "scr_dog_run_distance" ) != "" ) + { + dist = getDvarInt( "scr_dog_run_distance" ); + run_dist_squared = dist * dist; + } + run_yaw = 20; + run_pitch = 30; + run_height = 64; + if ( self.a.movement != "walk" ) + { + return 0; + } + if ( self.health < self.maxhealth ) + { + return 1; + } + if ( !isDefined( self.enemy ) || !isalive( self.enemy ) ) + { + return 0; + } + if ( !self cansee( self.enemy ) ) + { + return 0; + } + dist = distancesquared( self.origin, self.enemy.origin ); + if ( dist > run_dist_squared ) + { + return 0; + } + height = self.origin[ 2 ] - self.enemy.origin[ 2 ]; + if ( abs( height ) > run_height ) + { + return 0; + } + yaw = self maps/mp/animscripts/zm_utility::absyawtoenemy(); + if ( yaw > run_yaw ) + { + return 0; + } + pitch = angleClamp180( vectorToAngle( self.origin - self.enemy.origin )[ 0 ] ); + if ( abs( pitch ) > run_pitch ) + { + return 0; + } + return 1; +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_pain.gsc b/patch_zm/maps/mp/animscripts/zm_dog_pain.gsc new file mode 100644 index 0000000..b28cb45 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_pain.gsc @@ -0,0 +1,8 @@ +#include maps/mp/animscripts/utility; + +main() +{ + debug_anim_print( "dog_pain::main() " ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_stop.gsc b/patch_zm/maps/mp/animscripts/zm_dog_stop.gsc new file mode 100644 index 0000000..5c5dd06 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_stop.gsc @@ -0,0 +1,148 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + debug_anim_print( "dog_stop::main()" ); + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); + self thread lookattarget( "attackIdle" ); + while ( 1 ) + { + if ( shouldattackidle() ) + { + self randomattackidle(); + maps/mp/animscripts/zm_shared::donotetracks( "attack_idle", ::dogidlenotetracks ); + } + else + { + self set_orient_mode( "face current" ); + debug_anim_print( "dog_stop::main() - Setting stop_idle" ); + self notify( "stop tracking" ); + self setaimanimweights( 0, 0 ); + self setanimstatefromasd( "zm_stop_idle" ); + maps/mp/animscripts/zm_shared::donotetracksfortime( 0,2, "stop_idle", ::dogidlenotetracks ); + self thread lookattarget( "attackIdle" ); + } + debug_anim_print( "dog_stop::main() - stop idle loop notify done." ); + } +} + +dogidlenotetracks( note ) +{ + if ( note == "breathe_fire" ) + { + if ( isDefined( level._effect[ "dog_breath" ] ) ) + { + self.breath_fx = spawn( "script_model", self gettagorigin( "TAG_MOUTH_FX" ) ); + self.breath_fx.angles = self gettagangles( "TAG_MOUTH_FX" ); + self.breath_fx setmodel( "tag_origin" ); + self.breath_fx linkto( self, "TAG_MOUTH_FX" ); + playfxontag( level._effect[ "dog_breath" ], self.breath_fx, "tag_origin" ); + } + } +} + +isfacingenemy( tolerancecosangle ) +{ +/# + assert( isDefined( self.enemy ) ); +#/ + vectoenemy = self.enemy.origin - self.origin; + disttoenemy = length( vectoenemy ); + if ( disttoenemy < 1 ) + { + return 1; + } + forward = anglesToForward( self.angles ); + val1 = ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ); + val2 = ( ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ) ) / disttoenemy; + return ( ( ( forward[ 0 ] * vectoenemy[ 0 ] ) + ( forward[ 1 ] * vectoenemy[ 1 ] ) ) / disttoenemy ) > tolerancecosangle; +} + +randomattackidle() +{ + if ( isfacingenemy( -0,5 ) ) + { + self set_orient_mode( "face current" ); + } + else + { + self set_orient_mode( "face enemy" ); + } + if ( should_growl() ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl" ); + self setanimstatefromasd( "zm_stop_attackidle_growl" ); + return; + } + idlechance = 33; + barkchance = 66; + if ( isDefined( self.mode ) ) + { + if ( self.mode == "growl" ) + { + idlechance = 15; + barkchance = 30; + } + else + { + if ( self.mode == "bark" ) + { + idlechance = 15; + barkchance = 85; + } + } + } + rand = randomint( 100 ); + if ( rand < idlechance ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle" ); + self setanimstatefromasd( "zm_stop_attackidle" ); + } + else if ( rand < barkchance ) + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_bark " ); + self setanimstatefromasd( "zm_stop_attackidle_bark" ); + } + else + { + debug_anim_print( "dog_stop::main() - Setting stop_attackidle_growl " ); + self setanimstatefromasd( "zm_stop_attackidle_growl" ); + } +} + +shouldattackidle() +{ + if ( isDefined( self.enemy ) && isalive( self.enemy ) ) + { + return distancesquared( self.origin, self.enemy.origin ) < 1000000; + } +} + +should_growl() +{ + if ( isDefined( self.script_growl ) ) + { + return 1; + } + if ( !isalive( self.enemy ) ) + { + return 1; + } + return !self cansee( self.enemy ); +} + +lookattarget( lookposeset ) +{ + self endon( "killanimscript" ); + self endon( "stop tracking" ); + debug_anim_print( "dog_stop::lookAtTarget() - Starting look at " + lookposeset ); + self.rightaimlimit = 90; + self.leftaimlimit = -90; + self.upaimlimit = 45; + self.downaimlimit = -45; + self maps/mp/animscripts/shared::setanimaimweight( 1, 0,2 ); + self maps/mp/animscripts/shared::trackloop(); +} diff --git a/patch_zm/maps/mp/animscripts/zm_dog_turn.gsc b/patch_zm/maps/mp/animscripts/zm_dog_turn.gsc new file mode 100644 index 0000000..0cbc0cb --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_dog_turn.gsc @@ -0,0 +1,136 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ + self endon( "killanimscript" ); + debug_anim_print( "dog_turn::main()" ); + self setaimanimweights( 0, 0 ); + self.safetochangescript = 0; + deltayaw = self getdeltaturnyaw(); + if ( need_to_turn_around( deltayaw ) ) + { + turn_180( deltayaw ); + } + else + { + turn_90( deltayaw ); + } + move_out_of_turn(); + self.skipstartmove = 1; + self.safetochangescript = 1; +} + +need_to_turn_around( deltayaw ) +{ + angle = getDvarFloat( "dog_turn180_angle" ); + if ( deltayaw > angle || deltayaw < ( -1 * angle ) ) + { + debug_turn_print( "need_to_turn_around: " + deltayaw + " YES" ); + return 1; + } + debug_turn_print( "need_to_turn_around: " + deltayaw + " NO" ); + return 0; +} + +do_turn_anim( stopped_anim, run_anim, wait_time, run_wait_time ) +{ + speed = length( self getvelocity() ); + do_anim = stopped_anim; + if ( level.dogrunturnspeed < speed ) + { + do_anim = run_anim; + wait_time = run_wait_time; + } + debug_anim_print( "dog_move::do_turn_anim() - Setting " + do_anim ); + self setanimstatefromasd( do_anim ); + maps/mp/animscripts/zm_shared::donotetracksfortime( run_wait_time, "move_turn" ); + debug_anim_print( "dog_move::turn_around_right() - done with " + do_anim + " wait time " + run_wait_time ); +} + +turn_left() +{ + self do_turn_anim( "move_turn_left", "move_run_turn_left", 0,5, 0,5 ); +} + +turn_right() +{ + self do_turn_anim( "move_turn_right", "move_run_turn_right", 0,5, 0,5 ); +} + +turn_180_left() +{ + self do_turn_anim( "move_turn_around_left", "move_run_turn_around_left", 0,5, 0,7 ); +} + +turn_180_right() +{ + self do_turn_anim( "move_turn_around_right", "move_run_turn_around_right", 0,5, 0,7 ); +} + +move_out_of_turn() +{ + if ( self.a.movement == "run" ) + { + debug_anim_print( "dog_move::move_out_of_turn() - Setting move_run" ); + self setanimstatefromasd( "zm_move_run" ); + maps/mp/animscripts/zm_shared::donotetracksfortime( 0,1, "move_run" ); + debug_anim_print( "dog_move::move_out_of_turn() - move_run wait 0.1 done " ); + } + else + { + debug_anim_print( "dog_move::move_out_of_turn() - Setting move_start " ); + self setanimstatefromasd( "zm_move_walk" ); + maps/mp/animscripts/zm_shared::donotetracks( "move_walk" ); + } +} + +turn_90( deltayaw ) +{ + self animmode( "zonly_physics" ); + debug_turn_print( "turn_90 deltaYaw: " + deltayaw ); + if ( deltayaw > getDvarFloat( "dog_turn90_angle" ) ) + { + debug_turn_print( "turn_90 left", 1 ); + self turn_left(); + } + else + { + debug_turn_print( "turn_90 right", 1 ); + self turn_right(); + } +} + +turn_180( deltayaw ) +{ + self animmode( "zonly_physics" ); + debug_turn_print( "turn_180 deltaYaw: " + deltayaw ); + if ( deltayaw > 177 || deltayaw < -177 ) + { + if ( randomint( 2 ) == 0 ) + { + debug_turn_print( "turn_around random right", 1 ); + self turn_180_right(); + } + else + { + debug_turn_print( "turn_around random left", 1 ); + self turn_180_left(); + } + } + else + { + if ( deltayaw > getDvarFloat( "dog_turn180_angle" ) ) + { + debug_turn_print( "turn_around left", 1 ); + self turn_180_left(); + return; + } + else + { + debug_turn_print( "turn_around right", 1 ); + self turn_180_right(); + } + } +} diff --git a/patch_zm/maps/mp/animscripts/zm_flashed.gsc b/patch_zm/maps/mp/animscripts/zm_flashed.gsc new file mode 100644 index 0000000..bdf6899 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_flashed.gsc @@ -0,0 +1,6 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ +} diff --git a/patch_zm/maps/mp/animscripts/zm_init.gsc b/patch_zm/maps/mp/animscripts/zm_init.gsc new file mode 100644 index 0000000..fb399ef --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_init.gsc @@ -0,0 +1,158 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/zm_init; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + self.a = spawnstruct(); + self.team = level.zombie_team; + firstinit(); + self.a.pose = "stand"; + self.a.movement = "stop"; + self.a.state = "stop"; + self.a.special = "none"; + self.a.combatendtime = getTime(); + self.a.script = "init"; + self.a.alertness = "casual"; + self.a.lastenemytime = getTime(); + self.a.forced_cover = "none"; + self.a.desired_script = "none"; + self.a.current_script = "none"; + self.a.lookangle = 0; + self.a.paintime = 0; + self.a.nextgrenadetrytime = 0; + self.walk = 0; + self.sprint = 0; + self.a.runblendtime = 0,2; + self.a.flamepaintime = 0; + self.a.postscriptfunc = undefined; + self.a.stance = "stand"; + self._animactive = 0; + self thread deathnotify(); + self.baseaccuracy = self.accuracy; + if ( !isDefined( self.script_accuracy ) ) + { + self.script_accuracy = 1; + } + self.a.misstime = 0; + self.a.yawtransition = "none"; + self.a.nodeath = 0; + self.a.misstime = 0; + self.a.misstimedebounce = 0; + self.a.disablepain = 0; + self.accuracystationarymod = 1; + self.chatinitialized = 0; + self.sightpostime = 0; + self.sightposleft = 1; + self.precombatrunenabled = 1; + self.is_zombie = 1; + self.a.crouchpain = 0; + self.a.nextstandinghitdying = 0; + if ( !isDefined( self.script_forcegrenade ) ) + { + self.script_forcegrenade = 0; + } +/# + self.a.lastdebugprint = ""; +#/ + self.lastenemysighttime = 0; + self.combattime = 0; + self.coveridleselecttime = -696969; + self.old = spawnstruct(); + self.reacquire_state = 0; + self.a.allow_shooting = 0; +} + +donothing() +{ +} + +empty( one, two, three, whatever ) +{ +} + +clearenemy() +{ + self notify( "stop waiting for enemy to die" ); + self endon( "stop waiting for enemy to die" ); + self.sightenemy waittill( "death" ); + self.sightpos = undefined; + self.sighttime = 0; + self.sightenemy = undefined; +} + +deathnotify() +{ + self waittill( "death", other ); + self notify( anim.scriptchange ); +} + +firstinit() +{ + if ( isDefined( anim.notfirsttime ) ) + { + return; + } + anim.notfirsttime = 1; + anim.usefacialanims = 0; + if ( !isDefined( anim.dog_health ) ) + { + anim.dog_health = 1; + } + if ( !isDefined( anim.dog_presstime ) ) + { + anim.dog_presstime = 350; + } + if ( !isDefined( anim.dog_hits_before_kill ) ) + { + anim.dog_hits_before_kill = 1; + } + level.nextgrenadedrop = randomint( 3 ); + level.lastplayersighted = 100; + anim.defaultexception = ::empty; + setdvar( "scr_expDeathMayMoveCheck", "on" ); + anim.lastsidestepanim = 0; + anim.meleerange = 64; + anim.meleerangesq = anim.meleerange * anim.meleerange; + anim.standrangesq = 262144; + anim.chargerangesq = 40000; + anim.chargelongrangesq = 262144; + anim.aivsaimeleerangesq = 160000; + anim.combatmemorytimeconst = 10000; + anim.combatmemorytimerand = 6000; + anim.scriptchange = "script_change"; + anim.lastgibtime = 0; + anim.gibdelay = 3000; + anim.mingibs = 2; + anim.maxgibs = 4; + anim.totalgibs = randomintrange( anim.mingibs, anim.maxgibs ); + anim.corner_straight_yaw_limit = 36; + if ( !isDefined( anim.optionalstepeffectfunction ) ) + { + anim.optionalstepeffects = []; + anim.optionalstepeffectfunction = ::empty; + } + anim.notetracks = []; + maps/mp/animscripts/zm_shared::registernotetracks(); + if ( !isDefined( level.flag ) ) + { + level.flag = []; + level.flags_lock = []; + } + level.painai = undefined; + anim.maymovecheckenabled = 1; + anim.badplaces = []; + anim.badplaceint = 0; + anim.covercrouchleanpitch = -55; + anim.lastcarexplosiontime = -100000; +} + +onplayerconnect() +{ + player = self; + firstinit(); + player.invul = 0; +} diff --git a/patch_zm/maps/mp/animscripts/zm_jump.gsc b/patch_zm/maps/mp/animscripts/zm_jump.gsc new file mode 100644 index 0000000..bdf6899 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_jump.gsc @@ -0,0 +1,6 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ +} diff --git a/patch_zm/maps/mp/animscripts/zm_melee.gsc b/patch_zm/maps/mp/animscripts/zm_melee.gsc new file mode 100644 index 0000000..c8cfd3c --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_melee.gsc @@ -0,0 +1,304 @@ +#include maps/mp/animscripts/zm_combat; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +meleecombat() +{ + self endon( "end_melee" ); + self endon( "killanimscript" ); +/# + assert( canmeleeanyrange() ); +#/ + self orientmode( "face enemy" ); + if ( is_true( self.sliding_on_goo ) ) + { + self animmode( "slide" ); + } + else + { + self animmode( "zonly_physics" ); + } + for ( ;; ) + { + if ( isDefined( self.marked_for_death ) ) + { + return; + } + if ( isDefined( self.enemy ) ) + { + angles = vectorToAngle( self.enemy.origin - self.origin ); + self orientmode( "face angle", angles[ 1 ] ); + } + if ( isDefined( self.zmb_vocals_attack ) ) + { + self playsound( self.zmb_vocals_attack ); + } + if ( isDefined( self.nochangeduringmelee ) && self.nochangeduringmelee ) + { + self.safetochangescript = 0; + } + if ( isDefined( self.is_inert ) && self.is_inert ) + { + return; + } + set_zombie_melee_anim_state( self ); + if ( isDefined( self.melee_anim_func ) ) + { + self thread [[ self.melee_anim_func ]](); + } + while ( 1 ) + { + self waittill( "melee_anim", note ); + if ( note == "end" ) + { + break; + } + else if ( note == "fire" ) + { + if ( !isDefined( self.enemy ) ) + { + break; + } + else if ( isDefined( self.dont_die_on_me ) && self.dont_die_on_me ) + { + break; + } + else + { + self.enemy notify( "melee_swipe" ); + oldhealth = self.enemy.health; + self melee(); + if ( !isDefined( self.enemy ) ) + { + break; + } + else if ( self.enemy.health >= oldhealth ) + { + if ( isDefined( self.melee_miss_func ) ) + { + self [[ self.melee_miss_func ]](); + break; + } + else + { + if ( isDefined( level.melee_miss_func ) ) + { + self [[ level.melee_miss_func ]](); + } + } + } +/# + if ( getDvarInt( #"7F11F572" ) ) + { + if ( self.enemy.health < oldhealth ) + { + zombie_eye = self geteye(); + player_eye = self.enemy geteye(); + trace = bullettrace( zombie_eye, player_eye, 1, self ); + hitpos = trace[ "position" ]; + dist = distance( zombie_eye, hitpos ); + iprintln( "melee HIT " + dist ); +#/ + } + } + continue; + } + else + { + if ( note == "stop" ) + { + if ( !cancontinuetomelee() ) + { + break; + } + } + } + else + { + } + } + } + if ( is_true( self.sliding_on_goo ) ) + { + self orientmode( "face enemy" ); + } + else self orientmode( "face default" ); + if ( isDefined( self.nochangeduringmelee ) || self.nochangeduringmelee && is_true( self.sliding_on_goo ) ) + { + if ( isDefined( self.enemy ) ) + { + dist_sq = distancesquared( self.origin, self.enemy.origin ); + if ( dist_sq > ( self.meleeattackdist * self.meleeattackdist ) ) + { + self.safetochangescript = 1; + wait 0,1; + break; + } + else } + else self.safetochangescript = 1; + wait 0,1; + break; + } + else + { + } + } + if ( is_true( self.sliding_on_goo ) ) + { + self animmode( "slide" ); + } + else self animmode( "none" ); + self thread maps/mp/animscripts/zm_combat::main(); +} + +cancontinuetomelee() +{ + return canmeleeinternal( "already started" ); +} + +canmeleeanyrange() +{ + return canmeleeinternal( "any range" ); +} + +canmeleedesperate() +{ + return canmeleeinternal( "long range" ); +} + +canmelee() +{ + return canmeleeinternal( "normal" ); +} + +canmeleeinternal( state ) +{ + if ( !issentient( self.enemy ) ) + { + return 0; + } + if ( !isalive( self.enemy ) ) + { + return 0; + } + if ( isDefined( self.disablemelee ) ) + { +/# + assert( self.disablemelee ); +#/ + return 0; + } + yaw = abs( getyawtoenemy() ); + if ( yaw > 60 || state != "already started" && yaw > 110 ) + { + return 0; + } + enemypoint = self.enemy getorigin(); + vectoenemy = enemypoint - self.origin; + self.enemydistancesq = lengthsquared( vectoenemy ); + if ( self.enemydistancesq <= anim.meleerangesq ) + { + if ( !ismeleepathclear( vectoenemy, enemypoint ) ) + { + return 0; + } + return 1; + } + if ( state != "any range" ) + { + chargerangesq = anim.chargerangesq; + if ( state == "long range" ) + { + chargerangesq = anim.chargelongrangesq; + } + if ( self.enemydistancesq > chargerangesq ) + { + return 0; + } + } + if ( state == "already started" ) + { + return 0; + } + if ( isDefined( self.check_melee_path ) && self.check_melee_path ) + { + if ( !ismeleepathclear( vectoenemy, enemypoint ) ) + { + self notify( "melee_path_blocked" ); + return 0; + } + } + if ( isDefined( level.can_melee ) ) + { + if ( !( self [[ level.can_melee ]]() ) ) + { + return 0; + } + } + return 1; +} + +ismeleepathclear( vectoenemy, enemypoint ) +{ + dirtoenemy = vectornormalize( ( vectoenemy[ 0 ], vectoenemy[ 1 ], 0 ) ); + meleepoint = enemypoint - ( dirtoenemy[ 0 ] * 28, dirtoenemy[ 1 ] * 28, 0 ); + if ( !self isingoal( meleepoint ) ) + { + return 0; + } + if ( self maymovetopoint( meleepoint ) ) + { + return 1; + } + trace1 = bullettrace( self.origin + vectorScale( ( 0, 0, 1 ), 20 ), meleepoint + vectorScale( ( 0, 0, 1 ), 20 ), 1, self ); + trace2 = bullettrace( self.origin + vectorScale( ( 0, 0, 1 ), 72 ), meleepoint + vectorScale( ( 0, 0, 1 ), 72 ), 1, self ); + if ( isDefined( trace1[ "fraction" ] ) && trace1[ "fraction" ] == 1 && isDefined( trace2[ "fraction" ] ) && trace2[ "fraction" ] == 1 ) + { + return 1; + } + if ( isDefined( trace1[ "entity" ] ) && trace1[ "entity" ] == self.enemy && isDefined( trace2[ "entity" ] ) && trace2[ "entity" ] == self.enemy ) + { + return 1; + } + if ( isDefined( level.zombie_melee_in_water ) && level.zombie_melee_in_water ) + { + if ( isDefined( trace1[ "surfacetype" ] ) && trace1[ "surfacetype" ] == "water" && isDefined( trace2[ "fraction" ] ) && trace2[ "fraction" ] == 1 ) + { + return 1; + } + } + return 0; +} + +set_zombie_melee_anim_state( zombie ) +{ + if ( isDefined( level.melee_anim_state ) ) + { + melee_anim_state = self [[ level.melee_anim_state ]](); + } + if ( !isDefined( melee_anim_state ) ) + { + if ( !zombie.has_legs && zombie.a.gib_ref == "no_legs" ) + { + melee_anim_state = "zm_stumpy_melee"; + break; + } + else + { + switch( zombie.zombie_move_speed ) + { + case "walk": + melee_anim_state = append_missing_legs_suffix( "zm_walk_melee" ); + break; + case "run": + case "sprint": + default: + melee_anim_state = append_missing_legs_suffix( "zm_run_melee" ); + break; + } + } +} +zombie setanimstatefromasd( melee_anim_state ); +} diff --git a/patch_zm/maps/mp/animscripts/zm_move.gsc b/patch_zm/maps/mp/animscripts/zm_move.gsc new file mode 100644 index 0000000..566ac5e --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_move.gsc @@ -0,0 +1,286 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/zm_run; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + self endon( "killanimscript" ); + self setaimanimweights( 0, 0 ); + previousscript = self.a.script; + maps/mp/animscripts/zm_utility::initialize( "zombie_move" ); + movemainloop(); +} + +movemainloop() +{ + self endon( "killanimscript" ); + self endon( "stop_soon" ); + self.needs_run_update = 1; + self notify( "needs_run_update" ); + self sidestepinit(); + self thread trysidestepthread(); + for ( ;; ) + { + self maps/mp/animscripts/zm_run::moverun(); + if ( isDefined( self.zombie_can_sidestep ) && self.zombie_can_sidestep ) + { + self trysidestep(); + } + } +} + +sidestepinit() +{ + self.a.steppeddir = 0; + self.a.lastsidesteptime = getTime(); +} + +trysidestepthread() +{ + self endon( "death" ); + self notify( "new_trySideStepThread" ); + self endon( "new_trySideStepThread" ); + if ( !isDefined( self.zombie_can_sidestep ) ) + { + return 0; + } + if ( isDefined( self.zombie_can_sidestep ) && !self.zombie_can_sidestep ) + { + return 0; + } + while ( 1 ) + { + self trysidestep(); + wait 0,05; + } +} + +trysidestep() +{ + if ( isDefined( self.shouldsidestepfunc ) ) + { + self.sidesteptype = self [[ self.shouldsidestepfunc ]](); + } + else + { + self.sidesteptype = shouldsidestep(); + } + if ( self.sidesteptype == "none" ) + { + if ( isDefined( self.zombie_can_forwardstep ) && self.zombie_can_forwardstep ) + { + self.sidesteptype = shouldforwardstep(); + } + } + if ( self.sidesteptype == "none" ) + { + return 0; + } + self.desiredstepdir = getdesiredsidestepdir( self.sidesteptype ); + self.asd_name = "zm_" + self.sidesteptype + "_" + self.desiredstepdir; + self.substate_index = self getanimsubstatefromasd( self.asd_name ); + self.stepanim = self getanimfromasd( self.asd_name, self.substate_index ); + if ( !self checkroomforanim( self.stepanim ) ) + { + return 0; + } + self.allowpain = 0; + self animcustom( ::dosidestep ); + self waittill( "sidestep_done" ); + self.allowpain = 1; +} + +getdesiredsidestepdir( sidesteptype ) +{ + if ( sidesteptype == "roll" || sidesteptype == "phase" ) + { + self.desiredstepdir = "forward"; + return self.desiredstepdir; + } +/# + assert( sidesteptype == "step", "Unsupported SideStepType" ); +#/ + randomroll = randomfloat( 1 ); + if ( self.a.steppeddir < 0 ) + { + self.desiredstepdir = "right"; + } + else if ( self.a.steppeddir > 0 ) + { + self.desiredstepdir = "left"; + } + else if ( randomroll < 0,5 ) + { + self.desiredstepdir = "right"; + } + else + { + self.desiredstepdir = "left"; + } + return self.desiredstepdir; +} + +checkroomforanim( stepanim ) +{ + if ( !self maymovefrompointtopoint( self.origin, getanimendpos( stepanim ) ) ) + { + return 0; + } + return 1; +} + +shouldsidestep() +{ + if ( cansidestep() && isplayer( self.enemy ) && self.enemy islookingat( self ) ) + { + if ( self.zombie_move_speed != "sprint" || randomfloat( 1 ) < 0,7 ) + { + return "step"; + } + else + { + return "roll"; + } + } + return "none"; +} + +cansidestep() +{ + if ( !isDefined( self.zombie_can_sidestep ) || !self.zombie_can_sidestep ) + { + return 0; + } + if ( ( getTime() - self.a.lastsidesteptime ) < 2000 ) + { + return 0; + } + if ( !isDefined( self.enemy ) ) + { + return 0; + } + if ( self.a.pose != "stand" ) + { + return 0; + } + distsqfromenemy = distancesquared( self.origin, self.enemy.origin ); + if ( distsqfromenemy < 4096 ) + { + return 0; + } + if ( distsqfromenemy > 1000000 ) + { + return 0; + } + if ( !isDefined( self.pathgoalpos ) || distancesquared( self.origin, self.pathgoalpos ) < 4096 ) + { + return 0; + } + if ( abs( self getmotionangle() ) > 15 ) + { + return 0; + } + yaw = getyawtoorigin( self.enemy.origin ); + if ( abs( yaw ) > 45 ) + { + return 0; + } + return 1; +} + +shouldforwardstep() +{ + if ( canforwardstep() && isplayer( self.enemy ) ) + { + return "phase"; + } + return "none"; +} + +canforwardstep() +{ + if ( isDefined( self.a.lastsidesteptime ) && ( getTime() - self.a.lastsidesteptime ) < 2000 ) + { + return 0; + } + if ( !isDefined( self.enemy ) ) + { + return 0; + } + if ( self.a.pose != "stand" ) + { + return 0; + } + distsqfromenemy = distancesquared( self.origin, self.enemy.origin ); + if ( distsqfromenemy < 14400 ) + { + return 0; + } + if ( distsqfromenemy > 5760000 ) + { + return 0; + } + if ( !isDefined( self.pathgoalpos ) || distancesquared( self.origin, self.pathgoalpos ) < 4096 ) + { + return 0; + } + if ( abs( self getmotionangle() ) > 15 ) + { + return 0; + } + yaw = getyawtoorigin( self.enemy.origin ); + if ( abs( yaw ) > 45 ) + { + return 0; + } + return 1; +} + +dosidestep() +{ + self endon( "death" ); + self endon( "killanimscript" ); + self playsidestepanim( self.stepanim, self.sidesteptype ); + if ( self.desiredstepdir == "left" ) + { + self.a.steppeddir--; + + } + else + { + self.a.steppeddir++; + } + self.a.lastsidesteptime = getTime(); + self notify( "sidestep_done" ); +} + +playsidestepanim( stepanim, sidesteptype ) +{ + self animmode( "gravity", 0 ); + self orientmode( "face angle", self.angles[ 1 ] ); + runblendouttime = 0,2; + if ( isDefined( self.sidestepfunc ) ) + { + self thread [[ self.sidestepfunc ]]( "step_anim", stepanim ); + } + self setanimstatefromasd( self.asd_name, self.substate_index ); + maps/mp/animscripts/zm_shared::donotetracks( "step_anim" ); + if ( isalive( self ) ) + { + self thread facelookaheadforabit(); + } +} + +facelookaheadforabit() +{ + self endon( "death" ); + self endon( "killanimscript" ); + lookaheadangles = vectorToAngle( self.lookaheaddir ); + self orientmode( "face angle", lookaheadangles[ 1 ] ); + wait 0,2; + self animmode( "normal", 0 ); + self orientmode( "face default" ); +} diff --git a/patch_zm/maps/mp/animscripts/zm_pain.gsc b/patch_zm/maps/mp/animscripts/zm_pain.gsc new file mode 100644 index 0000000..1de8330 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_pain.gsc @@ -0,0 +1,18 @@ +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; +#include common_scripts/utility; + +main() +{ + self setflashbanged( 0 ); + if ( isDefined( self.longdeathstarting ) ) + { + self waittill( "killanimscript" ); + return; + } + if ( self.a.disablepain ) + { + return; + } +} diff --git a/patch_zm/maps/mp/animscripts/zm_run.gsc b/patch_zm/maps/mp/animscripts/zm_run.gsc new file mode 100644 index 0000000..f658594 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_run.gsc @@ -0,0 +1,61 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +moverun() +{ + self endon( "death" ); + if ( isDefined( self.needs_run_update ) && !self.needs_run_update ) + { + self waittill( "needs_run_update" ); + } + if ( isDefined( self.is_inert ) && self.is_inert ) + { + wait 0,1; + return; + } + self setaimanimweights( 0, 0 ); + self setanimstatefromspeed(); + maps/mp/animscripts/zm_shared::donotetracksfortime( 0,05, "move_anim" ); + self.needs_run_update = 0; +} + +setanimstatefromspeed() +{ + animstate = self append_missing_legs_suffix( "zm_move_" + self.zombie_move_speed ); + if ( isDefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" ) + { + animstate = "zm_move_stumpy"; + } + if ( isDefined( self.preserve_asd_substates ) && self.preserve_asd_substates && animstate == self getanimstatefromasd() ) + { + substate = self getanimsubstatefromasd(); + self setanimstatefromasd( animstate, substate ); + } + else + { + self setanimstatefromasd( animstate ); + } + if ( isDefined( self.setanimstatefromspeed ) ) + { + self [[ self.setanimstatefromspeed ]]( animstate, substate ); + } +} + +needsupdate() +{ + self.needs_run_update = 1; + self notify( "needs_run_update" ); +} + +needsdelayedupdate() +{ + self endon( "death" ); + while ( isDefined( self.needs_run_update ) && self.needs_run_update ) + { + wait 0,1; + } + self.needs_run_update = 1; + self notify( "needs_run_update" ); +} diff --git a/patch_zm/maps/mp/animscripts/zm_scripted.gsc b/patch_zm/maps/mp/animscripts/zm_scripted.gsc new file mode 100644 index 0000000..8d60fe6 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_scripted.gsc @@ -0,0 +1,39 @@ + +main() +{ + self endon( "death" ); + self notify( "killanimscript" ); + self endon( "end_sequence" ); + if ( !isDefined( self.codescripted[ "animState" ] ) ) + { + return; + } + self startscriptedanim( self.codescripted[ "origin" ], self.codescripted[ "angles" ], self.codescripted[ "animState" ], self.codescripted[ "animSubState" ], self.codescripted[ "AnimMode" ] ); + self.a.script = "scripted"; + self.codescripted = undefined; + if ( isDefined( self.deathstring_passed ) ) + { + self.deathstring = self.deathstring_passed; + } + self waittill( "killanimscript" ); +} + +init( origin, angles, animstate, animsubstate, animmode ) +{ + self.codescripted[ "origin" ] = origin; + self.codescripted[ "angles" ] = angles; + self.codescripted[ "animState" ] = animstate; + self.codescripted[ "animSubState" ] = animsubstate; + if ( isDefined( animmode ) ) + { + self.codescripted[ "AnimMode" ] = animmode; + } + else + { + self.codescripted[ "AnimMode" ] = "normal"; + } +} + +end_script() +{ +} diff --git a/patch_zm/maps/mp/animscripts/zm_shared.gsc b/patch_zm/maps/mp/animscripts/zm_shared.gsc new file mode 100644 index 0000000..0ab059c --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_shared.gsc @@ -0,0 +1,509 @@ +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +deleteatlimit() +{ + wait 30; + self delete(); +} + +lookatentity( looktargetentity, lookduration, lookspeed, eyesonly, interruptothers ) +{ + return; +} + +lookatposition( looktargetpos, lookduration, lookspeed, eyesonly, interruptothers ) +{ +/# + assert( isai( self ), "Can only call this function on an AI character" ); +#/ +/# + assert( self.a.targetlookinitilized == 1, "LookAtPosition called on AI that lookThread was not called on" ); +#/ +/# + if ( lookspeed != "casual" ) + { + assert( lookspeed == "alert", "lookSpeed must be casual or alert" ); + } +#/ + if ( isDefined( interruptothers ) || interruptothers == "interrupt others" && getTime() > self.a.lookendtime ) + { + self.a.looktargetpos = looktargetpos; + self.a.lookendtime = getTime() + ( lookduration * 1000 ); + if ( lookspeed == "casual" ) + { + self.a.looktargetspeed = 800; + } + else + { + self.a.looktargetspeed = 1600; + } + if ( isDefined( eyesonly ) && eyesonly == "eyes only" ) + { + self notify( "eyes look now" ); + return; + } + else + { + self notify( "look now" ); + } + } +} + +lookatanimations( leftanim, rightanim ) +{ + self.a.lookanimationleft = leftanim; + self.a.lookanimationright = rightanim; +} + +handledogsoundnotetracks( note ) +{ + if ( note != "sound_dogstep_run_default" || note == "dogstep_rf" && note == "dogstep_lf" ) + { + self playsound( "fly_dog_step_run_default" ); + return 1; + } + prefix = getsubstr( note, 0, 5 ); + if ( prefix != "sound" ) + { + return 0; + } + alias = "aml" + getsubstr( note, 5 ); + if ( isalive( self ) ) + { + self thread play_sound_on_tag_endon_death( alias, "tag_eye" ); + } + else + { + self thread play_sound_in_space( alias, self gettagorigin( "tag_eye" ) ); + } + return 1; +} + +growling() +{ + return isDefined( self.script_growl ); +} + +registernotetracks() +{ + anim.notetracks[ "anim_pose = "stand"" ] = ::notetrackposestand; + anim.notetracks[ "anim_pose = "crouch"" ] = ::notetrackposecrouch; + anim.notetracks[ "anim_movement = "stop"" ] = ::notetrackmovementstop; + anim.notetracks[ "anim_movement = "walk"" ] = ::notetrackmovementwalk; + anim.notetracks[ "anim_movement = "run"" ] = ::notetrackmovementrun; + anim.notetracks[ "anim_alertness = causal" ] = ::notetrackalertnesscasual; + anim.notetracks[ "anim_alertness = alert" ] = ::notetrackalertnessalert; + anim.notetracks[ "gravity on" ] = ::notetrackgravity; + anim.notetracks[ "gravity off" ] = ::notetrackgravity; + anim.notetracks[ "gravity code" ] = ::notetrackgravity; + anim.notetracks[ "bodyfall large" ] = ::notetrackbodyfall; + anim.notetracks[ "bodyfall small" ] = ::notetrackbodyfall; + anim.notetracks[ "footstep" ] = ::notetrackfootstep; + anim.notetracks[ "step" ] = ::notetrackfootstep; + anim.notetracks[ "footstep_right_large" ] = ::notetrackfootstep; + anim.notetracks[ "footstep_right_small" ] = ::notetrackfootstep; + anim.notetracks[ "footstep_left_large" ] = ::notetrackfootstep; + anim.notetracks[ "footstep_left_small" ] = ::notetrackfootstep; + anim.notetracks[ "footscrape" ] = ::notetrackfootscrape; + anim.notetracks[ "land" ] = ::notetrackland; + anim.notetracks[ "start_ragdoll" ] = ::notetrackstartragdoll; +} + +notetrackstopanim( note, flagname ) +{ +} + +notetrackstartragdoll( note, flagname ) +{ + if ( isDefined( self.noragdoll ) ) + { + return; + } + self unlink(); + self startragdoll(); +} + +notetrackmovementstop( note, flagname ) +{ + if ( issentient( self ) ) + { + self.a.movement = "stop"; + } +} + +notetrackmovementwalk( note, flagname ) +{ + if ( issentient( self ) ) + { + self.a.movement = "walk"; + } +} + +notetrackmovementrun( note, flagname ) +{ + if ( issentient( self ) ) + { + self.a.movement = "run"; + } +} + +notetrackalertnesscasual( note, flagname ) +{ + if ( issentient( self ) ) + { + self.a.alertness = "casual"; + } +} + +notetrackalertnessalert( note, flagname ) +{ + if ( issentient( self ) ) + { + self.a.alertness = "alert"; + } +} + +notetrackposestand( note, flagname ) +{ + self.a.pose = "stand"; + self notify( "entered_pose" + "stand" ); +} + +notetrackposecrouch( note, flagname ) +{ + self.a.pose = "crouch"; + self notify( "entered_pose" + "crouch" ); + if ( self.a.crouchpain ) + { + self.a.crouchpain = 0; + self.health = 150; + } +} + +notetrackgravity( note, flagname ) +{ + if ( issubstr( note, "on" ) ) + { + self animmode( "gravity" ); + } + else if ( issubstr( note, "off" ) ) + { + self animmode( "nogravity" ); + self.nogravity = 1; + } + else + { + if ( issubstr( note, "code" ) ) + { + self animmode( "none" ); + self.nogravity = undefined; + } + } +} + +notetrackbodyfall( note, flagname ) +{ + if ( isDefined( self.groundtype ) ) + { + groundtype = self.groundtype; + } + else + { + groundtype = "dirt"; + } + if ( issubstr( note, "large" ) ) + { + self playsound( "fly_bodyfall_large_" + groundtype ); + } + else + { + if ( issubstr( note, "small" ) ) + { + self playsound( "fly_bodyfall_small_" + groundtype ); + } + } +} + +notetrackfootstep( note, flagname ) +{ + if ( issubstr( note, "left" ) ) + { + playfootstep( "J_Ball_LE" ); + } + else + { + playfootstep( "J_BALL_RI" ); + } + if ( !level.clientscripts ) + { + self playsound( "fly_gear_run" ); + } +} + +notetrackfootscrape( note, flagname ) +{ + if ( isDefined( self.groundtype ) ) + { + groundtype = self.groundtype; + } + else + { + groundtype = "dirt"; + } + self playsound( "fly_step_scrape_" + groundtype ); +} + +notetrackland( note, flagname ) +{ + if ( isDefined( self.groundtype ) ) + { + groundtype = self.groundtype; + } + else + { + groundtype = "dirt"; + } + self playsound( "fly_land_npc_" + groundtype ); +} + +handlenotetrack( note, flagname, customfunction, var1 ) +{ + if ( isai( self ) && self.isdog ) + { + if ( handledogsoundnotetracks( note ) ) + { + return; + } + } + else + { + notetrackfunc = anim.notetracks[ note ]; + if ( isDefined( notetrackfunc ) ) + { + return [[ notetrackfunc ]]( note, flagname ); + } + } + switch( note ) + { + case "end": + case "finish": + case "undefined": + if ( isai( self ) && self.a.pose == "back" ) + { + } + return note; + case "swish small": + self thread play_sound_in_space( "fly_gear_enemy", self gettagorigin( "TAG_WEAPON_RIGHT" ) ); + break; + case "swish large": + self thread play_sound_in_space( "fly_gear_enemy_large", self gettagorigin( "TAG_WEAPON_RIGHT" ) ); + break; + case "no death": + self.a.nodeath = 1; + break; + case "no pain": + self.allowpain = 0; + break; + case "allow pain": + self.allowpain = 1; + break; + case "anim_melee = "right"": + case "anim_melee = right": + self.a.meleestate = "right"; + break; + case "anim_melee = "left"": + case "anim_melee = left": + self.a.meleestate = "left"; + break; + case "swap taghelmet to tagleft": + if ( isDefined( self.hatmodel ) ) + { + if ( isDefined( self.helmetsidemodel ) ) + { + self detach( self.helmetsidemodel, "TAG_HELMETSIDE" ); + self.helmetsidemodel = undefined; + } + self detach( self.hatmodel, "" ); + self attach( self.hatmodel, "TAG_WEAPON_LEFT" ); + self.hatmodel = undefined; + } + break; + default: + if ( isDefined( customfunction ) ) + { + if ( !isDefined( var1 ) ) + { + return [[ customfunction ]]( note ); + } + else + { + return [[ customfunction ]]( note, var1 ); + } + } + } + } +} + +donotetracks( flagname, customfunction, var1 ) +{ + for ( ;; ) + { + self waittill( flagname, note ); + if ( !isDefined( note ) ) + { + note = "undefined"; + } + val = self handlenotetrack( note, flagname, customfunction, var1 ); + if ( isDefined( val ) ) + { + return val; + } + } +} + +donotetracksforeverproc( notetracksfunc, flagname, killstring, customfunction, var1 ) +{ + if ( isDefined( killstring ) ) + { + self endon( killstring ); + } + self endon( "killanimscript" ); + for ( ;; ) + { + time = getTime(); + returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 ); + timetaken = getTime() - time; + if ( timetaken < 0,05 ) + { + time = getTime(); + returnednote = [[ notetracksfunc ]]( flagname, customfunction, var1 ); + timetaken = getTime() - time; + if ( timetaken < 0,05 ) + { +/# + println( getTime() + " mapsmpanimscriptsshared::DoNoteTracksForever is trying to cause an infinite loop on anim " + flagname + ", returned " + returnednote + "." ); +#/ + wait ( 0,05 - timetaken ); + } + } + } +} + +donotetracksforever( flagname, killstring, customfunction, var1 ) +{ + donotetracksforeverproc( ::donotetracks, flagname, killstring, customfunction, var1 ); +} + +donotetracksfortimeproc( donotetracksforeverfunc, time, flagname, customfunction, ent, var1 ) +{ + ent endon( "stop_notetracks" ); + [[ donotetracksforeverfunc ]]( flagname, undefined, customfunction, var1 ); +} + +donotetracksfortime( time, flagname, customfunction, var1 ) +{ + ent = spawnstruct(); + ent thread donotetracksfortimeendnotify( time ); + donotetracksfortimeproc( ::donotetracksforever, time, flagname, customfunction, ent, var1 ); +} + +donotetracksfortimeendnotify( time ) +{ + wait time; + self notify( "stop_notetracks" ); +} + +playfootstep( foot ) +{ + if ( !level.clientscripts ) + { + if ( !isai( self ) ) + { + self playsound( "fly_step_run_dirt" ); + return; + } + } + groundtype = undefined; + if ( !isDefined( self.groundtype ) ) + { + if ( !isDefined( self.lastgroundtype ) ) + { + if ( !level.clientscripts ) + { + self playsound( "fly_step_run_dirt" ); + } + return; + } + groundtype = self.lastgroundtype; + } + else + { + groundtype = self.groundtype; + self.lastgroundtype = self.groundtype; + } + if ( !level.clientscripts ) + { + self playsound( "fly_step_run_" + groundtype ); + } + [[ anim.optionalstepeffectfunction ]]( foot, groundtype ); +} + +playfootstepeffect( foot, groundtype ) +{ + if ( level.clientscripts ) + { + return; + } + i = 0; + while ( i < anim.optionalstepeffects.size ) + { + if ( isDefined( self.fire_footsteps ) && self.fire_footsteps ) + { + groundtype = "fire"; + } + if ( groundtype != anim.optionalstepeffects[ i ] ) + { + i++; + continue; + } + else + { + org = self gettagorigin( foot ); + playfx( level._effect[ "step_" + anim.optionalstepeffects[ i ] ], org, org + vectorScale( ( 0, 0, 1 ), 100 ) ); + return; + } + i++; + } +} + +movetooriginovertime( origin, time ) +{ + self endon( "killanimscript" ); + if ( distancesquared( self.origin, origin ) > 256 && !self maymovetopoint( origin ) ) + { +/# + println( "^1Warning: AI starting behavior for node at " + origin + " but could not move to that point." ); +#/ + return; + } + self.keepclaimednodeingoal = 1; + offset = self.origin - origin; + frames = int( time * 20 ); + offsetreduction = vectorScale( offset, 1 / frames ); + i = 0; + while ( i < frames ) + { + offset -= offsetreduction; + self teleport( origin + offset ); + wait 0,05; + i++; + } + self.keepclaimednodeingoal = 0; +} + +returntrue() +{ + return 1; +} diff --git a/patch_zm/maps/mp/animscripts/zm_stop.gsc b/patch_zm/maps/mp/animscripts/zm_stop.gsc new file mode 100644 index 0000000..b1c5f11 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_stop.gsc @@ -0,0 +1,26 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +main() +{ + self endon( "killanimscript" ); + for ( ;; ) + { + if ( isDefined( level.ignore_stop_func ) ) + { + if ( self [[ level.ignore_stop_func ]]() ) + { + return; + } + } + if ( !self hasanimstatefromasd( "zm_idle" ) ) + { + return; + } + animstate = maps/mp/animscripts/zm_utility::append_missing_legs_suffix( "zm_idle" ); + self setanimstatefromasd( animstate ); + maps/mp/animscripts/zm_shared::donotetracks( "idle_anim" ); + } +} diff --git a/patch_zm/maps/mp/animscripts/zm_turn.gsc b/patch_zm/maps/mp/animscripts/zm_turn.gsc new file mode 100644 index 0000000..bdf6899 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_turn.gsc @@ -0,0 +1,6 @@ +#include maps/mp/animscripts/shared; +#include maps/mp/animscripts/utility; + +main() +{ +} diff --git a/patch_zm/maps/mp/animscripts/zm_utility.gsc b/patch_zm/maps/mp/animscripts/zm_utility.gsc new file mode 100644 index 0000000..b357ed8 --- /dev/null +++ b/patch_zm/maps/mp/animscripts/zm_utility.gsc @@ -0,0 +1,1243 @@ +#include maps/mp/_utility; +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/utility; +#include maps/mp/animscripts/shared; + +append_missing_legs_suffix( animstate ) +{ + if ( isDefined( self.has_legs ) && !self.has_legs && self hasanimstatefromasd( animstate + "_crawl" ) ) + { + return animstate + "_crawl"; + } + return animstate; +} + +initanimtree( animscript ) +{ + if ( animscript != "pain" && animscript != "death" ) + { + self.a.special = "none"; + } +/# + assert( isDefined( animscript ), "Animscript not specified in initAnimTree" ); +#/ + self.a.script = animscript; +} + +updateanimpose() +{ +/# + if ( self.a.movement != "stop" && self.a.movement != "walk" ) + { + assert( self.a.movement == "run", "UpdateAnimPose " + self.a.pose + " " + self.a.movement ); + } +#/ + self.desired_anim_pose = undefined; +} + +initialize( animscript ) +{ + if ( isDefined( self.longdeathstarting ) ) + { + if ( animscript != "pain" && animscript != "death" ) + { + self dodamage( self.health + 100, self.origin ); + } + if ( animscript != "pain" ) + { + self.longdeathstarting = undefined; + self notify( "kill_long_death" ); + } + } + if ( isDefined( self.a.mayonlydie ) && animscript != "death" ) + { + self dodamage( self.health + 100, self.origin ); + } + if ( isDefined( self.a.postscriptfunc ) ) + { + scriptfunc = self.a.postscriptfunc; + self.a.postscriptfunc = undefined; + [[ scriptfunc ]]( animscript ); + } + if ( animscript != "death" ) + { + self.a.nodeath = 0; + } + self.isholdinggrenade = undefined; + self.covernode = undefined; + self.changingcoverpos = 0; + self.a.scriptstarttime = getTime(); + self.a.atconcealmentnode = 0; + if ( isDefined( self.node ) || self.node.type == "Conceal Crouch" && self.node.type == "Conceal Stand" ) + { + self.a.atconcealmentnode = 1; + } + initanimtree( animscript ); + updateanimpose(); +} + +getnodeyawtoorigin( pos ) +{ + if ( isDefined( self.node ) ) + { + yaw = self.node.angles[ 1 ] - getyaw( pos ); + } + else + { + yaw = self.angles[ 1 ] - getyaw( pos ); + } + yaw = angleClamp180( yaw ); + return yaw; +} + +getnodeyawtoenemy() +{ + pos = undefined; + if ( isvalidenemy( self.enemy ) ) + { + pos = self.enemy.origin; + } + else + { + if ( isDefined( self.node ) ) + { + forward = anglesToForward( self.node.angles ); + } + else + { + forward = anglesToForward( self.angles ); + } + forward = vectorScale( forward, 150 ); + pos = self.origin + forward; + } + if ( isDefined( self.node ) ) + { + yaw = self.node.angles[ 1 ] - getyaw( pos ); + } + else + { + yaw = self.angles[ 1 ] - getyaw( pos ); + } + yaw = angleClamp180( yaw ); + return yaw; +} + +getcovernodeyawtoenemy() +{ + pos = undefined; + if ( isvalidenemy( self.enemy ) ) + { + pos = self.enemy.origin; + } + else + { + forward = anglesToForward( self.covernode.angles + self.animarray[ "angle_step_out" ][ self.a.cornermode ] ); + forward = vectorScale( forward, 150 ); + pos = self.origin + forward; + } + yaw = ( self.covernode.angles[ 1 ] + self.animarray[ "angle_step_out" ][ self.a.cornermode ] ) - getyaw( pos ); + yaw = angleClamp180( yaw ); + return yaw; +} + +getyawtospot( spot ) +{ + pos = spot; + yaw = self.angles[ 1 ] - getyaw( pos ); + yaw = angleClamp180( yaw ); + return yaw; +} + +getyawtoenemy() +{ + pos = undefined; + if ( isvalidenemy( self.enemy ) ) + { + pos = self.enemy.origin; + } + else + { + forward = anglesToForward( self.angles ); + forward = vectorScale( forward, 150 ); + pos = self.origin + forward; + } + yaw = self.angles[ 1 ] - getyaw( pos ); + yaw = angleClamp180( yaw ); + return yaw; +} + +getyaw( org ) +{ + angles = vectorToAngle( org - self.origin ); + return angles[ 1 ]; +} + +getyaw2d( org ) +{ + angles = vectorToAngle( ( org[ 0 ], org[ 1 ], 0 ) - ( self.origin[ 0 ], self.origin[ 1 ], 0 ) ); + return angles[ 1 ]; +} + +absyawtoenemy() +{ +/# + assert( isvalidenemy( self.enemy ) ); +#/ + yaw = self.angles[ 1 ] - getyaw( self.enemy.origin ); + yaw = angleClamp180( yaw ); + if ( yaw < 0 ) + { + yaw = -1 * yaw; + } + return yaw; +} + +absyawtoenemy2d() +{ +/# + assert( isvalidenemy( self.enemy ) ); +#/ + yaw = self.angles[ 1 ] - getyaw2d( self.enemy.origin ); + yaw = angleClamp180( yaw ); + if ( yaw < 0 ) + { + yaw = -1 * yaw; + } + return yaw; +} + +absyawtoorigin( org ) +{ + yaw = self.angles[ 1 ] - getyaw( org ); + yaw = angleClamp180( yaw ); + if ( yaw < 0 ) + { + yaw = -1 * yaw; + } + return yaw; +} + +absyawtoangles( angles ) +{ + yaw = self.angles[ 1 ] - angles; + yaw = angleClamp180( yaw ); + if ( yaw < 0 ) + { + yaw = -1 * yaw; + } + return yaw; +} + +getyawfromorigin( org, start ) +{ + angles = vectorToAngle( org - start ); + return angles[ 1 ]; +} + +getyawtotag( tag, org ) +{ + yaw = self gettagangles( tag )[ 1 ] - getyawfromorigin( org, self gettagorigin( tag ) ); + yaw = angleClamp180( yaw ); + return yaw; +} + +getyawtoorigin( org ) +{ + yaw = self.angles[ 1 ] - getyaw( org ); + yaw = angleClamp180( yaw ); + return yaw; +} + +geteyeyawtoorigin( org ) +{ + yaw = self gettagangles( "TAG_EYE" )[ 1 ] - getyaw( org ); + yaw = angleClamp180( yaw ); + return yaw; +} + +getcovernodeyawtoorigin( org ) +{ + yaw = ( self.covernode.angles[ 1 ] + self.animarray[ "angle_step_out" ][ self.a.cornermode ] ) - getyaw( org ); + yaw = angleClamp180( yaw ); + return yaw; +} + +isstanceallowedwrapper( stance ) +{ + if ( isDefined( self.covernode ) ) + { + return self.covernode doesnodeallowstance( stance ); + } + return self isstanceallowed( stance ); +} + +getclaimednode() +{ + mynode = self.node; + if ( isDefined( mynode ) || self nearnode( mynode ) && isDefined( self.covernode ) && mynode == self.covernode ) + { + return mynode; + } + return undefined; +} + +getnodetype() +{ + mynode = getclaimednode(); + if ( isDefined( mynode ) ) + { + return mynode.type; + } + return "none"; +} + +getnodedirection() +{ + mynode = getclaimednode(); + if ( isDefined( mynode ) ) + { + return mynode.angles[ 1 ]; + } + return self.desiredangle; +} + +getnodeforward() +{ + mynode = getclaimednode(); + if ( isDefined( mynode ) ) + { + return anglesToForward( mynode.angles ); + } + return anglesToForward( self.angles ); +} + +getnodeorigin() +{ + mynode = getclaimednode(); + if ( isDefined( mynode ) ) + { + return mynode.origin; + } + return self.origin; +} + +safemod( a, b ) +{ + result = int( a ) % b; + result += b; + return result % b; +} + +angleclamp( angle ) +{ + anglefrac = angle / 360; + angle = ( anglefrac - floor( anglefrac ) ) * 360; + return angle; +} + +quadrantanimweights( yaw ) +{ + forwardweight = ( 90 - abs( yaw ) ) / 90; + leftweight = ( 90 - absangleclamp180( abs( yaw - 90 ) ) ) / 90; + result[ "front" ] = 0; + result[ "right" ] = 0; + result[ "back" ] = 0; + result[ "left" ] = 0; + if ( isDefined( self.alwaysrunforward ) ) + { +/# + assert( self.alwaysrunforward ); +#/ + result[ "front" ] = 1; + return result; + } + useleans = getDvarInt( "ai_useLeanRunAnimations" ); + if ( forwardweight > 0 ) + { + result[ "front" ] = forwardweight; + if ( leftweight > 0 ) + { + result[ "left" ] = leftweight; + } + else + { + result[ "right" ] = -1 * leftweight; + } + } + else if ( useleans ) + { + result[ "back" ] = -1 * forwardweight; + if ( leftweight > 0 ) + { + result[ "left" ] = leftweight; + } + else + { + result[ "right" ] = -1 * leftweight; + } + } + else backweight = -1 * forwardweight; + if ( leftweight > backweight ) + { + result[ "left" ] = 1; + } + else if ( leftweight < forwardweight ) + { + result[ "right" ] = 1; + } + else + { + result[ "back" ] = 1; + } + return result; +} + +getquadrant( angle ) +{ + angle = angleclamp( angle ); + if ( angle < 45 || angle > 315 ) + { + quadrant = "front"; + } + else + { + if ( angle < 135 ) + { + quadrant = "left"; + } + else if ( angle < 225 ) + { + quadrant = "back"; + } + else + { + quadrant = "right"; + } + } + return quadrant; +} + +isinset( input, set ) +{ + i = set.size - 1; + while ( i >= 0 ) + { + if ( input == set[ i ] ) + { + return 1; + } + i--; + + } + return 0; +} + +notifyaftertime( notifystring, killmestring, time ) +{ + self endon( "death" ); + self endon( killmestring ); + wait time; + self notify( notifystring ); +} + +drawstringtime( msg, org, color, timer ) +{ +/# + maxtime = timer * 20; + i = 0; + while ( i < maxtime ) + { + print3d( org, msg, color, 1, 1 ); + wait 0,05; + i++; +#/ + } +} + +showlastenemysightpos( string ) +{ +/# + self notify( "got known enemy2" ); + self endon( "got known enemy2" ); + self endon( "death" ); + if ( !isvalidenemy( self.enemy ) ) + { + return; + } + if ( self.enemy.team == "allies" ) + { + color = ( 0,4, 0,7, 1 ); + } + else + { + color = ( 1, 0,7, 0,4 ); + } + while ( 1 ) + { + wait 0,05; + while ( !isDefined( self.lastenemysightpos ) ) + { + continue; + } + print3d( self.lastenemysightpos, string, color, 1, 2,15 ); +#/ + } +} + +debugtimeout() +{ + wait 5; + self notify( "timeout" ); +} + +debugposinternal( org, string, size ) +{ +/# + self endon( "death" ); + self notify( "stop debug " + org ); + self endon( "stop debug " + org ); + ent = spawnstruct(); + ent thread debugtimeout(); + ent endon( "timeout" ); + if ( self.enemy.team == "allies" ) + { + color = ( 0,4, 0,7, 1 ); + } + else + { + color = ( 1, 0,7, 0,4 ); + } + while ( 1 ) + { + wait 0,05; + print3d( org, string, color, 1, size ); +#/ + } +} + +debugpos( org, string ) +{ + thread debugposinternal( org, string, 2,15 ); +} + +debugpossize( org, string, size ) +{ + thread debugposinternal( org, string, size ); +} + +showdebugproc( frompoint, topoint, color, printtime ) +{ +/# + self endon( "death" ); + timer = printtime * 20; + i = 0; + while ( i < timer ) + { + wait 0,05; + line( frompoint, topoint, color ); + i += 1; +#/ + } +} + +showdebugline( frompoint, topoint, color, printtime ) +{ + self thread showdebugproc( frompoint, topoint + vectorScale( ( 0, 0, 1 ), 5 ), color, printtime ); +} + +getnodeoffset( node ) +{ + if ( isDefined( node.offset ) ) + { + return node.offset; + } + cover_left_crouch_offset = ( -26, 0,4, 36 ); + cover_left_stand_offset = ( -32, 7, 63 ); + cover_right_crouch_offset = ( 43,5, 11, 36 ); + cover_right_stand_offset = ( 36, 8,3, 63 ); + cover_crouch_offset = ( 3,5, -12,5, 45 ); + cover_stand_offset = ( -3,7, -22, 63 ); + cornernode = 0; + nodeoffset = ( 0, 0, 1 ); + right = anglesToRight( node.angles ); + forward = anglesToForward( node.angles ); + switch( node.type ) + { + case "Cover Left": + case "Cover Left Wide": + if ( node isnodedontstand() && !node isnodedontcrouch() ) + { + nodeoffset = calculatenodeoffset( right, forward, cover_left_crouch_offset ); + } + else + { + nodeoffset = calculatenodeoffset( right, forward, cover_left_stand_offset ); + } + break; + case "Cover Right": + case "Cover Right Wide": + if ( node isnodedontstand() && !node isnodedontcrouch() ) + { + nodeoffset = calculatenodeoffset( right, forward, cover_right_crouch_offset ); + } + else + { + nodeoffset = calculatenodeoffset( right, forward, cover_right_stand_offset ); + } + break; + case "Conceal Stand": + case "Cover Stand": + case "Turret": + nodeoffset = calculatenodeoffset( right, forward, cover_stand_offset ); + break; + case "Conceal Crouch": + case "Cover Crouch": + case "Cover Crouch Window": + nodeoffset = calculatenodeoffset( right, forward, cover_crouch_offset ); + break; + } + node.offset = nodeoffset; + return node.offset; +} + +calculatenodeoffset( right, forward, baseoffset ) +{ + return vectorScale( right, baseoffset[ 0 ] ) + vectorScale( forward, baseoffset[ 1 ] ) + ( 0, 0, baseoffset[ 2 ] ); +} + +checkpitchvisibility( frompoint, topoint, atnode ) +{ + pitch = angleClamp180( vectorToAngle( topoint - frompoint )[ 0 ] ); + if ( abs( pitch ) > 45 ) + { + if ( isDefined( atnode ) && atnode.type != "Cover Crouch" && atnode.type != "Conceal Crouch" ) + { + return 0; + } + if ( pitch > 45 || pitch < ( anim.covercrouchleanpitch - 45 ) ) + { + return 0; + } + } + return 1; +} + +showlines( start, end, end2 ) +{ +/# + for ( ;; ) + { + line( start, end, ( 0, 0, 1 ), 1 ); + wait 0,05; + line( start, end2, ( 0, 0, 1 ), 1 ); + wait 0,05; +#/ + } +} + +anim_array( animarray, animweights ) +{ + total_anims = animarray.size; + idleanim = randomint( total_anims ); +/# + assert( total_anims ); +#/ +/# + assert( animarray.size == animweights.size ); +#/ + if ( total_anims == 1 ) + { + return animarray[ 0 ]; + } + weights = 0; + total_weight = 0; + i = 0; + while ( i < total_anims ) + { + total_weight += animweights[ i ]; + i++; + } + anim_play = randomfloat( total_weight ); + current_weight = 0; + i = 0; + while ( i < total_anims ) + { + current_weight += animweights[ i ]; + if ( anim_play >= current_weight ) + { + i++; + continue; + } + else + { + idleanim = i; + break; + } + i++; + } + return animarray[ idleanim ]; +} + +notforcedcover() +{ + if ( self.a.forced_cover != "none" ) + { + return self.a.forced_cover == "Show"; + } +} + +forcedcover( msg ) +{ + if ( isDefined( self.a.forced_cover ) ) + { + return self.a.forced_cover == msg; + } +} + +print3dtime( timer, org, msg, color, alpha, scale ) +{ +/# + newtime = timer / 0,05; + i = 0; + while ( i < newtime ) + { + print3d( org, msg, color, alpha, scale ); + wait 0,05; + i++; +#/ + } +} + +print3drise( org, msg, color, alpha, scale ) +{ +/# + newtime = 100; + up = 0; + org = org; + i = 0; + while ( i < newtime ) + { + up += 0,5; + print3d( org + ( 0, 0, up ), msg, color, alpha, scale ); + wait 0,05; + i++; +#/ + } +} + +crossproduct( vec1, vec2 ) +{ + return ( ( vec1[ 0 ] * vec2[ 1 ] ) - ( vec1[ 1 ] * vec2[ 0 ] ) ) > 0; +} + +scriptchange() +{ + self.a.current_script = "none"; + self notify( anim.scriptchange ); +} + +delayedscriptchange() +{ + wait 0,05; + scriptchange(); +} + +getgrenademodel() +{ + return getweaponmodel( self.grenadeweapon ); +} + +sawenemymove( timer ) +{ + if ( !isDefined( timer ) ) + { + timer = 500; + } + return ( getTime() - self.personalsighttime ) < timer; +} + +canthrowgrenade() +{ + if ( !self.grenadeammo ) + { + return 0; + } + if ( self.script_forcegrenade ) + { + return 1; + } + return isplayer( self.enemy ); +} + +random_weight( array ) +{ + idleanim = randomint( array.size ); + while ( array.size > 1 ) + { + anim_weight = 0; + i = 0; + while ( i < array.size ) + { + anim_weight += array[ i ]; + i++; + } + anim_play = randomfloat( anim_weight ); + anim_weight = 0; + i = 0; + while ( i < array.size ) + { + anim_weight += array[ i ]; + if ( anim_play < anim_weight ) + { + idleanim = i; + break; + } + else + { + i++; + } + } + } + return idleanim; +} + +setfootstepeffect( name, fx ) +{ +/# + assert( isDefined( name ), "Need to define the footstep surface type." ); +#/ +/# + assert( isDefined( fx ), "Need to define the mud footstep effect." ); +#/ + if ( !isDefined( anim.optionalstepeffects ) ) + { + anim.optionalstepeffects = []; + } + anim.optionalstepeffects[ anim.optionalstepeffects.size ] = name; + level._effect[ "step_" + name ] = fx; + anim.optionalstepeffectfunction = ::maps/mp/animscripts/zm_shared::playfootstepeffect; +} + +persistentdebugline( start, end ) +{ +/# + self endon( "death" ); + level notify( "newdebugline" ); + level endon( "newdebugline" ); + for ( ;; ) + { + line( start, end, ( 0,3, 1, 0 ), 1 ); + wait 0,05; +#/ + } +} + +isnodedontstand() +{ + return ( self.spawnflags & 4 ) == 4; +} + +isnodedontcrouch() +{ + return ( self.spawnflags & 8 ) == 8; +} + +doesnodeallowstance( stance ) +{ + if ( stance == "stand" ) + { + return !self isnodedontstand(); + } + else + { +/# + assert( stance == "crouch" ); +#/ + return !self isnodedontcrouch(); + } +} + +animarray( animname ) +{ +/# + assert( isDefined( self.a.array ) ); +#/ +/# + if ( !isDefined( self.a.array[ animname ] ) ) + { + dumpanimarray(); + assert( isDefined( self.a.array[ animname ] ), "self.a.array[ "" + animname + "" ] is undefined" ); +#/ + } + return self.a.array[ animname ]; +} + +animarrayanyexist( animname ) +{ +/# + assert( isDefined( self.a.array ) ); +#/ +/# + if ( !isDefined( self.a.array[ animname ] ) ) + { + dumpanimarray(); + assert( isDefined( self.a.array[ animname ] ), "self.a.array[ "" + animname + "" ] is undefined" ); +#/ + } + return self.a.array[ animname ].size > 0; +} + +animarraypickrandom( animname ) +{ +/# + assert( isDefined( self.a.array ) ); +#/ +/# + if ( !isDefined( self.a.array[ animname ] ) ) + { + dumpanimarray(); + assert( isDefined( self.a.array[ animname ] ), "self.a.array[ "" + animname + "" ] is undefined" ); +#/ + } +/# + assert( self.a.array[ animname ].size > 0 ); +#/ + if ( self.a.array[ animname ].size > 1 ) + { + index = randomint( self.a.array[ animname ].size ); + } + else + { + index = 0; + } + return self.a.array[ animname ][ index ]; +} + +dumpanimarray() +{ +/# + println( "self.a.array:" ); + keys = getarraykeys( self.a.array ); + i = 0; + while ( i < keys.size ) + { + if ( isarray( self.a.array[ keys[ i ] ] ) ) + { + println( " array[ "" + keys[ i ] + "" ] = {array of size " + self.a.array[ keys[ i ] ].size + "}" ); + i++; + continue; + } + else + { + println( " array[ "" + keys[ i ] + "" ] = ", self.a.array[ keys[ i ] ] ); + } + i++; +#/ + } +} + +getanimendpos( theanim ) +{ + movedelta = getmovedelta( theanim, 0, 1 ); + return self localtoworldcoords( movedelta ); +} + +isvalidenemy( enemy ) +{ + if ( !isDefined( enemy ) ) + { + return 0; + } + return 1; +} + +damagelocationisany( a, b, c, d, e, f, g, h, i, j, k, ovr ) +{ + if ( !isDefined( a ) ) + { + return 0; + } + if ( self.damagelocation == a ) + { + return 1; + } + if ( !isDefined( b ) ) + { + return 0; + } + if ( self.damagelocation == b ) + { + return 1; + } + if ( !isDefined( c ) ) + { + return 0; + } + if ( self.damagelocation == c ) + { + return 1; + } + if ( !isDefined( d ) ) + { + return 0; + } + if ( self.damagelocation == d ) + { + return 1; + } + if ( !isDefined( e ) ) + { + return 0; + } + if ( self.damagelocation == e ) + { + return 1; + } + if ( !isDefined( f ) ) + { + return 0; + } + if ( self.damagelocation == f ) + { + return 1; + } + if ( !isDefined( g ) ) + { + return 0; + } + if ( self.damagelocation == g ) + { + return 1; + } + if ( !isDefined( h ) ) + { + return 0; + } + if ( self.damagelocation == h ) + { + return 1; + } + if ( !isDefined( i ) ) + { + return 0; + } + if ( self.damagelocation == i ) + { + return 1; + } + if ( !isDefined( j ) ) + { + return 0; + } + if ( self.damagelocation == j ) + { + return 1; + } + if ( !isDefined( k ) ) + { + return 0; + } + if ( self.damagelocation == k ) + { + return 1; + } +/# + assert( !isDefined( ovr ) ); +#/ + return 0; +} + +ragdolldeath( moveanim ) +{ + self endon( "killanimscript" ); + lastorg = self.origin; + movevec = ( 0, 0, 1 ); + for ( ;; ) + { + wait 0,05; + force = distance( self.origin, lastorg ); + lastorg = self.origin; + if ( self.health == 1 ) + { + self.a.nodeath = 1; + self startragdoll(); + wait 0,05; + physicsexplosionsphere( lastorg, 600, 0, force * 0,1 ); + self notify( "killanimscript" ); + return; + } + } +} + +iscqbwalking() +{ + if ( isDefined( self.cqbwalking ) ) + { + return self.cqbwalking; + } +} + +squared( value ) +{ + return value * value; +} + +randomizeidleset() +{ + self.a.idleset = randomint( 2 ); +} + +getrandomintfromseed( intseed, intmax ) +{ +/# + assert( intmax > 0 ); +#/ + index = intseed % anim.randominttablesize; + return anim.randominttable[ index ] % intmax; +} + +is_banzai() +{ + if ( isDefined( self.banzai ) ) + { + return self.banzai; + } +} + +is_heavy_machine_gun() +{ + if ( isDefined( self.heavy_machine_gunner ) ) + { + return self.heavy_machine_gunner; + } +} + +is_zombie() +{ + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + return 1; + } + return 0; +} + +is_civilian() +{ + if ( isDefined( self.is_civilian ) && self.is_civilian ) + { + return 1; + } + return 0; +} + +is_zombie_gibbed() +{ + if ( self is_zombie() ) + { + return self.gibbed; + } +} + +set_zombie_gibbed() +{ + if ( self is_zombie() ) + { + self.gibbed = 1; + } +} + +is_skeleton( skeleton ) +{ + if ( skeleton == "base" && issubstr( get_skeleton(), "scaled" ) ) + { + return 1; + } + return get_skeleton() == skeleton; +} + +get_skeleton() +{ + if ( isDefined( self.skeleton ) ) + { + return self.skeleton; + } + else + { + return "base"; + } +} + +debug_anim_print( text ) +{ +/# + if ( isDefined( level.dog_debug_anims ) && level.dog_debug_anims ) + { + println( ( text + " " ) + getTime() ); + } + if ( isDefined( level.dog_debug_anims_ent ) && level.dog_debug_anims_ent == self getentnum() ) + { + println( ( text + " " ) + getTime() ); +#/ + } +} + +debug_turn_print( text, line ) +{ +/# + if ( isDefined( level.dog_debug_turns ) && level.dog_debug_turns == self getentnum() ) + { + duration = 200; + currentyawcolor = ( 0, 0, 1 ); + lookaheadyawcolor = ( 0, 0, 1 ); + desiredyawcolor = ( 0, 0, 1 ); + currentyaw = angleClamp180( self.angles[ 1 ] ); + desiredyaw = angleClamp180( self.desiredangle ); + lookaheaddir = self.lookaheaddir; + lookaheadangles = vectorToAngle( lookaheaddir ); + lookaheadyaw = angleClamp180( lookaheadangles[ 1 ] ); + println( ( text + " " ) + getTime() + " cur: " + currentyaw + " look: " + lookaheadyaw + " desired: " + desiredyaw ); +#/ + } +} + +play_sound_on_tag_endon_death( alias, tag ) +{ + maps/mp/_utility::play_sound_on_tag( alias, tag ); +} + +play_sound_in_space( alias, origin, master ) +{ + org = spawn( "script_origin", ( 0, 0, 1 ) ); + if ( !isDefined( origin ) ) + { + origin = self.origin; + } + org.origin = origin; + if ( isDefined( master ) && master ) + { + org playsoundasmaster( alias ); + } + else + { + org playsound( alias ); + } + if ( isDefined( org ) ) + { + org delete(); + } +} + +wait_network_frame() +{ + if ( numremoteclients() ) + { + snapshot_ids = getsnapshotindexarray(); + acked = undefined; + while ( !isDefined( acked ) ) + { + level waittill( "snapacknowledged" ); + acked = snapshotacknowledged( snapshot_ids ); + } + } + else wait 0,1; +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_01.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_01.gsc new file mode 100644 index 0000000..543f5a2 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_01.gsc @@ -0,0 +1,384 @@ + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_buried_civilian1::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian1::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_02.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_02.gsc new file mode 100644 index 0000000..6b54a55 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_02.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian2::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian2_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian2_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian2::precache(); + character/c_zom_zombie_buried_civilian2_nohat::precache(); + character/c_zom_zombie_buried_civilian2_nohat::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_03.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_03.gsc new file mode 100644 index 0000000..270be7e --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_03.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian3::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian3_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian3_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian3::precache(); + character/c_zom_zombie_buried_civilian3_nohat::precache(); + character/c_zom_zombie_buried_civilian3_nohat::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_04.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_04.gsc new file mode 100644 index 0000000..b0e3058 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_04.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian4::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian4_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian4_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian4::precache(); + character/c_zom_zombie_buried_civilian4_nohat::precache(); + character/c_zom_zombie_buried_civilian4_nohat::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_05.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_05.gsc new file mode 100644 index 0000000..deedb27 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_01_char_05.gsc @@ -0,0 +1,403 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 4 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian5::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian5_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian5_nohat::main(); + break; + case 3: + character/c_zom_zombie_buried_civilian5_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + 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(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_01.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_01.gsc new file mode 100644 index 0000000..cf488c0 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_01.gsc @@ -0,0 +1,384 @@ + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_buried_miner1::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_miner1::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_02.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_02.gsc new file mode 100644 index 0000000..f08837e --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_02.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_miner2::main(); + break; + case 1: + character/c_zom_zombie_buried_miner2_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_miner2_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_miner2::precache(); + character/c_zom_zombie_buried_miner2_nohat::precache(); + character/c_zom_zombie_buried_miner2_nohat::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_03.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_03.gsc new file mode 100644 index 0000000..99000ab --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_02_char_03.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_miner3::main(); + break; + case 1: + character/c_zom_zombie_buried_miner3_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_miner3_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_miner3::precache(); + character/c_zom_zombie_buried_miner3_nohat::precache(); + character/c_zom_zombie_buried_miner3_nohat::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_basic_03.gsc b/so_zclassic_zm_buried/aitype/zm_buried_basic_03.gsc new file mode 100644 index 0000000..caf0454 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_basic_03.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_saloongirl1::main(); + break; + case 1: + character/c_zom_zombie_buried_saloongirl2::main(); + break; + case 2: + character/c_zom_zombie_buried_saloongirl3::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_saloongirl1::precache(); + character/c_zom_zombie_buried_saloongirl2::precache(); + character/c_zom_zombie_buried_saloongirl3::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_ghost_female.gsc b/so_zclassic_zm_buried/aitype/zm_buried_ghost_female.gsc new file mode 100644 index 0000000..6564d5b --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_ghost_female.gsc @@ -0,0 +1,83 @@ + +#using_animtree( "zm_buried_ghost" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_ghost_idle; + dummy_anim_ref = %ai_zombie_ghost_supersprint; + dummy_anim_ref = %ai_zombie_ghost_walk; + dummy_anim_ref = %ai_zombie_ghost_melee; + dummy_anim_ref = %ai_zombie_ghost_pointdrain; + dummy_anim_ref = %ai_zombie_ghost_float_death; + dummy_anim_ref = %ai_zombie_ghost_float_death_b; + dummy_anim_ref = %ai_zombie_ghost_spawn; + dummy_anim_ref = %ai_zombie_ghost_ground_pain; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_ghost_jump_across_120; + dummy_anim_ref = %ai_zombie_ghost_jump_down_48; + dummy_anim_ref = %ai_zombie_ghost_jump_down_72; + dummy_anim_ref = %ai_zombie_ghost_jump_down_96; + dummy_anim_ref = %ai_zombie_ghost_jump_down_127; + dummy_anim_ref = %ai_zombie_ghost_jump_down_154; + dummy_anim_ref = %ai_zombie_ghost_jump_down_176; + dummy_anim_ref = %ai_zombie_ghost_jump_down_190; + dummy_anim_ref = %ai_zombie_ghost_jump_down_222; + dummy_anim_ref = %ai_zombie_ghost_jump_down_240; + dummy_anim_ref = %ai_zombie_ghost_jump_up_72; + dummy_anim_ref = %ai_zombie_ghost_jump_up_96; + dummy_anim_ref = %ai_zombie_ghost_jump_up_127; + dummy_anim_ref = %ai_zombie_ghost_jump_up_154; + dummy_anim_ref = %ai_zombie_ghost_jump_up_176; + dummy_anim_ref = %ai_zombie_ghost_jump_up_190; + dummy_anim_ref = %ai_zombie_ghost_jump_up_222; + dummy_anim_ref = %ai_zombie_ghost_jump_up_240; + dummy_anim_ref = %ai_zombie_ghost_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_ghost_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_ghost_jump_up_48; + dummy_anim_ref = %ai_zombie_ghost_playing_piano; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_ghost.asd"; + self.animtree = "zm_buried_ghost.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 70; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = "fly_step_ghost"; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_buried_ghost_woman::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_ghost" ); + character/c_zom_zombie_buried_ghost_woman::precache(); +} diff --git a/so_zclassic_zm_buried/aitype/zm_buried_sloth.gsc b/so_zclassic_zm_buried/aitype/zm_buried_sloth.gsc new file mode 100644 index 0000000..7ea5083 --- /dev/null +++ b/so_zclassic_zm_buried/aitype/zm_buried_sloth.gsc @@ -0,0 +1,175 @@ + +#using_animtree( "zm_buried_sloth" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_sloth_idle_cower; + dummy_anim_ref = %ai_zombie_sloth_idle_cower_jumpback; + dummy_anim_ref = %ai_zombie_sloth_idle_jail; + dummy_anim_ref = %ai_zombie_sloth_idle_jail_2_cower; + dummy_anim_ref = %ai_zombie_sloth_idle_jail_2_cower_jumpback; + dummy_anim_ref = %ai_zombie_sloth_run; + dummy_anim_ref = %ai_zombie_sloth_run_berserk; + dummy_anim_ref = %ai_zombie_sloth_run_hunched; + dummy_anim_ref = %ai_zombie_sloth_run_scared; + dummy_anim_ref = %ai_zombie_sloth_pain; + dummy_anim_ref = %ai_zombie_sloth_run_wounded; + dummy_anim_ref = %ai_zombie_sloth_run_into_jail_2_idle_jail; + dummy_anim_ref = %ai_zombie_sloth_run_into_jail_2_cower; + dummy_anim_ref = %ai_zombie_sloth_cower_2_close_door; + dummy_anim_ref = %ai_zombie_sloth_door_close; + dummy_anim_ref = %ai_zombie_sloth_door_open; + dummy_anim_ref = %ai_zombie_sloth_walk; + dummy_anim_ref = %ai_zombie_sloth_walk_scared; + dummy_anim_ref = %ai_zombie_sloth_walk_hunched; + dummy_anim_ref = %ai_zombie_sloth_skip; + dummy_anim_ref = %ai_zombie_sloth_idle_protect; + dummy_anim_ref = %ai_zombie_sloth_run_protect; + dummy_anim_ref = %ai_zombie_sloth_frantic_run; + dummy_anim_ref = %ai_zombie_sloth_frantic_run_hunched; + dummy_anim_ref = %ai_zombie_sloth_gimme_booze; + dummy_anim_ref = %ai_zombie_sloth_gimme_candy; + dummy_anim_ref = %ai_zombie_sloth_drinkbooze; + dummy_anim_ref = %ai_zombie_sloth_drinkbooze_aim; + dummy_anim_ref = %ai_zombie_sloth_eatcandy; + dummy_anim_ref = %ai_zombie_sloth_hit_barrier; + dummy_anim_ref = %ai_zombie_sloth_hit_wall; + dummy_anim_ref = %ai_zombie_sloth_idle; + dummy_anim_ref = %ai_zombie_sloth_pickup_part; + dummy_anim_ref = %ai_zombie_sloth_make_buildable; + dummy_anim_ref = %ai_zombie_sloth_make_buildable_intro; + dummy_anim_ref = %ai_zombie_sloth_sling_equipment; + dummy_anim_ref = %ai_zombie_sloth_unsling_equipment; + dummy_anim_ref = %ai_zombie_sloth_drop_equipment; + dummy_anim_ref = %ai_zombie_sloth_idle_holding_equipment; + dummy_anim_ref = %ai_zombie_sloth_kick_old_equipment; + dummy_anim_ref = %ai_zombie_sloth_pickup_equipment; + dummy_anim_ref = %ai_zombie_sloth_run_holding_equipment; + dummy_anim_ref = %ai_zombie_sloth_wallbuy_add; + dummy_anim_ref = %ai_zombie_sloth_wallbuy_remove; + dummy_anim_ref = %ai_zombie_sloth_place_magicbox; + dummy_anim_ref = %ai_zombie_sloth_pull_magicbox; + dummy_anim_ref = %ai_zombie_sloth_magicbox_point; + dummy_anim_ref = %ai_zombie_sloth_lock_magicbox; + dummy_anim_ref = %ai_zombie_sloth_sling_magicbox; + dummy_anim_ref = %ai_zombie_sloth_unsling_magicbox; + dummy_anim_ref = %ai_zombie_sloth_run_holding_magicbox; + dummy_anim_ref = %ai_zombie_sloth_cycle_magicbox; + dummy_anim_ref = %ai_zombie_sloth_cycle_powerup; + dummy_anim_ref = %ai_zombie_sloth_dance_before_vomit; + dummy_anim_ref = %ai_zombie_sloth_vomit; + dummy_anim_ref = %ai_zombie_sloth_smell_react; + dummy_anim_ref = %ai_zombie_sloth_death; + dummy_anim_ref = %ai_zombie_sloth_attack_v1; + dummy_anim_ref = %ai_zombie_sloth_attack_v2; + dummy_anim_ref = %ai_zombie_sloth_attack_v3; + dummy_anim_ref = %ai_zombie_sloth_attack_v4; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_sloth_pickup_crawler; + dummy_anim_ref = %ai_zombie_sloth_putdown_crawler; + dummy_anim_ref = %ai_zombie_sloth_kill_crawler_stomp; + dummy_anim_ref = %ai_zombie_sloth_kill_crawler_suplex; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_sloth_pickup_crawler_hunched; + dummy_anim_ref = %ai_zombie_sloth_putdown_crawler_hunched; + dummy_anim_ref = %ai_zombie_sloth_kill_crawler_stomp_hunched; + dummy_anim_ref = %ai_zombie_sloth_kill_crawler_suplex_hunched; + dummy_anim_ref = %ai_zombie_sloth_walk_turn_180; + dummy_anim_ref = %ai_zombie_sloth_walk_crawlerhold_turn_180; + dummy_anim_ref = %ai_zombie_sloth_walk_crawlerhold_hunched_turn_180; + dummy_anim_ref = %ai_zombie_sloth_walk_scare_turn_180; + dummy_anim_ref = %ai_zombie_sloth_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_sloth_run_turn_180; + dummy_anim_ref = %ai_zombie_sloth_run_hunched_turn_180; + dummy_anim_ref = %ai_zombie_sloth_run_holding_equipment_turn_180; + dummy_anim_ref = %ai_zombie_sloth_run_holding_magicbox_turn_180; + dummy_anim_ref = %ai_zombie_sloth_run_wounded_turn_180; + dummy_anim_ref = %ai_zombie_sloth_run_protect_turn_180; + dummy_anim_ref = %ai_zombie_sloth_jump_up_96; + dummy_anim_ref = %ai_zombie_sloth_jump_across_120; + dummy_anim_ref = %ai_zombie_sloth_jump_down_48; + dummy_anim_ref = %ai_zombie_sloth_jump_down_48_bank; + dummy_anim_ref = %ai_zombie_sloth_jump_down_72; + dummy_anim_ref = %ai_zombie_sloth_jump_down_96; + dummy_anim_ref = %ai_zombie_sloth_jump_down_96_powerroom; + dummy_anim_ref = %ai_zombie_sloth_jump_down_127; + dummy_anim_ref = %ai_zombie_sloth_jump_down_127_bank_back; + dummy_anim_ref = %ai_zombie_sloth_jump_down_127_barncorner; + dummy_anim_ref = %ai_zombie_sloth_jump_down_127_candystore_alley; + dummy_anim_ref = %ai_zombie_sloth_jump_down_127_saloon_int; + dummy_anim_ref = %ai_zombie_sloth_jump_down_176; + dummy_anim_ref = %ai_zombie_sloth_jump_down_190; + dummy_anim_ref = %ai_zombie_sloth_jump_down_190_gunshop_ext; + dummy_anim_ref = %ai_zombie_sloth_jump_down_222; + dummy_anim_ref = %ai_zombie_sloth_jump_down_222_mineshaft_gunsmith; + dummy_anim_ref = %ai_zombie_sloth_jump_down_240; + dummy_anim_ref = %ai_zombie_sloth_jump_up_127; + dummy_anim_ref = %ai_zombie_sloth_jump_up_127_powerroom; + dummy_anim_ref = %ai_zombie_sloth_jump_up_154; + dummy_anim_ref = %ai_zombie_sloth_jump_up_154_bank_back; + dummy_anim_ref = %ai_zombie_sloth_jump_up_154_bankroof_hole; + dummy_anim_ref = %ai_zombie_sloth_jump_up_154_genstore_back; + dummy_anim_ref = %ai_zombie_sloth_jump_up_222; + dummy_anim_ref = %ai_zombie_sloth_jump_up_222_church; + dummy_anim_ref = %ai_zombie_sloth_jump_up_222_gunshop_ext; + dummy_anim_ref = %ai_zombie_sloth_jump_down_154_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_176_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_190_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_190_gunshop_ext_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_222_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_222_mineshaft_gunsmith_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_240_equip; + dummy_anim_ref = %ai_zombie_sloth_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_sloth_jump_up_48; + dummy_anim_ref = %ai_zombie_sloth_traverse_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_sloth.asd"; + self.animtree = "zm_buried_sloth.asd"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 70; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = "fly_step_sloth"; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_buried_sloth::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_sloth" ); + character/c_zom_buried_sloth::precache(); +} diff --git a/so_zclassic_zm_buried/character/c_buried_player_reporter_dam.gsc b/so_zclassic_zm_buried/character/c_buried_player_reporter_dam.gsc new file mode 100644 index 0000000..85f15ac --- /dev/null +++ b/so_zclassic_zm_buried/character/c_buried_player_reporter_dam.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_dam_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_dam_fb" ); +} diff --git a/so_zclassic_zm_buried/character/c_transit_player_engineer.gsc b/so_zclassic_zm_buried/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/so_zclassic_zm_buried/character/c_transit_player_farmgirl.gsc b/so_zclassic_zm_buried/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/so_zclassic_zm_buried/character/c_transit_player_oldman.gsc b/so_zclassic_zm_buried/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_buried_sloth.gsc b/so_zclassic_zm_buried/character/c_zom_buried_sloth.gsc new file mode 100644 index 0000000..da141bb --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_buried_sloth.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_buried_sloth_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_buried_sloth_fb" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian1.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian1.gsc new file mode 100644 index 0000000..6966939 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian1.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat1_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat1_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian2.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian2.gsc new file mode 100644 index 0000000..722663b --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian2.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats3"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff2"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats3"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats3" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian2_nohat.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian2_nohat.gsc new file mode 100644 index 0000000..715a1c1 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian2_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body2_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat2_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff2"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body2_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat2_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian3.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian3.gsc new file mode 100644 index 0000000..283552f --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian3.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff3"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats1" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats1" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian3_nohat.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian3_nohat.gsc new file mode 100644 index 0000000..16728ea --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian3_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body3_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat3_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff3"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body3_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat3_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian4.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian4.gsc new file mode 100644 index 0000000..423cec7 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian4.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body4" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats4"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean4"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff4"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff4"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean4"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff4"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff4"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff4"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats4"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body4" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff4" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats4" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian4_nohat.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian4_nohat.gsc new file mode 100644 index 0000000..133fb49 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian4_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body4_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat4_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean4"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff4"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff4"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean4"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff4"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff4"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff4"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body4_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat4_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff4" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian5.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian5.gsc new file mode 100644 index 0000000..9d1e339 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian5.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body5" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean5"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff5"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff5"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean5"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff5"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff5"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff5"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats2"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body5" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff5" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats2" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian5_nohat.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian5_nohat.gsc new file mode 100644 index 0000000..cb6a6e1 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_civilian5_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body5_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat5_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean5"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff5"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff5"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean5"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff5"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff5"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff5"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body5_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat5_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff5" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_ghost_woman.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_ghost_woman.gsc new file mode 100644 index 0000000..871be60 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_ghost_woman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_zombie_buried_ghost_woman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_ghost_woman_fb" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner1.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner1.gsc new file mode 100644 index 0000000..098b02e --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner1.gsc @@ -0,0 +1,48 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_miner_hats1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_miner_hats1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner2.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner2.gsc new file mode 100644 index 0000000..b3f5e79 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner2.gsc @@ -0,0 +1,48 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_miner_hats1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff2"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_miner_hats1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner2_nohat.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner2_nohat.gsc new file mode 100644 index 0000000..d0a9cdc --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner2_nohat.gsc @@ -0,0 +1,45 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body2_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff2"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body2_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner3.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner3.gsc new file mode 100644 index 0000000..f435558 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner3.gsc @@ -0,0 +1,48 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_miner_hats2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff3"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_miner_hats2"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_hats2" ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_miner_hats2" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner3_nohat.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner3_nohat.gsc new file mode 100644 index 0000000..ef5bc7c --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_miner3_nohat.gsc @@ -0,0 +1,45 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body3_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff3"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body3_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl1.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl1.gsc new file mode 100644 index 0000000..9152d3b --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl1.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_sgirl_g_upclean"; + self.torsodmg2 = "c_zom_zombie_buried_sgirl_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_buried_sgirl_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_buried_sgirl_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_sgirl_g_lowclean"; + self.legdmg2 = "c_zom_zombie_buried_sgirl_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_buried_sgirl_g_llegoff"; + self.legdmg4 = "c_zom_zombie_buried_sgirl_g_legsoff"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + precachemodel( "c_zom_zombie_buried_sgirl_g_upclean" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rarmoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_larmoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_behead" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_lowclean" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rlegoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_llegoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_legsoff" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl2.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl2.gsc new file mode 100644 index 0000000..f0740a3 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl2.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_sgirl_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_sgirl_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_sgirl_g_larmoff2"; + self.torsodmg5 = "c_zom_zombie_buried_sgirl_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_sgirl_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_sgirl_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_sgirl_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_sgirl_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + precachemodel( "c_zom_zombie_buried_sgirl_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_behead" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl3.gsc b/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl3.gsc new file mode 100644 index 0000000..8f1f2b7 --- /dev/null +++ b/so_zclassic_zm_buried/character/c_zom_zombie_buried_saloongirl3.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_sgirl_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_sgirl_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_sgirl_g_larmoff3"; + self.torsodmg5 = "c_zom_zombie_buried_sgirl_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_sgirl_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_sgirl_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_sgirl_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_sgirl_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + precachemodel( "c_zom_zombie_buried_sgirl_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_behead" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat1_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat1_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat1_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat2_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat2_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat2_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat3_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat3_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat3_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat4_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat4_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat4_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat5_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat5_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat5_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_female_heads_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_female_heads_als.gsc new file mode 100644 index 0000000..b7d570d --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_female_heads_als.gsc @@ -0,0 +1,7 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_head1"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_head2"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_male_heads_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_male_heads_als.gsc new file mode 100644 index 0000000..4557a13 --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_male_heads_als.gsc @@ -0,0 +1,8 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_male_head1"; + a[ 1 ] = "c_zom_zombie_buried_male_head2"; + a[ 2 ] = "c_zom_zombie_buried_male_head3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_miner_hats_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_miner_hats_als.gsc new file mode 100644 index 0000000..b947a59 --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_miner_hats_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_miner_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc new file mode 100644 index 0000000..6f20d3a --- /dev/null +++ b/so_zclassic_zm_buried/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc @@ -0,0 +1,11 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_hair1"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_hair1_2"; + a[ 2 ] = "c_zom_zombie_buried_sgirl_hair1_3"; + a[ 3 ] = "c_zom_zombie_buried_sgirl_hair2"; + a[ 4 ] = "c_zom_zombie_buried_sgirl_hair2_2"; + a[ 5 ] = "c_zom_zombie_buried_sgirl_hair1_3"; + return a; +} diff --git a/so_zclassic_zm_transit/aitype/zm_transit_avogadro.gsc b/so_zclassic_zm_transit/aitype/zm_transit_avogadro.gsc new file mode 100644 index 0000000..30824d6 --- /dev/null +++ b/so_zclassic_zm_transit/aitype/zm_transit_avogadro.gsc @@ -0,0 +1,118 @@ + +#using_animtree( "zm_transit_avogadro" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_avogadro_arrival; + dummy_anim_ref = %ai_zombie_avogadro_exit; + dummy_anim_ref = %ai_zombie_avogadro_bus_attack_back; + dummy_anim_ref = %ai_zombie_avogadro_bus_attack_front; + dummy_anim_ref = %ai_zombie_avogadro_bus_attack_left; + dummy_anim_ref = %ai_zombie_avogadro_bus_attack_right; + dummy_anim_ref = %ai_zombie_avogadro_bus_attack_knocked_off; + dummy_anim_ref = %ai_zombie_avogadro_bus_pain_long; + dummy_anim_ref = %ai_zombie_avogadro_bus_pain_med; + dummy_anim_ref = %ai_zombie_avogadro_bus_pain_short; + dummy_anim_ref = %ai_zombie_avogadro_bus_back_pain_long; + dummy_anim_ref = %ai_zombie_avogadro_bus_back_pain_med; + dummy_anim_ref = %ai_zombie_avogadro_bus_back_pain_short; + dummy_anim_ref = %ai_zombie_avogadro_chamber_idle; + dummy_anim_ref = %ai_zombie_avogadro_chamber_trans_out; + dummy_anim_ref = %ai_zombie_avogadro_idle_v1; + dummy_anim_ref = %ai_zombie_avogadro_melee_attack_v1; + dummy_anim_ref = %ai_zombie_avogadro_pain_long; + dummy_anim_ref = %ai_zombie_avogadro_pain_med; + dummy_anim_ref = %ai_zombie_avogadro_pain_short; + dummy_anim_ref = %ai_zombie_avogadro_ranged_attack_v1; + dummy_anim_ref = %ai_zombie_avogadro_ranged_attack_v1_loop; + dummy_anim_ref = %ai_zombie_avogadro_ranged_attack_v1_end; + dummy_anim_ref = %ai_zombie_avogadro_run_v1; + dummy_anim_ref = %ai_zombie_avogadro_run_v1_twitch; + dummy_anim_ref = %ai_zombie_avogadro_sprint_v1; + dummy_anim_ref = %ai_zombie_avogadro_sprint_v1_twitch; + dummy_anim_ref = %ai_zombie_avogadro_walk_v1; + dummy_anim_ref = %ai_zombie_avogadro_walk_v1_twitch; + dummy_anim_ref = %ai_zombie_avogadro_teleport_forward_long; + dummy_anim_ref = %ai_zombie_avogadro_teleport_forward_med; + dummy_anim_ref = %ai_zombie_avogadro_teleport_forward_short; + dummy_anim_ref = %ai_zombie_avogadro_teleport_left_long; + dummy_anim_ref = %ai_zombie_avogadro_teleport_left_med; + dummy_anim_ref = %ai_zombie_avogadro_teleport_left_short; + dummy_anim_ref = %ai_zombie_avogadro_teleport_right_long; + dummy_anim_ref = %ai_zombie_avogadro_teleport_right_med; + dummy_anim_ref = %ai_zombie_avogadro_teleport_right_short; + dummy_anim_ref = %ai_zombie_avogadro_teleport_back_long; + dummy_anim_ref = %ai_zombie_avogadro_teleport_back_med; + dummy_anim_ref = %ai_zombie_avogadro_teleport_back_short; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_avogadro_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_avogadro.asd"; + self.animtree = "zm_transit_avogadro.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 70; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_avogadro::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_avogadro" ); + character/c_zom_avogadro::precache(); +} diff --git a/so_zclassic_zm_transit/aitype/zm_transit_basic_01.gsc b/so_zclassic_zm_transit/aitype/zm_transit_basic_01.gsc new file mode 100644 index 0000000..0356f22 --- /dev/null +++ b/so_zclassic_zm_transit/aitype/zm_transit_basic_01.gsc @@ -0,0 +1,490 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie1_01::main(); + break; + case 1: + character/c_zom_zombie1_02::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie1_01::precache(); + character/c_zom_zombie1_02::precache(); +} diff --git a/so_zclassic_zm_transit/aitype/zm_transit_basic_02.gsc b/so_zclassic_zm_transit/aitype/zm_transit_basic_02.gsc new file mode 100644 index 0000000..d8ef350 --- /dev/null +++ b/so_zclassic_zm_transit/aitype/zm_transit_basic_02.gsc @@ -0,0 +1,494 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie2_01::main(); + break; + case 1: + character/c_zom_zombie2_02::main(); + break; + case 2: + character/c_zom_zombie2_03::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie2_01::precache(); + character/c_zom_zombie2_02::precache(); + character/c_zom_zombie2_03::precache(); +} diff --git a/so_zclassic_zm_transit/aitype/zm_transit_basic_03.gsc b/so_zclassic_zm_transit/aitype/zm_transit_basic_03.gsc new file mode 100644 index 0000000..ba63097 --- /dev/null +++ b/so_zclassic_zm_transit/aitype/zm_transit_basic_03.gsc @@ -0,0 +1,502 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 5 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie3_01::main(); + break; + case 1: + character/c_zom_zombie3_02::main(); + break; + case 2: + character/c_zom_zombie3_03::main(); + break; + case 3: + character/c_zom_zombie3_04::main(); + break; + case 4: + character/c_zom_zombie3_05::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie3_01::precache(); + character/c_zom_zombie3_02::precache(); + character/c_zom_zombie3_03::precache(); + character/c_zom_zombie3_04::precache(); + character/c_zom_zombie3_05::precache(); +} diff --git a/so_zclassic_zm_transit/aitype/zm_transit_screecher.gsc b/so_zclassic_zm_transit/aitype/zm_transit_screecher.gsc new file mode 100644 index 0000000..4c1a1af --- /dev/null +++ b/so_zclassic_zm_transit/aitype/zm_transit_screecher.gsc @@ -0,0 +1,75 @@ + +#using_animtree( "zm_transit_screecher" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_screecher_burrow_into_ground; + dummy_anim_ref = %ai_zombie_screecher_climb_down_pothole; + dummy_anim_ref = %ai_zombie_screecher_climb_up_pothole; + dummy_anim_ref = %ai_zombie_screecher_cower_v1; + dummy_anim_ref = %ai_zombie_screecher_death_v1; + dummy_anim_ref = %ai_zombie_screecher_headpull; + dummy_anim_ref = %ai_zombie_screecher_headpull_fail; + dummy_anim_ref = %ai_zombie_screecher_headpull_success; + dummy_anim_ref = %ai_zombie_screecher_jump_land_fail; + dummy_anim_ref = %ai_zombie_screecher_jump_land_success_fromback; + dummy_anim_ref = %ai_zombie_screecher_jump_land_success_fromfront; + dummy_anim_ref = %ai_zombie_screecher_jump_loop; + dummy_anim_ref = %ai_zombie_screecher_jump_up; + dummy_anim_ref = %ai_zombie_screecher_run; + dummy_anim_ref = %ai_zombie_screecher_run_bounce; + dummy_anim_ref = %ai_zombie_screecher_run_hop; + dummy_anim_ref = %ai_zombie_screecher_run_zigzag; + dummy_anim_ref = %ai_zombie_screecher_tunnel_traversal; + dummy_anim_ref = %ai_zombie_screecher_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_screecher_traverse_car; + dummy_anim_ref = %ai_zombie_screecher_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_screecher_traverse_ground_v1; + dummy_anim_ref = %ai_zombie_screecher_jump_down_96; + dummy_anim_ref = %ai_zombie_screecher_jump_down_127; + dummy_anim_ref = %ai_zombie_screecher_jump_up_127; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_screecher.asd"; + self.animtree = "zm_transit_screecher.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 18; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_screecher::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_screecher" ); + character/c_zom_screecher::precache(); +} diff --git a/so_zclassic_zm_transit/character/c_transit_player_engineer.gsc b/so_zclassic_zm_transit/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/so_zclassic_zm_transit/character/c_transit_player_farmgirl.gsc b/so_zclassic_zm_transit/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/so_zclassic_zm_transit/character/c_transit_player_oldman.gsc b/so_zclassic_zm_transit/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/so_zclassic_zm_transit/character/c_transit_player_reporter.gsc b/so_zclassic_zm_transit/character/c_transit_player_reporter.gsc new file mode 100644 index 0000000..71e8021 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_transit_player_reporter.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_fb" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_avogadro.gsc b/so_zclassic_zm_transit/character/c_zom_avogadro.gsc new file mode 100644 index 0000000..d725aab --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_avogadro.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_avagadro_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_avagadro_fb" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_screecher.gsc b/so_zclassic_zm_transit/character/c_zom_screecher.gsc new file mode 100644 index 0000000..bc79566 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_screecher.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_screecher_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_screecher_fb" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie1_01.gsc b/so_zclassic_zm_transit/character/c_zom_zombie1_01.gsc new file mode 100644 index 0000000..de7fc13 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie1_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie1_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie1_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie1_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie1_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie1_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie1_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie1_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie1_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie1_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie1_body01_g_upclean" ); + precachemodel( "c_zom_zombie1_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie1_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie1_body01_g_lowclean" ); + precachemodel( "c_zom_zombie1_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie1_body01_g_llegoff" ); + precachemodel( "c_zom_zombie1_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie1_02.gsc b/so_zclassic_zm_transit/character/c_zom_zombie1_02.gsc new file mode 100644 index 0000000..09fc308 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie1_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie1_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie1_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie1_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie1_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie1_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie1_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie1_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie1_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie1_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie1_body02_g_upclean" ); + precachemodel( "c_zom_zombie1_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie1_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie1_body02_g_lowclean" ); + precachemodel( "c_zom_zombie1_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie1_body02_g_llegoff" ); + precachemodel( "c_zom_zombie1_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie2_01.gsc b/so_zclassic_zm_transit/character/c_zom_zombie2_01.gsc new file mode 100644 index 0000000..4fbc19a --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie2_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie2_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie2_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie2_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie2_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie2_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie2_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie2_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie2_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie2_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie2_body01_g_upclean" ); + precachemodel( "c_zom_zombie2_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie2_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie2_body01_g_lowclean" ); + precachemodel( "c_zom_zombie2_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie2_body01_g_llegoff" ); + precachemodel( "c_zom_zombie2_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie2_02.gsc b/so_zclassic_zm_transit/character/c_zom_zombie2_02.gsc new file mode 100644 index 0000000..4c10218 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie2_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie2_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie2_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie2_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie2_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie2_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie2_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie2_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie2_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie2_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie2_body02_g_upclean" ); + precachemodel( "c_zom_zombie2_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie2_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie2_body01_g_lowclean" ); + precachemodel( "c_zom_zombie2_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie2_body01_g_llegoff" ); + precachemodel( "c_zom_zombie2_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie2_03.gsc b/so_zclassic_zm_transit/character/c_zom_zombie2_03.gsc new file mode 100644 index 0000000..62de923 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie2_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie2_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie2_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie2_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie2_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie2_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie2_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie2_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie2_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie2_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie2_body03_g_upclean" ); + precachemodel( "c_zom_zombie2_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie2_body03_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie2_body01_g_lowclean" ); + precachemodel( "c_zom_zombie2_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie2_body01_g_llegoff" ); + precachemodel( "c_zom_zombie2_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie3_01.gsc b/so_zclassic_zm_transit/character/c_zom_zombie3_01.gsc new file mode 100644 index 0000000..690bc95 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie3_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body01_g_upclean" ); + precachemodel( "c_zom_zombie3_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body01_g_lowclean" ); + precachemodel( "c_zom_zombie3_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body01_g_llegoff" ); + precachemodel( "c_zom_zombie3_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie3_02.gsc b/so_zclassic_zm_transit/character/c_zom_zombie3_02.gsc new file mode 100644 index 0000000..c28b86a --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie3_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body02_g_upclean" ); + precachemodel( "c_zom_zombie3_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body02_g_lowclean" ); + precachemodel( "c_zom_zombie3_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body02_g_llegoff" ); + precachemodel( "c_zom_zombie3_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie3_03.gsc b/so_zclassic_zm_transit/character/c_zom_zombie3_03.gsc new file mode 100644 index 0000000..467dfb5 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie3_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body03_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body03_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body03_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body03_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body03_g_upclean" ); + precachemodel( "c_zom_zombie3_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body03_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body03_g_lowclean" ); + precachemodel( "c_zom_zombie3_body03_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body03_g_llegoff" ); + precachemodel( "c_zom_zombie3_body03_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie3_04.gsc b/so_zclassic_zm_transit/character/c_zom_zombie3_04.gsc new file mode 100644 index 0000000..ee42a38 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie3_04.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body04" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body04_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body04_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body04_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body04_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body04_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body04_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body04_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body04" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body04_g_upclean" ); + precachemodel( "c_zom_zombie3_body04_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body04_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body04_g_lowclean" ); + precachemodel( "c_zom_zombie3_body04_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body04_g_llegoff" ); + precachemodel( "c_zom_zombie3_body04_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/character/c_zom_zombie3_05.gsc b/so_zclassic_zm_transit/character/c_zom_zombie3_05.gsc new file mode 100644 index 0000000..7c418c9 --- /dev/null +++ b/so_zclassic_zm_transit/character/c_zom_zombie3_05.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body05" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body05_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body05_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body05_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body05_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body05_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body05_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body05_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body05" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body05_g_upclean" ); + precachemodel( "c_zom_zombie3_body05_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body05_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body05_g_lowclean" ); + precachemodel( "c_zom_zombie3_body05_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body05_g_llegoff" ); + precachemodel( "c_zom_zombie3_body05_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zclassic_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc b/so_zclassic_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc new file mode 100644 index 0000000..6aeadb2 --- /dev/null +++ b/so_zclassic_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_head_k"; + a[ 1 ] = "c_zom_zombie_head_l"; + a[ 2 ] = "c_zom_zombie_head_n"; + a[ 3 ] = "c_zom_zombie_head_a"; + return a; +} diff --git a/so_zencounter_zm_buried/aitype/zm_ally_cdc.gsc b/so_zencounter_zm_buried/aitype/zm_ally_cdc.gsc new file mode 100644 index 0000000..bef97ac --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_ally_cdc.gsc @@ -0,0 +1,55 @@ + +#using_animtree( "zm_ally" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %pb_laststand_idle; + dummy_anim_ref = %pb_stand_alert; + dummy_anim_ref = %pb_crouch_alert; + dummy_anim_ref = %pb_afterlife_laststand_idle; + dummy_anim_ref = %ai_actor_elec_chair_idle; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_ally_basic.asd"; + self.animtree = "zm_ally.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "allies"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_ally_cdc::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "allies" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_ally_basic" ); + character/c_zom_ally_cdc::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_01.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_01.gsc new file mode 100644 index 0000000..543f5a2 --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_01.gsc @@ -0,0 +1,384 @@ + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_buried_civilian1::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian1::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_02.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_02.gsc new file mode 100644 index 0000000..6b54a55 --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_02.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian2::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian2_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian2_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian2::precache(); + character/c_zom_zombie_buried_civilian2_nohat::precache(); + character/c_zom_zombie_buried_civilian2_nohat::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_03.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_03.gsc new file mode 100644 index 0000000..270be7e --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_03.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian3::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian3_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian3_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian3::precache(); + character/c_zom_zombie_buried_civilian3_nohat::precache(); + character/c_zom_zombie_buried_civilian3_nohat::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_04.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_04.gsc new file mode 100644 index 0000000..b0e3058 --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_04.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian4::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian4_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian4_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_civilian4::precache(); + character/c_zom_zombie_buried_civilian4_nohat::precache(); + character/c_zom_zombie_buried_civilian4_nohat::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_05.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_05.gsc new file mode 100644 index 0000000..deedb27 --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_01_char_05.gsc @@ -0,0 +1,403 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 4 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_civilian5::main(); + break; + case 1: + character/c_zom_zombie_buried_civilian5_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_civilian5_nohat::main(); + break; + case 3: + character/c_zom_zombie_buried_civilian5_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + 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(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_01.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_01.gsc new file mode 100644 index 0000000..cf488c0 --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_01.gsc @@ -0,0 +1,384 @@ + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_buried_miner1::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_miner1::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_02.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_02.gsc new file mode 100644 index 0000000..f08837e --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_02.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_miner2::main(); + break; + case 1: + character/c_zom_zombie_buried_miner2_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_miner2_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_miner2::precache(); + character/c_zom_zombie_buried_miner2_nohat::precache(); + character/c_zom_zombie_buried_miner2_nohat::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_03.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_03.gsc new file mode 100644 index 0000000..99000ab --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_02_char_03.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_miner3::main(); + break; + case 1: + character/c_zom_zombie_buried_miner3_nohat::main(); + break; + case 2: + character/c_zom_zombie_buried_miner3_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_miner3::precache(); + character/c_zom_zombie_buried_miner3_nohat::precache(); + character/c_zom_zombie_buried_miner3_nohat::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_basic_03.gsc b/so_zencounter_zm_buried/aitype/zm_buried_basic_03.gsc new file mode 100644 index 0000000..caf0454 --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_basic_03.gsc @@ -0,0 +1,399 @@ +#include codescripts/character; + +#using_animtree( "zm_buried_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_vertical; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_slow; + dummy_anim_ref = %ai_zombie_hedgemaze_emerge_fast; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_slung_idle; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_idle_hunched; + dummy_anim_ref = %ai_zombie_crawler_pickup_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_putdown_by_sloth_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_stomp_hunched; + dummy_anim_ref = %ai_zombie_crawler_slothkill_suplex_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_sling_hunched; + dummy_anim_ref = %ai_zombie_crawler_sloth_crawlerhold_unsling_hunched; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_hunched_turn_180; + dummy_anim_ref = %ai_zombie_crawler_crawlerhold_walk_turn_180; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_240; + dummy_anim_ref = %ai_zombie_crawl_jump_down_240; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_crawl_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_basic.asd"; + self.animtree = "zm_buried_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_buried_saloongirl1::main(); + break; + case 1: + character/c_zom_zombie_buried_saloongirl2::main(); + break; + case 2: + character/c_zom_zombie_buried_saloongirl3::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_basic" ); + character/c_zom_zombie_buried_saloongirl1::precache(); + character/c_zom_zombie_buried_saloongirl2::precache(); + character/c_zom_zombie_buried_saloongirl3::precache(); +} diff --git a/so_zencounter_zm_buried/aitype/zm_buried_ghost_female.gsc b/so_zencounter_zm_buried/aitype/zm_buried_ghost_female.gsc new file mode 100644 index 0000000..6564d5b --- /dev/null +++ b/so_zencounter_zm_buried/aitype/zm_buried_ghost_female.gsc @@ -0,0 +1,83 @@ + +#using_animtree( "zm_buried_ghost" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_ghost_idle; + dummy_anim_ref = %ai_zombie_ghost_supersprint; + dummy_anim_ref = %ai_zombie_ghost_walk; + dummy_anim_ref = %ai_zombie_ghost_melee; + dummy_anim_ref = %ai_zombie_ghost_pointdrain; + dummy_anim_ref = %ai_zombie_ghost_float_death; + dummy_anim_ref = %ai_zombie_ghost_float_death_b; + dummy_anim_ref = %ai_zombie_ghost_spawn; + dummy_anim_ref = %ai_zombie_ghost_ground_pain; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_ghost_jump_across_120; + dummy_anim_ref = %ai_zombie_ghost_jump_down_48; + dummy_anim_ref = %ai_zombie_ghost_jump_down_72; + dummy_anim_ref = %ai_zombie_ghost_jump_down_96; + dummy_anim_ref = %ai_zombie_ghost_jump_down_127; + dummy_anim_ref = %ai_zombie_ghost_jump_down_154; + dummy_anim_ref = %ai_zombie_ghost_jump_down_176; + dummy_anim_ref = %ai_zombie_ghost_jump_down_190; + dummy_anim_ref = %ai_zombie_ghost_jump_down_222; + dummy_anim_ref = %ai_zombie_ghost_jump_down_240; + dummy_anim_ref = %ai_zombie_ghost_jump_up_72; + dummy_anim_ref = %ai_zombie_ghost_jump_up_96; + dummy_anim_ref = %ai_zombie_ghost_jump_up_127; + dummy_anim_ref = %ai_zombie_ghost_jump_up_154; + dummy_anim_ref = %ai_zombie_ghost_jump_up_176; + dummy_anim_ref = %ai_zombie_ghost_jump_up_190; + dummy_anim_ref = %ai_zombie_ghost_jump_up_222; + dummy_anim_ref = %ai_zombie_ghost_jump_up_240; + dummy_anim_ref = %ai_zombie_ghost_jump_up_startrailing; + dummy_anim_ref = %ai_zombie_ghost_jump_down_startrailing; + dummy_anim_ref = %ai_zombie_ghost_jump_up_48; + dummy_anim_ref = %ai_zombie_ghost_playing_piano; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_buried_ghost.asd"; + self.animtree = "zm_buried_ghost.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 70; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = "fly_step_ghost"; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_buried_ghost_woman::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_buried_ghost" ); + character/c_zom_zombie_buried_ghost_woman::precache(); +} diff --git a/so_zencounter_zm_buried/character/c_buried_player_reporter_dam.gsc b/so_zencounter_zm_buried/character/c_buried_player_reporter_dam.gsc new file mode 100644 index 0000000..85f15ac --- /dev/null +++ b/so_zencounter_zm_buried/character/c_buried_player_reporter_dam.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_dam_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_dam_fb" ); +} diff --git a/so_zencounter_zm_buried/character/c_transit_player_engineer.gsc b/so_zencounter_zm_buried/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/so_zencounter_zm_buried/character/c_transit_player_farmgirl.gsc b/so_zencounter_zm_buried/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/so_zencounter_zm_buried/character/c_transit_player_oldman.gsc b/so_zencounter_zm_buried/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_ally_cdc.gsc b/so_zencounter_zm_buried/character/c_zom_ally_cdc.gsc new file mode 100644 index 0000000..9530aee --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_ally_cdc.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_cdc_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_cdc_fb" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian1.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian1.gsc new file mode 100644 index 0000000..6966939 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian1.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat1_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat1_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian2.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian2.gsc new file mode 100644 index 0000000..722663b --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian2.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats3"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff2"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats3"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats3" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian2_nohat.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian2_nohat.gsc new file mode 100644 index 0000000..715a1c1 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian2_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body2_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat2_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff2"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body2_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat2_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian3.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian3.gsc new file mode 100644 index 0000000..283552f --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian3.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff3"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats1" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats1" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian3_nohat.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian3_nohat.gsc new file mode 100644 index 0000000..16728ea --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian3_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body3_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat3_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff3"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body3_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat3_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian4.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian4.gsc new file mode 100644 index 0000000..423cec7 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian4.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body4" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats4"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean4"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff4"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff4"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean4"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff4"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff4"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff4"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats4"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body4" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff4" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats4" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian4_nohat.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian4_nohat.gsc new file mode 100644 index 0000000..133fb49 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian4_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body4_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat4_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean4"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff4"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff4"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean4"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff4"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff4"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff4"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body4_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat4_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff4" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff4" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian5.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian5.gsc new file mode 100644 index 0000000..9d1e339 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian5.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body5" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_civilian_hats2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean5"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff5"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff5"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean5"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff5"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff5"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff5"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_civilian_hats2"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body5" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_hats2" ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff5" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_civilian_hats2" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian5_nohat.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian5_nohat.gsc new file mode 100644 index 0000000..cb6a6e1 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_civilian5_nohat.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_civilian_body5_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_civilian_hat5_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_civilian_g_upclean5"; + self.torsodmg2 = "c_zom_zombie_buried_civilian_g_rarmoff5"; + self.torsodmg3 = "c_zom_zombie_buried_civilian_g_larmoff5"; + self.torsodmg5 = "c_zom_zombie_buried_civilian_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_civilian_g_lowclean5"; + self.legdmg2 = "c_zom_zombie_buried_civilian_g_rlegoff5"; + self.legdmg3 = "c_zom_zombie_buried_civilian_g_llegoff5"; + self.legdmg4 = "c_zom_zombie_buried_civilian_g_legsoff5"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_civilian_body5_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_civilian_hat5_als::main() ); + precachemodel( "c_zom_zombie_buried_civilian_g_upclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rarmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_larmoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_behead" ); + precachemodel( "c_zom_zombie_buried_civilian_g_lowclean5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_rlegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_llegoff5" ); + precachemodel( "c_zom_zombie_buried_civilian_g_legsoff5" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_ghost_woman.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_ghost_woman.gsc new file mode 100644 index 0000000..871be60 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_ghost_woman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_zombie_buried_ghost_woman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_ghost_woman_fb" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner1.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner1.gsc new file mode 100644 index 0000000..098b02e --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner1.gsc @@ -0,0 +1,48 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_miner_hats1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_miner_hats1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner2.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner2.gsc new file mode 100644 index 0000000..b3f5e79 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner2.gsc @@ -0,0 +1,48 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_miner_hats1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff2"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_miner_hats1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_miner_hats1" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner2_nohat.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner2_nohat.gsc new file mode 100644 index 0000000..d0a9cdc --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner2_nohat.gsc @@ -0,0 +1,45 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body2_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff2"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body2_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner3.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner3.gsc new file mode 100644 index 0000000..f435558 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner3.gsc @@ -0,0 +1,48 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_zombie_buried_miner_hats2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff3"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; + self.gibspawn5 = "c_zom_zombie_buried_miner_hats2"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_hats2" ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_zombie_buried_miner_hats2" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner3_nohat.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner3_nohat.gsc new file mode 100644 index 0000000..ef5bc7c --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_miner3_nohat.gsc @@ -0,0 +1,45 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_miner_body3_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_miner_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_miner_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_miner_g_larmoff3"; + self.legdmg1 = "c_zom_zombie_buried_miner_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_miner_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_miner_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_miner_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_miner_body3_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_male_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_miner_hats_als::main() ); + precachemodel( "c_zom_zombie_buried_miner_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_miner_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_miner_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl1.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl1.gsc new file mode 100644 index 0000000..9152d3b --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl1.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_sgirl_g_upclean"; + self.torsodmg2 = "c_zom_zombie_buried_sgirl_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_buried_sgirl_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_buried_sgirl_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_sgirl_g_lowclean"; + self.legdmg2 = "c_zom_zombie_buried_sgirl_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_buried_sgirl_g_llegoff"; + self.legdmg4 = "c_zom_zombie_buried_sgirl_g_legsoff"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + precachemodel( "c_zom_zombie_buried_sgirl_g_upclean" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rarmoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_larmoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_behead" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_lowclean" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rlegoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_llegoff" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_legsoff" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl2.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl2.gsc new file mode 100644 index 0000000..f0740a3 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl2.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_sgirl_g_upclean2"; + self.torsodmg2 = "c_zom_zombie_buried_sgirl_g_rarmoff2"; + self.torsodmg3 = "c_zom_zombie_buried_sgirl_g_larmoff2"; + self.torsodmg5 = "c_zom_zombie_buried_sgirl_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_sgirl_g_lowclean2"; + self.legdmg2 = "c_zom_zombie_buried_sgirl_g_rlegoff2"; + self.legdmg3 = "c_zom_zombie_buried_sgirl_g_llegoff2"; + self.legdmg4 = "c_zom_zombie_buried_sgirl_g_legsoff2"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + precachemodel( "c_zom_zombie_buried_sgirl_g_upclean2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rarmoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_larmoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_behead" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_lowclean2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rlegoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_llegoff2" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_legsoff2" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl3.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl3.gsc new file mode 100644 index 0000000..8f1f2b7 --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl3.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_buried_sgirl_g_upclean3"; + self.torsodmg2 = "c_zom_zombie_buried_sgirl_g_rarmoff3"; + self.torsodmg3 = "c_zom_zombie_buried_sgirl_g_larmoff3"; + self.torsodmg5 = "c_zom_zombie_buried_sgirl_g_behead"; + self.legdmg1 = "c_zom_zombie_buried_sgirl_g_lowclean3"; + self.legdmg2 = "c_zom_zombie_buried_sgirl_g_rlegoff3"; + self.legdmg3 = "c_zom_zombie_buried_sgirl_g_llegoff3"; + self.legdmg4 = "c_zom_zombie_buried_sgirl_g_legsoff3"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_female_heads_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_buried_sgirl_hair_als::main() ); + precachemodel( "c_zom_zombie_buried_sgirl_g_upclean3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rarmoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_larmoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_behead" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_lowclean3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_rlegoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_llegoff3" ); + precachemodel( "c_zom_zombie_buried_sgirl_g_legsoff3" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl_mp.gsc b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl_mp.gsc new file mode 100644 index 0000000..c12749a --- /dev/null +++ b/so_zencounter_zm_buried/character/c_zom_zombie_buried_saloongirl_mp.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_player_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_player_fb" ); +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat1_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat1_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat1_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat2_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat2_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat2_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat3_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat3_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat3_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat4_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat4_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat4_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat5_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat5_als.gsc new file mode 100644 index 0000000..80899ad --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_civilian_hat5_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_civilian_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_female_heads_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_female_heads_als.gsc new file mode 100644 index 0000000..b7d570d --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_female_heads_als.gsc @@ -0,0 +1,7 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_head1"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_head2"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_male_heads_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_male_heads_als.gsc new file mode 100644 index 0000000..4557a13 --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_male_heads_als.gsc @@ -0,0 +1,8 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_male_head1"; + a[ 1 ] = "c_zom_zombie_buried_male_head2"; + a[ 2 ] = "c_zom_zombie_buried_male_head3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_miner_hats_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_miner_hats_als.gsc new file mode 100644 index 0000000..b947a59 --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_miner_hats_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_miner_nohat"; + a[ 1 ] = "c_zom_zombie_buried_male_hair1"; + a[ 2 ] = "c_zom_zombie_buried_male_hair2"; + a[ 3 ] = "c_zom_zombie_buried_male_hair3"; + return a; +} diff --git a/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc new file mode 100644 index 0000000..6f20d3a --- /dev/null +++ b/so_zencounter_zm_buried/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc @@ -0,0 +1,11 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_hair1"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_hair1_2"; + a[ 2 ] = "c_zom_zombie_buried_sgirl_hair1_3"; + a[ 3 ] = "c_zom_zombie_buried_sgirl_hair2"; + a[ 4 ] = "c_zom_zombie_buried_sgirl_hair2_2"; + a[ 5 ] = "c_zom_zombie_buried_sgirl_hair1_3"; + return a; +} diff --git a/so_zencounter_zm_prison/maps/mp/teams/_teamset_cdc.gsc b/so_zencounter_zm_prison/maps/mp/teams/_teamset_cdc.gsc new file mode 100644 index 0000000..62ec842 --- /dev/null +++ b/so_zencounter_zm_prison/maps/mp/teams/_teamset_cdc.gsc @@ -0,0 +1,51 @@ + +register() +{ + game[ "teamset" ] = []; + game[ "teamset" ][ "cdc" ] = ::cdc; +} + +level_init() +{ + game[ "allies" ] = "cdc"; + game[ "axis" ] = "cia"; + setdvar( "g_TeamName_Allies", &"ZMUI_CDC_SHORT" ); + setdvar( "g_TeamName_Axis", &"ZMUI_CIA_SHORT" ); + game[ "strings" ][ "allies_win" ] = &"ZM_CDC_WIN_MATCH"; + game[ "strings" ][ "allies_win_round" ] = &"ZM_CDC_WIN_ROUND"; + game[ "strings" ][ "allies_mission_accomplished" ] = &"ZM_CDC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "allies_eliminated" ] = &"ZM_CDC_ELIMINATED"; + game[ "strings" ][ "allies_forfeited" ] = &"ZM_CDC_FORFEITED"; + game[ "strings" ][ "allies_name" ] = &"ZM_CDC_NAME"; + game[ "music" ][ "spawn_allies" ] = "SPAWN_OPS"; + game[ "music" ][ "victory_allies" ] = "mus_victory_usa"; + game[ "icons" ][ "allies" ] = "faction_cdc"; + game[ "colors" ][ "allies" ] = ( 0, 0, 0 ); + game[ "voice" ][ "allies" ] = "vox_st6_"; + setdvar( "scr_allies", "marines" ); + game[ "strings" ][ "axis_win" ] = &"ZM_CIA_WIN_MATCH"; + game[ "strings" ][ "axis_win_round" ] = &"ZM_CIA_WIN_ROUND"; + game[ "strings" ][ "axis_mission_accomplished" ] = &"ZM_CIA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "axis_eliminated" ] = &"ZM_CIA_ELIMINATED"; + game[ "strings" ][ "axis_forfeited" ] = &"ZM_CIA_FORFEITED"; + game[ "strings" ][ "axis_name" ] = &"ZM_CIA_NAME"; + game[ "music" ][ "spawn_axis" ] = "SPAWN_RUS"; + game[ "music" ][ "victory_axis" ] = "mus_victory_soviet"; + game[ "icons" ][ "axis" ] = "faction_cia"; + game[ "colors" ][ "axis" ] = ( 0,65, 0,57, 0,41 ); + game[ "voice" ][ "axis" ] = "vox_pmc_"; +} + +cdc() +{ + allies(); + axis(); +} + +allies() +{ +} + +axis() +{ +} diff --git a/so_zencounter_zm_transit/aitype/zm_transit_basic_01.gsc b/so_zencounter_zm_transit/aitype/zm_transit_basic_01.gsc new file mode 100644 index 0000000..0356f22 --- /dev/null +++ b/so_zencounter_zm_transit/aitype/zm_transit_basic_01.gsc @@ -0,0 +1,490 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie1_01::main(); + break; + case 1: + character/c_zom_zombie1_02::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie1_01::precache(); + character/c_zom_zombie1_02::precache(); +} diff --git a/so_zencounter_zm_transit/aitype/zm_transit_basic_03.gsc b/so_zencounter_zm_transit/aitype/zm_transit_basic_03.gsc new file mode 100644 index 0000000..ba63097 --- /dev/null +++ b/so_zencounter_zm_transit/aitype/zm_transit_basic_03.gsc @@ -0,0 +1,502 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 5 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie3_01::main(); + break; + case 1: + character/c_zom_zombie3_02::main(); + break; + case 2: + character/c_zom_zombie3_03::main(); + break; + case 3: + character/c_zom_zombie3_04::main(); + break; + case 4: + character/c_zom_zombie3_05::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie3_01::precache(); + character/c_zom_zombie3_02::precache(); + character/c_zom_zombie3_03::precache(); + character/c_zom_zombie3_04::precache(); + character/c_zom_zombie3_05::precache(); +} diff --git a/so_zencounter_zm_transit/aitype/zm_transit_basic_05.gsc b/so_zencounter_zm_transit/aitype/zm_transit_basic_05.gsc new file mode 100644 index 0000000..5b83a9c --- /dev/null +++ b/so_zencounter_zm_transit/aitype/zm_transit_basic_05.gsc @@ -0,0 +1,494 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie5_01::main(); + break; + case 1: + character/c_zom_zombie5_02::main(); + break; + case 2: + character/c_zom_zombie5_03::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie5_01::precache(); + character/c_zom_zombie5_02::precache(); + character/c_zom_zombie5_03::precache(); +} diff --git a/so_zencounter_zm_transit/aitype/zm_transit_basic_09.gsc b/so_zencounter_zm_transit/aitype/zm_transit_basic_09.gsc new file mode 100644 index 0000000..32df6ef --- /dev/null +++ b/so_zencounter_zm_transit/aitype/zm_transit_basic_09.gsc @@ -0,0 +1,494 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie9_01::main(); + break; + case 1: + character/c_zom_zombie9_02::main(); + break; + case 2: + character/c_zom_zombie9_03::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie9_01::precache(); + character/c_zom_zombie9_02::precache(); + character/c_zom_zombie9_03::precache(); +} diff --git a/so_zencounter_zm_transit/character/c_transit_player_engineer.gsc b/so_zencounter_zm_transit/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/so_zencounter_zm_transit/character/c_transit_player_farmgirl.gsc b/so_zencounter_zm_transit/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/so_zencounter_zm_transit/character/c_transit_player_oldman.gsc b/so_zencounter_zm_transit/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/so_zencounter_zm_transit/character/c_transit_player_reporter.gsc b/so_zencounter_zm_transit/character/c_transit_player_reporter.gsc new file mode 100644 index 0000000..71e8021 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_transit_player_reporter.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_fb" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie1_01.gsc b/so_zencounter_zm_transit/character/c_zom_zombie1_01.gsc new file mode 100644 index 0000000..de7fc13 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie1_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie1_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie1_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie1_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie1_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie1_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie1_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie1_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie1_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie1_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie1_body01_g_upclean" ); + precachemodel( "c_zom_zombie1_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie1_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie1_body01_g_lowclean" ); + precachemodel( "c_zom_zombie1_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie1_body01_g_llegoff" ); + precachemodel( "c_zom_zombie1_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie1_02.gsc b/so_zencounter_zm_transit/character/c_zom_zombie1_02.gsc new file mode 100644 index 0000000..09fc308 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie1_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie1_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie1_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie1_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie1_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie1_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie1_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie1_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie1_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie1_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie1_body02_g_upclean" ); + precachemodel( "c_zom_zombie1_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie1_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie1_body02_g_lowclean" ); + precachemodel( "c_zom_zombie1_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie1_body02_g_llegoff" ); + precachemodel( "c_zom_zombie1_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie3_01.gsc b/so_zencounter_zm_transit/character/c_zom_zombie3_01.gsc new file mode 100644 index 0000000..690bc95 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie3_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body01_g_upclean" ); + precachemodel( "c_zom_zombie3_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body01_g_lowclean" ); + precachemodel( "c_zom_zombie3_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body01_g_llegoff" ); + precachemodel( "c_zom_zombie3_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie3_02.gsc b/so_zencounter_zm_transit/character/c_zom_zombie3_02.gsc new file mode 100644 index 0000000..c28b86a --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie3_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body02_g_upclean" ); + precachemodel( "c_zom_zombie3_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body02_g_lowclean" ); + precachemodel( "c_zom_zombie3_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body02_g_llegoff" ); + precachemodel( "c_zom_zombie3_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie3_03.gsc b/so_zencounter_zm_transit/character/c_zom_zombie3_03.gsc new file mode 100644 index 0000000..467dfb5 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie3_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body03_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body03_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body03_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body03_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body03_g_upclean" ); + precachemodel( "c_zom_zombie3_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body03_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body03_g_lowclean" ); + precachemodel( "c_zom_zombie3_body03_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body03_g_llegoff" ); + precachemodel( "c_zom_zombie3_body03_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie3_04.gsc b/so_zencounter_zm_transit/character/c_zom_zombie3_04.gsc new file mode 100644 index 0000000..ee42a38 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie3_04.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body04" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body04_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body04_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body04_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body04_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body04_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body04_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body04_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body04" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body04_g_upclean" ); + precachemodel( "c_zom_zombie3_body04_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body04_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body04_g_lowclean" ); + precachemodel( "c_zom_zombie3_body04_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body04_g_llegoff" ); + precachemodel( "c_zom_zombie3_body04_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie3_05.gsc b/so_zencounter_zm_transit/character/c_zom_zombie3_05.gsc new file mode 100644 index 0000000..7c418c9 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie3_05.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie3_body05" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie3_body05_g_upclean"; + self.torsodmg2 = "c_zom_zombie3_body05_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie3_body05_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie3_body05_g_lowclean"; + self.legdmg2 = "c_zom_zombie3_body05_g_rlegoff"; + self.legdmg3 = "c_zom_zombie3_body05_g_llegoff"; + self.legdmg4 = "c_zom_zombie3_body05_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie3_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie3_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie3_body05" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie3_body05_g_upclean" ); + precachemodel( "c_zom_zombie3_body05_g_rarmoff" ); + precachemodel( "c_zom_zombie3_body05_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie3_body05_g_lowclean" ); + precachemodel( "c_zom_zombie3_body05_g_rlegoff" ); + precachemodel( "c_zom_zombie3_body05_g_llegoff" ); + precachemodel( "c_zom_zombie3_body05_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie3_g_rlegspawn" ); + precachemodel( "c_zom_zombie3_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie5_01.gsc b/so_zencounter_zm_transit/character/c_zom_zombie5_01.gsc new file mode 100644 index 0000000..77f1388 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie5_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie5_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie5_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie5_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie5_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie5_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie5_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie5_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie5_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie5_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie5_body01_g_upclean" ); + precachemodel( "c_zom_zombie5_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie5_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie5_body01_g_lowclean" ); + precachemodel( "c_zom_zombie5_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie5_body01_g_llegoff" ); + precachemodel( "c_zom_zombie5_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie5_02.gsc b/so_zencounter_zm_transit/character/c_zom_zombie5_02.gsc new file mode 100644 index 0000000..71035ea --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie5_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie5_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie5_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie5_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie5_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie5_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie5_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie5_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie5_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie5_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie5_body02_g_upclean" ); + precachemodel( "c_zom_zombie5_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie5_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie5_body02_g_lowclean" ); + precachemodel( "c_zom_zombie5_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie5_body02_g_llegoff" ); + precachemodel( "c_zom_zombie5_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie5_03.gsc b/so_zencounter_zm_transit/character/c_zom_zombie5_03.gsc new file mode 100644 index 0000000..5a0dbae --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie5_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie5_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie5_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie5_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie5_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie5_body03_g_lowclean"; + self.legdmg2 = "c_zom_zombie5_body03_g_rlegoff"; + self.legdmg3 = "c_zom_zombie5_body03_g_llegoff"; + self.legdmg4 = "c_zom_zombie5_body03_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie5_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie5_body03_g_upclean" ); + precachemodel( "c_zom_zombie5_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie5_body03_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie5_body03_g_lowclean" ); + precachemodel( "c_zom_zombie5_body03_g_rlegoff" ); + precachemodel( "c_zom_zombie5_body03_g_llegoff" ); + precachemodel( "c_zom_zombie5_body03_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie9_01.gsc b/so_zencounter_zm_transit/character/c_zom_zombie9_01.gsc new file mode 100644 index 0000000..02382a2 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie9_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie9_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_female_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie9_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie9_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie9_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie9_body01_g_behead"; + self.legdmg1 = "c_zom_zombie9_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie9_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie9_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie9_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie9_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_female_head_als::main() ); + precachemodel( "c_zom_zombie9_body01_g_upclean" ); + precachemodel( "c_zom_zombie9_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie9_body01_g_larmoff" ); + precachemodel( "c_zom_zombie9_body01_g_behead" ); + precachemodel( "c_zom_zombie9_body01_g_lowclean" ); + precachemodel( "c_zom_zombie9_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie9_body01_g_llegoff" ); + precachemodel( "c_zom_zombie9_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie9_02.gsc b/so_zencounter_zm_transit/character/c_zom_zombie9_02.gsc new file mode 100644 index 0000000..a7d4481 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie9_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie9_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_female_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie9_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie9_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie9_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie9_body01_g_behead"; + self.legdmg1 = "c_zom_zombie9_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie9_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie9_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie9_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie9_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_female_head_als::main() ); + precachemodel( "c_zom_zombie9_body02_g_upclean" ); + precachemodel( "c_zom_zombie9_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie9_body02_g_larmoff" ); + precachemodel( "c_zom_zombie9_body01_g_behead" ); + precachemodel( "c_zom_zombie9_body02_g_lowclean" ); + precachemodel( "c_zom_zombie9_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie9_body02_g_llegoff" ); + precachemodel( "c_zom_zombie9_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/character/c_zom_zombie9_03.gsc b/so_zencounter_zm_transit/character/c_zom_zombie9_03.gsc new file mode 100644 index 0000000..fd47371 --- /dev/null +++ b/so_zencounter_zm_transit/character/c_zom_zombie9_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie9_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_female_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie9_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie9_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie9_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie9_body01_g_behead"; + self.legdmg1 = "c_zom_zombie9_body03_g_lowclean"; + self.legdmg2 = "c_zom_zombie9_body03_g_rlegoff"; + self.legdmg3 = "c_zom_zombie9_body03_g_llegoff"; + self.legdmg4 = "c_zom_zombie9_body03_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie9_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_female_head_als::main() ); + precachemodel( "c_zom_zombie9_body03_g_upclean" ); + precachemodel( "c_zom_zombie9_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie9_body03_g_larmoff" ); + precachemodel( "c_zom_zombie9_body01_g_behead" ); + precachemodel( "c_zom_zombie9_body03_g_lowclean" ); + precachemodel( "c_zom_zombie9_body03_g_rlegoff" ); + precachemodel( "c_zom_zombie9_body03_g_llegoff" ); + precachemodel( "c_zom_zombie9_body03_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zencounter_zm_transit/xmodelalias/c_zom_zombie_female_head_als.gsc b/so_zencounter_zm_transit/xmodelalias/c_zom_zombie_female_head_als.gsc new file mode 100644 index 0000000..d1f24eb --- /dev/null +++ b/so_zencounter_zm_transit/xmodelalias/c_zom_zombie_female_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_head_d"; + a[ 1 ] = "c_zom_zombie_head_f"; + a[ 2 ] = "c_zom_zombie_head_d2"; + a[ 3 ] = "c_zom_zombie_head_f2"; + return a; +} diff --git a/so_zencounter_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc b/so_zencounter_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc new file mode 100644 index 0000000..6aeadb2 --- /dev/null +++ b/so_zencounter_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_head_k"; + a[ 1 ] = "c_zom_zombie_head_l"; + a[ 2 ] = "c_zom_zombie_head_n"; + a[ 3 ] = "c_zom_zombie_head_a"; + return a; +} diff --git a/so_zsurvival_zm_transit/aitype/zm_transit_basic_01.gsc b/so_zsurvival_zm_transit/aitype/zm_transit_basic_01.gsc new file mode 100644 index 0000000..0356f22 --- /dev/null +++ b/so_zsurvival_zm_transit/aitype/zm_transit_basic_01.gsc @@ -0,0 +1,490 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie1_01::main(); + break; + case 1: + character/c_zom_zombie1_02::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie1_01::precache(); + character/c_zom_zombie1_02::precache(); +} diff --git a/so_zsurvival_zm_transit/aitype/zm_transit_basic_05.gsc b/so_zsurvival_zm_transit/aitype/zm_transit_basic_05.gsc new file mode 100644 index 0000000..5b83a9c --- /dev/null +++ b/so_zsurvival_zm_transit/aitype/zm_transit_basic_05.gsc @@ -0,0 +1,494 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie5_01::main(); + break; + case 1: + character/c_zom_zombie5_02::main(); + break; + case 2: + character/c_zom_zombie5_03::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie5_01::precache(); + character/c_zom_zombie5_02::precache(); + character/c_zom_zombie5_03::precache(); +} diff --git a/so_zsurvival_zm_transit/aitype/zm_transit_basic_08.gsc b/so_zsurvival_zm_transit/aitype/zm_transit_basic_08.gsc new file mode 100644 index 0000000..20dd250 --- /dev/null +++ b/so_zsurvival_zm_transit/aitype/zm_transit_basic_08.gsc @@ -0,0 +1,494 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_diner_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_car; + dummy_anim_ref = %ai_zombie_crawl_traverse_car; + dummy_anim_ref = %ai_zombie_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_sprint; + dummy_anim_ref = %ai_zombie_traverse_car_run; + dummy_anim_ref = %ai_zombie_crawl_traverse_car_pass_to_driver_side_sprint; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_walk_bus_v1; + dummy_anim_ref = %ai_zombie_walk_bus_v2; + dummy_anim_ref = %ai_zombie_walk_bus_v3; + dummy_anim_ref = %ai_zombie_walk_bus_v4; + dummy_anim_ref = %ai_zombie_bus_jump_door; + dummy_anim_ref = %ai_zombie_bus_jump_door_exit; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_window_to_r; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_l; + dummy_anim_ref = %ai_zombie_crawl_bus_jump_front_window_to_r; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_side_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_l_v1_fast; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1; + dummy_anim_ref = %ai_zombie_bus_front_window_enter_r_v1_fast; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_v1; + dummy_anim_ref = %ai_zombie_bus_rear_window_traverse_fast_v1; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_l_5_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_1_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_2_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_3_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_4_pull; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_grab; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_hold; + dummy_anim_ref = %ai_zombie_bus_boardtear_r_5_pull; + dummy_anim_ref = %ai_zombie_bus_hatch_tear; + dummy_anim_ref = %ai_zombie_bus_hatch_tear_fromback; + dummy_anim_ref = %ai_zombie_bus_hatch_jump_down; + dummy_anim_ref = %ai_zombie_bus_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_l; + dummy_anim_ref = %ai_zombie_bus_front_window_idle_r; + dummy_anim_ref = %ai_zombie_bus_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_l; + dummy_anim_ref = %ai_zombie_bus_front_window_attack_r; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_l; + dummy_anim_ref = %ai_zombie_bus_window_climbup_from_r; + dummy_anim_ref = %ai_zombie_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_l; + dummy_anim_ref = %ai_zombie_crawl_bus_front_window_dismount_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_l; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_back_r; + dummy_anim_ref = %ai_zombie_crawl_bus_window_exit_front; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_b; + dummy_anim_ref = %ai_zombie_crawl_jump_up_bus_hatch_to_f; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_b; + dummy_anim_ref = %ai_zombie_crawl_jump_down_bus_hatch_from_f; + dummy_anim_ref = %ai_zombie_bus_front_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_bus_rear_window_climbup_from_inside; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_slow_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_v3; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_walk_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_v3; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_sprint_death_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_slow_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_fast_v3; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v1; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v2; + dummy_anim_ref = %ai_zombie_jetgun_crawl_death_v3; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_transit_basic.asd"; + self.animtree = "zm_transit_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie8_01::main(); + break; + case 1: + character/c_zom_zombie8_02::main(); + break; + case 2: + character/c_zom_zombie8_03::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_basic" ); + character/c_zom_zombie8_01::precache(); + character/c_zom_zombie8_02::precache(); + character/c_zom_zombie8_03::precache(); +} diff --git a/so_zsurvival_zm_transit/aitype/zombie_dog.gsc b/so_zsurvival_zm_transit/aitype/zombie_dog.gsc new file mode 100644 index 0000000..cccca33 --- /dev/null +++ b/so_zsurvival_zm_transit/aitype/zombie_dog.gsc @@ -0,0 +1,94 @@ +#include codescripts/character; + +#using_animtree( "zm_transit_dog" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %zombie_dog_idle; + dummy_anim_ref = %zombie_dog_attackidle_growl; + dummy_anim_ref = %zombie_dog_attackidle; + dummy_anim_ref = %zombie_dog_attackidle_bark; + dummy_anim_ref = %zombie_dog_run_stop; + dummy_anim_ref = %zombie_dog_run; + dummy_anim_ref = %zombie_dog_trot; + dummy_anim_ref = %zombie_dog_run_start; + dummy_anim_ref = %zombie_dog_turn_90_left; + dummy_anim_ref = %zombie_dog_turn_90_right; + dummy_anim_ref = %zombie_dog_turn_180_left; + dummy_anim_ref = %zombie_dog_turn_180_right; + dummy_anim_ref = %zombie_dog_run_turn_90_left; + dummy_anim_ref = %zombie_dog_run_turn_90_right; + dummy_anim_ref = %zombie_dog_run_turn_180_left; + dummy_anim_ref = %zombie_dog_run_turn_180_right; + dummy_anim_ref = %zombie_dog_death_front; + dummy_anim_ref = %zombie_dog_death_hit_back; + dummy_anim_ref = %zombie_dog_death_hit_left; + dummy_anim_ref = %zombie_dog_death_hit_right; + dummy_anim_ref = %zombie_dog_run_attack; + dummy_anim_ref = %zombie_dog_run_attack_low; + dummy_anim_ref = %ai_zombie_dog_traverse_car; + dummy_anim_ref = %ai_zombie_dog_traverse_car_pass_to_driver; + dummy_anim_ref = %zombie_dog_traverse_down_40; + dummy_anim_ref = %zombie_dog_traverse_down_96; + dummy_anim_ref = %zombie_dog_traverse_down_126; + dummy_anim_ref = %zombie_dog_traverse_down_190; + dummy_anim_ref = %zombie_dog_traverse_up_40; + dummy_anim_ref = %zombie_dog_traverse_up_80; + dummy_anim_ref = %ai_zombie_dog_jump_across_120; + dummy_anim_ref = %zombie_dog_traverse_down_127; + dummy_anim_ref = %zombie_dog_traverse_up_127; +} + +main() +{ + self.accuracy = 0,2; + self.animstatedef = "zm_transit_dog.asd"; + self.animtree = "zm_transit_dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie_dog"; + self.weapon = ""; + self setengagementmindist( 256, 0 ); + self setengagementmaxdist( 768, 1024 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/character_sp_zombie_dog::main(); + break; + case 1: + character/character_sp_zombie_dog::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_transit_dog" ); + character/character_sp_zombie_dog::precache(); + character/character_sp_zombie_dog::precache(); +} diff --git a/so_zsurvival_zm_transit/character/c_transit_player_engineer.gsc b/so_zsurvival_zm_transit/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/so_zsurvival_zm_transit/character/c_transit_player_farmgirl.gsc b/so_zsurvival_zm_transit/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/so_zsurvival_zm_transit/character/c_transit_player_oldman.gsc b/so_zsurvival_zm_transit/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/so_zsurvival_zm_transit/character/c_transit_player_reporter.gsc b/so_zsurvival_zm_transit/character/c_transit_player_reporter.gsc new file mode 100644 index 0000000..71e8021 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_transit_player_reporter.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_fb" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie1_01.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie1_01.gsc new file mode 100644 index 0000000..de7fc13 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie1_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie1_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie1_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie1_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie1_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie1_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie1_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie1_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie1_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie1_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie1_body01_g_upclean" ); + precachemodel( "c_zom_zombie1_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie1_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie1_body01_g_lowclean" ); + precachemodel( "c_zom_zombie1_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie1_body01_g_llegoff" ); + precachemodel( "c_zom_zombie1_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie1_02.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie1_02.gsc new file mode 100644 index 0000000..09fc308 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie1_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie1_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie1_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie1_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie1_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie1_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie1_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie1_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie1_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie1_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie1_body02_g_upclean" ); + precachemodel( "c_zom_zombie1_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie1_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie1_body02_g_lowclean" ); + precachemodel( "c_zom_zombie1_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie1_body02_g_llegoff" ); + precachemodel( "c_zom_zombie1_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie5_01.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie5_01.gsc new file mode 100644 index 0000000..77f1388 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie5_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie5_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie5_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie5_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie5_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie5_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie5_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie5_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie5_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie5_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie5_body01_g_upclean" ); + precachemodel( "c_zom_zombie5_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie5_body01_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie5_body01_g_lowclean" ); + precachemodel( "c_zom_zombie5_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie5_body01_g_llegoff" ); + precachemodel( "c_zom_zombie5_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie5_02.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie5_02.gsc new file mode 100644 index 0000000..71035ea --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie5_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie5_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie5_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie5_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie5_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie5_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie5_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie5_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie5_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie5_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie5_body02_g_upclean" ); + precachemodel( "c_zom_zombie5_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie5_body02_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie5_body02_g_lowclean" ); + precachemodel( "c_zom_zombie5_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie5_body02_g_llegoff" ); + precachemodel( "c_zom_zombie5_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie5_03.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie5_03.gsc new file mode 100644 index 0000000..5a0dbae --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie5_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie5_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie5_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie5_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie5_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie2_body01_g_behead"; + self.legdmg1 = "c_zom_zombie5_body03_g_lowclean"; + self.legdmg2 = "c_zom_zombie5_body03_g_rlegoff"; + self.legdmg3 = "c_zom_zombie5_body03_g_llegoff"; + self.legdmg4 = "c_zom_zombie5_body03_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie5_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_head_als::main() ); + precachemodel( "c_zom_zombie5_body03_g_upclean" ); + precachemodel( "c_zom_zombie5_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie5_body03_g_larmoff" ); + precachemodel( "c_zom_zombie2_body01_g_behead" ); + precachemodel( "c_zom_zombie5_body03_g_lowclean" ); + precachemodel( "c_zom_zombie5_body03_g_rlegoff" ); + precachemodel( "c_zom_zombie5_body03_g_llegoff" ); + precachemodel( "c_zom_zombie5_body03_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie8_01.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie8_01.gsc new file mode 100644 index 0000000..7662178 --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie8_01.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie8_body01" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_female_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie8_body01_g_upclean"; + self.torsodmg2 = "c_zom_zombie8_body01_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie8_body01_g_larmoff"; + self.torsodmg5 = "c_zom_zombie8_body01_g_behead"; + self.legdmg1 = "c_zom_zombie8_body01_g_lowclean"; + self.legdmg2 = "c_zom_zombie8_body01_g_rlegoff"; + self.legdmg3 = "c_zom_zombie8_body01_g_llegoff"; + self.legdmg4 = "c_zom_zombie8_body01_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie8_body01" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_female_head_als::main() ); + precachemodel( "c_zom_zombie8_body01_g_upclean" ); + precachemodel( "c_zom_zombie8_body01_g_rarmoff" ); + precachemodel( "c_zom_zombie8_body01_g_larmoff" ); + precachemodel( "c_zom_zombie8_body01_g_behead" ); + precachemodel( "c_zom_zombie8_body01_g_lowclean" ); + precachemodel( "c_zom_zombie8_body01_g_rlegoff" ); + precachemodel( "c_zom_zombie8_body01_g_llegoff" ); + precachemodel( "c_zom_zombie8_body01_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie8_02.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie8_02.gsc new file mode 100644 index 0000000..685213b --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie8_02.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie8_body02" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_female_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie8_body02_g_upclean"; + self.torsodmg2 = "c_zom_zombie8_body02_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie8_body02_g_larmoff"; + self.torsodmg5 = "c_zom_zombie8_body01_g_behead"; + self.legdmg1 = "c_zom_zombie8_body02_g_lowclean"; + self.legdmg2 = "c_zom_zombie8_body02_g_rlegoff"; + self.legdmg3 = "c_zom_zombie8_body02_g_llegoff"; + self.legdmg4 = "c_zom_zombie8_body02_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie8_body02" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_female_head_als::main() ); + precachemodel( "c_zom_zombie8_body02_g_upclean" ); + precachemodel( "c_zom_zombie8_body02_g_rarmoff" ); + precachemodel( "c_zom_zombie8_body02_g_larmoff" ); + precachemodel( "c_zom_zombie8_body01_g_behead" ); + precachemodel( "c_zom_zombie8_body02_g_lowclean" ); + precachemodel( "c_zom_zombie8_body02_g_rlegoff" ); + precachemodel( "c_zom_zombie8_body02_g_llegoff" ); + precachemodel( "c_zom_zombie8_body02_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/c_zom_zombie8_03.gsc b/so_zsurvival_zm_transit/character/c_zom_zombie8_03.gsc new file mode 100644 index 0000000..b09838b --- /dev/null +++ b/so_zsurvival_zm_transit/character/c_zom_zombie8_03.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie8_body03" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_zombie_female_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie8_body03_g_upclean"; + self.torsodmg2 = "c_zom_zombie8_body03_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie8_body03_g_larmoff"; + self.torsodmg5 = "c_zom_zombie8_body01_g_behead"; + self.legdmg1 = "c_zom_zombie8_body03_g_lowclean"; + self.legdmg2 = "c_zom_zombie8_body03_g_rlegoff"; + self.legdmg3 = "c_zom_zombie8_body03_g_llegoff"; + self.legdmg4 = "c_zom_zombie8_body03_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie8_body03" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_zombie_female_head_als::main() ); + precachemodel( "c_zom_zombie8_body03_g_upclean" ); + precachemodel( "c_zom_zombie8_body03_g_rarmoff" ); + precachemodel( "c_zom_zombie8_body03_g_larmoff" ); + precachemodel( "c_zom_zombie8_body01_g_behead" ); + precachemodel( "c_zom_zombie8_body03_g_lowclean" ); + precachemodel( "c_zom_zombie8_body03_g_rlegoff" ); + precachemodel( "c_zom_zombie8_body03_g_llegoff" ); + precachemodel( "c_zom_zombie8_body03_g_legsoff" ); + precachemodel( "c_zom_zombie_g_rarmspawn" ); + precachemodel( "c_zom_zombie_g_larmspawn" ); + precachemodel( "c_zom_zombie_g_rlegspawn" ); + precachemodel( "c_zom_zombie_g_llegspawn" ); +} diff --git a/so_zsurvival_zm_transit/character/character_sp_zombie_dog.gsc b/so_zsurvival_zm_transit/character/character_sp_zombie_dog.gsc new file mode 100644 index 0000000..1b84c96 --- /dev/null +++ b/so_zsurvival_zm_transit/character/character_sp_zombie_dog.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "zombie_wolf" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "zombie_wolf" ); +} diff --git a/so_zsurvival_zm_transit/xmodelalias/c_zom_zombie_female_head_als.gsc b/so_zsurvival_zm_transit/xmodelalias/c_zom_zombie_female_head_als.gsc new file mode 100644 index 0000000..d1f24eb --- /dev/null +++ b/so_zsurvival_zm_transit/xmodelalias/c_zom_zombie_female_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_head_d"; + a[ 1 ] = "c_zom_zombie_head_f"; + a[ 2 ] = "c_zom_zombie_head_d2"; + a[ 3 ] = "c_zom_zombie_head_f2"; + return a; +} diff --git a/so_zsurvival_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc b/so_zsurvival_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc new file mode 100644 index 0000000..6aeadb2 --- /dev/null +++ b/so_zsurvival_zm_transit/xmodelalias/c_zom_zombie_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_head_k"; + a[ 1 ] = "c_zom_zombie_head_l"; + a[ 2 ] = "c_zom_zombie_head_n"; + a[ 3 ] = "c_zom_zombie_head_a"; + return a; +} diff --git a/zm_buried_patch/character/c_transit_player_engineer.gsc b/zm_buried_patch/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/zm_buried_patch/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/zm_buried_patch/character/c_transit_player_farmgirl.gsc b/zm_buried_patch/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/zm_buried_patch/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/zm_buried_patch/character/c_transit_player_oldman.gsc b/zm_buried_patch/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/zm_buried_patch/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/zm_buried_patch/character/c_transit_player_reporter.gsc b/zm_buried_patch/character/c_transit_player_reporter.gsc new file mode 100644 index 0000000..71e8021 --- /dev/null +++ b/zm_buried_patch/character/c_transit_player_reporter.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_fb" ); +} diff --git a/zm_buried_patch/character/c_zom_zombie_buried_saloongirl_mp.gsc b/zm_buried_patch/character/c_zom_zombie_buried_saloongirl_mp.gsc new file mode 100644 index 0000000..c12749a --- /dev/null +++ b/zm_buried_patch/character/c_zom_zombie_buried_saloongirl_mp.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_zombie_buried_sgirl_player_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_zombie_buried_sgirl_player_fb" ); +} diff --git a/zm_buried_patch/maps/mp/createfx/zm_buried_fx.gsc b/zm_buried_patch/maps/mp/createfx/zm_buried_fx.gsc new file mode 100644 index 0000000..5e0c142 --- /dev/null +++ b/zm_buried_patch/maps/mp/createfx/zm_buried_fx.gsc @@ -0,0 +1,3174 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_bats_group" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1839,77, 567,06, 429,703 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_bats_group" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 670,698, 1687,49, 600,183 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1519,51, 1056,74, -4,4911 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 357 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1567,08, 2052,99, 32,7537 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 250 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1456,63, 1744,1, 23,8043 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 250 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3825,71, 891,703, 9,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3947,01, 373,059, 4,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3690,59, -178,214, 16,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1874,64, 435,933, 3,66917 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1841,03, 823,733, 3 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 350,146, -202,975, 17,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 110; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -599,437, -985,837, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 120; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -774,693, -834,762, -22,598 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 130; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1127,12, 515,176, 8,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 140; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1332,73, 1390,11, 17,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 248 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1662,29, 560,022, 2,94413 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 160; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1005,97, 597,942, -7 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 170; + ent = maps/mp/_utility::createexploder( "fx_buried_barrier_break" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -661,102, 890,077, 22 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 180; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -805,426, -679,613, 505,598 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 351 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -874,854, 282,1, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -675,796, 317,095, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -412,823, 350,261, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 261,016, 351,173, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 506,397, 408,808, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 733,766, 382,737, -23,5035 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 690,971, 666,836, -14,9793 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1025,82, 557,7, -6,9958 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1398,74, 999,584, -16,9052 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 833,461, 1293,38, 84,1165 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1711,52, 609,462, 2,27824 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -134,793, 345,975, -23 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1451,76, 361,212, -14,6925 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1338,01, 699,012, -25,9287 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1075,49, 1026,94, -26,9469 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 700,756, 1564,41, 27,701 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 3 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -167,702, 598,77, -8,6359 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 698,672, 686,204, 8,70527 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1152,08, 790,351, -12,499 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1009,26, 807,008, -16,2149 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2097,82, 712,683, 13 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_floor_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -3009,25, -244,242, 1234,13 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 400; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_floor_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -126,325, -844,904, 327,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 269 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 420; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_smk_plume_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1897,19, 1200,37, 3879,06 ); + ent.v[ "angles" ] = ( 17, 127, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_smk_plume_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3761,08, -857,061, 3523,48 ); + ent.v[ "angles" ] = ( 8, 154, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_smk_plume_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1861,58, -1428,37, 3551,87 ); + ent.v[ "angles" ] = ( 356,536, 157,061, -2,00276 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4083,94, 5359,64, 1583,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 190 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_edge" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -447,337, 1989,08, 1242,15 ); + ent.v[ "angles" ] = ( 356, 160, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_edge" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7101,31, 665,276, 1145,35 ); + ent.v[ "angles" ] = ( 304,941, 216,566, -0,403903 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_edge" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5192,27, -146,903, 1213,28 ); + ent.v[ "angles" ] = ( 317,374, 209,239, 9,09074 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_edge" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3767,84, -3181,92, 1671,16 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 188 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2035,42, -2058,79, 1703,2 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2841,63, 1407,65, 1066,03 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 190 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3816,29, -431,655, 1539,95 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 122 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2521,52, -453,845, 2246,66 ); + ent.v[ "angles" ] = ( 1,86385, 168,143, 8,80644 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1725,69, 1649,27, 1155,27 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 192 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2352,94, 1175,39, 562,772 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 189 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3195,85, 948,164, 302,945 ); + ent.v[ "angles" ] = ( 355, 162, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1252,03, -248,178, 1537,66 ); + ent.v[ "angles" ] = ( 354, 141, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3809,03, 907,728, 1210,59 ); + ent.v[ "angles" ] = ( 348, 209, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1498,57, -840,759, 1505,53 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 203 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2803,63, -2217,72, 1721,84 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 173 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2328,75, -253,023, 1424 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2337,43, -428,321, 1427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2340,82, -652,178, 1425,48 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2486,79, -586,594, 1764,22 ); + ent.v[ "angles" ] = ( 0, 177, 8 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2494,62, -288,393, 1726,66 ); + ent.v[ "angles" ] = ( 359,444, 180,961, 7,98077 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2491,66, -373,813, 1738,74 ); + ent.v[ "angles" ] = ( 359,444, 180,961, 7,98078 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2489,11, -531,159, 2031,02 ); + ent.v[ "angles" ] = ( 359,861, 177,99, 7,99881 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2491,47, -359,667, 2009,38 ); + ent.v[ "angles" ] = ( 359,861, 177,99, 7,99881 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2161,42, -1400,16, 1448,23 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 205 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3564,04, -633,324, 1418,51 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 152 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_floor_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -3016,76, -403,237, 1228,13 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 400; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_floor_lg" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -2916,46, -366,761, 1228,13 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 400; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -840,986, 800,281, 261,837 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -802,559, 873,321, 254,125 ); + ent.v[ "angles" ] = ( 11,9945, 89,893, -5,02131 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1048,86, 805,437, 249,687 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 3 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -918,785, 668,678, 252,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1116,72, 657,219, 263,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1093,81, 683,77, 153,302 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -527,522, 736,636, 151,729 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -817,525, 865,551, 20,3194 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_floor_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1009,96, 429,619, 382,237 ); + ent.v[ "angles" ] = ( 347, 95, 2 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 440; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_floor_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1010,39, 497,735, 401,106 ); + ent.v[ "angles" ] = ( 347, 95, 2 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 440; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -889,055, 909,077, 207,543 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -742,291, 613,664, 195,662 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -817,926, 749,333, 132,077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 183 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1037,67, 694,537, 128,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -865,176, 897,042, 256,411 ); + ent.v[ "angles" ] = ( 12,9906, 89,8032, -5,04074 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6,20566, 571,209, 92,123 ); + ent.v[ "angles" ] = ( 296,141, 290,649, -30,8507 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2545,46, 45,5192, 1339,56 ); + ent.v[ "angles" ] = ( 0, 180, 16 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2423,15, -658,824, 1357,57 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3011,59, -747,177, 1358 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2821,33, 53,9197, 1338,74 ); + ent.v[ "angles" ] = ( 0, 180, 11 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2401,95, -253,953, 1358 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2364,53, -342,719, 1258,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 161 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2592,15, -709,402, 1236,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 176 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2872,74, -690,557, 1237,13 ); + ent.v[ "angles" ] = ( 359, 188, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2476,78, -323,957, 1359,17 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2478,07, -173,683, 1356,65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2805,04, -484,994, 1235,02 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 170 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2510,06, -514,697, 1242,13 ); + ent.v[ "angles" ] = ( 10,917, 225,643, -7,12967 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2756,68, -699,426, 1624,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 85 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2787,42, -699,332, 1352,61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 89 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2592,83, -698,633, 1354,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 87 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createexploder( "fx_buried_dest_platform_lsat" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -3140, -353,069, 1498,24 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 410; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -736,93, -345,65, 277,226 ); + ent.v[ "angles" ] = ( 276,265, 210,497, -148,832 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -717,487, -318,842, 276,125 ); + ent.v[ "angles" ] = ( 281,438, 88,8748, -137,871 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3324,09, -188,919, 1323,1 ); + ent.v[ "angles" ] = ( 20,2319, 184, 8,50897 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2124,7, -1444,44, 1705,04 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1793,12, 54,4835, 1371,12 ); + ent.v[ "angles" ] = ( 359,444, 180,961, 22,9808 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_edge" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1256,05, 914,709, 1222,99 ); + ent.v[ "angles" ] = ( 7, 171, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1865,21, 343,29, 1264,95 ); + ent.v[ "angles" ] = ( 1,08912, 180,322, 21,9841 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -928,995, -350,784, 292,24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -846,694, -390,788, 107,279 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 7 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1021, -339,004, 480,674 ); + ent.v[ "angles" ] = ( 0, 90, -41 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -756,749, -341,392, 421,813 ); + ent.v[ "angles" ] = ( 0, 90, 20 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -873,186, -343,274, 427,126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1069,95, -552,04, 295,381 ); + ent.v[ "angles" ] = ( 350,182, 1,9096, -9,16261 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -737,368, -9,23514, 217,868 ); + ent.v[ "angles" ] = ( 354,022, 180,027, -0,5249 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -856,235, -133,696, 232,73 ); + ent.v[ "angles" ] = ( 354,022, 180,027, -0,5249 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -936,201, -269,364, -22,6096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 5 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -735,891, -162,874, 99,8389 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 6 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -916,76, -28,5032, 118,384 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 7 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -665,625, -352,167, 177,799 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -248,623, -329,753, 2,95987 ); + ent.v[ "angles" ] = ( 88, 186, -90 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -232,646, -329,56, 5,18306 ); + ent.v[ "angles" ] = ( 81, 6, 90 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -238,52, -336,18, 90,5246 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -207,578, 19,8622, 90,5619 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 174 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -380,63, -215,07, 16,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -514,828, -43,6327, 220,825 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -397,166, -103,998, 242,879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 274 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -238,63, -296,251, -61,9506 ); + ent.v[ "angles" ] = ( 329, 97, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -238,773, -255,243, 8,86353 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -227,194, -529,351, -63,304 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 95 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 193,773, -500,627, 226,306 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2411,6, 129,929, 1318,16 ); + ent.v[ "angles" ] = ( 332,012, 152,609, 119,858 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2541,3, 113,527, 1314,59 ); + ent.v[ "angles" ] = ( 332,012, 152,609, 119,858 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2790,33, 120,827, 1321,41 ); + ent.v[ "angles" ] = ( 332,012, 152,609, 119,858 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2946,13, 104,164, 1311,51 ); + ent.v[ "angles" ] = ( 332,012, 152,609, 119,858 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3052,14, 105,042, 1316,53 ); + ent.v[ "angles" ] = ( 332,012, 152,609, 119,858 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2131,47, 98,1084, 1357,14 ); + ent.v[ "angles" ] = ( 354,694, 117,869, 126,939 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2777,71, -763,127, 1359,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 180 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2353,17, -1065,09, 1314,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 175 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2422,34, -1315,12, 1312,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 175 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2426,33, -1880,69, 1227,55 ); + ent.v[ "angles" ] = ( 353,968, 175,629, 5,90124 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2223,21, -2150,72, 1295,87 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 175 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sand_windy_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2525,02, -1187,16, 1306,08 ); + ent.v[ "angles" ] = ( 0,99863, 185,947, 17 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -640,058, 295,284, -21 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -315,425, 365,26, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 727,15, 442,215, -24 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1175,87, 1064,2, -21,831 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -851,085, 506,673, 93,9898 ); + ent.v[ "angles" ] = ( 296,141, 290,649, -30,8507 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 443,051, 554,289, -21,0197 ); + ent.v[ "angles" ] = ( 296,141, 290,649, -30,8507 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 879,622, 307,113, -11,3779 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 985,206, 242,86, 16,8255 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1095,34, 141,903, 356,264 ); + ent.v[ "angles" ] = ( 11,8783, 213,208, -35,3027 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 896,976, 140,577, 349,737 ); + ent.v[ "angles" ] = ( 356,809, 255,836, 43,9003 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 967,878, 135,937, 376,359 ); + ent.v[ "angles" ] = ( 0,261435, 271,989, -4,99394 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 971,084, 70,5504, 353,659 ); + ent.v[ "angles" ] = ( 70, 90, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2187,12, 749,246, 203,197 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2084,19, 671,869, 239,297 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2203,53, 737,267, 386,286 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2173,43, 507,077, 781,662 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 297 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2150,36, 449,28, 803,408 ); + ent.v[ "angles" ] = ( 360, 339, -18 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2092,13, 404,676, 779,319 ); + ent.v[ "angles" ] = ( 0, 339, -2 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2255,12, 428,778, 620,271 ); + ent.v[ "angles" ] = ( 51, 90, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1474,07, 1391,16, 99,5444 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1394,07, 1475,99, 341,516 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1560,07, 1354,12, 185,09 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1430,22, 1424,15, 216,746 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1633,04, 1093,54, 577,793 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 112 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1350,61, 1181,07, 577,798 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 21 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1450,08, 1095,8, 578,081 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 66 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1751,43, 1293,08, 494,459 ); + ent.v[ "angles" ] = ( 0, 176, 9 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1736,88, 1191,63, 522,387 ); + ent.v[ "angles" ] = ( 1,24751, 168,097, 38,9138 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -816,178, 289,947, 614,304 ); + ent.v[ "angles" ] = ( 79,7575, 60,3357, 61,3575 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -810,967, 54,772, 791,031 ); + ent.v[ "angles" ] = ( 46,8505, 92,8542, 4,27801 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -12,7259, 215,037, 804,327 ); + ent.v[ "angles" ] = ( 55,9871, 99,2121, -1,48216 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -53,2649, 223,989, 890,082 ); + ent.v[ "angles" ] = ( 89, 90, 90 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -42,5745, 180,552, 684,912 ); + ent.v[ "angles" ] = ( 48, 94, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1560,51, 1168,15, 522,821 ); + ent.v[ "angles" ] = ( 62,3104, 289,096, 30,8323 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1423,95, 1229,7, 538,926 ); + ent.v[ "angles" ] = ( 65,2029, 234,57, -14,1532 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2230,76, 485,113, 692,608 ); + ent.v[ "angles" ] = ( 57,5086, 128,756, 21,5287 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -810,522, 413,829, 365 ); + ent.v[ "angles" ] = ( 85, 277, -90 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 544,565, 370,577, 445,156 ); + ent.v[ "angles" ] = ( 80,2672, 64,6451, 59,1245 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 658,36, 1973,48, 298,043 ); + ent.v[ "angles" ] = ( 21,9436, 285,687, -1,61436 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_ceiling_hole" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -795,562, 273,826, 418,009 ); + ent.v[ "angles" ] = ( 81, 268, -90 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 497,636, 373,115, 299,026 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 10 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 893,797, 338,031, 451,239 ); + ent.v[ "angles" ] = ( 356,974, 99,6161, -18,7841 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -87,1851, 355,66, 328,087 ); + ent.v[ "angles" ] = ( 359,444, 82,9611, 7,98076 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 154,889, 450,291, 297,356 ); + ent.v[ "angles" ] = ( 353,56, 198,937, 35,4962 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -913,694, 260,692, 328,82 ); + ent.v[ "angles" ] = ( 360, 7, 4 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -656,701, 409,023, 324,159 ); + ent.v[ "angles" ] = ( 0,608585, 196,037, 6,97362 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -720,999, 288,497, 344,063 ); + ent.v[ "angles" ] = ( 0,845127, 162,187, 10,9865 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -9225,6, 2566,14, 1548,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 258 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -9636,96, 1773,13, 5085,39 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 258 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 980,639, 4811,24, 1359,34 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 277 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 5897,23, 8012,26, 4627,65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 277 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -2179,19, 11757,3, 5364,38 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 288 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -7028,85, 14589,7, 3201,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 265 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_lg_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -2964,88, -6001,77, 2440,97 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_buried_meteor_sm_runner" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -15777,6, 9081,47, 6064,39 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 258 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1057,63, 5346,42, 1334,36 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 190 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2140,17, 4776,67, 972,524 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 165 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -6740,64, 4214,53, 1146,41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 205 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -11039,7, 2590,45, 2205,6 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 250 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3827,39, -565,513, 1278 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 175 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_cloud_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2813,7, 6224,13, -2635,77 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 152 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_sandstorm_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2374,66, 6690,66, -926,542 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 188 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_cloud_low" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2943,16, 5776,88, -7175,32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 152 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_ext_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2753,67, 704,998, 1871 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 202 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2464,27, 339,191, 1328,03 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 174 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3144,97, 433,048, 1324,58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 213 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2563,26, -1298,08, 1482,42 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 191 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1803,32, -734,657, 1460,39 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 222 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1679,03, -105,389, 1501,9 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 144 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3520,93, -664,61, 1450,69 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 102 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2777,96, 49,3964, 1848,02 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 174 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2732,87, -567,786, 2166,05 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 174 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_ash_blowing" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2669,33, -1565,25, 1990,28 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 174 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createexploder( "fx_buried_fountain_swirl" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4914,1, 573,794, -123,875 ); + ent.v[ "angles" ] = ( 270, 0, -2,04873 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 600; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_conveyor_belt_edge" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1882,53, 1212,08, 2508,98 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 111 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6234,14, 417,187, 388,872 ); + ent.v[ "angles" ] = ( 300,534, 285,604, -108,406 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6282,76, 167,47, 227,521 ); + ent.v[ "angles" ] = ( 300,534, 285,604, -108,406 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6405,26, 459,903, 195,536 ); + ent.v[ "angles" ] = ( 297,541, 285,198, -139,052 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4980,91, 268,327, 269,826 ); + ent.v[ "angles" ] = ( 300,534, 285,604, -110,406 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4923,05, 1263,74, 374,125 ); + ent.v[ "angles" ] = ( 300,534, 285,604, -110,406 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3479,53, 479,283, 89,901 ); + ent.v[ "angles" ] = ( 300,534, 285,603, 82,595 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3534,52, 334,789, 500,174 ); + ent.v[ "angles" ] = ( 300,534, 285,603, 84,5947 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4861,45, 427,389, 322,965 ); + ent.v[ "angles" ] = ( 300,534, 285,603, 82,595 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4843,74, 975,656, 475,229 ); + ent.v[ "angles" ] = ( 300,534, 285,603, 82,595 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6751, -60,5003, 1310,27 ); + ent.v[ "angles" ] = ( 358,853, 193,984, -33,3612 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6574,51, -478,823, 1368,22 ); + ent.v[ "angles" ] = ( 39, 120, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_blown" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6724,05, -345,487, 1463,96 ); + ent.v[ "angles" ] = ( 51,2869, 132,306, -50,2093 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3471,09, 560,581, 448,262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3486,85, 623,36, 390,674 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3466,69, 500,695, 408,079 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3465,62, 444,17, 329,737 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1421,02, -331,649, 519,392 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -524,198, -685,499, 540,803 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -444,004, -895,152, 496,025 ); + ent.v[ "angles" ] = ( 327, 88, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3533,46, 588,03, 342,976 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3464,92, 541,796, 132,095 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3479,58, 496,647, 211,968 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3521,73, 602,722, 182,31 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3502,66, 469,683, 164,657 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3506,29, 586,26, 387,078 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3536,3, 547,967, 228,11 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6397,55, 798,561, -10,4892 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 227 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6434,25, 764,482, -9,61913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 227 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6469,46, 731,162, -12,8939 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 227 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6506,21, 752,137, -82,6901 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6687,18, 686,311, -87 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6654,76, 734,907, -104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6798,69, 613,473, 11,2568 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6692,26, 744,308, 19,6174 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6674,21, 533,725, 78,4855 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6494,66, 543,538, 205 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6648,73, 582,089, 30 ); + ent.v[ "angles" ] = ( 297,541, 285,198, -139,052 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6743,01, 709,595, -210,728 ); + ent.v[ "angles" ] = ( 336,875, 120,63, -76,3251 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6736,04, 604,441, -146,407 ); + ent.v[ "angles" ] = ( 336,875, 120,63, -76,3251 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6736,04, 604,441, -276,407 ); + ent.v[ "angles" ] = ( 336,875, 120,63, -76,3251 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6736,04, 604,441, -431,407 ); + ent.v[ "angles" ] = ( 336,875, 120,63, -76,3251 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6781,74, 714,121, -497,407 ); + ent.v[ "angles" ] = ( 336,875, 120,63, -76,3251 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_bats_group" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2256,1, 146,334, 997,833 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_bats_group" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 612,451, 1910,36, 689,322 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6368,79, 785,404, -135,673 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 52 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_steam_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6736,04, 604,441, -40,407 ); + ent.v[ "angles" ] = ( 336,875, 120,63, -76,3251 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6606,79, 599,208, 314,69 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6847,82, 592,444, 297,611 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 274 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6708,98, 707,093, 285,669 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 178 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6467,39, 750,753, -129 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 52 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1142,75, 309,222, 255,31 ); + ent.v[ "angles" ] = ( 324, 0, 20 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1179,59, 308,761, 159,31 ); + ent.v[ "angles" ] = ( 324, 0, 20 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1404,02, -331,973, 519,392 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_spilling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 605,621, 149,835, 717,592 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 447,108, 255,945, 275,975 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -59,6195, 596,759, 113,134 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -186,055, 742,981, 102,542 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -583,024, -740,243, -27,7758 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 108,845, -1395,46, -3,7239 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 208,856, -925,193, -19,8173 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1074,87, -88,9284, 332,168 ); + ent.v[ "angles" ] = ( 342, 36, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -847,674, -122,789, 310,679 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1150,64, -112,14, 425,506 ); + ent.v[ "angles" ] = ( 348, 268, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1024,07, 82,5213, 515,914 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 94 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1056,35, -23,4789, 453,205 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -970,721, 679,411, 477,017 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1019,7, 673,444, 551 ); + ent.v[ "angles" ] = ( 4, 94, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -837,898, 604,407, 564,115 ); + ent.v[ "angles" ] = ( 3, 175, 13 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -442,192, 588,966, 556,69 ); + ent.v[ "angles" ] = ( 357, 177, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -372,341, 549,467, 501,82 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -395,377, 1,62739, 487,25 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -448,354, 237,978, 535,204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -439,407, -24,8703, 554,217 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -302,248, 275,442, 541,686 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 9 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 288,893, 363,359, 366,592 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 333,177, 476,003, 396,003 ); + ent.v[ "angles" ] = ( 353, 268, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 343,911, 506,003, 385,647 ); + ent.v[ "angles" ] = ( 357, 270, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 421,901, 597,233, 250,956 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 334,999, 396,004, 292,913 ); + ent.v[ "angles" ] = ( 11, 91, -7 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 592,011, 873,176, 245,525 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -70,7947, 767,772, 187,949 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -120,7, 1625,54, 222,582 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 359,66, 1287,78, 221,996 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 558,609, 871,768, 295,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 90 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -61,6724, 1322,03, 276,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 100 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 323,48, 1360,37, 286,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 151 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 364,191, 1317,64, 16,825 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 289,717, 1365,45, 117,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 220 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 372,01, 965,085, 11,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 269 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 268,131, 1656,54, 222,325 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 167,848, 1845,88, 222,657 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 206,761, 1770,63, 270,512 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 153 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 226,579, 1574,94, 266,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 268 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -834,83, 510,44, 167,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 20 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 100,54, 892,393, 17,554 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1314,33, -203,627, 120,324 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1035,93, -474,448, 11,491 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -700,455, -204,93, 14,9212 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1497,31, -530,931, 128,808 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1561,76, -509,863, 41,4937 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 10 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1397,27, -1549,11, 98,9419 ); + ent.v[ "angles" ] = ( 357, 328, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1469,77, -1609,53, 142,748 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1096,07, -1739,19, 110,295 ); + ent.v[ "angles" ] = ( 357,736, 9,03903, -1,9695 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1018,07, -1643,22, 194,746 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -918,08, -1655, 118,005 ); + ent.v[ "angles" ] = ( 1,58943, 89,9647, -2,54518 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 504,398, -1965,74, 295,188 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1557,13, -530,754, 156,952 ); + ent.v[ "angles" ] = ( 359,55, 100,993, 1,94909 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1560,11, -1241,51, 205,614 ); + ent.v[ "angles" ] = ( 2,24456, 63,1082, 5,56675 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1429,6, -1550,28, 218,489 ); + ent.v[ "angles" ] = ( 0,138897, 103,106, 5,70617 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1140,01, -1702,89, 242,739 ); + ent.v[ "angles" ] = ( 4,31296, 39,1564, 4,17639 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -827,748, -1675,67, 241,903 ); + ent.v[ "angles" ] = ( 2,24456, 63,1082, 5,56675 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -277,481, -1743,5, 332,98 ); + ent.v[ "angles" ] = ( 358,041, 322,255, -3,26613 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 418,404, -1997,05, 397,65 ); + ent.v[ "angles" ] = ( 1,65114, 69,0822, 5,77008 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 367,379, -1279,01, 231,596 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 525,53, -1748,98, 109,012 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 401,935, -1409,73, 140,133 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1044,09, -1578,07, 139,944 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1136,04, -1763,16, 201,357 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 602,389, -1340,97, 292,433 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1020,65, -1296,95, 292,223 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -428,841, 560,915, 29,9833 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -717,267, 1000,09, 24,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1087,99, 688,562, 30,8548 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -734,933, 730,961, 16,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -829,653, 553,819, 41,6591 ); + ent.v[ "angles" ] = ( 27, 88, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -855,005, 469,504, 154,531 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7,95362, 544,975, 179,684 ); + ent.v[ "angles" ] = ( 300,534, 285,602, -26,4046 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -445,153, 265,257, 425,676 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_spilling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -95,7305, 214,471, 704,127 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 489,737, 1389,2, 144,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 525,746, 1366,38, 282,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 63 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -460,083, 814,623, 255,908 ); + ent.v[ "angles" ] = ( 7, 296, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 193,239, 111,775, 75,4231 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -66,9381, 103,122, 88,673 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5,31263, -501,873, 214,85 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -112,017, -461,957, 81,7174 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -216,273, -504,468, 88,1251 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 216,36, -467,726, 30,2007 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -216,656, -528,364, 88,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -176,718, -667,912, 87,625 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -18,4611, -179,346, -1,15317 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 183,467, -60,574, 9,71412 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -735,607, -962,505, 47,2837 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -207,98, -727,97, 93,8842 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -461,478, -726,64, 94,1598 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -283,811, -456,234, 169,425 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 355 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -184,617, -615,843, -63,1251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 297 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -396,47, 7,73534, 8,12499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 88 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -526,204, -1104,14, 8,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -185,66, -1161,12, 8,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -415,904, -1127,99, 99,225 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -782,82, -1169,7, 32,825 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -33,7187, -1071,03, -92,3148 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -89,4145, -849,327, -62,406 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 284 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -75,7583, -902,367, -58,6728 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 286 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -74,2006, -1180,16, 8,125 ); + ent.v[ "angles" ] = ( 328,588, 269,073, 4,84502 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -30,1972, -1149,04, -3,875 ); + ent.v[ "angles" ] = ( 306, 295, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -57,9529, -1117,68, -1,875 ); + ent.v[ "angles" ] = ( 297,616, 278,966, -2,8558 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -522,378, -1110,27, 124,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 56 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -122,943, -1145,36, 125,125 ); + ent.v[ "angles" ] = ( 354,36, 119,533, 9,45953 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -822,657, -1180,96, 125,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 121 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -823,869, -1148,61, 120,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 65 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -606,326, -1156,93, 251,257 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 148 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -955,759, -1153,22, 201,313 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -699,809, -1063,27, 197,701 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -340,668, -1233,77, 172,751 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -685,761, -1136,81, 156,902 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -563,458, -991,182, 225,535 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1081,53, -922,923, -26,6664 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1199,17, -965,838, 126,236 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 105 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1250,09, -910,28, 131,927 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 114 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -113,445, 918,832, 96,8401 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 447,336, 1264,88, 80,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 572,892, 1200,87, 40,5349 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 609,305, 1217,84, 274,496 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 84 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 609,292, 1221,83, 274,496 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 84 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 784,064, 724,077, 1,85164 ); + ent.v[ "angles" ] = ( 300,101, 283,816, -24,8627 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 511,369, 519,21, 39,9603 ); + ent.v[ "angles" ] = ( 300,101, 283,816, -24,8627 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 48,6536, 713,099, 285,174 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 130 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -673,73, 982,665, 139,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -667,559, 913,093, 289,589 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 273 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_church" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1374,13, 1783,28, 23,7849 ); + ent.v[ "angles" ] = ( 325, 328, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_thin" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1387,86, 2303,81, 20,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 331 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1401,18, 2242,12, 22,2415 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1404,45, 1517,24, 209,275 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 336 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1135,03, 1719,49, 233,191 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1099,79, 1716,23, 353,125 ); + ent.v[ "angles" ] = ( 0, 162, 29 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1240,62, 1627,27, 366,659 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 332 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1356,85, 1423,38, 349,563 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 68 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1446,46, 1716, 312,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 77 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1674,54, 2112,9, 326,102 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 66 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1982,91, 1957,13, 308,8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 58 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_bats_group" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1436,98, 1178,83, 470,279 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_spilling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6604,83, -108,054, 1295,23 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_spilling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6439,58, -338,125, 1316,08 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_spilling_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5050,44, 444,035, 1627,14 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -837,011, -1007,94, 146,422 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 14,6715, -1804,05, 1,32697 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 275,622, -1785,91, 128,402 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 753,669, -1059,93, 159,296 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 606,238, -753,011, 96,0359 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 458,282, -407,983, 75,8265 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1635,96, 478,695, 144,173 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3921,53, 1511,61, 153 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5832,99, 1503,59, 152,944 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4495,76, 1719,61, 109,583 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4081,28, 734,468, 154,642 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4082,18, 434,376, 153,456 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4597,9, 1116,14, 154,553 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4771,23, 24,5438, 153,7 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4998,32, -337,097, 153,571 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5163,26, 12,2692, 153,987 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5404,4, 878,166, 152 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5888,5, -365,004, 150,127 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3600,07, 195,732, 83,3086 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3598,93, 785,656, 80,8971 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3285,85, 1055,19, 14,6273 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2347,4, 455,828, 107,902 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1493,97, -411,901, 484,03 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1245,21, 1661,83, 32,0848 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 729,544, -182,266, 79,4677 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 268,822, -1196,95, 160,169 ); + ent.v[ "angles" ] = ( 360, 179, 180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 432,627, -305,189, 90,8434 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1150,74, -590,927, 207,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 671,525, -392,235, 212,589 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 881,542, -607,806, 225,686 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 528,141, -623,18, 90,2958 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 666,874, 143,875, 46,0128 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 637,028, -119,579, 196,831 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 765,662, 129,272, 194,828 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 959,763, -1250,59, 117,166 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 817,744, -1135,94, 140,791 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1035,45, -1251,33, 140,059 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 676,786, -1917,55, 62,8586 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1160,01, -1575,74, 247,285 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2973,73, 495,446, 221,157 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2842,58, 444,151, 101,4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2742,33, 943,88, 317,236 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3025,35, 1146,31, 264,23 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2039,81, 768,628, 16,3239 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2579,22, 314,965, 208,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 86 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2610,52, 156,188, 208,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 175 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2542,34, 729,057, 144,678 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2605,4, 122,256, 88,7543 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2698,88, 479,043, 89 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2941,37, 1009,68, 252,376 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2685,62, 253,27, 363,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 164 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2715,18, 642,428, 103,285 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 3 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2992,62, 1056,27, 369,182 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 206 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2592,27, 521,33, 404,413 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2846,4, 442,143, 158,547 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2538,51, 561,582, 400,434 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2603,9, 617,448, 269,904 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2960,14, 1115,55, 305,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2846,48, 853,769, 363,647 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3258,35, 1047,62, 365,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 166 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3101,6, 1212,11, 361,875 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3365,86, 1131,74, 252,425 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3051,78, 465,233, 247,717 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3242,73, 782,744, 312,388 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3351,88, 416,568, 316,503 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3112,26, 847,114, 360,068 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 272 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3223,83, 730,079, 303,153 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3055,83, 781,909, 257,382 ); + ent.v[ "angles" ] = ( 327, 146, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3104,43, 507,389, 242,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3223,12, 700,397, 243,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3542,83, 609,295, 169,802 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3309,48, 558,363, 361,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 351 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3237,36, 690,511, 363,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 297 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3290,62, 1034,99, 242,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3395,56, 1052,84, 211,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 356 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3179, 1037,67, 208,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 336 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3233,76, 1069,42, 10,0393 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 45 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3024,13, 1065,01, 166,701 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3140,76, 355,421, 167,333 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3345,26, 241,131, 167,002 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3326,57, 559,51, 133,891 ); + ent.v[ "angles" ] = ( 9,98616, 186,954, -6,52872 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3345,29, 575,467, 176,764 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3152,17, 782,612, 143,83 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3146,75, 56,9277, 108,267 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2899,43, 627,794, 434,169 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 268 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3139,66, 494,922, 364,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 15 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3253,78, 240,412, 91,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3060,04, 120,66, 88,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2767,38, 25,1235, 322,228 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2677,7, 174,658, 242,755 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2492,75, 47,9961, 428,909 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2515,06, 124,935, 498,125 ); + ent.v[ "angles" ] = ( 7, 355, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2515,7, 209,839, 479,939 ); + ent.v[ "angles" ] = ( 7, 355, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2249,64, 231,152, 525,19 ); + ent.v[ "angles" ] = ( 347, 188, 0 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1913,22, 187,008, 627,6 ); + ent.v[ "angles" ] = ( 356,938, 239,169, -6,29756 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1847,45, -40,4072, 631,24 ); + ent.v[ "angles" ] = ( 4,66837, 278,544, -6,81376 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2501,96, 76,8706, 420,089 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2764,19, 45,156, 311,446 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1966,31, -214,133, 702,101 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -126,249, 605,636, 447,758 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -137,594, 603,22, 463,891 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -424,644, 56,1171, 429,62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 282 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -110,598, 1573,04, 212,383 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -979,154, -676,299, 465,262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 351 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1019,23, -616,838, 411,689 ); + ent.v[ "angles" ] = ( 0, 179, -180 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -414,163, -745,251, 492,333 ); + ent.v[ "angles" ] = ( 0, 179, -180 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -151,26, -667,694, 552,264 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 350 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -176,728, -671,541, 507,533 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -681,005, -1167,91, 308,552 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -53,8367, -1069,23, 443,734 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -100,789, -1119,68, 494,392 ); + ent.v[ "angles" ] = ( 2, 94, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -21,2116, -493,983, 372,461 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -46,1588, -130,613, 361,689 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -103,555, -461,136, 422,733 ); + ent.v[ "angles" ] = ( 349,993, 89,0343, -0,176985 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -93,0906, -240,647, 405,404 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 84 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -414,366, -336,851, 460,608 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -429,665, -366,558, 429,461 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -668,035, -1147,01, 396,853 ); + ent.v[ "angles" ] = ( 359,861, 0, -1,99543 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -777,642, -1166,85, 334,375 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -536,79, -515,55, 318,809 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -536,208, -532,838, 339,506 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 817,97, -790,88, 447,784 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 789,209, -739,149, 502,973 ); + ent.v[ "angles" ] = ( 11, 268, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 774,24, -1043,65, 232,435 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 845,949, -1247,48, 213,222 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 477,424, -1654,15, 210,328 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 727,447, -1421,02, 56,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 620,606, -165,123, 7,59473 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 697,176, -526,368, 126,06 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 150 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 921,105, -666,148, 12,3422 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 970,408, -637,493, 58,3867 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 572,126, -582,9, 16,9119 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 787,698, -1937,73, 45,0924 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 517,64, -1550,15, 170,769 ); + ent.v[ "angles" ] = ( 6, 258, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1006,64, -1478,78, 114,763 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1003,2, -1181, 114,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1245,11, -1302,93, 249,064 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1346,99, -1295,95, 223,528 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1211,05, -1707,81, 266,295 ); + ent.v[ "angles" ] = ( 8, 267, 0 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 919,803, -1953,77, 269,416 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 16 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1193,15, -1933,3, 128,485 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 990,173, -1992,95, 141,881 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 908,871, -1898,65, 173,589 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 297,773, -1748,43, 283,938 ); + ent.v[ "angles" ] = ( 338,231, 81,5878, 6,46262 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2248,13, 191,219, 462,821 ); + ent.v[ "angles" ] = ( 0, 180, -180 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1799,94, 118,108, 511,962 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1803,4, -531,626, 457,766 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1880,42, -343,177, 599,794 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 265 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1882,56, -258,847, 455,228 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2019,8, 245,757, 467,317 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1586,98, -485,878, 432,93 ); + ent.v[ "angles" ] = ( 43, 191, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1189,16, -545,3, 328,606 ); + ent.v[ "angles" ] = ( 9, 185, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 975,873, -426,931, 218,368 ); + ent.v[ "angles" ] = ( 23, 0, -21 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3848,13, 615,132, 82 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3607,97, 792,435, 76,2692 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3849,39, 730,681, 52 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3524,51, 526,456, 174,172 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4069,06, 733,935, 156 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4789,99, 558,388, 13 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4382,5, -110,492, 4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5600,14, -87,8103, 4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5530,35, 398,722, 4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5275,33, 568,786, 4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4034,28, 624,468, 10 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4798,81, 576,981, 11 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4757,36, 1477,32, 4,00001 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4012,7, 1429,44, 4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5589,61, 1425,06, 7 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5972,53, 575,172, 5 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5735,67, -216,467, 3,99999 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4192,66, -289,775, 4 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5278,75, 964,204, 10 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3732,06, -107,1, 10 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6568,06, 560,993, 124,245 ); + ent.v[ "angles" ] = ( 299,147, 273,854, -98,2046 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6615,03, 605,998, 114,251 ); + ent.v[ "angles" ] = ( 299,147, 273,854, -98,2046 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_godray_ext_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6622,05, 655,621, 106,5 ); + ent.v[ "angles" ] = ( 299,147, 273,854, -98,2046 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6991,12, 408,157, 127,031 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6835,18, 421,253, 57,9547 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6553,55, 658,633, 2,76056 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6886,69, 497,111, -60,9136 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6512,59, 637,672, -74,0743 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6545,06, 1015,2, -111,294 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6561,92, 940,399, -132,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 52 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6572,6, 947,314, -19,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 305 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6513,74, 908,481, -77,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_motes_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6717,27, 579,821, 109,248 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_water_dripping" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -660,085, 703,53, 271,657 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 269 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -825,117, 1026,33, 74,7429 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 286 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fireplace" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2597,09, 0,805794, 103,951 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 92 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1071,8, 942,968, 207,614 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,175, -1518,42, 53,222 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -693,694, -1414,81, 12,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,073, 1619,99, 90,4278 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 377,636, 1610,06, 38,125 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -345,182, -1310,2, 205,512 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_int_25x50" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -617,336, -1419,04, 247,867 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 55 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -651,469, -1402,98, 147,185 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -35,1221, -1839,27, 330,434 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_sconce" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 33,4164, -615,692, 82,925 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 860,646, -604,449, 75,5375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 359 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_tunnel_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1168,93, 1081,19, 223,808 ); + ent.v[ "angles" ] = ( 321, 270, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_glow_kerosene_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6691, -40,7169, 228,081 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3754,57, 1415,14, 5 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_rising_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1566,7, 1444,93, 37,3525 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5975,15, 78,188, 9,64342 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 357 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6011,27, 1059,47, 8 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 357 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_fog_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7222,19, 586,385, 85,125 ); + ent.v[ "angles" ] = ( 3, 180, 0 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_insects" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6674,92, 133,477, 199,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 0, 0 ), 270 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6314,88, 483,792, 113,546 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6530,22, 449,035, 268,409 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_buried_dust_flurry" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6485,42, 450,762, 114 ); + ent.v[ "angles" ] = ( 0, 0, 0 ); + ent.v[ "delay" ] = -98; +} diff --git a/zm_buried_patch/xmodelalias/c_zom_zombie_buried_female_heads_m_als.gsc b/zm_buried_patch/xmodelalias/c_zom_zombie_buried_female_heads_m_als.gsc new file mode 100644 index 0000000..c60f16b --- /dev/null +++ b/zm_buried_patch/xmodelalias/c_zom_zombie_buried_female_heads_m_als.gsc @@ -0,0 +1,7 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_head1_mp"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_head2_mp"; + return a; +} diff --git a/zm_buried_patch/xmodelalias/c_zom_zombie_buried_sgirl_body_als.gsc b/zm_buried_patch/xmodelalias/c_zom_zombie_buried_sgirl_body_als.gsc new file mode 100644 index 0000000..d7a84e6 --- /dev/null +++ b/zm_buried_patch/xmodelalias/c_zom_zombie_buried_sgirl_body_als.gsc @@ -0,0 +1,8 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_body1_mp"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_body2_mp"; + a[ 2 ] = "c_zom_zombie_buried_sgirl_body3_mp"; + return a; +} diff --git a/zm_buried_patch/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc b/zm_buried_patch/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc new file mode 100644 index 0000000..6f20d3a --- /dev/null +++ b/zm_buried_patch/xmodelalias/c_zom_zombie_buried_sgirl_hair_als.gsc @@ -0,0 +1,11 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_buried_sgirl_hair1"; + a[ 1 ] = "c_zom_zombie_buried_sgirl_hair1_2"; + a[ 2 ] = "c_zom_zombie_buried_sgirl_hair1_3"; + a[ 3 ] = "c_zom_zombie_buried_sgirl_hair2"; + a[ 4 ] = "c_zom_zombie_buried_sgirl_hair2_2"; + a[ 5 ] = "c_zom_zombie_buried_sgirl_hair1_3"; + return a; +} diff --git a/zm_highrise/aitype/zm_ally_farmgirl.gsc b/zm_highrise/aitype/zm_ally_farmgirl.gsc new file mode 100644 index 0000000..db62e5e --- /dev/null +++ b/zm_highrise/aitype/zm_ally_farmgirl.gsc @@ -0,0 +1,53 @@ + +#using_animtree( "zm_ally" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %pb_laststand_idle; + dummy_anim_ref = %pb_stand_alert; + dummy_anim_ref = %pb_crouch_alert; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_ally_basic.asd"; + self.animtree = "zm_ally.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "allies"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_ally_farmgirl::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "allies" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_ally_basic" ); + character/c_zom_ally_farmgirl::precache(); +} diff --git a/zm_highrise/aitype/zm_highrise_basic_01.gsc b/zm_highrise/aitype/zm_highrise_basic_01.gsc new file mode 100644 index 0000000..76cd75e --- /dev/null +++ b/zm_highrise/aitype/zm_highrise_basic_01.gsc @@ -0,0 +1,429 @@ +#include codescripts/character; + +#using_animtree( "zm_highrise_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_120; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_184; + dummy_anim_ref = %ai_zombie_crawl_jump_down_184; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_175; + dummy_anim_ref = %ai_zombie_crawl_jump_up_175; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_dierise_escape_corridor; + dummy_anim_ref = %ai_zombie_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_zombie_jump_up_sewing; + dummy_anim_ref = %ai_zombie_crawl_jump_up_sewing; + dummy_anim_ref = %ai_zombie_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_5_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap4a_slide_down_beam; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17c_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_zombie_crawl_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_zombie_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_climb_elevator; + dummy_anim_ref = %ai_zombie_crawl_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_5_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap4a_slide_down_beam; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15f_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15g_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17a_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_zombie_riser_elevator_from_floor; + dummy_anim_ref = %ai_zombie_riser_elevator_from_ceiling; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_highrise_basic.asd"; + self.animtree = "zm_highrise_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 6 ); + switch( randchar ) + { + case 0: + character/c_zom_zombie_civ_shorts::main(); + break; + case 1: + character/c_zom_zombie_civ_shorts2::main(); + break; + case 2: + character/c_zom_zombie_civ_shorts3::main(); + break; + case 3: + character/c_zom_zombie_civ_shorts4::main(); + break; + case 4: + character/c_zom_zombie_civ_shorts5::main(); + break; + case 5: + character/c_zom_zombie_civ_shorts6::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_highrise_basic" ); + character/c_zom_zombie_civ_shorts::precache(); + character/c_zom_zombie_civ_shorts2::precache(); + character/c_zom_zombie_civ_shorts3::precache(); + character/c_zom_zombie_civ_shorts4::precache(); + character/c_zom_zombie_civ_shorts5::precache(); + character/c_zom_zombie_civ_shorts6::precache(); +} diff --git a/zm_highrise/aitype/zm_highrise_basic_02.gsc b/zm_highrise/aitype/zm_highrise_basic_02.gsc new file mode 100644 index 0000000..602f9f0 --- /dev/null +++ b/zm_highrise/aitype/zm_highrise_basic_02.gsc @@ -0,0 +1,402 @@ + +#using_animtree( "zm_highrise_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_120; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_184; + dummy_anim_ref = %ai_zombie_crawl_jump_down_184; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_175; + dummy_anim_ref = %ai_zombie_crawl_jump_up_175; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_dierise_escape_corridor; + dummy_anim_ref = %ai_zombie_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_zombie_jump_up_sewing; + dummy_anim_ref = %ai_zombie_crawl_jump_up_sewing; + dummy_anim_ref = %ai_zombie_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_5_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap4a_slide_down_beam; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17c_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_zombie_crawl_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_zombie_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_climb_elevator; + dummy_anim_ref = %ai_zombie_crawl_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_5_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap4a_slide_down_beam; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15f_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15g_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17a_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_zombie_riser_elevator_from_floor; + dummy_anim_ref = %ai_zombie_riser_elevator_from_ceiling; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_highrise_basic.asd"; + self.animtree = "zm_highrise_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_scientist::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_highrise_basic" ); + character/c_zom_zombie_scientist::precache(); +} diff --git a/zm_highrise/aitype/zm_highrise_basic_03.gsc b/zm_highrise/aitype/zm_highrise_basic_03.gsc new file mode 100644 index 0000000..e0c0004 --- /dev/null +++ b/zm_highrise/aitype/zm_highrise_basic_03.gsc @@ -0,0 +1,402 @@ + +#using_animtree( "zm_highrise_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_slipslide_collapse; + dummy_anim_ref = %ai_zombie_walk_slipslide; + dummy_anim_ref = %ai_zombie_walk_slipslide_a; + dummy_anim_ref = %ai_zombie_run_slipslide; + dummy_anim_ref = %ai_zombie_run_slipslide_a; + dummy_anim_ref = %ai_zombie_sprint_slipslide; + dummy_anim_ref = %ai_zombie_sprint_slipslide_a; + dummy_anim_ref = %ai_zombie_stand_slipslide_recover; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_120; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_down_184; + dummy_anim_ref = %ai_zombie_crawl_jump_down_184; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_175; + dummy_anim_ref = %ai_zombie_crawl_jump_up_175; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_48; + dummy_anim_ref = %ai_zombie_traverse_dierise_escape_corridor; + dummy_anim_ref = %ai_zombie_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_zombie_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_zombie_jump_up_sewing; + dummy_anim_ref = %ai_zombie_crawl_jump_up_sewing; + dummy_anim_ref = %ai_zombie_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_5_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap4a_slide_down_beam; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap17c_low_to_high; + dummy_anim_ref = %ai_zombie_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_zombie_crawl_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_zombie_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_climb_elevator; + dummy_anim_ref = %ai_zombie_crawl_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_5_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap4a_slide_down_beam; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15f_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap15g_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17a_low_to_high; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_zombie_crawl_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_zombie_riser_elevator_from_floor; + dummy_anim_ref = %ai_zombie_riser_elevator_from_ceiling; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_highrise_basic.asd"; + self.animtree = "zm_highrise_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 210; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_zombie_soldier::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_highrise_basic" ); + character/c_zom_zombie_soldier::precache(); +} diff --git a/zm_highrise/aitype/zm_highrise_leaper.gsc b/zm_highrise/aitype/zm_highrise_leaper.gsc new file mode 100644 index 0000000..3a7eacd --- /dev/null +++ b/zm_highrise/aitype/zm_highrise_leaper.gsc @@ -0,0 +1,199 @@ + +#using_animtree( "zm_highrise_leaper" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_quad_idle; + dummy_anim_ref = %ai_zombie_quad_idle_2; + dummy_anim_ref = %ai_zombie_leaper_death_v1; + dummy_anim_ref = %ai_zombie_leaper_death_v2; + dummy_anim_ref = %ai_zombie_leaper_run_f; + dummy_anim_ref = %ai_zombie_leaper_run_bounce; + dummy_anim_ref = %ai_zombie_quad_crawl; + dummy_anim_ref = %ai_zombie_quad_crawl_2; + dummy_anim_ref = %ai_zombie_quad_crawl_3; + dummy_anim_ref = %ai_zombie_quad_crawl_run; + dummy_anim_ref = %ai_zombie_quad_crawl_run_2; + dummy_anim_ref = %ai_zombie_quad_crawl_run_3; + dummy_anim_ref = %ai_zombie_quad_crawl_run_4; + dummy_anim_ref = %ai_zombie_quad_crawl_run_5; + dummy_anim_ref = %ai_zombie_quad_crawl_sprint; + dummy_anim_ref = %ai_zombie_quad_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_quad_crawl_sprint_3; + dummy_anim_ref = %ai_zombie_quad_crawl_01; + dummy_anim_ref = %ai_zombie_quad_crawl_02; + dummy_anim_ref = %ai_zombie_quad_crawl_03; + dummy_anim_ref = %ai_zombie_leaper_attack_v1; + dummy_anim_ref = %ai_zombie_leaper_attack_v2; + dummy_anim_ref = %ai_zombie_leaper_wall_traverse_l; + dummy_anim_ref = %ai_zombie_leaper_wall_traverse_r; + dummy_anim_ref = %ai_zombie_leaper_ceiling_traverse; + dummy_anim_ref = %ai_leaper_traverse_dierise_barrier; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_184; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_leaper_jump_down_120; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_leaper_jump_up_175; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_traverse_48; + dummy_anim_ref = %ai_leaper_jump_up_sewing; + dummy_anim_ref = %ai_leaper_dierise_ventfall_176; + dummy_anim_ref = %ai_leaper_crawl_traverse_round_counter_from_stools; + dummy_anim_ref = %ai_leaper_crawl_traverse_round_counter_to_stools; + dummy_anim_ref = %ai_leaper_traverse_dierise_chrest_interior_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_chrest_interior_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_1_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_1_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_2_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_2_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_3_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_3_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_4_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_4_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_chrest_elevator_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_5_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_6_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_6_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_7_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_7_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap1_to_antenna; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap1_from_antenna; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap2_from_roof; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap2_to_roof; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap4b_to_roof; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap4b_from_roof; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap5a_from_conference; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap5a_to_conference; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap5b_from_conference; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap5b_to_conference; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap6_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap6_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap7_from_top_ledge; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap7_to_top_ledge; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap8_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap8_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap9_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap9_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap10_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap10_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14a_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14b_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14c_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14c_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14d_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14d_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14e_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14e_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14f_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14f_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14g_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14g_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14h_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap14h_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15a_from_girder; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15b_from_girder; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15f_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15f_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15g_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15g_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap16a_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap16a_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap16b_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap16b_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap17a_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap17a_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap17c_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap17c_low_to_high; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap18_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap19_from_railing; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap19_to_railing; + dummy_anim_ref = %ai_zombie_leaper_wall_traverse_l_large; + dummy_anim_ref = %ai_zombie_leaper_wall_traverse_r_large; + dummy_anim_ref = %ai_leaper_traverse_dierise_gap15c_low_to_high; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190_dlc1; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_antenna; + dummy_anim_ref = %ai_leaper_traverse_dierise_chrest_gap; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_a; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_b; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_c; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_d; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_e; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_f; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_bluegreen_antenna_to_escalator; + dummy_anim_ref = %ai_leaper_traverse_shoestore; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_orange_ext_a_right; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_orange_ext_a_left; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_orange_ext_b_left; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_orange_ext_b_right; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_orange_ext_c; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_blue_ext_a; + dummy_anim_ref = %ai_leaper_traverse_dierise_shaft1_to_bottom; + dummy_anim_ref = %ai_leaper_traverse_dierise_shaft1_from_bottom; + dummy_anim_ref = %ai_leaper_traverse_dierise_shaft2_to_bottom; + dummy_anim_ref = %ai_leaper_traverse_dierise_shaft2_from_bottom; + dummy_anim_ref = %ai_leaper_traverse_dierise_restaurant_in; + dummy_anim_ref = %ai_leaper_traverse_dierise_ac_unit; + dummy_anim_ref = %ai_leaper_traverse_dierise_chrest_interior_alt_high_to_low; + dummy_anim_ref = %ai_leaper_traverse_dierise_chrest_interior_alt_low_to_high; + dummy_anim_ref = %ai_zombie_leaper_traverse_dierise_green_ext_g; + dummy_anim_ref = %ai_leaper_jump_down_to_elevator_roof; + dummy_anim_ref = %ai_leaper_jump_up_from_elevator_roof; + dummy_anim_ref = %ai_zombie_leaper_climb_elevator; + dummy_anim_ref = %ai_zombie_crawl_slipslide_slow; + dummy_anim_ref = %ai_zombie_crawl_slipslide_fast; + dummy_anim_ref = %ai_zombie_crawl_slipslide_recover; + dummy_anim_ref = %ai_zombie_leaper_elevator_from_ceiling; + dummy_anim_ref = %ai_zombie_leaper_elevator_from_floor; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_highrise_leaper.asd"; + self.animtree = "zm_highrise_leaper.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 18; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = "zm_leaper_footstepfxtable"; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 150; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_leaper::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_highrise_leaper" ); + character/c_zom_leaper::precache(); +} diff --git a/zm_highrise/character/c_highrise_player_engineer.gsc b/zm_highrise/character/c_highrise_player_engineer.gsc new file mode 100644 index 0000000..8333776 --- /dev/null +++ b/zm_highrise/character/c_highrise_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_dlc1_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_dlc1_fb" ); +} diff --git a/zm_highrise/character/c_highrise_player_farmgirl.gsc b/zm_highrise/character/c_highrise_player_farmgirl.gsc new file mode 100644 index 0000000..d24675b --- /dev/null +++ b/zm_highrise/character/c_highrise_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_dlc1_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_dlc1_fb" ); +} diff --git a/zm_highrise/character/c_highrise_player_oldman.gsc b/zm_highrise/character/c_highrise_player_oldman.gsc new file mode 100644 index 0000000..7ee309a --- /dev/null +++ b/zm_highrise/character/c_highrise_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_dlc1_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_dlc1_fb" ); +} diff --git a/zm_highrise/character/c_highrise_player_reporter.gsc b/zm_highrise/character/c_highrise_player_reporter.gsc new file mode 100644 index 0000000..32ec8bc --- /dev/null +++ b/zm_highrise/character/c_highrise_player_reporter.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_dlc1_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_dlc1_fb" ); +} diff --git a/zm_highrise/character/c_zom_ally_farmgirl.gsc b/zm_highrise/character/c_zom_ally_farmgirl.gsc new file mode 100644 index 0000000..d24675b --- /dev/null +++ b/zm_highrise/character/c_zom_ally_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_dlc1_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_dlc1_fb" ); +} diff --git a/zm_highrise/character/c_zom_leaper.gsc b/zm_highrise/character/c_zom_leaper.gsc new file mode 100644 index 0000000..9c6b648 --- /dev/null +++ b/zm_highrise/character/c_zom_leaper.gsc @@ -0,0 +1,21 @@ + +main() +{ + self setmodel( "c_zom_leaper_body" ); + self.headmodel = "c_zom_leaper_head"; + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_leaper_body_g_upclean"; + self.torsodmg5 = "c_zom_leaper_body_g_behead"; + self.legdmg1 = "c_zom_leaper_body_g_lowclean"; +} + +precache() +{ + precachemodel( "c_zom_leaper_body" ); + precachemodel( "c_zom_leaper_head" ); + precachemodel( "c_zom_leaper_body_g_upclean" ); + precachemodel( "c_zom_leaper_body_g_behead" ); + precachemodel( "c_zom_leaper_body_g_lowclean" ); +} diff --git a/zm_highrise/character/c_zom_zombie_civ_shorts.gsc b/zm_highrise/character/c_zom_zombie_civ_shorts.gsc new file mode 100644 index 0000000..93c19e7 --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_civ_shorts.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_civ_shorts_body" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_civ_shorts_body_g_upclean"; + self.torsodmg2 = "c_zom_zombie_civ_shorts_body_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_civ_shorts_body_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_civ_shorts_body_g_lowclean"; + self.legdmg2 = "c_zom_zombie_civ_shorts_body_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_civ_shorts_body_g_llegoff"; + self.legdmg4 = "c_zom_zombie_civ_shorts_body_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_civ_shorts_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_civ_shorts_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_civ_shorts_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_civ_shorts_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_civ_shorts_body" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_upclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_rarmoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_lowclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_rlegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_llegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body_g_legsoff" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rarmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_larmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rlegspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_civ_shorts2.gsc b/zm_highrise/character/c_zom_zombie_civ_shorts2.gsc new file mode 100644 index 0000000..10015ce --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_civ_shorts2.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_civ_shorts_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_civ_shorts_body2_g_upclean"; + self.torsodmg2 = "c_zom_zombie_civ_shorts_body2_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_civ_shorts_body2_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_civ_shorts_body2_g_lowclean"; + self.legdmg2 = "c_zom_zombie_civ_shorts_body2_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_civ_shorts_body2_g_llegoff"; + self.legdmg4 = "c_zom_zombie_civ_shorts_body2_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_civ_shorts_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_civ_shorts_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_civ_shorts_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_civ_shorts_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_civ_shorts_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_upclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_rarmoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_lowclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_rlegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_llegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body2_g_legsoff" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rarmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_larmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rlegspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_civ_shorts3.gsc b/zm_highrise/character/c_zom_zombie_civ_shorts3.gsc new file mode 100644 index 0000000..577e706 --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_civ_shorts3.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_civ_shorts_body3" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_civ_shorts_body3_g_upclean"; + self.torsodmg2 = "c_zom_zombie_civ_shorts_body3_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_civ_shorts_body3_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_civ_shorts_body3_g_lowclean"; + self.legdmg2 = "c_zom_zombie_civ_shorts_body3_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_civ_shorts_body3_g_llegoff"; + self.legdmg4 = "c_zom_zombie_civ_shorts_body3_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_civ_shorts_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_civ_shorts_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_civ_shorts_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_civ_shorts_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_civ_shorts_body3" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_upclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_rarmoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_lowclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_rlegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_llegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body3_g_legsoff" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rarmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_larmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rlegspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_civ_shorts4.gsc b/zm_highrise/character/c_zom_zombie_civ_shorts4.gsc new file mode 100644 index 0000000..b35b2f5 --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_civ_shorts4.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_civ_shorts_body4" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_civ_shorts_body4_g_upclean"; + self.torsodmg2 = "c_zom_zombie_civ_shorts_body4_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_civ_shorts_body4_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_civ_shorts_body4_g_lowclean"; + self.legdmg2 = "c_zom_zombie_civ_shorts_body4_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_civ_shorts_body4_g_llegoff"; + self.legdmg4 = "c_zom_zombie_civ_shorts_body4_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_civ_shorts_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_civ_shorts_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_civ_shorts_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_civ_shorts_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_civ_shorts_body4" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_upclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_rarmoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_lowclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_rlegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_llegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body4_g_legsoff" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rarmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_larmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rlegspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_civ_shorts5.gsc b/zm_highrise/character/c_zom_zombie_civ_shorts5.gsc new file mode 100644 index 0000000..8478d27 --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_civ_shorts5.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_civ_shorts_body5" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_civ_shorts_body5_g_upclean"; + self.torsodmg2 = "c_zom_zombie_civ_shorts_body5_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_civ_shorts_body5_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_civ_shorts_body5_g_lowclean"; + self.legdmg2 = "c_zom_zombie_civ_shorts_body5_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_civ_shorts_body5_g_llegoff"; + self.legdmg4 = "c_zom_zombie_civ_shorts_body5_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_civ_shorts_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_civ_shorts_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_civ_shorts_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_civ_shorts_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_civ_shorts_body5" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_upclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_rarmoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_lowclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_rlegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_llegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body5_g_legsoff" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rarmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_larmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rlegspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_civ_shorts6.gsc b/zm_highrise/character/c_zom_zombie_civ_shorts6.gsc new file mode 100644 index 0000000..ce494ef --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_civ_shorts6.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_civ_shorts_body6" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_civ_shorts_body6_g_upclean"; + self.torsodmg2 = "c_zom_zombie_civ_shorts_body6_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_civ_shorts_body6_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_civ_shorts_body6_g_lowclean"; + self.legdmg2 = "c_zom_zombie_civ_shorts_body6_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_civ_shorts_body6_g_llegoff"; + self.legdmg4 = "c_zom_zombie_civ_shorts_body6_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_civ_shorts_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_civ_shorts_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_civ_shorts_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_civ_shorts_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_civ_shorts_body6" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_upclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_rarmoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_lowclean" ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_rlegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_llegoff" ); + precachemodel( "c_zom_zombie_civ_shorts_body6_g_legsoff" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rarmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_larmspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_rlegspawn" ); + precachemodel( "c_zom_zombie_civ_shorts_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_scientist.gsc b/zm_highrise/character/c_zom_zombie_scientist.gsc new file mode 100644 index 0000000..4d19e0b --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_scientist.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_scientist_body" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_scientist_body_g_upclean"; + self.torsodmg2 = "c_zom_zombie_scientist_body_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_scientist_body_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_scientist_body_g_lowclean"; + self.legdmg2 = "c_zom_zombie_scientist_body_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_scientist_body_g_llegoff"; + self.legdmg4 = "c_zom_zombie_scientist_body_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_scientist_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_scientist_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_scientist_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_scientist_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_scientist_body" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_als::main() ); + precachemodel( "c_zom_zombie_scientist_body_g_upclean" ); + precachemodel( "c_zom_zombie_scientist_body_g_rarmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_scientist_body_g_lowclean" ); + precachemodel( "c_zom_zombie_scientist_body_g_rlegoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_llegoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_legsoff" ); + precachemodel( "c_zom_zombie_scientist_g_rarmspawn" ); + precachemodel( "c_zom_zombie_scientist_g_larmspawn" ); + precachemodel( "c_zom_zombie_scientist_g_rlegspawn" ); + precachemodel( "c_zom_zombie_scientist_g_llegspawn" ); +} diff --git a/zm_highrise/character/c_zom_zombie_soldier.gsc b/zm_highrise/character/c_zom_zombie_soldier.gsc new file mode 100644 index 0000000..8468101 --- /dev/null +++ b/zm_highrise/character/c_zom_zombie_soldier.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_zombie_soldier_body" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_chinese_zombie_head_helmet_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_zombie_soldier_body_g_upclean"; + self.torsodmg2 = "c_zom_zombie_soldier_body_g_rarmoff"; + self.torsodmg3 = "c_zom_zombie_soldier_body_g_larmoff"; + self.torsodmg5 = "c_zom_zombie_scientist_body_g_behead"; + self.legdmg1 = "c_zom_zombie_soldier_body_g_lowclean"; + self.legdmg2 = "c_zom_zombie_soldier_body_g_rlegoff"; + self.legdmg3 = "c_zom_zombie_soldier_body_g_llegoff"; + self.legdmg4 = "c_zom_zombie_soldier_body_g_legsoff"; + self.gibspawn1 = "c_zom_zombie_soldier_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_zombie_soldier_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_zombie_soldier_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_zombie_soldier_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_zombie_soldier_body" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_chinese_zombie_head_helmet_als::main() ); + precachemodel( "c_zom_zombie_soldier_body_g_upclean" ); + precachemodel( "c_zom_zombie_soldier_body_g_rarmoff" ); + precachemodel( "c_zom_zombie_soldier_body_g_larmoff" ); + precachemodel( "c_zom_zombie_scientist_body_g_behead" ); + precachemodel( "c_zom_zombie_soldier_body_g_lowclean" ); + precachemodel( "c_zom_zombie_soldier_body_g_rlegoff" ); + precachemodel( "c_zom_zombie_soldier_body_g_llegoff" ); + precachemodel( "c_zom_zombie_soldier_body_g_legsoff" ); + precachemodel( "c_zom_zombie_soldier_g_rarmspawn" ); + precachemodel( "c_zom_zombie_soldier_g_larmspawn" ); + precachemodel( "c_zom_zombie_soldier_g_rlegspawn" ); + precachemodel( "c_zom_zombie_soldier_g_llegspawn" ); +} diff --git a/zm_highrise/xmodelalias/c_zom_chinese_zombie_head_als.gsc b/zm_highrise/xmodelalias/c_zom_chinese_zombie_head_als.gsc new file mode 100644 index 0000000..eb7f19d --- /dev/null +++ b/zm_highrise/xmodelalias/c_zom_chinese_zombie_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_chinese_head1"; + a[ 1 ] = "c_zom_zombie_chinese_head2"; + a[ 2 ] = "c_zom_zombie_chinese_head3"; + a[ 3 ] = "c_zom_zombie_chinese_head4"; + return a; +} diff --git a/zm_highrise/xmodelalias/c_zom_chinese_zombie_head_helmet_als.gsc b/zm_highrise/xmodelalias/c_zom_chinese_zombie_head_helmet_als.gsc new file mode 100644 index 0000000..91297cf --- /dev/null +++ b/zm_highrise/xmodelalias/c_zom_chinese_zombie_head_helmet_als.gsc @@ -0,0 +1,14 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_chinese_head1"; + a[ 1 ] = "c_zom_zombie_chinese_head2"; + a[ 2 ] = "c_zom_zombie_chinese_head3"; + a[ 3 ] = "c_zom_zombie_chinese_head4"; + a[ 4 ] = "c_zom_zombie_chinese_head1"; + a[ 5 ] = "c_zom_zombie_chinese_head2"; + a[ 6 ] = "c_zom_zombie_chinese_head3"; + a[ 7 ] = "c_zom_zombie_chinese_head4"; + a[ 8 ] = "c_zom_zombie_chinese_head3_helmet"; + return a; +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_gap.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_gap.gsc new file mode 100644 index 0000000..9ad4432 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_gap.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_chrest_gap", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_down.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_down.gsc new file mode 100644 index 0000000..b193065 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_down.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_chrest_interior_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_down_2.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_down_2.gsc new file mode 100644 index 0000000..705104a --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_down_2.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_chrest_interior_alt_down", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_up.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_up.gsc new file mode 100644 index 0000000..214fb21 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_chrest_interior_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_up_2.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_up_2.gsc new file mode 100644 index 0000000..df0f03f --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_chrest_jump_up_2.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_chrest_interior_alt_up", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_counter_from_stools.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_counter_from_stools.gsc new file mode 100644 index 0000000..42ac648 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_counter_from_stools.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_round_counter_from_stools", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_counter_to_stools.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_counter_to_stools.gsc new file mode 100644 index 0000000..760868b --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_counter_to_stools.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_round_counter_to_stools", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_escape_hallway.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_escape_hallway.gsc new file mode 100644 index 0000000..cb564df --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_escape_hallway.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_escape_elevator_hallway", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap10_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap10_high_to_low.gsc new file mode 100644 index 0000000..534ac32 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap10_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap10_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap10_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap10_low_to_high.gsc new file mode 100644 index 0000000..541cfd5 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap10_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap10_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14a_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14a_high_to_low.gsc new file mode 100644 index 0000000..5ec0354 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14a_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14a_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14b_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14b_high_to_low.gsc new file mode 100644 index 0000000..28fe59b --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14b_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14b_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14c_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14c_high_to_low.gsc new file mode 100644 index 0000000..63114e8 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14c_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14c_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14c_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14c_low_to_high.gsc new file mode 100644 index 0000000..203a078 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14c_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14c_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14d_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14d_high_to_low.gsc new file mode 100644 index 0000000..b5edc03 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14d_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14d_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14d_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14d_low_to_high.gsc new file mode 100644 index 0000000..f98c8ca --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14d_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14d_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14e_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14e_high_to_low.gsc new file mode 100644 index 0000000..3e29231 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14e_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14e_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14e_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14e_low_to_high.gsc new file mode 100644 index 0000000..6c49436 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14e_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14e_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14f_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14f_high_to_low.gsc new file mode 100644 index 0000000..1414c97 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14f_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14f_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14f_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14f_low_to_high.gsc new file mode 100644 index 0000000..2c9a7b9 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14f_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14f_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14g_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14g_high_to_low.gsc new file mode 100644 index 0000000..c29da5c --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14g_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14g_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14g_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14g_low_to_high.gsc new file mode 100644 index 0000000..46ddd1e --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14g_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14g_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14h_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14h_high_to_low.gsc new file mode 100644 index 0000000..c0c8e18 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14h_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14h_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14h_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14h_low_to_high.gsc new file mode 100644 index 0000000..34ed846 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap14h_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap14h_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15a_from_girder.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15a_from_girder.gsc new file mode 100644 index 0000000..4e97ef4 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15a_from_girder.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap15a_from_girder" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15b_from_girder.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15b_from_girder.gsc new file mode 100644 index 0000000..4d00a54 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15b_from_girder.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap15b_from_girder" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15f_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15f_high_to_low.gsc new file mode 100644 index 0000000..0ee9e1b --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15f_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap15f_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15f_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15f_low_to_high.gsc new file mode 100644 index 0000000..4303081 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15f_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap15f_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15g_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15g_high_to_low.gsc new file mode 100644 index 0000000..e038cb8 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15g_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap15g_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15g_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15g_low_to_high.gsc new file mode 100644 index 0000000..ffd3557 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap15g_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap15g_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16a_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16a_high_to_low.gsc new file mode 100644 index 0000000..e866f3d --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16a_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap16a_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16a_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16a_low_to_high.gsc new file mode 100644 index 0000000..f0bdcdb --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16a_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap16a_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16b_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16b_high_to_low.gsc new file mode 100644 index 0000000..ce8e56f --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16b_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap16b_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16b_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16b_low_to_high.gsc new file mode 100644 index 0000000..5c90268 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap16b_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap16b_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17a_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17a_high_to_low.gsc new file mode 100644 index 0000000..7553d18 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17a_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap17a_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17a_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17a_low_to_high.gsc new file mode 100644 index 0000000..76fe72f --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17a_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap17a_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17c_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17c_high_to_low.gsc new file mode 100644 index 0000000..c4c2a17 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17c_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap17c_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17c_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17c_low_to_high.gsc new file mode 100644 index 0000000..ac8df7a --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap17c_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap17c_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap18_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap18_high_to_low.gsc new file mode 100644 index 0000000..63d0316 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap18_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap18_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap19_from_railing.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap19_from_railing.gsc new file mode 100644 index 0000000..86bc6f3 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap19_from_railing.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap19_from_railing", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap19_to_railing.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap19_to_railing.gsc new file mode 100644 index 0000000..22a98ee --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap19_to_railing.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap19_to_railing", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap1_from_antenna.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap1_from_antenna.gsc new file mode 100644 index 0000000..b885303 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap1_from_antenna.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap1_from_antenna" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap1_to_antenna.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap1_to_antenna.gsc new file mode 100644 index 0000000..5267a8b --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap1_to_antenna.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap1_to_antenna" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4a_slide_down_beam.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4a_slide_down_beam.gsc new file mode 100644 index 0000000..2b1d341 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4a_slide_down_beam.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap4a_slide_down_beam" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4b_from_roof.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4b_from_roof.gsc new file mode 100644 index 0000000..07f3b75 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4b_from_roof.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap4b_from_roof" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4b_to_roof.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4b_to_roof.gsc new file mode 100644 index 0000000..bb631e7 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap4b_to_roof.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap4b_to_roof" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5a_from_conference.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5a_from_conference.gsc new file mode 100644 index 0000000..2a79ceb --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5a_from_conference.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap5a_from_conference" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5a_to_conference.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5a_to_conference.gsc new file mode 100644 index 0000000..8167394 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5a_to_conference.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap5a_to_conference" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5b_from_conference.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5b_from_conference.gsc new file mode 100644 index 0000000..82c2d3c --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5b_from_conference.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap5b_from_conference" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5b_to_conference.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5b_to_conference.gsc new file mode 100644 index 0000000..5309d3c --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap5b_to_conference.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap5b_to_conference" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap6_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap6_high_to_low.gsc new file mode 100644 index 0000000..7d3e63a --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap6_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap6_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap6_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap6_low_to_high.gsc new file mode 100644 index 0000000..4e43e2d --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap6_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap6_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap7_from_top_ledge.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap7_from_top_ledge.gsc new file mode 100644 index 0000000..8bb441c --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap7_from_top_ledge.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap7_from_top_ledge" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap7_to_top_ledge.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap7_to_top_ledge.gsc new file mode 100644 index 0000000..5182816 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap7_to_top_ledge.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap7_to_top_ledge" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap8_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap8_high_to_low.gsc new file mode 100644 index 0000000..9c40efd --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap8_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap8_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap8_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap8_low_to_high.gsc new file mode 100644 index 0000000..f645a41 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap8_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap8_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap9_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap9_high_to_low.gsc new file mode 100644 index 0000000..556e416 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap9_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap9_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap9_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap9_low_to_high.gsc new file mode 100644 index 0000000..b6cefe0 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_gap9_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_gap9_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_jump_ac_unit.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_jump_ac_unit.gsc new file mode 100644 index 0000000..89ced34 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_jump_ac_unit.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_blue_ac_unit", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_1_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_1_high_to_low.gsc new file mode 100644 index 0000000..9b0d1bb --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_1_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_1_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_1_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_1_low_to_high.gsc new file mode 100644 index 0000000..f33e064 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_1_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_1_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_2_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_2_high_to_low.gsc new file mode 100644 index 0000000..7413431 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_2_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_2_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_2_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_2_low_to_high.gsc new file mode 100644 index 0000000..dd4f0be --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_2_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_2_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_3_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_3_high_to_low.gsc new file mode 100644 index 0000000..b006d0b --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_3_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_3_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_3_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_3_low_to_high.gsc new file mode 100644 index 0000000..bc54d8d --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_3_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_3_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_4_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_4_high_to_low.gsc new file mode 100644 index 0000000..e5bcef2 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_4_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_4_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_4_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_4_low_to_high.gsc new file mode 100644 index 0000000..0ee22a5 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_4_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_4_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_5_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_5_high_to_low.gsc new file mode 100644 index 0000000..2e43c13 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_5_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_5_high_to_low" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_5_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_5_low_to_high.gsc new file mode 100644 index 0000000..cc4e042 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_5_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_5_low_to_high" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_6_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_6_high_to_low.gsc new file mode 100644 index 0000000..60705ae --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_6_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_6_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_6_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_6_low_to_high.gsc new file mode 100644 index 0000000..9c1a8cb --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_6_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_6_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_7_high_to_low.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_7_high_to_low.gsc new file mode 100644 index 0000000..f65e228 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_7_high_to_low.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_7_high_to_low", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_7_low_to_high.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_7_low_to_high.gsc new file mode 100644 index 0000000..32d23a5 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_dierise_traverse_7_low_to_high.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dierise_traverse_7_low_to_high", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_gap2_to_roof.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_gap2_to_roof.gsc new file mode 100644 index 0000000..1a68744 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_gap2_to_roof.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "gap2_to_roof" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_120.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_120.gsc new file mode 100644 index 0000000..cb99f14 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_120.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_120" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc new file mode 100644 index 0000000..8bd9a0e --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_127" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_176.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_176.gsc new file mode 100644 index 0000000..ae88b6a --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_176.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_176" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_184.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_184.gsc new file mode 100644 index 0000000..bf3c1f2 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_184.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_184" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc new file mode 100644 index 0000000..203cc96 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_190" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc new file mode 100644 index 0000000..ff54012 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_222" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_286.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_286.gsc new file mode 100644 index 0000000..1b54907 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_286.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_286" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_40.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_40.gsc new file mode 100644 index 0000000..a07466c --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_40.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_40" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc new file mode 100644 index 0000000..8269b0e --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_48" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc new file mode 100644 index 0000000..e32a251 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 96, 7 ); + } + else + { + dosimpletraverse( "jump_down_96" ); + } +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_to_elevator_top.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_to_elevator_top.gsc new file mode 100644 index 0000000..7c57593 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_down_to_elevator_top.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "zm_jump_down_to_elevator_top", undefined, "zm_traverse_elevator" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc new file mode 100644 index 0000000..06cec96 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_127" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_175.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_175.gsc new file mode 100644 index 0000000..d8e11e5 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_175.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_175" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc new file mode 100644 index 0000000..793683d --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_222" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_antenna.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_antenna.gsc new file mode 100644 index 0000000..1f69289 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_antenna.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_antenna", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_from_elevator_top.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_from_elevator_top.gsc new file mode 100644 index 0000000..d6e1f03 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_from_elevator_top.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "zm_jump_up_from_elevator_top", undefined, "zm_traverse_elevator" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_grabbed_190.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_grabbed_190.gsc new file mode 100644 index 0000000..37a6a4a --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_grabbed_190.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_grabbed_190" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_grabbed_48.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_grabbed_48.gsc new file mode 100644 index 0000000..ef6328c --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_grabbed_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_grabbed_48" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_sewing.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_sewing.gsc new file mode 100644 index 0000000..8b4de43 --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_jump_up_sewing.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_sewing", undefined, "zm_traverse_dierise" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc new file mode 100644 index 0000000..e97cc4a --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self dosimpletraverse( "mantle_over_40_hurdle" ); +} diff --git a/zm_highrise_patch/maps/mp/animscripts/traverse/zm_traverse_48.gsc b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_traverse_48.gsc new file mode 100644 index 0000000..068e4df --- /dev/null +++ b/zm_highrise_patch/maps/mp/animscripts/traverse/zm_traverse_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_48" ); +} diff --git a/zm_highrise_patch/maps/mp/createfx/zm_highrise_fx.gsc b/zm_highrise_patch/maps/mp/createfx/zm_highrise_fx.gsc new file mode 100644 index 0000000..f424ce0 --- /dev/null +++ b/zm_highrise_patch/maps/mp/createfx/zm_highrise_fx.gsc @@ -0,0 +1,2497 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5935,09, -2250,2, 2175,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 106,466, -4415,77, 2175,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7818,6, -5931,26, 2175,42 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2672,52, -8650,92, 2176,46 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3255,3, -8784,61, 2176,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5738,8, 9199,63, 2176,25 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_bend_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 402,774, -1310,8, 2222,36 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 324 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_bend_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3897,99, 3187,69, 2727,5 ); + ent.v[ "angles" ] = ( 349,08, 288,472, -8,5135 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2343,23, 1810,53, 2897,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 176 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2966,82, 3192,47, 2470,13 ); + ent.v[ "angles" ] = ( 1,61145, 263,827, 43,5045 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_lg_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3941,08, -18618,2, 2371,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 337 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -10945, 2448,45, 9642,44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 328 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -13586,5, -11773,8, 5732,62 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 347 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -16328,9, -318,364, 7701,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 325 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12397,1, 11495,5, 7748,65 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 347 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5882,88, 14728,6, 7374,86 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 347 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12129, 1409,62, 866,84 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12606, 5028,84, 1206,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12474,5, 8828,45, 1550,09 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 192 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_left" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8354,47, -4012,84, 1369,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 138 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7556,62, 2863,86, 1799,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 356 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7370,02, 189,047, 790,31 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 6 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3393,28, -9018,58, 1092,32 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 46 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_left" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5920,8, -7649,07, 1372,1 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 116 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_left" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1411,54, -9514,42, 1599,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 80 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8661,2, 2527,4, 2180,03 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9842, 6568,17, 2175,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1111,98, 527,838, 2177,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_left" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10270,9, 2025,71, 2203,89 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 171 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_left" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9208,79, 4737,63, 2040,35 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 166 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5043,68, 2250,88, 2384,84 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5356,47, -1325,88, 2194,51 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1188,77, 3058,28, 2923,57 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 264 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2212,19, 2870,7, 2830,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_bend_01" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2317,76, 1036,57, 2862,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 336 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4163,52, -4574,02, 909,17 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 356 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_lg_single" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -11158,4, -7156,55, 1322,75 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 356 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_md_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1975,85, 1571,8, 3549,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1699,46, 1974,64, 3550,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 272 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2064,12, 1471,11, 3547,83 ); + ent.v[ "angles" ] = ( 360, 327, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12000,9, -15308,9, 4389,8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 332 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_xlg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 25323,8, 14531,9, 4119,45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 21 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_bld_crumble_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 244,523, -7888,57, 5098,28 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 157 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_bld_crumble_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5242,37, 2336,9, 4755,06 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 326 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2321,77, 1179,26, 1228,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 336 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2390,81, 1066,62, 1281,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 204 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2547,69, 2656,36, 1280,62 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 268 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3569,18, 903,619, 1278,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 305 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3791,86, 186,275, 1157,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_zmb_highrise_sun" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -809485, -539953, 221553 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_moon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 68697,9, -157016, 150210 ); + ent.v[ "angles" ] = ( 31, 113, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1452,47, 1691,38, 3737,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 298 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1713,63, 1398,64, 3707,18 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 237 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1255,6, 1385,61, 3733,04 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 353 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2115,14, 2098,9, 3525,12 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 180 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1985,15, 1228,08, 3558,29 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 351 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2788,92, 2487,89, 3031,84 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 181 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3051,21, 1055,55, 1240,19 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2936,09, 1613,68, 1618,27 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 356 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2925,32, 1379,21, 1614,31 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 6 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2306,41, -414,808, 1127,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2331,25, -43,3334, 1121,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2466,94, 275,75, 1126,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 150 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2627,32, -227,895, 1120,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2651,92, -267,98, 1299,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2715,99, 220,238, 1303,74 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 151 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2104,64, 364,181, 1305,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2019,41, 2268,25, 3041,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 277 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1801,31, -92,9678, 2704,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 330 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1734,18, 1887,28, 3404,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3256,31, 1580,39, 1328,04 ); + ent.v[ "angles" ] = ( 0, 274, 12 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2352,67, 758,995, 1120,62 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 335 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2749,41, 187, 1296,99 ); + ent.v[ "angles" ] = ( 38,5801, 310,23, -179,832 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 69; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2458,49, -389,29, 1420,89 ); + ent.v[ "angles" ] = ( 17,6406, 150,717, 4,09245 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 12; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_horizon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 89,944, -13457,5, 2203,45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 330 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_horizon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8358,44, 11771, 2424,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 46 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_sm_horizon" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -15394, 449,764, 2112,77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 315 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_lg_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -11972,1, 14833,9, 2407,89 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 349 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_lg_top2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 14784,3, 13721, 2387,97 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 347 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2109,19, 1126,85, 3202,97 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2705,13, 1223,19, 3014,58 ); + ent.v[ "angles" ] = ( 11, 182, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2749,42, 1079,91, 3018,68 ); + ent.v[ "angles" ] = ( 0, 272, 13 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_md_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2316,36, 611,464, 2861,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_haze_int_med" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2465,47, -503,223, 2704,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 330 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3074,99, 303,748, 2872,09 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 18 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3350,41, 1007,86, 3126 ); + ent.v[ "angles" ] = ( 0,190822, 271,019, 12,9983 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2959,2, 1071,99, 1584,12 ); + ent.v[ "angles" ] = ( 0,190823, 271,019, 11,9983 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3384,78, 1012,04, 1680,04 ); + ent.v[ "angles" ] = ( 0,190823, 271,019, 11,9983 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1965,3, 996,418, 1402,92 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2098,97, 830,184, 1284,43 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 109 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2694,02, 1684,57, 1357,74 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 189 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_meteor_lg_top" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -715,213, -4251,6, 2320,43 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 342 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_breath_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1918,86, 532,453, 3321,03 ); + ent.v[ "angles" ] = ( 348,03, 39,1898, 7,34176 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_absorb_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2208,55, 682,084, 2876,98 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 902; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2223,62, 625,375, 3145,55 ); + ent.v[ "angles" ] = ( 277,118, 112,306, -11,3598 ); + ent.v[ "delay" ] = 1,6; + ent.v[ "exploder" ] = 902; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2150,42, 667,116, 3145,98 ); + ent.v[ "angles" ] = ( 277,441, 10,918, -1,13407 ); + ent.v[ "delay" ] = 1,8; + ent.v[ "exploder" ] = 902; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2191,95, 738,555, 3145,98 ); + ent.v[ "angles" ] = ( 276,704, 278,17, 6,16471 ); + ent.v[ "delay" ] = 1,7; + ent.v[ "exploder" ] = 902; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2266,34, 697,975, 3145,98 ); + ent.v[ "angles" ] = ( 277,596, 199,948, -7,9795 ); + ent.v[ "delay" ] = 1,9; + ent.v[ "exploder" ] = 902; + ent = maps/mp/_utility::createexploder( "fx_highrise_sidequest_complete" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2208,55, 682,084, 3289,98 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 903; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1952,4, 2125,58, 3398,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2198,4, 1921,55, 3244,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1608,42, 1630,07, 3226,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2002,86, 1336,04, 3226,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2187,74, 1793,8, 3373,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1625,76, 1113,24, 3373,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_wire_spark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1923,99, 2279,89, 3308,66 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_wire_spark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1887, 2237,51, 3316,22 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_wire_spark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2042,95, 2326,89, 3332,03 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_wire_spark" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1925,14, 2291,73, 3331,91 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1565,87, -517,59, 1427,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1556,66, -532,052, 1427,22 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1494,07, -333,813, 2845,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1465,97, -354,304, 2843,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1506,43, -282,557, 2844,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2286,46, -258,277, 1338,85 ); + ent.v[ "angles" ] = ( 297,779, 286,045, 42,5871 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2334,38, -344,373, 1334,13 ); + ent.v[ "angles" ] = ( 288,7, 265,245, 60,9518 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 500,75, -7715,98, 4930,45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 183 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1034,61, -7566,86, 4920,16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 172 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 793,604, -7873,05, 6300,18 ); + ent.v[ "angles" ] = ( 360, 172, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4974,55, -12499,4, 4144,27 ); + ent.v[ "angles" ] = ( 360, 172, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5141,25, -12654,9, 4243,13 ); + ent.v[ "angles" ] = ( 360, 172, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4784,9, -12900,5, 5414,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 222 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 422,245, -7855,01, 4978,71 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 594,24, -8075,24, 3829,66 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 533,759, -7934,7, 3892,52 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 172 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4824,61, -12909,8, 5325,78 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 359 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4948,76, -12635,6, 4202,86 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 355 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7660,25, -1274,45, 5002,88 ); + ent.v[ "angles" ] = ( 342, 228, 0 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_bld_crumble_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4406,97, 3642,98, 3621,17 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 326 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7681,66, -1588,11, 5146,58 ); + ent.v[ "angles" ] = ( 340,092, 278,077, -7,10236 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7896,63, -2259,78, 5234,29 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 299 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8080,7, -1962,36, 6759,67 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 233 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8022,27, -2422,76, 5241,34 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 30 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8035,48, -2094,06, 6683,01 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 30 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10619, -12056,5, 4815,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 16 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10664,4, -11803, 4670,8 ); + ent.v[ "angles" ] = ( 345, 215, 0 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10941,4, -11896,5, 4532,56 ); + ent.v[ "angles" ] = ( 27,222, 200,347, -6,82065 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5638,88, 2487,48, 4888,77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5537,59, 2599,76, 4889,63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5077,21, -3439,84, 4725,64 ); + ent.v[ "angles" ] = ( 3,01569, 92,1197, -1,59938 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5010,98, -3387,14, 4776,28 ); + ent.v[ "angles" ] = ( 36, 274, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5235,39, 2774,52, 5073,47 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 238 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1866,25, 5580,06, 3870,03 ); + ent.v[ "angles" ] = ( 344,309, 131,366, -3,53595 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1768,48, 5602,07, 3833,98 ); + ent.v[ "angles" ] = ( 7, 27, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1200,82, 5481,87, 3237,64 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 334 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1246,92, 5426,59, 3368 ); + ent.v[ "angles" ] = ( 344,384, 136,516, -4,13286 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4280,09, 10160,2, 4329,69 ); + ent.v[ "angles" ] = ( 50, 42, -3 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4433,3, 10083,5, 5709,05 ); + ent.v[ "angles" ] = ( 352, 181, 8 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4114, 10279,9, 4180,68 ); + ent.v[ "angles" ] = ( 352, 181, 8 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_fire_distant" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -4313,89, 9720,46, 5534,85 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4714,76, 2493,84, 1648,97 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 183 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_right" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4739,57, 1471,74, 1650,95 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 183 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3383,68, 834,141, 1742,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_cloud_sm_bottom" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5043,55, 2601,05, 1715,63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 258 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2352,25, 1617,06, 3361,02 ); + ent.v[ "angles" ] = ( 314, 171, 0 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1337,35, -7436,84, 5055,08 ); + ent.v[ "angles" ] = ( 351, 339, 0 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_smk_plume_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7797,33, -1295,94, 5201,8 ); + ent.v[ "angles" ] = ( 25,4786, 72,6761, -82,8493 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_bld_crumble_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 8862,87, -691,298, 4961,33 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 39 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2420,08, -68,38, 1418,5 ); + ent.v[ "angles" ] = ( 1,00179, 150,2, 1,05802 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2335,79, 668,45, 1297,26 ); + ent.v[ "angles" ] = ( 48,3264, 341,649, -179,643 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 15; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2300,57, 242,033, 1441,06 ); + ent.v[ "angles" ] = ( 35,7756, 248,973, 14,7926 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2454,23, 457,859, 1351,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2268,55, 623,049, 1380,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3064,03, 257,858, 1443,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1930,25, -297,457, 1296,13 ); + ent.v[ "angles" ] = ( 328, 124, 0 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1780,43, 157,226, 1308,13 ); + ent.v[ "angles" ] = ( 322, 138, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1671,64, 1907,73, 3429,92 ); + ent.v[ "angles" ] = ( 297, 210, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1790,95, 1871,1, 3436,84 ); + ent.v[ "angles" ] = ( 297, 210, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1745,13, 1947,4, 3437,16 ); + ent.v[ "angles" ] = ( 297, 210, 0 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_cool_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2022,25, 2127,31, 3399,22 ); + ent.v[ "angles" ] = ( 309,598, 336,39, 8,77238 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1251,71, 1117,82, 3731,79 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 3 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2351,43, 1533,15, 3314,29 ); + ent.v[ "angles" ] = ( 314, 171, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createexploder( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1502,64, 2488,15, 3049,78 ); + ent.v[ "angles" ] = ( 335, 241, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 28; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1793,73, 2728,99, 3178,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2190,42, 2650,2, 3189,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2240,3, 2522,11, 3184,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1578,41, 2731,91, 3185,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2055,04, 2579,59, 3052,44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2058,35, 1104,91, 3066,57 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1914,25, 1584,22, 3072,13 ); + ent.v[ "angles" ] = ( 333,048, 189,653, 1,8324 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1887,19, 1577,48, 3046,13 ); + ent.v[ "angles" ] = ( 327,051, 189,424, 1,94656 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1944, 1917, 3377 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 23; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1116, 2298, 3201 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2013,66, 1980,6, 3046,75 ); + ent.v[ "angles" ] = ( 313,59, 181,264, -172,778 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 26; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1542,89, 1951,23, 3173,63 ); + ent.v[ "angles" ] = ( 326,084, 274,704, -8,09602 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1733,96, 1578,33, 3173,75 ); + ent.v[ "angles" ] = ( 26,3999, 180,221, 0 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1668,67, 2079,96, 3174 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270,2 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2804,27, 1289,79, 2711,14 ); + ent.v[ "angles" ] = ( 19,8618, 15,8454, 179,579 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 18; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1491, 1325, 3346 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1300, 2250, 3349,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1510,18, 2082,19, 3217,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2031,9, 2283,8, 3242,38 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1876,9, 2235,33, 3252,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1584,94, 1558,86, 3374,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1663,65, 1806,64, 3368,18 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1447,13, 2092,95, 3371,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1886,75, 2215,98, 3374,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1959,83, 2149,67, 3372,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1983,27, 1562,68, 3367,09 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2381,82, 1122,82, 3372,03 ); + ent.v[ "angles" ] = ( 0, 274, -57 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1969,61, 1435,29, 3192,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1741,48, 1380,96, 3192,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2200,38, 1819,39, 3051,24 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1689,91, 1358,33, 3052,11 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1961,97, 1571,4, 3561,7 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1650, 2064, 3562 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1940, 1328, 3562 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1851, 1384, 3377 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2036, 1917, 3377 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1265, 1843, 3377 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1297, 2073, 3377 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1884, 2482, 3201 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1850, 2339, 3201 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1850, 2217, 3201 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2092, 2377, 3201 ); + ent.v[ "angles" ] = ( 0, 180, 180 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_mall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2068, 1578, 3369 ); + ent.v[ "angles" ] = ( 356,6, 0, -9,40337 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_mall" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1852, 2018, 3371 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 24; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_mall" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1580, 1430, 3363 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 29,7 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 25; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_mall" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1892, 1578, 3367 ); + ent.v[ "angles" ] = ( 4,99999, 0, 7,39999 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 27; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_mall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1532, 2018, 3368 ); + ent.v[ "angles" ] = ( 355,002, 359,848, 7,60746 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_mall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2012, 2018, 3364 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 19,7 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_lantern_red" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1896,65, 1340,69, 3156,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_lantern_red" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1921,67, 1130,63, 3180,67 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2199,16, -220,508, 1429,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1412,87, -317,377, 1370,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2190,55, 38,0294, 1199,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2136,92, 163,026, 2801,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1822,83, 117,922, 2797,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2073,98, 162,96, 2844,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2501,97, 740,485, 2844,17 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 61 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2380,05, 501,915, 2704,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1958,82, 182,506, 1373,02 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2379,38, 735,746, 1265,35 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 62 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2408,28, 797,57, 1449,82 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 61 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2237,09, 769,693, 1453,12 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 156 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1465,22, 1277,82, 1582,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1657,8, 1289, 1582,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1826,1, 1284,82, 1583,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1966,86, 1212,15, 1583,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1960,06, 1097,5, 1569,73 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2159,83, 846,448, 1604,34 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 107 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1924,86, 616,804, 1611,94 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 149 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2050,99, 1040,36, 1262,44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2680,12, 761,659, 1102,06 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 335 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1298,86, 1009,47, 3545,62 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1336,88, 1010,24, 3711,77 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1693,27, 959,043, 3530,37 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 186 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1997,79, 1055,94, 3322,29 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1996,55, 1061,2, 3529,25 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2341,56, 1105,49, 3428,15 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 257 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3155,15, 1100,68, 3550,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2691,08, 1335,75, 3182,49 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2668,41, 1106,93, 1624,14 ); + ent.v[ "angles" ] = ( 17, 220, 102 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2468,95, 1690,2, 1634,15 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 263 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1877,81, 1000,92, 1412,75 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 267 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2178,88, 651,967, 1461,02 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 116 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1798,07, 429,98, 1281,16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 78 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1831,99, 1263,11, 1573,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 179 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2983,84, 904,311, 1310,93 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 273 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1283,82, 1636,99, 3709,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 311 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1807,44, 1413,16, 3728,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 242 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1881,13, 1606,04, 3729,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 186 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1793,23, 1792,73, 3735,49 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 185 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1773,68, 1672,45, 3727,26 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 175 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1808,83, 1654,44, 3730,23 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 235 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1598,64, 1959,85, 3568,3 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2293,09, 1571,05, 3481,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 184 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2205,1, 2086,23, 3518,15 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 122 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2192,27, 1897,3, 3550,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2189,52, 1765,57, 3403,76 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1595,98, 1131,52, 3374,83 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1753,55, 1598,67, 3549,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2206,62, 1581,68, 3218,61 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2355,97, 1593,8, 3362,9 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 190 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2414,11, 1546,99, 3140,54 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 157 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2412,42, 1645,27, 3113,76 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 211 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2036,6, 2263,32, 3209,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 157 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1366,75, 2463,64, 3199,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 157 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1185,07, 2592,36, 3198,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1280,89, 2331,35, 3198,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1647,71, 2474,42, 3196,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2090,02, 1947,2, 3064,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1184,45, 2643,36, 3050,2 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3348,46, 1819,9, 2144,83 ); + ent.v[ "angles" ] = ( 312, 217, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3728,51, 1721,09, 1590,06 ); + ent.v[ "angles" ] = ( 346,078, 202,818, 1,49289 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3705,99, 1549,6, 1618,51 ); + ent.v[ "angles" ] = ( 351,045, 143,012, 1,31743 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2739,03, 1858,59, 1482,86 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2837,48, 1445,67, 1402,51 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3542,62, 1929,24, 1636,69 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3548,12, 1685,85, 1637,25 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3520,89, 1046,67, 1549,98 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3758,57, 1452,44, 1426,46 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3908,33, 1245,27, 1638,82 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4023,99, 1442,62, 1665,64 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 4172,35, 1511,87, 1780 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 22; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3594,78, 2243,49, 1570,96 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3226,98, 2480,47, 3028,1 ); + ent.v[ "angles" ] = ( 4,99389, 207,012, -158,738 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3226,7, 2191,97, 3028,26 ); + ent.v[ "angles" ] = ( 3,9309, 206,708, -160,564 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3026,51, 1709,73, 2968,03 ); + ent.v[ "angles" ] = ( 277,259, 135,851, -17,0955 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3057,61, 1660,14, 2991,92 ); + ent.v[ "angles" ] = ( 2, 206,4, -179,256 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2615,73, 1685,46, 2986,14 ); + ent.v[ "angles" ] = ( 0, 90, -12 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2635,7, 1792,44, 2993,77 ); + ent.v[ "angles" ] = ( 0,831006, 266,087, 11,9716 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2467,62, 1746,58, 2958,04 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2967,36, 1820,95, 3064,02 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2597,82, 1400,42, 2982,13 ); + ent.v[ "angles" ] = ( 358,342, 82,1724, -11,8865 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2563,95, 1659,66, 2872,03 ); + ent.v[ "angles" ] = ( 18,7394, 109,451, 141,039 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2806,95, 2253,15, 2923,49 ); + ent.v[ "angles" ] = ( 40,9643, 212,62, -140,933 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_tall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3208,36, 2056,22, 2950,64 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_tall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3209,28, 1994,32, 2950,71 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_beam" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2903,99, 1571,61, 2787,13 ); + ent.v[ "angles" ] = ( 81,5036, 99,0796, -140,169 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3444,61, 1688,04, 2910,43 ); + ent.v[ "angles" ] = ( 280, 180, 176 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2592,64, 1844,79, 2648,19 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_tall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2549,11, 1626,02, 2630,58 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2538,1, 2333,24, 2972,01 ); + ent.v[ "angles" ] = ( 0, 91, -12 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2634,33, 2647,39, 2818,6 ); + ent.v[ "angles" ] = ( 0, 271, 11 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_edge_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2619,11, 2630,41, 3171,93 ); + ent.v[ "angles" ] = ( 1,86388, 262,194, 11,8565 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2636,8, 2536,55, 2893,93 ); + ent.v[ "angles" ] = ( 40, 356, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2464,71, 2500,98, 2955,02 ); + ent.v[ "angles" ] = ( 8, 283, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3215,75, 1847,41, 3042,1 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3573,48, 1400,34, 3117,84 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3028,11, 2049,5, 2949,23 ); + ent.v[ "angles" ] = ( 303,859, 245,428, 21,855 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2954,03, 2075,37, 2944,19 ); + ent.v[ "angles" ] = ( 302,055, 255,961, 13,0087 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2992,71, 2049,56, 2942,22 ); + ent.v[ "angles" ] = ( 303,859, 245,428, 21,855 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3078,6, 2667,22, 2944,06 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3336,91, 2371,02, 3002 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2755,36, 2062, 2875,12 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3319,7, 1292,55, 3017,43 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2696,8, 1576,14, 2884,94 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2696,59, 1240,93, 2870,7 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2878,47, 1350,19, 2866,37 ); + ent.v[ "angles" ] = ( 348,007, 357,955, 0,425021 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2630,69, 1758,08, 2863,39 ); + ent.v[ "angles" ] = ( 289,644, 199,455, 66,814 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2716,57, 1720,64, 2865,82 ); + ent.v[ "angles" ] = ( 288,659, 190,807, 74,9859 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3081,57, 2268,88, 3086,73 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3044,25, 2442,17, 3082,37 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3297,04, 1730,78, 3132,54 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3487,61, 1497,85, 3173,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3317,15, 1203,93, 3134,62 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2991,17, 1280,22, 3068,33 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3082,49, 1318,66, 3085,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3098,47, 1578,75, 3090,14 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2634,14, 1467,84, 2668,77 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3317,45, 1767,88, 2824,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2787,9, 1713,16, 2713,49 ); + ent.v[ "angles" ] = ( 0, 270, 16 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2876,07, 1575,63, 3031,39 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_breath_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1147,24, -1392,91, 3321,97 ); + ent.v[ "angles" ] = ( 350,302, 117,825, -10,165 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 901; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2223,62, 625,375, 3145,55 ); + ent.v[ "angles" ] = ( 277,118, 112,306, -11,3598 ); + ent.v[ "delay" ] = 1,6; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2150,42, 667,116, 3145,98 ); + ent.v[ "angles" ] = ( 277,441, 10,918, -1,13407 ); + ent.v[ "delay" ] = 1,8; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2191,95, 738,555, 3145,98 ); + ent.v[ "angles" ] = ( 276,704, 278,17, 6,16471 ); + ent.v[ "delay" ] = 1,7; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_glow_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2266,34, 697,975, 3145,98 ); + ent.v[ "angles" ] = ( 277,596, 199,948, -7,9795 ); + ent.v[ "delay" ] = 1,9; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_highrise_sidequest_complete_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2208,55, 682,084, 3289,98 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1003; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_tower_absorb_ric" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2208,55, 682,084, 2876,98 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 331 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1002; + ent = maps/mp/_utility::createexploder( "fx_highrise_dragon_breath_max" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1899,62, 540,89, 3321,77 ); + ent.v[ "angles" ] = ( 347,645, 99,6825, -6,66593 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1001; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_tiny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3222,28, 1478,04, 3007,25 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_tiny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3222,58, 1440,63, 3006,85 ); + ent.v[ "angles" ] = ( 348, 358,978, 0,212549 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed_tiny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3222,48, 1403,17, 3007,86 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 348 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_build_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3600,67, 1225,37, 3104,76 ); + ent.v[ "angles" ] = ( 11, 180, -180 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2193,95, 2002,36, 3370,71 ); + ent.v[ "angles" ] = ( 332,532, 4,55492, -11,3167 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wal2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1432, 1533, 3346 ); + ent.v[ "angles" ] = ( 90, 301,964, 75,964 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wal2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1859, 1179, 3346 ); + ent.v[ "angles" ] = ( 90, 75,964, 75,963 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wal2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1489, 1112, 3346 ); + ent.v[ "angles" ] = ( 90, 153,435, -26,565 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1487, 1304, 3160 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_edge_100" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2584,43, 1269,03, 2802,3 ); + ent.v[ "angles" ] = ( 348,007, 2,04464, -0,425018 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_lantern_yel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3239,42, 1323,42, 1325,28 ); + ent.v[ "angles" ] = ( 321,37, 357,201, 15,6156 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_lantern_yel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3423,39, 1044,76, 1361,18 ); + ent.v[ "angles" ] = ( 29,3002, 0,63371, -31,6874 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_lantern_yel" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3115,04, 1509,73, 1291,21 ); + ent.v[ "angles" ] = ( 300, 244, 2 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 19; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3654,46, 2101,78, 1586,84 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 12,0252 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3731,35, 1548,45, 1594,73 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 12,0252 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4304,49, 1364,34, 1722,44 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 12,0252 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3833,2, 1131,74, 1635,28 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 12,0252 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3705,37, 1293,27, 1607,74 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 12,0252 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4017,75, 1682,72, 1677,84 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 12,0252 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3513,18, 1777,46, 1385,47 ); + ent.v[ "angles" ] = ( 357,181, 273,973, 33,0252 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3011,3, 1544,56, 1290,37 ); + ent.v[ "angles" ] = ( 357,181, 273,974, -11,9748 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3207,7, 1207,77, 1337,61 ); + ent.v[ "angles" ] = ( 357,181, 273,974, -11,9748 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2833,14, 286,665, 2790,74 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2921,53, 485,156, 2795,59 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2544,51, -730,449, 2776,97 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2566,46, 471,317, 2962,02 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1655,29, -173,601, 2788,43 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1921,23, 1,804, 2788,62 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1535,95, -605,784, 1205,21 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1854,47, -206,391, 1198,72 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_lantern_red" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1956,36, 193,943, 1232,18 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1738,24, 90,4635, 1214,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1485,65, 1540,57, 3399,58 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1463,46, 1288,78, 3397,15 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1259,22, 1070,13, 3410,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1765,28, 1087,43, 3410,44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1766,18, 1712,03, 3571,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1654,98, 2019,46, 3577,66 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2182,6, 1557,06, 3400,09 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1602,86, 1530,88, 3222,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1704,82, 1125,59, 3224,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1899,05, 1970,54, 3221,01 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1363,86, 1872,36, 3222,11 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ceiling_dust_sm_runner" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1458,94, 1657,15, 3380,88 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1337,38, 1026,47, 3711,14 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1637,23, 1803,45, 3402,52 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createexploder( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1503,41, 2486,2, 3047,74 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 28; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1524,83, 2025,97, 3047,16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 354 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1695,5, 1594,28, 3040,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 357 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1709,53, 1747,17, 3043,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 75 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createexploder( "fx_highrise_god_ray_cool_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3069,09, 1315,31, 3074,5 ); + ent.v[ "angles" ] = ( 73,8317, 162,315, 152,562 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 18; + ent = maps/mp/_utility::createexploder( "fx_highrise_god_ray_cool_md" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2998,64, 1446,27, 3074,65 ); + ent.v[ "angles" ] = ( 73,4575, 221,539, -150,225 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 18; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3303,9, 1526,44, 3011,21 ); + ent.v[ "angles" ] = ( 355, 270,088, -1,00244 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_god_ray_cool_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2679,84, 1805,5, 2876,87 ); + ent.v[ "angles" ] = ( 296,261, 213,47, 53,6678 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3517,86, 1484,69, 3037,26 ); + ent.v[ "angles" ] = ( 358, 270,035, -1 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2570,9, 1409,15, 3105,96 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 76 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2548,95, 1413,6, 3104,49 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_point_crumble_ext" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2708,6, 1426,81, 3010,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 91 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3070,14, 1387,29, 2901,64 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 324 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1887,95, 2601,71, 3079,12 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1924,07, 2594,16, 3051,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1889,12, 2640,49, 3079,11 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1895,27, 2497,53, 3092 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1847,81, 2514, 3042 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2079,36, 2330,44, 3083,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2855, 1575,13, 2951,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2836,25, 1476,09, 2889,67 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3408,4, 1724,81, 2870,78 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3308,16, 1796,09, 2137,05 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_ash_rising_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3926,66, 1843,34, 2284,8 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3691,42, 1435,88, 1445,93 ); + ent.v[ "angles" ] = ( 290, 180, 180 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3728,29, 1439,72, 1448,04 ); + ent.v[ "angles" ] = ( 290, 180, 180 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3227,45, 1301,67, 1336,88 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1749,81, -161,746, 2880,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1797,26, -157,369, 2880,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2620,55, 520,277, 3050,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2843,22, 306,648, 3040,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2676,16, 282,999, 2895,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2593,87, -511,697, 2885,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1407,57, -465,3, 2704,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1408,65, -457,887, 2735,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2560,5, -705,708, 2741,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2716,95, 500,098, 2712,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2126,64, 191,041, 2744,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2105,6, 183,397, 2791,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1853,52, -159,018, 2733,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2105,87, 490,816, 2737,94 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2108,57, 484,478, 2767,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2214,35, 398,459, 2732,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1841,72, -696,837, 1442,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1797,24, -774,835, 1455,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1796,43, -107,169, 1455,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1645,46, -293,835, 1455,88 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1787,7, -102,926, 1397,01 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1829,45, -163,244, 1331,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1717,33, -569,234, 1327,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2299,73, -311,967, 1341,57 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_build_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2374,76, -319,422, 1222,82 ); + ent.v[ "angles" ] = ( 0, 241, 20 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_build_lamp" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3599,9, 1175,49, 3106,71 ); + ent.v[ "angles" ] = ( 11, 180, -180 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_sconce_glow" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 3541,54, 1399,8, 1636,2 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 21; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2012,42, 1347,3, 1532,28 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1490, 1270, 2111 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3176,1, 2190,87, 2527,66 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2673,41, 421, 1251,5 ); + ent.v[ "angles" ] = ( 1,00179, 60,2, 1,05802 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2208,23, 518, 1247,5 ); + ent.v[ "angles" ] = ( 1,00179, 60,2, 1,05802 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2088, 234,23, 1419,5 ); + ent.v[ "angles" ] = ( 1,00179, 150,2, 1,05802 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2707,23, 748,23, 1253,14 ); + ent.v[ "angles" ] = ( 28,2045, 55,6718, -17,8869 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2436, -289, 2838 ); + ent.v[ "angles" ] = ( 357,168, 327,961, 1,49371 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2672,31, -228,43, 2825,07 ); + ent.v[ "angles" ] = ( 324,396, 327,426, 4,03309 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 17; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1867,08, -126,5, 2825,5 ); + ent.v[ "angles" ] = ( 1,00179, 60, 1,05802 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1445,46, -535,1, 2845,35 ); + ent.v[ "angles" ] = ( 338,7, 63,6553, -7,41061 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2432,53, 260,46, 2838,18 ); + ent.v[ "angles" ] = ( 29,9493, 328,321, -3,83146 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2457,14, 556, 2883,48 ); + ent.v[ "angles" ] = ( 304,4, 180, 180 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2815, 497, 2996 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1874,15, 1546,99, 1532,04 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1598,59, 1546,6, 1531,72 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1384,83, 1209,33, 1892,45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2007,63, 1346,43, 1892,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2799,48, 545,947, 3095,23 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2123,63, 515,78, 2801 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 240 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2374,03, 676,13, 2974 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 150 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1671,34, 278,75, 1414,9 ); + ent.v[ "angles" ] = ( 42,0435, 154,841, 10,9704 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 13; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1457,92, -411,62, 1255,5 ); + ent.v[ "angles" ] = ( 1,00179, 330,2, 1,05802 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 14; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2630,67, -137,02, 1251,24 ); + ent.v[ "angles" ] = ( 31,6559, 150,193, -0,919528 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 16; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_bulb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3746,12, 1924,82, 1432,95 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4007,23, 1848,55, 2317 ); + ent.v[ "angles" ] = ( 326,505, 277,849, -93,3464 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3929,63, 1868,95, 2893 ); + ent.v[ "angles" ] = ( 311,657, 154,584, 17,5664 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1410,58, 1112,11, 1511,13 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_water_drip_fast" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1432,67, 1116, 1511,4 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1678, 1163, 1584 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3056,85, 349,04, 1251,07 ); + ent.v[ "angles" ] = ( 1,00179, 60,2, 1,05802 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_recessed" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3799,43, 1406,53, 1434,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 343,9 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createexploder( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1407,3, 2289,71, 3169,82 ); + ent.v[ "angles" ] = ( 16,5044, 175,086, -17,483 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 28; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1658,06, 267,17, 1208,98 ); + ent.v[ "angles" ] = ( 5,77029, 330,51, 10,08 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2677,81, -215,77, 1419,49 ); + ent.v[ "angles" ] = ( 2,42953, 330,171, -1,39235 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1674,98, -546,49, 1419,41 ); + ent.v[ "angles" ] = ( 11,7655, 152,791, 6,45455 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1559,83, -450,2, 1256,2 ); + ent.v[ "angles" ] = ( 329,098, 330,754, 4,30758 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2032,62, -308,08, 1258,5 ); + ent.v[ "angles" ] = ( 1,00179, 60,2, 1,05802 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_highrise_light_fluorescent_wal2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2816,01, 1601,82, 2893,92 ); + ent.v[ "angles" ] = ( 316,44, 273,037, -2,090482 ); + ent.v[ "delay" ] = -92; +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_equip_springpad.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_equip_springpad.gsc new file mode 100644 index 0000000..a857131 --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_equip_springpad.gsc @@ -0,0 +1,592 @@ +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_power; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +#using_animtree( "zombie_springpad" ); + +init( pickupstring, howtostring ) +{ + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_springpad_zm" ) ) + { + return; + } + level.springpad_name = "equip_springpad_zm"; + init_animtree(); + maps/mp/zombies/_zm_equipment::register_equipment( "equip_springpad_zm", pickupstring, howtostring, "zom_hud_trample_steam_complete", "springpad", undefined, ::transferspringpad, ::dropspringpad, ::pickupspringpad, ::placespringpad ); + maps/mp/zombies/_zm_equipment::add_placeable_equipment( "equip_springpad_zm", "p6_anim_zm_buildable_view_tramplesteam" ); + level thread onplayerconnect(); + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "equip_springpad", pickupstring ); + level._effect[ "springpade_on" ] = loadfx( "maps/zombie_highrise/fx_highrise_trmpl_steam_os" ); + if ( -1 ) + { + setdvar( "player_useRadius_zm", 96 ); + } + thread wait_init_damage(); +} + +wait_init_damage() +{ + while ( !isDefined( level.zombie_vars ) || !isDefined( level.zombie_vars[ "zombie_health_start" ] ) ) + { + wait 1; + } + level.springpad_damage = maps/mp/zombies/_zm::ai_zombie_health( 50 ); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + self thread setupwatchers(); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchspringpaduse(); + } +} + +setupwatchers() +{ + self waittill( "weapon_watchers_created" ); + watcher = maps/mp/gametypes_zm/_weaponobjects::getweaponobjectwatcher( "equip_springpad" ); + watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_equipment::equipment_onspawnretrievableweaponobject; +} + +watchspringpaduse() +{ + self notify( "watchSpringPadUse" ); + self endon( "watchSpringPadUse" ); + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "equipment_placed", weapon, weapname ); + if ( weapname == level.springpad_name ) + { + self cleanupoldspringpad(); + self.buildablespringpad = weapon; + self thread startspringpaddeploy( weapon ); + } + } +} + +cleanupoldspringpad() +{ + if ( isDefined( self.buildablespringpad ) ) + { + if ( isDefined( self.buildablespringpad.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.buildablespringpad.stub ); + self.buildablespringpad.stub = undefined; + } + self.buildablespringpad delete(); + self.springpad_kills = undefined; + } + if ( isDefined( level.springpad_sound_ent ) ) + { + level.springpad_sound_ent delete(); + level.springpad_sound_ent = undefined; + } +} + +watchforcleanup() +{ + self notify( "springpad_cleanup" ); + self endon( "springpad_cleanup" ); + self waittill_any( "death", "disconnect", "equip_springpad_zm_taken", "equip_springpad_zm_pickup" ); + cleanupoldspringpad(); +} + +placespringpad( origin, angles ) +{ + item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "p6_anim_zm_buildable_tramplesteam", "equip_springpad_zm", origin, angles, 96, -32 ); + if ( isDefined( item ) ) + { + item.springpad_kills = self.springpad_kills; + item.requires_pickup = 1; + item.zombie_attack_callback = ::springpad_add_fling_ent; + } + self.springpad_kills = undefined; + return item; +} + +dropspringpad() +{ + item = self maps/mp/zombies/_zm_equipment::dropped_equipment_think( "p6_anim_zm_buildable_tramplesteam", "equip_springpad_zm", self.origin, self.angles, 96, -32 ); + if ( isDefined( item ) ) + { + item.springpad_kills = self.springpad_kills; + item.requires_pickup = 1; + } + self.springpad_kills = undefined; + return item; +} + +pickupspringpad( item ) +{ + self.springpad_kills = item.springpad_kills; + item.springpad_kills = undefined; +} + +transferspringpad( fromplayer, toplayer ) +{ + buildablespringpad = toplayer.buildablespringpad; + toarmed = 0; + if ( isDefined( buildablespringpad ) ) + { + if ( isDefined( buildablespringpad.is_armed ) ) + { + toarmed = buildablespringpad.is_armed; + } + } + springpad_kills = toplayer.springpad_kills; + fromarmed = 0; + if ( isDefined( fromplayer.buildablespringpad ) ) + { + if ( isDefined( fromplayer.buildablespringpad.is_armed ) ) + { + fromarmed = fromplayer.buildablespringpad.is_armed; + } + } + toplayer.buildablespringpad = fromplayer.buildablespringpad; + toplayer.buildablespringpad.original_owner = toplayer; + toplayer.buildablespringpad.owner = toplayer; + toplayer notify( "equip_springpad_zm_taken" ); + toplayer.springpad_kills = fromplayer.springpad_kills; + toplayer thread startspringpaddeploy( toplayer.buildablespringpad, fromarmed ); + fromplayer.buildablespringpad = buildablespringpad; + fromplayer.springpad_kills = springpad_kills; + fromplayer notify( "equip_springpad_zm_taken" ); + if ( isDefined( fromplayer.buildablespringpad ) ) + { + fromplayer thread startspringpaddeploy( fromplayer.buildablespringpad, toarmed ); + fromplayer.buildablespringpad.original_owner = fromplayer; + fromplayer.buildablespringpad.owner = fromplayer; + } + else + { + fromplayer maps/mp/zombies/_zm_equipment::equipment_release( "equip_springpad_zm" ); + } +} + +springpad_in_range( delta, origin, radius ) +{ + if ( distancesquared( self.target.origin, origin ) < ( radius * radius ) ) + { + return 1; + } + return 0; +} + +springpad_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: trap on\n" ); +#/ + if ( !isDefined( self.target ) ) + { + return; + } + self.target.power_on = 1; + self.target.power_on_time = getTime(); +} + +springpad_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: trap off\n" ); +#/ + if ( !isDefined( self.target ) ) + { + return; + } + self.target.power_on = 0; +} + +startspringpaddeploy( weapon, armed ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + self thread watchforcleanup(); + electricradius = 45; + if ( isDefined( self.springpad_kills ) ) + { + weapon.springpad_kills = self.springpad_kills; + self.springpad_kills = undefined; + } + if ( !isDefined( weapon.springpad_kills ) ) + { + weapon.springpad_kills = 0; + } + if ( isDefined( weapon ) ) + { +/# + weapon thread debugspringpad( electricradius ); +#/ + if ( isDefined( level.equipment_springpad_needs_power ) && level.equipment_springpad_needs_power ) + { + weapon.power_on = 0; + maps/mp/zombies/_zm_power::add_temp_powered_item( ::springpad_power_on, ::springpad_power_off, ::springpad_in_range, ::maps/mp/zombies/_zm_power::cost_high, 1, weapon.power_on, weapon ); + } + else + { + weapon.power_on = 1; + } + if ( !weapon.power_on ) + { + self iprintlnbold( &"ZOMBIE_NEED_LOCAL_POWER" ); + } + self thread springpadthink( weapon, electricradius, armed ); + if ( isDefined( level.equipment_springpad_needs_power ) && !level.equipment_springpad_needs_power ) + { + } + self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( weapon ); + weapon waittill( "death" ); + if ( isDefined( level.springpad_sound_ent ) ) + { + level.springpad_sound_ent playsound( "wpn_zmb_electrap_stop" ); + level.springpad_sound_ent delete(); + level.springpad_sound_ent = undefined; + } + self notify( "springpad_cleanup" ); + } +} + +init_animtree() +{ + scriptmodelsuseanimtree( -1 ); +} + +springpad_animate( weapon, armed ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + weapon endon( "death" ); + weapon useanimtree( -1 ); + f_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset_zombie ); + r_animlength = getanimlength( %o_zombie_buildable_tramplesteam_reset ); + l_animlength = getanimlength( %o_zombie_buildable_tramplesteam_launch ); + weapon thread springpad_audio(); + prearmed = 0; + if ( isDefined( armed ) && armed ) + { + prearmed = 1; + } + fast_reset = 0; + while ( isDefined( weapon ) ) + { + if ( !prearmed ) + { + if ( fast_reset ) + { + weapon setanim( %o_zombie_buildable_tramplesteam_reset_zombie ); + weapon thread playspringpadresetaudio( f_animlength ); + wait f_animlength; + } + else + { + weapon setanim( %o_zombie_buildable_tramplesteam_reset ); + weapon thread playspringpadresetaudio( r_animlength ); + wait r_animlength; + } + } + else + { + wait 0,05; + } + prearmed = 0; + weapon notify( "armed" ); + fast_reset = 0; + if ( isDefined( weapon ) ) + { + weapon setanim( %o_zombie_buildable_tramplesteam_compressed_idle ); + weapon waittill( "fling", fast ); + fast_reset = fast; + } + if ( isDefined( weapon ) ) + { + weapon setanim( %o_zombie_buildable_tramplesteam_launch ); + wait l_animlength; + } + } +} + +playspringpadresetaudio( time ) +{ + self endon( "springpadAudioCleanup" ); + ent = spawn( "script_origin", self.origin ); + ent playloopsound( "zmb_highrise_launcher_reset_loop" ); + self thread deleteentwhensounddone( time, ent ); + self waittill( "death" ); + ent delete(); +} + +deleteentwhensounddone( time, ent ) +{ + self endon( "death" ); + wait time; + self notify( "springpadAudioCleanup" ); + ent delete(); +} + +springpad_audio() +{ + loop_ent = spawn( "script_origin", self.origin ); + loop_ent playloopsound( "zmb_highrise_launcher_loop" ); + self waittill( "death" ); + loop_ent delete(); +} + +springpad_fx( weapon ) +{ + weapon endon( "death" ); + self endon( "equip_springpad_zm_taken" ); + while ( isDefined( weapon ) ) + { + playfxontag( level._effect[ "springpade_on" ], weapon, "tag_origin" ); + wait 1; + } +} + +springpadthink( weapon, electricradius, armed ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + weapon endon( "death" ); + radiussquared = electricradius * electricradius; + trigger = spawn( "trigger_box", weapon getcentroid(), 1, 48, 48, 32 ); + trigger.origin += anglesToForward( flat_angle( weapon.angles ) ) * -15; + trigger.angles = weapon.angles; + trigger enablelinkto(); + trigger linkto( weapon ); + weapon.trigger = trigger; +/# + trigger.extent = ( 24, 24, 16 ); +#/ + weapon thread springpadthinkcleanup( trigger ); + direction_forward = anglesToForward( flat_angle( weapon.angles ) + vectorScale( ( 0, 0, 1 ), 60 ) ); + direction_vector = vectorScale( direction_forward, 1024 ); + direction_origin = weapon.origin + direction_vector; + home_angles = weapon.angles; + weapon.is_armed = 0; + self thread springpad_fx( weapon ); + self thread springpad_animate( weapon, armed ); + weapon waittill( "armed" ); + weapon.is_armed = 1; + weapon.fling_targets = []; + self thread targeting_thread( weapon, trigger ); + while ( isDefined( weapon ) ) + { + wait_for_targets( weapon ); + if ( isDefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 ) + { + weapon notify( "fling" ); + weapon.is_armed = 0; + weapon.zombies_only = 1; + _a520 = weapon.fling_targets; + _k520 = getFirstArrayKey( _a520 ); + while ( isDefined( _k520 ) ) + { + ent = _a520[ _k520 ]; + if ( isplayer( ent ) ) + { + ent thread player_fling( weapon.origin + vectorScale( ( 0, 0, 1 ), 30 ), weapon.angles, direction_vector ); + } + else + { + if ( isDefined( ent ) ) + { + if ( !isDefined( self.num_zombies_flung ) ) + { + self.num_zombies_flung = 0; + } + self.num_zombies_flung++; + self notify( "zombie_flung" ); + if ( !isDefined( weapon.fling_scaler ) ) + { + weapon.fling_scaler = 1; + } + if ( isDefined( weapon.direction_vec_override ) ) + { + direction_vector = weapon.direction_vec_override; + } + ent dodamage( ent.health + 666, ent.origin ); + ent startragdoll(); + ent launchragdoll( ( direction_vector / 4 ) * weapon.fling_scaler ); + weapon.springpad_kills++; + } + } + _k520 = getNextArrayKey( _a520, _k520 ); + } + if ( weapon.springpad_kills >= 28 ) + { + self thread springpad_expired( weapon ); + } + weapon.fling_targets = []; + weapon waittill( "armed" ); + weapon.is_armed = 1; + continue; + } + else + { + wait 0,1; + } + } +} + +wait_for_targets( weapon ) +{ + weapon endon( "hi_priority_target" ); + while ( isDefined( weapon ) ) + { + if ( isDefined( weapon.fling_targets ) && weapon.fling_targets.size > 0 ) + { + wait 0,15; + return; + } + wait 0,05; + } +} + +targeting_thread( weapon, trigger ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_springpad_zm_taken" ); + weapon endon( "death" ); + weapon.zombies_only = 1; + while ( isDefined( weapon ) ) + { + if ( weapon.is_armed ) + { + zombies = getaiarray( level.zombie_team ); + _a594 = zombies; + _k594 = getFirstArrayKey( _a594 ); + while ( isDefined( _k594 ) ) + { + zombie = _a594[ _k594 ]; + if ( !isDefined( zombie ) || !isalive( zombie ) ) + { + } + else + { + if ( isDefined( zombie.ignore_spring_pad ) && zombie.ignore_spring_pad ) + { + break; + } + else + { + if ( zombie istouching( trigger ) ) + { + weapon springpad_add_fling_ent( zombie ); + } + } + } + _k594 = getNextArrayKey( _a594, _k594 ); + } + players = get_players(); + _a622 = players; + _k622 = getFirstArrayKey( _a622 ); + while ( isDefined( _k622 ) ) + { + player = _a622[ _k622 ]; + if ( is_player_valid( player ) && player istouching( trigger ) ) + { + weapon springpad_add_fling_ent( player ); + weapon.zombies_only = 0; + } + _k622 = getNextArrayKey( _a622, _k622 ); + } + if ( !weapon.zombies_only ) + { + weapon notify( "hi_priority_target" ); + } + } + wait 0,05; + } +} + +springpad_add_fling_ent( ent ) +{ + self.fling_targets = add_to_array( self.fling_targets, ent, 0 ); +} + +springpad_expired( weapon ) +{ + weapon maps/mp/zombies/_zm_equipment::dropped_equipment_destroy( 1 ); + self maps/mp/zombies/_zm_equipment::equipment_release( "equip_springpad_zm" ); + self.springpad_kills = 0; +} + +player_fling( origin, angles, velocity ) +{ + torigin = ( self.origin[ 0 ], self.origin[ 1 ], origin[ 2 ] ); + self setorigin( ( origin + torigin ) * 0,5 ); + wait_network_frame(); + self setvelocity( velocity ); +} + +springpadthinkcleanup( trigger ) +{ + self waittill( "death" ); + if ( isDefined( trigger ) ) + { + trigger delete(); + } +} + +debugspringpad( radius ) +{ +/# + color_armed = ( 0, 0, 1 ); + color_unarmed = vectorScale( ( 0, 0, 1 ), 0,65 ); + while ( isDefined( self ) ) + { + if ( getDvarInt( #"EB512CB7" ) ) + { + if ( isDefined( self.trigger ) ) + { + color = color_unarmed; + if ( isDefined( self.is_armed ) && self.is_armed ) + { + color = color_armed; + } + vec = self.trigger.extent; + box( self.trigger.origin, vec * -1, vec, self.trigger.angles[ 1 ], color, 1, 0, 1 ); + } + color = ( 0, 0, 1 ); + text = ""; + if ( isDefined( self.springpad_kills ) ) + { + text = "" + self.springpad_kills + ""; + } + else + { + if ( isDefined( self.owner.springpad_kills ) ) + { + text = "[" + self.owner.springpad_kills + "]"; + } + } + print3d( self.origin + vectorScale( ( 0, 0, 1 ), 30 ), text, color, 1, 0,5, 1 ); + } + wait 0,05; +#/ + } +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_melee_weapon.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_melee_weapon.gsc new file mode 100644 index 0000000..fc1ef72 --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_melee_weapon.gsc @@ -0,0 +1,556 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + precacheitem( weapon_name ); + precacheitem( flourish_weapon_name ); + add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon ); + melee_weapon_triggers = getentarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_weapon_triggers.size ) + { + knife_model = getent( melee_weapon_triggers[ i ].target, "targetname" ); + if ( isDefined( knife_model ) ) + { + knife_model hide(); + } + melee_weapon_triggers[ i ] thread melee_weapon_think( weapon_name, cost, has_weapon, give_weapon, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ); + melee_weapon_triggers[ i ] sethintstring( hint_string, cost ); + melee_weapon_triggers[ i ] setcursorhint( "HINT_NOICON" ); + melee_weapon_triggers[ i ] usetriggerrequirelookat(); + i++; + } + melee_weapon_structs = getstructarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_weapon_structs.size ) + { + prepare_stub( melee_weapon_structs[ i ].trigger_stub, weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ); + i++; + } + register_melee_weapon_for_level( weapon_name ); + if ( !isDefined( level.ballistic_weapon_name ) ) + { + level.ballistic_weapon_name = []; + } + level.ballistic_weapon_name[ weapon_name ] = ballistic_weapon_name; + if ( !isDefined( level.ballistic_upgraded_weapon_name ) ) + { + level.ballistic_upgraded_weapon_name = []; + } + level.ballistic_upgraded_weapon_name[ weapon_name ] = ballistic_upgraded_weapon_name; +} + +prepare_stub( stub, weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + if ( isDefined( stub ) ) + { + stub.hint_string = hint_string; + stub.cost = cost; + stub.weapon_name = weapon_name; + stub.has_weapon = has_weapon; + stub.give_weapon = give_weapon; + stub.take_weapon = take_weapon; + stub.vo_dialog_id = vo_dialog_id; + stub.flourish_weapon_name = flourish_weapon_name; + stub.ballistic_weapon_name = ballistic_weapon_name; + stub.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name; + stub.trigger_func = ::melee_weapon_think; + stub.flourish_fn = flourish_fn; + } +} + +add_stub( stub, weapon_name ) +{ + melee_weapon = undefined; + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( level._melee_weapons[ i ].weapon_name == weapon_name ) + { + melee_weapon = level._melee_weapons[ i ]; + break; + } + else + { + i++; + } + } + if ( isDefined( stub ) && isDefined( melee_weapon ) ) + { + prepare_stub( stub, melee_weapon.weapon_name, melee_weapon.flourish_weapon_name, melee_weapon.ballistic_weapon_name, melee_weapon.ballistic_upgraded_weapon_name, melee_weapon.cost, melee_weapon.wallbuy_targetname, melee_weapon.hint_string, melee_weapon.vo_dialog_id, melee_weapon.has_weapon, melee_weapon.give_weapon, melee_weapon.take_weapon, melee_weapon.flourish_fn ); + } +} + +give_melee_weapon_by_name( weapon_name ) +{ + melee_weapon = undefined; + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( level._melee_weapons[ i ].weapon_name == weapon_name ) + { + melee_weapon = level._melee_weapons[ i ]; + break; + } + else + { + i++; + } + } + if ( isDefined( melee_weapon ) ) + { + self thread give_melee_weapon( melee_weapon.vo_dialog_id, melee_weapon.flourish_weapon_name, melee_weapon.weapon_name, melee_weapon.ballistic_weapon_name, melee_weapon.ballistic_upgraded_weapon_name, melee_weapon.give_weapon, melee_weapon.flourish_fn, undefined ); + } +} + +add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + melee_weapon = spawnstruct(); + melee_weapon.weapon_name = weapon_name; + melee_weapon.flourish_weapon_name = flourish_weapon_name; + melee_weapon.ballistic_weapon_name = ballistic_weapon_name; + melee_weapon.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name; + melee_weapon.cost = cost; + melee_weapon.wallbuy_targetname = wallbuy_targetname; + melee_weapon.hint_string = hint_string; + melee_weapon.vo_dialog_id = vo_dialog_id; + melee_weapon.has_weapon = has_weapon; + melee_weapon.give_weapon = give_weapon; + melee_weapon.take_weapon = take_weapon; + melee_weapon.flourish_fn = flourish_fn; + if ( !isDefined( level._melee_weapons ) ) + { + level._melee_weapons = []; + } + level._melee_weapons[ level._melee_weapons.size ] = melee_weapon; +} + +spectator_respawn_all() +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self [[ level._melee_weapons[ i ].take_weapon ]](); + i++; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + self spectator_respawn( level._melee_weapons[ i ].wallbuy_targetname, level._melee_weapons[ i ].take_weapon, level._melee_weapons[ i ].has_weapon ); + i++; + } +} + +spectator_respawn( wallbuy_targetname, take_weapon, has_weapon ) +{ + melee_triggers = getentarray( wallbuy_targetname, "targetname" ); + players = get_players(); + i = 0; + while ( i < melee_triggers.size ) + { + melee_triggers[ i ] setvisibletoall(); + while ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + j = 0; + while ( j < players.size ) + { + if ( players[ j ] [[ has_weapon ]]() ) + { + melee_triggers[ i ] setinvisibletoplayer( players[ j ] ); + } + j++; + } + } + i++; + } +} + +trigger_hide_all() +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self trigger_hide( level._melee_weapons[ i ].wallbuy_targetname ); + i++; + } +} + +trigger_hide( wallbuy_targetname ) +{ + melee_triggers = getentarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_triggers.size ) + { + melee_triggers[ i ] setinvisibletoplayer( self ); + i++; + } +} + +has_any_ballistic_knife() +{ + if ( self hasweapon( "knife_ballistic_zm" ) ) + { + return 1; + } + if ( self hasweapon( "knife_ballistic_upgraded_zm" ) ) + { + return 1; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( self hasweapon( level._melee_weapons[ i ].ballistic_weapon_name ) ) + { + return 1; + } + if ( self hasweapon( level._melee_weapons[ i ].ballistic_upgraded_weapon_name ) ) + { + return 1; + } + i++; + } + return 0; +} + +has_upgraded_ballistic_knife() +{ + if ( self hasweapon( "knife_ballistic_upgraded_zm" ) ) + { + return 1; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( self hasweapon( level._melee_weapons[ i ].ballistic_upgraded_weapon_name ) ) + { + return 1; + } + i++; + } + return 0; +} + +give_ballistic_knife( weapon_string, upgraded ) +{ + current_melee_weapon = self get_player_melee_weapon(); + if ( isDefined( current_melee_weapon ) ) + { + if ( upgraded && isDefined( level.ballistic_upgraded_weapon_name ) && isDefined( level.ballistic_upgraded_weapon_name[ current_melee_weapon ] ) ) + { + weapon_string = level.ballistic_upgraded_weapon_name[ current_melee_weapon ]; + } + if ( !upgraded && isDefined( level.ballistic_weapon_name ) && isDefined( level.ballistic_weapon_name[ current_melee_weapon ] ) ) + { + weapon_string = level.ballistic_weapon_name[ current_melee_weapon ]; + } + } + return weapon_string; +} + +change_melee_weapon( weapon_name, current_weapon ) +{ + current_melee_weapon = self get_player_melee_weapon(); + if ( isDefined( current_melee_weapon ) ) + { + self takeweapon( current_melee_weapon ); + unacquire_weapon_toggle( current_melee_weapon ); + } + self set_player_melee_weapon( weapon_name ); + had_ballistic = 0; + had_ballistic_upgraded = 0; + ballistic_was_primary = 0; + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + primary_weapon = primaryweapons[ i ]; + if ( issubstr( primary_weapon, "knife_ballistic_" ) ) + { + had_ballistic = 1; + if ( primary_weapon == current_weapon ) + { + ballistic_was_primary = 1; + } + self notify( "zmb_lost_knife" ); + self takeweapon( primary_weapon ); + unacquire_weapon_toggle( primary_weapon ); + if ( issubstr( primary_weapon, "upgraded" ) ) + { + had_ballistic_upgraded = 1; + } + } + i++; + } + if ( had_ballistic ) + { + if ( had_ballistic_upgraded ) + { + new_ballistic = level.ballistic_upgraded_weapon_name[ weapon_name ]; + if ( ballistic_was_primary ) + { + current_weapon = new_ballistic; + } + self giveweapon( new_ballistic, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( new_ballistic ) ); + } + else + { + new_ballistic = level.ballistic_weapon_name[ weapon_name ]; + if ( ballistic_was_primary ) + { + current_weapon = new_ballistic; + } + self giveweapon( new_ballistic, 0 ); + } + } + return current_weapon; +} + +melee_weapon_think( weapon_name, cost, has_weapon, give_weapon, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ) +{ + self.first_time_triggered = 0; + while ( isDefined( self.stub ) ) + { + self endon( "kill_trigger" ); + if ( isDefined( self.stub.first_time_triggered ) ) + { + self.first_time_triggered = self.stub.first_time_triggered; + } + weapon_name = self.stub.weapon_name; + cost = self.stub.cost; + has_weapon = self.stub.has_weapon; + give_weapon = self.stub.give_weapon; + flourish_fn = self.stub.flourish_fn; + vo_dialog_id = self.stub.vo_dialog_id; + flourish_weapon_name = self.stub.flourish_weapon_name; + ballistic_weapon_name = self.stub.ballistic_weapon_name; + ballistic_upgraded_weapon_name = self.stub.ballistic_upgraded_weapon_name; + players = getplayers(); + while ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + i = 0; + while ( i < players.size ) + { + if ( players[ i ] [[ has_weapon ]]() ) + { + self setinvisibletoplayer( players[ i ] ); + } + i++; + } + } + } + for ( ;; ) + { + self waittill( "trigger", player ); + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + continue; + } + else if ( player in_revive_trigger() ) + { + wait 0,1; + continue; + } + else if ( player isthrowinggrenade() ) + { + wait 0,1; + continue; + } + else if ( player.is_drinking > 0 ) + { + wait 0,1; + continue; + } + else if ( player hasweapon( weapon_name ) || player has_powerup_weapon() ) + { + wait 0,1; + continue; + } + else + { + if ( player isswitchingweapons() ) + { + wait 0,1; + break; + } + else current_weapon = player getcurrentweapon(); + if ( !is_placeable_mine( current_weapon ) || is_equipment( current_weapon ) && player has_powerup_weapon() ) + { + wait 0,1; + break; + } + else + { + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( player.intermission ) && player.intermission ) + { + wait 0,1; + break; + } + else + { + player_has_weapon = player [[ has_weapon ]](); + if ( !player_has_weapon ) + { + if ( player.score >= cost ) + { + if ( self.first_time_triggered == 0 ) + { + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread melee_weapon_show( player ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.first_time_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.first_time_triggered = 1; + } + } + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, cost, weapon_name, self.origin, "weapon" ); + player thread give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, give_weapon, flourish_fn, self ); + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon", undefined, 1 ); + } + break; + } + else + { + if ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + self setinvisibletoplayer( player ); + } + } + } + } + } + } +} + +melee_weapon_show( player ) +{ + player_angles = vectorToAngle( player.origin - self.origin ); + player_yaw = player_angles[ 1 ]; + weapon_yaw = self.angles[ 1 ]; + yaw_diff = angleClamp180( player_yaw - weapon_yaw ); + if ( yaw_diff > 0 ) + { + yaw = weapon_yaw - 90; + } + else + { + yaw = weapon_yaw + 90; + } + self.og_origin = self.origin; + self.origin += anglesToForward( ( 0, yaw, 0 ) ) * 8; + wait 0,05; + self show(); + play_sound_at_pos( "weapon_show", self.origin, self ); + time = 1; + self moveto( self.og_origin, time ); +} + +give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, give_weapon, flourish_fn, trigger ) +{ + if ( isDefined( flourish_fn ) ) + { + self thread [[ flourish_fn ]](); + } + gun = self do_melee_weapon_flourish_begin( flourish_weapon_name ); + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", vo_dialog_id ); + self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" ); + self do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ); + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + return; + } + self [[ give_weapon ]](); + if ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + if ( isDefined( trigger ) ) + { + trigger setinvisibletoplayer( self ); + } + self trigger_hide_all(); + } +} + +do_melee_weapon_flourish_begin( flourish_weapon_name ) +{ + self increment_is_drinking(); + self disable_player_move_states( 1 ); + gun = self getcurrentweapon(); + weapon = flourish_weapon_name; + self giveweapon( weapon ); + self switchtoweapon( weapon ); + return gun; +} + +do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ) +{ +/# + assert( !is_zombie_perk_bottle( gun ) ); +#/ +/# + assert( gun != level.revive_tool ); +#/ + self enable_player_move_states(); + weapon = flourish_weapon_name; + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + self takeweapon( weapon ); + self.lastactiveweapon = "none"; + return; + } + self takeweapon( weapon ); + self giveweapon( weapon_name ); + gun = change_melee_weapon( weapon_name, gun ); + if ( self hasweapon( "knife_zm" ) ) + { + self takeweapon( "knife_zm" ); + } + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + return; + } + else if ( gun == "knife_zm" ) + { + self switchtoweapon( weapon_name ); + self decrement_is_drinking(); + return; + } + else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) ) + { + self switchtoweapon( gun ); + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } + self waittill( "weapon_change_complete" ); + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( self.intermission ) && !self.intermission ) + { + self decrement_is_drinking(); + } +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_weap_ballistic_knife.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_weap_ballistic_knife.gsc new file mode 100644 index 0000000..cd33180 --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_weap_ballistic_knife.gsc @@ -0,0 +1,278 @@ +#include maps/mp/zombies/_zm_stats; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + if ( isDefined( level._uses_retrievable_ballisitic_knives ) && level._uses_retrievable_ballisitic_knives == 1 ) + { + precachemodel( "t5_weapon_ballistic_knife_projectile" ); + precachemodel( "t5_weapon_ballistic_knife_blade_retrieve" ); + } +} + +on_spawn( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + player endon( "zmb_lost_knife" ); + level endon( "game_ended" ); + self waittill( "stationary", endpos, normal, angles, attacker, prey, bone ); + isfriendly = 0; + if ( isDefined( endpos ) ) + { + retrievable_model = spawn( "script_model", endpos ); + retrievable_model setmodel( "t5_weapon_ballistic_knife_blade_retrieve" ); + retrievable_model setowner( player ); + retrievable_model.owner = player; + retrievable_model.angles = angles; + retrievable_model.name = watcher.weapon; + if ( isDefined( prey ) ) + { + if ( isplayer( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + else + { + if ( isai( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + } + if ( !isfriendly ) + { + retrievable_model linkto( prey, bone ); + retrievable_model thread force_drop_knives_to_ground_on_death( player, prey ); + } + else + { + if ( isfriendly ) + { + retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) ); + normal = ( 0, 0, 1 ); + } + } + } + watcher.objectarray[ watcher.objectarray.size ] = retrievable_model; + if ( isfriendly ) + { + retrievable_model waittill( "stationary" ); + } + retrievable_model thread drop_knives_to_ground( player ); + if ( isfriendly ) + { + player notify( "ballistic_knife_stationary" ); + } + else + { + player notify( "ballistic_knife_stationary" ); + } + retrievable_model thread wait_to_show_glowing_model( prey ); + } +} + +wait_to_show_glowing_model( prey ) +{ + level endon( "game_ended" ); + self endon( "death" ); + wait 2; + self setmodel( "t5_weapon_ballistic_knife_blade_retrieve" ); +} + +on_spawn_retrieve_trigger( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + player endon( "zmb_lost_knife" ); + level endon( "game_ended" ); + player waittill( "ballistic_knife_stationary", retrievable_model, normal, prey ); + if ( !isDefined( retrievable_model ) ) + { + return; + } + trigger_pos = []; + if ( isDefined( prey ) || isplayer( prey ) && isai( prey ) ) + { + trigger_pos[ 0 ] = prey.origin[ 0 ]; + trigger_pos[ 1 ] = prey.origin[ 1 ]; + trigger_pos[ 2 ] = prey.origin[ 2 ] + 10; + } + else + { + trigger_pos[ 0 ] = retrievable_model.origin[ 0 ] + ( 10 * normal[ 0 ] ); + trigger_pos[ 1 ] = retrievable_model.origin[ 1 ] + ( 10 * normal[ 1 ] ); + trigger_pos[ 2 ] = retrievable_model.origin[ 2 ] + ( 10 * normal[ 2 ] ); + } + pickup_trigger = spawn( "trigger_radius_use", ( trigger_pos[ 0 ], trigger_pos[ 1 ], trigger_pos[ 2 ] ) ); + pickup_trigger setcursorhint( "HINT_NOICON" ); + pickup_trigger.owner = player; + retrievable_model.retrievabletrigger = pickup_trigger; + hint_string = &"WEAPON_BALLISTIC_KNIFE_PICKUP"; + if ( isDefined( hint_string ) ) + { + pickup_trigger sethintstring( hint_string ); + } + else + { + pickup_trigger sethintstring( &"GENERIC_PICKUP" ); + } + pickup_trigger setteamfortrigger( player.team ); + player clientclaimtrigger( pickup_trigger ); + pickup_trigger enablelinkto(); + if ( isDefined( prey ) ) + { + pickup_trigger linkto( prey ); + } + else + { + pickup_trigger linkto( retrievable_model ); + } + if ( isDefined( level.knife_planted ) ) + { + [[ level.knife_planted ]]( retrievable_model, pickup_trigger, prey ); + } + retrievable_model thread watch_use_trigger( pickup_trigger, retrievable_model, ::pick_up, watcher.weapon, watcher.pickupsoundplayer, watcher.pickupsound ); + player thread watch_shutdown( pickup_trigger, retrievable_model ); +} + +debug_print( endpos ) +{ +/# + self endon( "death" ); + while ( 1 ) + { + print3d( endpos, "pickup_trigger" ); + wait 0,05; +#/ + } +} + +watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundonuse ) +{ + self endon( "death" ); + self endon( "delete" ); + level endon( "game_ended" ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + if ( isDefined( trigger.triggerteam ) && player.team != trigger.triggerteam ) + { + continue; + } + if ( isDefined( trigger.claimedby ) && player != trigger.claimedby ) + { + continue; + } + if ( player usebuttonpressed() && !player.throwinggrenade && !player meleebuttonpressed() ) + { + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + player thread [[ callback ]]( weapon, model, trigger ); + return; + } + else + { + } + } +} + +pick_up( weapon, model, trigger ) +{ + current_weapon = self getcurrentweapon(); + if ( current_weapon != weapon ) + { + clip_ammo = self getweaponammoclip( weapon ); + if ( !clip_ammo ) + { + self setweaponammoclip( weapon, 1 ); + } + else + { + new_ammo_stock = self getweaponammostock( weapon ) + 1; + self setweaponammostock( weapon, new_ammo_stock ); + } + } + else + { + new_ammo_stock = self getweaponammostock( weapon ) + 1; + self setweaponammostock( weapon, new_ammo_stock ); + } + self maps/mp/zombies/_zm_stats::increment_client_stat( "ballistic_knives_pickedup" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "ballistic_knives_pickedup" ); + model destroy_ent(); + trigger destroy_ent(); +} + +destroy_ent() +{ + if ( isDefined( self ) ) + { + if ( isDefined( self.glowing_model ) ) + { + self.glowing_model delete(); + } + self delete(); + } +} + +watch_shutdown( trigger, model ) +{ + self waittill_any( "death", "disconnect", "zmb_lost_knife" ); + trigger destroy_ent(); + model destroy_ent(); +} + +drop_knives_to_ground( player ) +{ + player endon( "death" ); + player endon( "zmb_lost_knife" ); + for ( ;; ) + { + level waittill( "drop_objects_to_ground", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread update_retrieve_trigger( player ); + } + } +} + +force_drop_knives_to_ground_on_death( player, prey ) +{ + self endon( "death" ); + player endon( "zmb_lost_knife" ); + prey waittill( "death" ); + self unlink(); + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread update_retrieve_trigger( player ); +} + +update_retrieve_trigger( player ) +{ + self endon( "death" ); + player endon( "zmb_lost_knife" ); + if ( isDefined( level.custom_update_retrieve_trigger ) ) + { + self [[ level.custom_update_retrieve_trigger ]]( player ); + return; + } + self waittill( "stationary" ); + trigger = self.retrievabletrigger; + trigger.origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 10 ); + trigger linkto( self ); +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_weap_bowie.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_weap_bowie.gsc new file mode 100644 index 0000000..54968b5 --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_weap_bowie.gsc @@ -0,0 +1,53 @@ +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( isDefined( level.bowie_cost ) ) + { + cost = level.bowie_cost; + } + else + { + cost = 3000; + } + maps/mp/zombies/_zm_melee_weapon::init( "bowie_knife_zm", "zombie_bowie_flourish", "knife_ballistic_bowie_zm", "knife_ballistic_bowie_upgraded_zm", cost, "bowie_upgrade", &"ZOMBIE_WEAPON_BOWIE_BUY", "bowie", ::has_bowie, ::give_bowie, ::take_bowie, ::bowie_flourish ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_bowie" ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_bowie_upgraded" ); +} + +spectator_respawn() +{ + maps/mp/zombies/_zm_melee_weapon::spectator_respawn( "bowie_upgrade", ::take_bowie, ::has_bowie ); +} + +has_bowie() +{ + if ( is_true( level._allow_melee_weapon_switching ) ) + { + return 0; + } + if ( !is_true( self._sickle_zm_equipped ) || is_true( self._bowie_zm_equipped ) && is_true( self._tazer_zm_equipped ) ) + { + return 1; + } + return 0; +} + +give_bowie() +{ + self._bowie_zm_equipped = 1; + self._sickle_zm_equipped = undefined; + self._tazer_zm_equipped = undefined; +} + +take_bowie() +{ + self._bowie_zm_equipped = undefined; +} + +bowie_flourish() +{ +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_weap_claymore.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_weap_claymore.gsc new file mode 100644 index 0000000..564c67f --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_weap_claymore.gsc @@ -0,0 +1,492 @@ +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !isDefined( level.claymores_max_per_player ) ) + { + level.claymores_max_per_player = 12; + } + trigs = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < trigs.size ) + { + model = getent( trigs[ i ].target, "targetname" ); + if ( isDefined( model ) ) + { + model hide(); + } + i++; + } + array_thread( trigs, ::buy_claymores ); + level thread give_claymores_after_rounds(); + level.claymores_on_damage = ::satchel_damage; + level.pickup_claymores = ::pickup_claymores; + level.pickup_claymores_trigger_listener = ::pickup_claymores_trigger_listener; + level.claymore_detectiondot = cos( 70 ); + level.claymore_detectionmindist = 20; + level._effect[ "claymore_laser" ] = loadfx( "weapon/claymore/fx_claymore_laser" ); +} + +buy_claymores() +{ + self.zombie_cost = 1000; + self sethintstring( &"ZOMBIE_CLAYMORE_PURCHASE" ); + self setcursorhint( "HINT_NOICON" ); + self endon( "kill_trigger" ); + if ( !isDefined( self.stub ) ) + { + return; + } + if ( isDefined( self.stub ) && !isDefined( self.stub.claymores_triggered ) ) + { + self.stub.claymores_triggered = 0; + } + self.claymores_triggered = self.stub.claymores_triggered; + while ( 1 ) + { + self waittill( "trigger", who ); + while ( who in_revive_trigger() ) + { + continue; + } + while ( who has_powerup_weapon() ) + { + wait 0,1; + } + if ( is_player_valid( who ) ) + { + if ( who.score >= self.zombie_cost ) + { + if ( !who is_player_placeable_mine( "claymore_zm" ) ) + { + play_sound_at_pos( "purchase", self.origin ); + who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + who thread claymore_setup(); + who thread show_claymore_hint( "claymore_purchased" ); + who thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" ); + if ( isDefined( self.stub ) ) + { + self.claymores_triggered = self.stub.claymores_triggered; + } + if ( self.claymores_triggered == 0 ) + { + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread maps/mp/zombies/_zm_weapons::weapon_show( who ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.claymores_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.claymores_triggered = 1; + } + } + trigs = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < trigs.size ) + { + trigs[ i ] setinvisibletoplayer( who ); + i++; + } + } + else who thread show_claymore_hint( "already_purchased" ); + } + } + } +} + +claymore_unitrigger_update_prompt( player ) +{ + if ( player is_player_placeable_mine( "claymore_zm" ) ) + { + return 0; + } + return 1; +} + +set_claymore_visible() +{ + players = get_players(); + trigs = getentarray( "claymore_purchase", "targetname" ); + while ( 1 ) + { + j = 0; + while ( j < players.size ) + { + while ( !players[ j ] is_player_placeable_mine( "claymore_zm" ) ) + { + i = 0; + while ( i < trigs.size ) + { + trigs[ i ] setinvisibletoplayer( players[ j ], 0 ); + i++; + } + } + j++; + } + wait 1; + players = get_players(); + } +} + +claymore_safe_to_plant() +{ + if ( self.owner.claymores.size >= level.claymores_max_per_player ) + { + return 0; + } + if ( isDefined( level.claymore_safe_to_plant ) ) + { + return self [[ level.claymore_safe_to_plant ]](); + } + return 1; +} + +claymore_wait_and_detonate() +{ + wait 0,1; + self detonate( self.owner ); +} + +claymore_watch() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "grenade_fire", claymore, weapname ); + if ( weapname == "claymore_zm" ) + { + claymore.owner = self; + claymore.team = self.team; + self notify( "zmb_enable_claymore_prompt" ); + if ( claymore claymore_safe_to_plant() ) + { + if ( isDefined( level.claymore_planted ) ) + { + self thread [[ level.claymore_planted ]]( claymore ); + } + claymore thread satchel_damage(); + claymore thread claymore_detonation(); + claymore thread play_claymore_effects(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "claymores_planted" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "claymores_planted" ); + break; + } + else + { + claymore thread claymore_wait_and_detonate(); + } + } + } +} + +claymore_setup() +{ + if ( !isDefined( self.claymores ) ) + { + self.claymores = []; + } + self thread claymore_watch(); + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammostock( "claymore_zm", 2 ); +} + +adjust_trigger_origin( origin ) +{ + origin += vectorScale( ( 0, 0, 1 ), 20 ); + return origin; +} + +on_spawn_retrieve_trigger( watcher, player ) +{ + self maps/mp/gametypes_zm/_weaponobjects::onspawnretrievableweaponobject( watcher, player ); + if ( isDefined( self.pickuptrigger ) ) + { + self.pickuptrigger sethintlowpriority( 0 ); + } +} + +pickup_claymores() +{ + player = self.owner; + if ( !player hasweapon( "claymore_zm" ) ) + { + player thread claymore_watch(); + player giveweapon( "claymore_zm" ); + player set_player_placeable_mine( "claymore_zm" ); + player setactionslot( 4, "weapon", "claymore_zm" ); + player setweaponammoclip( "claymore_zm", 0 ); + player notify( "zmb_enable_claymore_prompt" ); + } + else + { + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo >= clip_max_ammo ) + { + self destroy_ent(); + player notify( "zmb_disable_claymore_prompt" ); + return; + } + } + self pick_up(); + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo >= clip_max_ammo ) + { + player notify( "zmb_disable_claymore_prompt" ); + } + player maps/mp/zombies/_zm_stats::increment_client_stat( "claymores_pickedup" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "claymores_pickedup" ); +} + +pickup_claymores_trigger_listener( trigger, player ) +{ + self thread pickup_claymores_trigger_listener_enable( trigger, player ); + self thread pickup_claymores_trigger_listener_disable( trigger, player ); +} + +pickup_claymores_trigger_listener_enable( trigger, player ) +{ + self endon( "delete" ); + while ( 1 ) + { + player waittill_any( "zmb_enable_claymore_prompt", "spawned_player" ); + if ( !isDefined( trigger ) ) + { + return; + } + trigger trigger_on(); + trigger linkto( self ); + } +} + +pickup_claymores_trigger_listener_disable( trigger, player ) +{ + self endon( "delete" ); + while ( 1 ) + { + player waittill( "zmb_disable_claymore_prompt" ); + if ( !isDefined( trigger ) ) + { + return; + } + trigger unlink(); + trigger trigger_off(); + } +} + +shouldaffectweaponobject( object ) +{ + pos = self.origin + vectorScale( ( 0, 0, 1 ), 32 ); + dirtopos = pos - object.origin; + objectforward = anglesToForward( object.angles ); + dist = vectordot( dirtopos, objectforward ); + if ( dist < level.claymore_detectionmindist ) + { + return 0; + } + dirtopos = vectornormalize( dirtopos ); + dot = vectordot( dirtopos, objectforward ); + return dot > level.claymore_detectiondot; +} + +claymore_detonation() +{ + self endon( "death" ); + self waittill_not_moving(); + detonateradius = 96; + damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 2 ); + damagearea setexcludeteamfortrigger( self.team ); + damagearea enablelinkto(); + damagearea linkto( self ); + if ( is_true( self.isonbus ) ) + { + damagearea setmovingplatformenabled( 1 ); + } + self.damagearea = damagearea; + self thread delete_claymores_on_death( self.owner, damagearea ); + self.owner.claymores[ self.owner.claymores.size ] = self; + while ( 1 ) + { + damagearea waittill( "trigger", ent ); + if ( isDefined( self.owner ) && ent == self.owner ) + { + continue; + } + while ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == self.team ) + { + continue; + } + if ( isDefined( ent.ignore_claymore ) && ent.ignore_claymore ) + { + continue; + } + while ( !ent shouldaffectweaponobject( self ) ) + { + continue; + } + if ( ent damageconetrace( self.origin, self ) > 0 ) + { + self playsound( "wpn_claymore_alert" ); + wait 0,4; + if ( isDefined( self.owner ) ) + { + self detonate( self.owner ); + } + else + { + self detonate( undefined ); + } + return; + } + } +} + +delete_claymores_on_death( player, ent ) +{ + self waittill( "death" ); + if ( isDefined( player ) ) + { + arrayremovevalue( player.claymores, self ); + } + wait 0,05; + if ( isDefined( ent ) ) + { + ent delete(); + } +} + +satchel_damage() +{ + self setcandamage( 1 ); + self.health = 100000; + self.maxhealth = self.health; + attacker = undefined; + while ( 1 ) + { + self waittill( "damage", amount, attacker ); + if ( !isDefined( self ) ) + { + return; + } + self.health = self.maxhealth; + while ( !isplayer( attacker ) ) + { + continue; + } + if ( isDefined( self.owner ) && attacker == self.owner ) + { + continue; + } + while ( isDefined( attacker.pers ) && isDefined( attacker.pers[ "team" ] ) && attacker.pers[ "team" ] != level.zombie_team ) + { + continue; + } + } + if ( level.satchelexplodethisframe ) + { + wait ( 0,1 + randomfloat( 0,4 ) ); + } + else wait 0,05; + if ( !isDefined( self ) ) + { + return; + } + level.satchelexplodethisframe = 1; + thread reset_satchel_explode_this_frame(); + self detonate( attacker ); +} + +reset_satchel_explode_this_frame() +{ + wait 0,05; + level.satchelexplodethisframe = 0; +} + +play_claymore_effects() +{ + self endon( "death" ); + self waittill_not_moving(); + playfxontag( level._effect[ "claymore_laser" ], self, "tag_fx" ); +} + +give_claymores_after_rounds() +{ + while ( 1 ) + { + level waittill( "between_round_over" ); + while ( !level flag_exists( "teleporter_used" ) || !flag( "teleporter_used" ) ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] is_player_placeable_mine( "claymore_zm" ) ) + { + players[ i ] giveweapon( "claymore_zm" ); + players[ i ] set_player_placeable_mine( "claymore_zm" ); + players[ i ] setactionslot( 4, "weapon", "claymore_zm" ); + players[ i ] setweaponammoclip( "claymore_zm", 2 ); + } + i++; + } + } + } +} + +init_hint_hudelem( x, y, alignx, aligny, fontscale, alpha ) +{ + self.x = x; + self.y = y; + self.alignx = alignx; + self.aligny = aligny; + self.fontscale = fontscale; + self.alpha = alpha; + self.sort = 20; +} + +setup_client_hintelem() +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( self.hintelem ) ) + { + self.hintelem = newclienthudelem( self ); + } + self.hintelem init_hint_hudelem( 320, 220, "center", "bottom", 1,6, 1 ); +} + +show_claymore_hint( string ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( string == "claymore_purchased" ) + { + text = &"ZOMBIE_CLAYMORE_HOWTO"; + } + else + { + text = &"ZOMBIE_CLAYMORE_ALREADY_PURCHASED"; + } + self setup_client_hintelem(); + self.hintelem settext( text ); + wait 3,5; + self.hintelem settext( "" ); +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc new file mode 100644 index 0000000..0427300 --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc @@ -0,0 +1,565 @@ +#include maps/mp/zombies/_zm_clone; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +#using_animtree( "zombie_cymbal_monkey" ); + +init() +{ + if ( !cymbal_monkey_exists() ) + { + return; + } +/# + level.zombiemode_devgui_cymbal_monkey_give = ::player_give_cymbal_monkey; +#/ + level._effect[ "monkey_glow" ] = loadfx( "maps/zombie/fx_zombie_monkey_light" ); + level._effect[ "grenade_samantha_steal" ] = loadfx( "maps/zombie/fx_zmb_blackhole_trap_end" ); + level.cymbal_monkeys = []; + scriptmodelsuseanimtree( -1 ); +} + +player_give_cymbal_monkey() +{ + self giveweapon( "cymbal_monkey_zm" ); + self set_player_tactical_grenade( "cymbal_monkey_zm" ); + self thread player_handle_cymbal_monkey(); +} + +player_handle_cymbal_monkey() +{ + self notify( "starting_monkey_watch" ); + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + attract_dist_diff = level.monkey_attract_dist_diff; + if ( !isDefined( attract_dist_diff ) ) + { + attract_dist_diff = 45; + } + num_attractors = level.num_monkey_attractors; + if ( !isDefined( num_attractors ) ) + { + num_attractors = 96; + } + max_attract_dist = level.monkey_attract_dist; + if ( !isDefined( max_attract_dist ) ) + { + max_attract_dist = 1536; + } + while ( 1 ) + { + grenade = get_thrown_monkey(); + self player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ); + wait 0,05; + } +} + +watch_for_dud( model, actor ) +{ + self endon( "death" ); + self waittill( "grenade_dud" ); + model.dud = 1; + self playsound( "zmb_vox_monkey_scream" ); + self.monk_scream_vox = 1; + wait 3; + if ( isDefined( model ) ) + { + model delete(); + } + if ( isDefined( actor ) ) + { + actor delete(); + } + if ( isDefined( self.damagearea ) ) + { + self.damagearea delete(); + } + if ( isDefined( self ) ) + { + self delete(); + } +} + +watch_for_emp( model, actor ) +{ + self endon( "death" ); + while ( 1 ) + { + level waittill( "emp_detonate", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + break; + } + else + { + } + } + self.stun_fx = 1; + if ( isDefined( level._equipment_emp_destroy_fx ) ) + { + playfx( level._equipment_emp_destroy_fx, self.origin + vectorScale( ( 0, 0, -1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); + } + wait 0,15; + self.attract_to_origin = 0; + self deactivate_zombie_point_of_interest(); + model clearanim( %o_monkey_bomb, 0 ); + wait 1; + self detonate(); + wait 1; + if ( isDefined( model ) ) + { + model delete(); + } + if ( isDefined( actor ) ) + { + actor delete(); + } + if ( isDefined( self.damagearea ) ) + { + self.damagearea delete(); + } + if ( isDefined( self ) ) + { + self delete(); + } +} + +clone_player_angles( owner ) +{ + self endon( "death" ); + owner endon( "death" ); + while ( isDefined( self ) ) + { + self.angles = owner.angles; + wait 0,05; + } +} + +show_briefly( showtime ) +{ + self endon( "show_owner" ); + if ( isDefined( self.show_for_time ) ) + { + self.show_for_time = showtime; + return; + } + self.show_for_time = showtime; + self setvisibletoall(); + while ( self.show_for_time > 0 ) + { + self.show_for_time -= 0,05; + wait 0,05; + } + self setvisibletoallexceptteam( level.zombie_team ); + self.show_for_time = undefined; +} + +show_owner_on_attack( owner ) +{ + owner endon( "hide_owner" ); + owner endon( "show_owner" ); + self endon( "explode" ); + self endon( "death" ); + self endon( "grenade_dud" ); + owner.show_for_time = undefined; + for ( ;; ) + { + owner waittill( "weapon_fired" ); + owner thread show_briefly( 0,5 ); + } +} + +hide_owner( owner ) +{ + owner notify( "hide_owner" ); + owner endon( "hide_owner" ); + owner setperk( "specialty_immunemms" ); + owner.no_burning_sfx = 1; + owner notify( "stop_flame_sounds" ); + owner setvisibletoallexceptteam( level.zombie_team ); + owner.hide_owner = 1; + if ( isDefined( level._effect[ "human_disappears" ] ) ) + { + playfx( level._effect[ "human_disappears" ], owner.origin ); + } + self thread show_owner_on_attack( owner ); + evt = self waittill_any_return( "explode", "death", "grenade_dud" ); +/# + println( "ZMCLONE: Player visible again because of " + evt ); +#/ + owner notify( "show_owner" ); + owner unsetperk( "specialty_immunemms" ); + if ( isDefined( level._effect[ "human_disappears" ] ) ) + { + playfx( level._effect[ "human_disappears" ], owner.origin ); + } + owner.no_burning_sfx = undefined; + owner setvisibletoall(); + owner.hide_owner = undefined; + owner show(); +} + +proximity_detonate( owner ) +{ + wait 1,5; + if ( !isDefined( self ) ) + { + return; + } + detonateradius = 96; + explosionradius = detonateradius * 2; + damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 1,5 ); + damagearea setexcludeteamfortrigger( owner.team ); + damagearea enablelinkto(); + damagearea linkto( self ); + self.damagearea = damagearea; + while ( isDefined( self ) ) + { + damagearea waittill( "trigger", ent ); + if ( isDefined( owner ) && ent == owner ) + { + continue; + } + if ( isDefined( ent.team ) && ent.team == owner.team ) + { + continue; + } + self playsound( "wpn_claymore_alert" ); + dist = distance( self.origin, ent.origin ); + radiusdamage( self.origin + vectorScale( ( 0, 0, -1 ), 12 ), explosionradius, 1, 1, owner, "MOD_GRENADE_SPLASH", "cymbal_monkey_zm" ); + if ( isDefined( owner ) ) + { + self detonate( owner ); + } + else + { + self detonate( undefined ); + } + break; + } + if ( isDefined( damagearea ) ) + { + damagearea delete(); + } +} + +player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ) +{ + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + if ( isDefined( grenade ) ) + { + grenade endon( "death" ); + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + if ( isDefined( grenade.damagearea ) ) + { + grenade.damagearea delete(); + } + grenade delete(); + return; + } + grenade hide(); + model = spawn( "script_model", grenade.origin ); + model setmodel( "weapon_zombie_monkey_bomb" ); + model useanimtree( -1 ); + model linkto( grenade ); + model.angles = grenade.angles; + model thread monkey_cleanup( grenade ); + clone = undefined; + if ( isDefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view ) + { + model setvisibletoallexceptteam( level.zombie_team ); + clone = maps/mp/zombies/_zm_clone::spawn_player_clone( self, vectorScale( ( 0, 0, -1 ), 999 ), level.cymbal_monkey_clone_weapon, undefined ); + model.simulacrum = clone; + clone maps/mp/zombies/_zm_clone::clone_animate( "idle" ); + clone thread clone_player_angles( self ); + clone notsolid(); + clone ghost(); + } + grenade thread watch_for_dud( model, clone ); + grenade thread watch_for_emp( model, clone ); + info = spawnstruct(); + info.sound_attractors = []; + grenade thread monitor_zombie_groans( info ); + grenade waittill( "stationary" ); + if ( isDefined( level.grenade_planted ) ) + { + self thread [[ level.grenade_planted ]]( grenade, model ); + } + if ( isDefined( grenade ) ) + { + if ( isDefined( model ) ) + { + model setanim( %o_monkey_bomb ); + if ( isDefined( grenade.backlinked ) && !grenade.backlinked ) + { + model unlink(); + model.origin = grenade.origin; + model.angles = grenade.angles; + } + } + if ( isDefined( clone ) ) + { + clone forceteleport( grenade.origin, grenade.angles ); + clone thread hide_owner( self ); + grenade thread proximity_detonate( self ); + clone show(); + clone setinvisibletoall(); + clone setvisibletoteam( level.zombie_team ); + } + grenade resetmissiledetonationtime(); + playfxontag( level._effect[ "monkey_glow" ], model, "origin_animate_jnt" ); + valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined ); + if ( isDefined( level.check_valid_poi ) ) + { + valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi ); + } + if ( valid_poi ) + { + grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); + grenade.attract_to_origin = 1; + grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); + grenade thread wait_for_attractor_positions_complete(); + grenade thread do_monkey_sound( model, info ); + level.cymbal_monkeys[ level.cymbal_monkeys.size ] = grenade; + } + else + { + grenade.script_noteworthy = undefined; + level thread grenade_stolen_by_sam( grenade, model, clone ); + } + return; + } + else + { + grenade.script_noteworthy = undefined; + level thread grenade_stolen_by_sam( grenade, model, clone ); + } + } +} + +grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor ) +{ + if ( !isDefined( ent_model ) ) + { + return; + } + direction = ent_model.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isalive( players[ i ] ) ) + { + players[ i ] playlocalsound( level.zmb_laugh_alias ); + } + i++; + } + playfxontag( level._effect[ "grenade_samantha_steal" ], ent_model, "tag_origin" ); + ent_model movez( 60, 1, 0,25, 0,25 ); + ent_model vibrate( direction, 1,5, 2,5, 1 ); + ent_model waittill( "movedone" ); + if ( isDefined( self.damagearea ) ) + { + self.damagearea delete(); + } + ent_model delete(); + if ( isDefined( ent_actor ) ) + { + ent_actor delete(); + } + if ( isDefined( ent_grenade ) ) + { + if ( isDefined( ent_grenade.damagearea ) ) + { + ent_grenade.damagearea delete(); + } + ent_grenade delete(); + } +} + +wait_for_attractor_positions_complete() +{ + self waittill( "attractor_positions_generated" ); + self.attract_to_origin = 0; +} + +monkey_cleanup( parent ) +{ + while ( 1 ) + { + if ( !isDefined( parent ) ) + { + if ( isDefined( self ) && isDefined( self.dud ) && self.dud ) + { + wait 6; + } + if ( isDefined( self.simulacrum ) ) + { + self.simulacrum delete(); + } + self_delete(); + return; + } + wait 0,05; + } +} + +do_monkey_sound( model, info ) +{ + self.monk_scream_vox = 0; + if ( isDefined( level.grenade_safe_to_bounce ) ) + { + if ( !( [[ level.grenade_safe_to_bounce ]]( self.owner, "cymbal_monkey_zm" ) ) ) + { + self playsound( "zmb_vox_monkey_scream" ); + self.monk_scream_vox = 1; + } + } + if ( !self.monk_scream_vox && level.music_override == 0 ) + { + if ( isDefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view ) + { + self playsoundtoteam( "zmb_monkey_song", "allies" ); + } + else + { + self playsound( "zmb_monkey_song" ); + } + } + if ( !self.monk_scream_vox ) + { + self thread play_delayed_explode_vox(); + } + self waittill( "explode", position ); + level notify( "grenade_exploded" ); + monkey_index = -1; + i = 0; + while ( i < level.cymbal_monkeys.size ) + { + if ( !isDefined( level.cymbal_monkeys[ i ] ) ) + { + monkey_index = i; + break; + } + else + { + i++; + } + } + if ( monkey_index >= 0 ) + { + arrayremoveindex( level.cymbal_monkeys, monkey_index ); + } + if ( isDefined( model ) ) + { + model clearanim( %o_monkey_bomb, 0,2 ); + } + i = 0; + while ( i < info.sound_attractors.size ) + { + if ( isDefined( info.sound_attractors[ i ] ) ) + { + info.sound_attractors[ i ] notify( "monkey_blown_up" ); + } + i++; + } +} + +play_delayed_explode_vox() +{ + wait 6,5; + if ( isDefined( self ) ) + { + self playsound( "zmb_vox_monkey_explode" ); + } +} + +get_thrown_monkey() +{ + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + if ( weapname == "cymbal_monkey_zm" ) + { + grenade.use_grenade_special_long_bookmark = 1; + grenade.grenade_multiattack_bookmark_count = 1; + return grenade; + } + wait 0,05; + } +} + +monitor_zombie_groans( info ) +{ + self endon( "explode" ); + while ( 1 ) + { + if ( !isDefined( self ) ) + { + return; + } + while ( !isDefined( self.attractor_array ) ) + { + wait 0,05; + } + i = 0; + while ( i < self.attractor_array.size ) + { + if ( array_check_for_dupes( info.sound_attractors, self.attractor_array[ i ] ) ) + { + if ( isDefined( self.origin ) && isDefined( self.attractor_array[ i ].origin ) ) + { + if ( distancesquared( self.origin, self.attractor_array[ i ].origin ) < 250000 ) + { + info.sound_attractors[ info.sound_attractors.size ] = self.attractor_array[ i ]; + self.attractor_array[ i ] thread play_zombie_groans(); + } + } + } + i++; + } + wait 0,05; + } +} + +play_zombie_groans() +{ + self endon( "death" ); + self endon( "monkey_blown_up" ); + while ( 1 ) + { + if ( isDefined( self ) ) + { + self playsound( "zmb_vox_zombie_groan" ); + wait randomfloatrange( 2, 3 ); + continue; + } + else + { + return; + } + } +} + +cymbal_monkey_exists() +{ + return isDefined( level.zombie_weapons[ "cymbal_monkey_zm" ] ); +} diff --git a/zm_highrise_patch/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc b/zm_highrise_patch/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc new file mode 100644 index 0000000..3e6a41d --- /dev/null +++ b/zm_highrise_patch/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc @@ -0,0 +1,150 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + registerclientfield( "toplayer", "tazer_flourish", 1, 1, "int" ); + register_melee_weapon_for_level( "tazer_knuckles_zm" ); + if ( isDefined( level.tazer_cost ) ) + { + cost = level.tazer_cost; + } + else + { + cost = 6000; + } + level.use_tazer_impact_fx = 0; + maps/mp/zombies/_zm_melee_weapon::init( "tazer_knuckles_zm", "zombie_tazer_flourish", "knife_ballistic_no_melee_zm", "knife_ballistic_no_melee_upgraded_zm", cost, "tazer_upgrade", &"ZOMBIE_WEAPON_TAZER_BUY", "tazerknuckles", ::has_tazer, ::give_tazer, ::take_tazer, ::tazer_flourish_fx ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_no_melee" ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_no_melee_upgraded" ); + maps/mp/zombies/_zm_spawner::add_cusom_zombie_spawn_logic( ::watch_bodily_functions ); + level._effect[ "fx_zmb_taser_vomit" ] = loadfx( "maps/zombie/fx_zmb_taser_vomit" ); + level._effect[ "fx_zmb_taser_flourish" ] = loadfx( "weapon/taser/fx_taser_knuckles_anim_zmb" ); + if ( level.script != "zm_transit" ) + { + level._effect[ "fx_zmb_tazer_impact" ] = loadfx( "weapon/taser/fx_taser_knuckles_impact_zmb" ); + level.use_tazer_impact_fx = 1; + } + level.tazer_flourish_delay = 0,5; +} + +spectator_respawn() +{ + maps/mp/zombies/_zm_melee_weapon::spectator_respawn( "tazer_upgrade", ::take_tazer, ::has_tazer ); +} + +watch_bodily_functions() +{ + if ( isDefined( self.isscreecher ) || self.isscreecher && isDefined( self.is_avogadro ) && self.is_avogadro ) + { + return; + } + while ( 1 ) + { + self waittill( "damage", amount, attacker, direction_vec, point, type ); + if ( !isDefined( self ) ) + { + return; + } + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + continue; + } + while ( type != "MOD_MELEE" ) + { + continue; + } + if ( !attacker hasweapon( "tazer_knuckles_zm" ) || isDefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) + { + continue; + } + ch = randomint( 100 ); + if ( ch < 4 ) + { + playfxontag( level._effect[ "fx_zmb_taser_vomit" ], self, "j_neck" ); + } + if ( level.use_tazer_impact_fx ) + { + tags = []; + tags[ 0 ] = "J_Head"; + tags[ 1 ] = "J_Neck"; + playfxontag( level._effect[ "fx_zmb_tazer_impact" ], self, random( tags ) ); + } + } +} + +onplayerconnect() +{ + self thread onplayerspawned(); +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchtazerknucklemelee(); + } +} + +watchtazerknucklemelee() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "weapon_melee", weapon ); + if ( weapon == "tazer_knuckles_zm" ) + { + self tazerknuckle_melee(); + } + } +} + +tazerknuckle_melee() +{ +} + +has_tazer() +{ + if ( isDefined( level._allow_melee_weapon_switching ) && level._allow_melee_weapon_switching ) + { + return 0; + } + if ( isDefined( self._sickle_zm_equipped ) && !self._sickle_zm_equipped && isDefined( self._bowie_zm_equipped ) || self._bowie_zm_equipped && isDefined( self._tazer_zm_equipped ) && self._tazer_zm_equipped ) + { + return 1; + } + return 0; +} + +give_tazer() +{ + self._tazer_zm_equipped = 1; + self._bowie_zm_equipped = undefined; + self._sickle_zm_equipped = undefined; +} + +take_tazer() +{ + self._tazer_zm_equipped = undefined; +} + +tazer_flourish_fx() +{ + self waittill( "weapon_change", newweapon ); + if ( newweapon == "zombie_tazer_flourish" ) + { + self endon( "weapon_change" ); + wait level.tazer_flourish_delay; + self thread maps/mp/zombies/_zm_audio::playerexert( "hitmed" ); + self setclientfieldtoplayer( "tazer_flourish", 1 ); + wait_network_frame(); + self setclientfieldtoplayer( "tazer_flourish", 0 ); + } +} diff --git a/zm_nuked/aitype/zm_nuked_basic_01.gsc b/zm_nuked/aitype/zm_nuked_basic_01.gsc new file mode 100644 index 0000000..3603fdc --- /dev/null +++ b/zm_nuked/aitype/zm_nuked_basic_01.gsc @@ -0,0 +1,333 @@ +#include codescripts/character; + +#using_animtree( "zm_nuked_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_fast_40; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_up_72; + dummy_anim_ref = %ai_zombie_crawl_jump_up_72; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_crawl_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_nuked_basic.asd"; + self.animtree = "zm_nuked_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_dlc0_zombie_hazmat_1::main(); + break; + case 1: + character/c_zom_dlc0_zombie_hazmat_2::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_nuked_basic" ); + character/c_zom_dlc0_zombie_hazmat_1::precache(); + character/c_zom_dlc0_zombie_hazmat_2::precache(); +} diff --git a/zm_nuked/aitype/zm_nuked_basic_01_beyes.gsc b/zm_nuked/aitype/zm_nuked_basic_01_beyes.gsc new file mode 100644 index 0000000..c7d31ca --- /dev/null +++ b/zm_nuked/aitype/zm_nuked_basic_01_beyes.gsc @@ -0,0 +1,333 @@ +#include codescripts/character; + +#using_animtree( "zm_nuked_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_fast_40; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_up_72; + dummy_anim_ref = %ai_zombie_crawl_jump_up_72; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_crawl_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_nuked_basic.asd"; + self.animtree = "zm_nuked_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_dlc0_zombie_hazmat_1_beyes::main(); + break; + case 1: + character/c_zom_dlc0_zombie_hazmat_2_beyes::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_nuked_basic" ); + character/c_zom_dlc0_zombie_hazmat_1_beyes::precache(); + character/c_zom_dlc0_zombie_hazmat_2_beyes::precache(); +} diff --git a/zm_nuked/aitype/zm_nuked_basic_02.gsc b/zm_nuked/aitype/zm_nuked_basic_02.gsc new file mode 100644 index 0000000..d282159 --- /dev/null +++ b/zm_nuked/aitype/zm_nuked_basic_02.gsc @@ -0,0 +1,333 @@ +#include codescripts/character; + +#using_animtree( "zm_nuked_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_fast_40; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_up_72; + dummy_anim_ref = %ai_zombie_crawl_jump_up_72; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_crawl_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_nuked_basic.asd"; + self.animtree = "zm_nuked_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_dlc0_zombie_soldier_1::main(); + break; + case 1: + character/c_zom_dlc0_zombie_soldier_civ_1::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_nuked_basic" ); + character/c_zom_dlc0_zombie_soldier_1::precache(); + character/c_zom_dlc0_zombie_soldier_civ_1::precache(); +} diff --git a/zm_nuked/aitype/zm_nuked_basic_02_beyes.gsc b/zm_nuked/aitype/zm_nuked_basic_02_beyes.gsc new file mode 100644 index 0000000..1b9c604 --- /dev/null +++ b/zm_nuked/aitype/zm_nuked_basic_02_beyes.gsc @@ -0,0 +1,333 @@ +#include codescripts/character; + +#using_animtree( "zm_nuked_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_look_v1; + dummy_anim_ref = %ai_zombie_inert_look_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_walk_v11; + dummy_anim_ref = %ai_zombie_inert_2_walk_v12; + dummy_anim_ref = %ai_zombie_inert_2_walk_v13; + dummy_anim_ref = %ai_zombie_inert_2_walk_v14; + dummy_anim_ref = %ai_zombie_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_walk_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_run_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_sprint_v2; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_40; + dummy_anim_ref = %ai_zombie_crawl_jump_down_40; + dummy_anim_ref = %ai_zombie_jump_down_fast_40; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_176; + dummy_anim_ref = %ai_zombie_crawl_jump_down_176; + dummy_anim_ref = %ai_zombie_jump_up_72; + dummy_anim_ref = %ai_zombie_crawl_jump_up_72; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_154; + dummy_anim_ref = %ai_zombie_crawl_jump_up_154; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_crawl_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_nuked_basic.asd"; + self.animtree = "zm_nuked_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/c_zom_dlc0_zombie_soldier_1_beyes::main(); + break; + case 1: + character/c_zom_dlc0_zombie_soldier_civ_1_beyes::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_nuked_basic" ); + character/c_zom_dlc0_zombie_soldier_1_beyes::precache(); + character/c_zom_dlc0_zombie_soldier_civ_1_beyes::precache(); +} diff --git a/zm_nuked/aitype/zm_nuked_dog.gsc b/zm_nuked/aitype/zm_nuked_dog.gsc new file mode 100644 index 0000000..7111e31 --- /dev/null +++ b/zm_nuked/aitype/zm_nuked_dog.gsc @@ -0,0 +1,91 @@ +#include codescripts/character; + +#using_animtree( "zm_nuked_dog" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %zombie_dog_idle; + dummy_anim_ref = %zombie_dog_attackidle_growl; + dummy_anim_ref = %zombie_dog_attackidle; + dummy_anim_ref = %zombie_dog_attackidle_bark; + dummy_anim_ref = %zombie_dog_run_stop; + dummy_anim_ref = %zombie_dog_run; + dummy_anim_ref = %zombie_dog_trot; + dummy_anim_ref = %zombie_dog_run_start; + dummy_anim_ref = %zombie_dog_turn_90_left; + dummy_anim_ref = %zombie_dog_turn_90_right; + dummy_anim_ref = %zombie_dog_turn_180_left; + dummy_anim_ref = %zombie_dog_turn_180_right; + dummy_anim_ref = %zombie_dog_run_turn_90_left; + dummy_anim_ref = %zombie_dog_run_turn_90_right; + dummy_anim_ref = %zombie_dog_run_turn_180_left; + dummy_anim_ref = %zombie_dog_run_turn_180_right; + dummy_anim_ref = %zombie_dog_death_front; + dummy_anim_ref = %zombie_dog_death_hit_back; + dummy_anim_ref = %zombie_dog_death_hit_left; + dummy_anim_ref = %zombie_dog_death_hit_right; + dummy_anim_ref = %zombie_dog_run_attack; + dummy_anim_ref = %zombie_dog_run_attack_low; + dummy_anim_ref = %zombie_dog_run_jump_window_40; + dummy_anim_ref = %zombie_dog_traverse_down_40; + dummy_anim_ref = %zombie_dog_traverse_down_96; + dummy_anim_ref = %zombie_dog_traverse_down_126; + dummy_anim_ref = %zombie_dog_traverse_down_190; + dummy_anim_ref = %zombie_dog_traverse_up_40; + dummy_anim_ref = %zombie_dog_traverse_up_80; + dummy_anim_ref = %ai_zombie_dog_jump_across_120; +} + +main() +{ + self.accuracy = 0,2; + self.animstatedef = "zm_nuked_dog.asd"; + self.animtree = "zm_nuked_dog.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 8; + self.demolockonviewheightoffset2 = 8; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = 0; + self.demolockonviewpitchmin2 = 0; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie_dog"; + self.weapon = ""; + self setengagementmindist( 256, 0 ); + self setengagementmaxdist( 768, 1024 ); + randchar = codescripts/character::get_random_character( 2 ); + switch( randchar ) + { + case 0: + character/character_sp_zombie_dog::main(); + break; + case 1: + character/character_sp_zombie_dog::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_nuked_dog" ); + character/character_sp_zombie_dog::precache(); + character/character_sp_zombie_dog::precache(); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_hazmat_1.gsc b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_1.gsc new file mode 100644 index 0000000..60b924a --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_1.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_dlc0_zom_haz_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_dlc0_zom_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_haz_body1_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_haz_body1_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_haz_body1_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_haz_body1_behead"; + self.legdmg1 = "c_zom_dlc0_zom_haz_body1_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_haz_body1_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_haz_body1_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_haz_body1_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_haz_body1_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_haz_body1_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_haz_body1_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_haz_body1_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_haz_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_dlc0_zom_head_als::main() ); + precachemodel( "c_zom_dlc0_zom_haz_body1_upclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_larmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_behead" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_lowclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_llegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_legsoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_rarmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc new file mode 100644 index 0000000..10f5f9c --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_1_beyes.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_dlc0_zom_haz_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_dlc0_zom_head_blueeyes_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_haz_body1_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_haz_body1_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_haz_body1_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_haz_body1_behead"; + self.legdmg1 = "c_zom_dlc0_zom_haz_body1_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_haz_body1_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_haz_body1_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_haz_body1_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_haz_body1_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_haz_body1_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_haz_body1_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_haz_body1_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_haz_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_dlc0_zom_head_blueeyes_als::main() ); + precachemodel( "c_zom_dlc0_zom_haz_body1_upclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_larmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_behead" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_lowclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_llegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_legsoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_rarmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body1_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_hazmat_2.gsc b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_2.gsc new file mode 100644 index 0000000..286614b --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_2.gsc @@ -0,0 +1,43 @@ + +main() +{ + self setmodel( "c_zom_dlc0_zom_haz_body2" ); + self.headmodel = "c_zom_dlc0_zom_haz_head_mask"; + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_haz_body2_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_haz_body2_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_haz_body2_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_haz_body2_behead"; + self.legdmg1 = "c_zom_dlc0_zom_haz_body2_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_haz_body2_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_haz_body2_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_haz_body2_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_haz_body2_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_haz_body2_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_haz_body2_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_haz_body2_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_haz_body2" ); + precachemodel( "c_zom_dlc0_zom_haz_head_mask" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_upclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_larmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_behead" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_lowclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_llegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_legsoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_rarmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_hazmat_2_beyes.gsc b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_2_beyes.gsc new file mode 100644 index 0000000..623a628 --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_hazmat_2_beyes.gsc @@ -0,0 +1,43 @@ + +main() +{ + self setmodel( "c_zom_dlc0_zom_haz_body2" ); + self.headmodel = "c_zom_dlc0_zom_haz_head_mask_blueeyes"; + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_haz_body2_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_haz_body2_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_haz_body2_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_haz_body2_behead"; + self.legdmg1 = "c_zom_dlc0_zom_haz_body2_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_haz_body2_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_haz_body2_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_haz_body2_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_haz_body2_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_haz_body2_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_haz_body2_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_haz_body2_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_haz_body2" ); + precachemodel( "c_zom_dlc0_zom_haz_head_mask_blueeyes" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_upclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_larmoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_behead" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_lowclean" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_llegoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_legsoff" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_rarmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_haz_body2_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_soldier_1.gsc b/zm_nuked/character/c_zom_dlc0_zombie_soldier_1.gsc new file mode 100644 index 0000000..5864ec2 --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_soldier_1.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_dlc0_zom_sol_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_dlc0_zom_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_sol_body1_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_sol_body1_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_sol_body1_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_sol_body1_behead"; + self.legdmg1 = "c_zom_dlc0_zom_sol_body1_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_sol_body1_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_sol_body1_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_sol_body1_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_sol_body1_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_sol_body1_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_sol_body1_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_sol_body1_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_sol_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_dlc0_zom_head_als::main() ); + precachemodel( "c_zom_dlc0_zom_sol_body1_upclean" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_larmoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_behead" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_lowclean" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_llegoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_legsoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_rarmspawn" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_soldier_1_beyes.gsc b/zm_nuked/character/c_zom_dlc0_zombie_soldier_1_beyes.gsc new file mode 100644 index 0000000..a19817a --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_soldier_1_beyes.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_dlc0_zom_sol_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_dlc0_zom_head_blueeyes_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_sol_body1_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_sol_body1_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_sol_body1_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_sol_body1_behead"; + self.legdmg1 = "c_zom_dlc0_zom_sol_body1_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_sol_body1_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_sol_body1_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_sol_body1_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_sol_body1_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_sol_body1_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_sol_body1_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_sol_body1_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_sol_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_dlc0_zom_head_blueeyes_als::main() ); + precachemodel( "c_zom_dlc0_zom_sol_body1_upclean" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_larmoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_behead" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_lowclean" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_llegoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_legsoff" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_rarmspawn" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_sol_body1_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_soldier_civ_1.gsc b/zm_nuked/character/c_zom_dlc0_zombie_soldier_civ_1.gsc new file mode 100644 index 0000000..d4fc15e --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_soldier_civ_1.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_dlc0_zom_solciv_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_dlc0_zom_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_solciv_body1_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_solciv_body1_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_solciv_body1_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_solciv_body1_behead"; + self.legdmg1 = "c_zom_dlc0_zom_solciv_body1_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_solciv_body1_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_solciv_body1_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_solciv_body1_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_solciv_body1_g_larmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_solciv_body1_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_solciv_body1_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_solciv_body1_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_solciv_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_dlc0_zom_head_als::main() ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_upclean" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_larmoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_behead" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_lowclean" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_llegoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_legsoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_llegspawn" ); +} diff --git a/zm_nuked/character/c_zom_dlc0_zombie_soldier_civ_1_beyes.gsc b/zm_nuked/character/c_zom_dlc0_zombie_soldier_civ_1_beyes.gsc new file mode 100644 index 0000000..845c6d6 --- /dev/null +++ b/zm_nuked/character/c_zom_dlc0_zombie_soldier_civ_1_beyes.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_dlc0_zom_solciv_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_dlc0_zom_head_blueeyes_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_dlc0_zom_solciv_body1_upclean"; + self.torsodmg2 = "c_zom_dlc0_zom_solciv_body1_rarmoff"; + self.torsodmg3 = "c_zom_dlc0_zom_solciv_body1_larmoff"; + self.torsodmg5 = "c_zom_dlc0_zom_solciv_body1_behead"; + self.legdmg1 = "c_zom_dlc0_zom_solciv_body1_lowclean"; + self.legdmg2 = "c_zom_dlc0_zom_solciv_body1_rlegoff"; + self.legdmg3 = "c_zom_dlc0_zom_solciv_body1_llegoff"; + self.legdmg4 = "c_zom_dlc0_zom_solciv_body1_legsoff"; + self.gibspawn1 = "c_zom_dlc0_zom_solciv_body1_g_larmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_dlc0_zom_solciv_body1_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_dlc0_zom_solciv_body1_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_dlc0_zom_solciv_body1_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_dlc0_zom_solciv_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_dlc0_zom_head_blueeyes_als::main() ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_upclean" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_rarmoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_larmoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_behead" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_lowclean" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_rlegoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_llegoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_legsoff" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_larmspawn" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_rlegspawn" ); + precachemodel( "c_zom_dlc0_zom_solciv_body1_g_llegspawn" ); +} diff --git a/zm_nuked/character/character_sp_zombie_dog.gsc b/zm_nuked/character/character_sp_zombie_dog.gsc new file mode 100644 index 0000000..1b84c96 --- /dev/null +++ b/zm_nuked/character/character_sp_zombie_dog.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "zombie_wolf" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "zombie_wolf" ); +} diff --git a/zm_nuked/maps/mp/_sticky_grenade.gsc b/zm_nuked/maps/mp/_sticky_grenade.gsc new file mode 100644 index 0000000..eb8885c --- /dev/null +++ b/zm_nuked/maps/mp/_sticky_grenade.gsc @@ -0,0 +1,12 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + loadfx( "weapon/crossbow/fx_trail_crossbow_blink_grn_os" ); + loadfx( "weapon/crossbow/fx_trail_crossbow_blink_red_os" ); +} + +watch_bolt_detonation( owner ) +{ +} diff --git a/zm_nuked/maps/mp/teams/_teamset_cdc.gsc b/zm_nuked/maps/mp/teams/_teamset_cdc.gsc new file mode 100644 index 0000000..62ec842 --- /dev/null +++ b/zm_nuked/maps/mp/teams/_teamset_cdc.gsc @@ -0,0 +1,51 @@ + +register() +{ + game[ "teamset" ] = []; + game[ "teamset" ][ "cdc" ] = ::cdc; +} + +level_init() +{ + game[ "allies" ] = "cdc"; + game[ "axis" ] = "cia"; + setdvar( "g_TeamName_Allies", &"ZMUI_CDC_SHORT" ); + setdvar( "g_TeamName_Axis", &"ZMUI_CIA_SHORT" ); + game[ "strings" ][ "allies_win" ] = &"ZM_CDC_WIN_MATCH"; + game[ "strings" ][ "allies_win_round" ] = &"ZM_CDC_WIN_ROUND"; + game[ "strings" ][ "allies_mission_accomplished" ] = &"ZM_CDC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "allies_eliminated" ] = &"ZM_CDC_ELIMINATED"; + game[ "strings" ][ "allies_forfeited" ] = &"ZM_CDC_FORFEITED"; + game[ "strings" ][ "allies_name" ] = &"ZM_CDC_NAME"; + game[ "music" ][ "spawn_allies" ] = "SPAWN_OPS"; + game[ "music" ][ "victory_allies" ] = "mus_victory_usa"; + game[ "icons" ][ "allies" ] = "faction_cdc"; + game[ "colors" ][ "allies" ] = ( 0, 0, 0 ); + game[ "voice" ][ "allies" ] = "vox_st6_"; + setdvar( "scr_allies", "marines" ); + game[ "strings" ][ "axis_win" ] = &"ZM_CIA_WIN_MATCH"; + game[ "strings" ][ "axis_win_round" ] = &"ZM_CIA_WIN_ROUND"; + game[ "strings" ][ "axis_mission_accomplished" ] = &"ZM_CIA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "axis_eliminated" ] = &"ZM_CIA_ELIMINATED"; + game[ "strings" ][ "axis_forfeited" ] = &"ZM_CIA_FORFEITED"; + game[ "strings" ][ "axis_name" ] = &"ZM_CIA_NAME"; + game[ "music" ][ "spawn_axis" ] = "SPAWN_RUS"; + game[ "music" ][ "victory_axis" ] = "mus_victory_soviet"; + game[ "icons" ][ "axis" ] = "faction_cia"; + game[ "colors" ][ "axis" ] = ( 0,65, 0,57, 0,41 ); + game[ "voice" ][ "axis" ] = "vox_pmc_"; +} + +cdc() +{ + allies(); + axis(); +} + +allies() +{ +} + +axis() +{ +} diff --git a/zm_nuked/maps/mp/zombies/_zm_melee_weapon.gsc b/zm_nuked/maps/mp/zombies/_zm_melee_weapon.gsc new file mode 100644 index 0000000..49998b4 --- /dev/null +++ b/zm_nuked/maps/mp/zombies/_zm_melee_weapon.gsc @@ -0,0 +1,527 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + precacheitem( weapon_name ); + precacheitem( flourish_weapon_name ); + add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon ); + melee_weapon_triggers = getentarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_weapon_triggers.size ) + { + knife_model = getent( melee_weapon_triggers[ i ].target, "targetname" ); + if ( isDefined( knife_model ) ) + { + knife_model hide(); + } + melee_weapon_triggers[ i ] thread melee_weapon_think( weapon_name, cost, has_weapon, give_weapon, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ); + melee_weapon_triggers[ i ] sethintstring( hint_string, cost ); + melee_weapon_triggers[ i ] setcursorhint( "HINT_NOICON" ); + melee_weapon_triggers[ i ] usetriggerrequirelookat(); + i++; + } + melee_weapon_structs = getstructarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_weapon_structs.size ) + { + if ( isDefined( melee_weapon_structs[ i ].trigger_stub ) ) + { + melee_weapon_structs[ i ].trigger_stub.hint_string = hint_string; + melee_weapon_structs[ i ].trigger_stub.cost = cost; + melee_weapon_structs[ i ].trigger_stub.weapon_name = weapon_name; + melee_weapon_structs[ i ].trigger_stub.has_weapon = has_weapon; + melee_weapon_structs[ i ].trigger_stub.give_weapon = give_weapon; + melee_weapon_structs[ i ].trigger_stub.vo_dialog_id = vo_dialog_id; + melee_weapon_structs[ i ].trigger_stub.flourish_weapon_name = flourish_weapon_name; + melee_weapon_structs[ i ].trigger_stub.ballistic_weapon_name = ballistic_weapon_name; + melee_weapon_structs[ i ].trigger_stub.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name; + melee_weapon_structs[ i ].trigger_stub.trigger_func = ::melee_weapon_think; + melee_weapon_structs[ i ].trigger_stub.flourish_fn = flourish_fn; + } + i++; + } + register_melee_weapon_for_level( weapon_name ); + if ( !isDefined( level.ballistic_weapon_name ) ) + { + level.ballistic_weapon_name = []; + } + level.ballistic_weapon_name[ weapon_name ] = ballistic_weapon_name; + if ( !isDefined( level.ballistic_upgraded_weapon_name ) ) + { + level.ballistic_upgraded_weapon_name = []; + } + level.ballistic_upgraded_weapon_name[ weapon_name ] = ballistic_upgraded_weapon_name; +} + +add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + melee_weapon = spawnstruct(); + melee_weapon.weapon_name = weapon_name; + melee_weapon.flourish_weapon_name = flourish_weapon_name; + melee_weapon.ballistic_weapon_name = ballistic_weapon_name; + melee_weapon.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name; + melee_weapon.cost = cost; + melee_weapon.wallbuy_targetname = wallbuy_targetname; + melee_weapon.hint_string = hint_string; + melee_weapon.vo_dialog_id = vo_dialog_id; + melee_weapon.has_weapon = has_weapon; + melee_weapon.give_weapon = give_weapon; + melee_weapon.take_weapon = take_weapon; + melee_weapon.flourish_fn = flourish_fn; + if ( !isDefined( level._melee_weapons ) ) + { + level._melee_weapons = []; + } + level._melee_weapons[ level._melee_weapons.size ] = melee_weapon; +} + +spectator_respawn_all() +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self [[ level._melee_weapons[ i ].take_weapon ]](); + i++; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + self spectator_respawn( level._melee_weapons[ i ].wallbuy_targetname, level._melee_weapons[ i ].take_weapon, level._melee_weapons[ i ].has_weapon ); + i++; + } +} + +spectator_respawn( wallbuy_targetname, take_weapon, has_weapon ) +{ + melee_triggers = getentarray( wallbuy_targetname, "targetname" ); + players = get_players(); + i = 0; + while ( i < melee_triggers.size ) + { + melee_triggers[ i ] setvisibletoall(); + while ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + j = 0; + while ( j < players.size ) + { + if ( players[ j ] [[ has_weapon ]]() ) + { + melee_triggers[ i ] setinvisibletoplayer( players[ j ] ); + } + j++; + } + } + i++; + } +} + +trigger_hide_all() +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self trigger_hide( level._melee_weapons[ i ].wallbuy_targetname ); + i++; + } +} + +trigger_hide( wallbuy_targetname ) +{ + melee_triggers = getentarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_triggers.size ) + { + melee_triggers[ i ] setinvisibletoplayer( self ); + i++; + } +} + +has_any_ballistic_knife() +{ + if ( self hasweapon( "knife_ballistic_zm" ) ) + { + return 1; + } + if ( self hasweapon( "knife_ballistic_upgraded_zm" ) ) + { + return 1; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( self hasweapon( level._melee_weapons[ i ].ballistic_weapon_name ) ) + { + return 1; + } + if ( self hasweapon( level._melee_weapons[ i ].ballistic_upgraded_weapon_name ) ) + { + return 1; + } + i++; + } + return 0; +} + +has_upgraded_ballistic_knife() +{ + if ( self hasweapon( "knife_ballistic_upgraded_zm" ) ) + { + return 1; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( self hasweapon( level._melee_weapons[ i ].ballistic_upgraded_weapon_name ) ) + { + return 1; + } + i++; + } + return 0; +} + +give_ballistic_knife( weapon_string, upgraded ) +{ + current_melee_weapon = self get_player_melee_weapon(); + if ( isDefined( current_melee_weapon ) ) + { + if ( upgraded && isDefined( level.ballistic_upgraded_weapon_name ) && isDefined( level.ballistic_upgraded_weapon_name[ current_melee_weapon ] ) ) + { + weapon_string = level.ballistic_upgraded_weapon_name[ current_melee_weapon ]; + } + if ( !upgraded && isDefined( level.ballistic_weapon_name ) && isDefined( level.ballistic_weapon_name[ current_melee_weapon ] ) ) + { + weapon_string = level.ballistic_weapon_name[ current_melee_weapon ]; + } + } + return weapon_string; +} + +change_melee_weapon( weapon_name, current_weapon ) +{ + current_melee_weapon = self get_player_melee_weapon(); + if ( isDefined( current_melee_weapon ) ) + { + self takeweapon( current_melee_weapon ); + unacquire_weapon_toggle( current_melee_weapon ); + } + self set_player_melee_weapon( weapon_name ); + had_ballistic = 0; + had_ballistic_upgraded = 0; + ballistic_was_primary = 0; + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + primary_weapon = primaryweapons[ i ]; + if ( issubstr( primary_weapon, "knife_ballistic_" ) ) + { + had_ballistic = 1; + if ( primary_weapon == current_weapon ) + { + ballistic_was_primary = 1; + } + self notify( "zmb_lost_knife" ); + self takeweapon( primary_weapon ); + unacquire_weapon_toggle( primary_weapon ); + if ( issubstr( primary_weapon, "upgraded" ) ) + { + had_ballistic_upgraded = 1; + } + } + i++; + } + if ( had_ballistic ) + { + if ( had_ballistic_upgraded ) + { + new_ballistic = level.ballistic_upgraded_weapon_name[ weapon_name ]; + if ( ballistic_was_primary ) + { + current_weapon = new_ballistic; + } + self giveweapon( new_ballistic, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( new_ballistic ) ); + } + else + { + new_ballistic = level.ballistic_weapon_name[ weapon_name ]; + if ( ballistic_was_primary ) + { + current_weapon = new_ballistic; + } + self giveweapon( new_ballistic, 0 ); + } + } + return current_weapon; +} + +melee_weapon_think( weapon_name, cost, has_weapon, give_weapon, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ) +{ + self.first_time_triggered = 0; + while ( isDefined( self.stub ) ) + { + self endon( "kill_trigger" ); + if ( isDefined( self.stub.first_time_triggered ) ) + { + self.first_time_triggered = self.stub.first_time_triggered; + } + weapon_name = self.stub.weapon_name; + cost = self.stub.cost; + has_weapon = self.stub.has_weapon; + give_weapon = self.stub.give_weapon; + flourish_fn = self.stub.flourish_fn; + vo_dialog_id = self.stub.vo_dialog_id; + flourish_weapon_name = self.stub.flourish_weapon_name; + ballistic_weapon_name = self.stub.ballistic_weapon_name; + ballistic_upgraded_weapon_name = self.stub.ballistic_upgraded_weapon_name; + players = getplayers(); + while ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + i = 0; + while ( i < players.size ) + { + if ( players[ i ] [[ has_weapon ]]() ) + { + self setinvisibletoplayer( players[ i ] ); + } + i++; + } + } + } + for ( ;; ) + { + self waittill( "trigger", player ); + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + continue; + } + else if ( player in_revive_trigger() ) + { + wait 0,1; + continue; + } + else if ( player isthrowinggrenade() ) + { + wait 0,1; + continue; + } + else if ( player.is_drinking > 0 ) + { + wait 0,1; + continue; + } + else if ( player hasweapon( weapon_name ) || player has_powerup_weapon() ) + { + wait 0,1; + continue; + } + else + { + if ( player isswitchingweapons() ) + { + wait 0,1; + break; + } + else current_weapon = player getcurrentweapon(); + if ( !is_placeable_mine( current_weapon ) || is_equipment( current_weapon ) && player has_powerup_weapon() ) + { + wait 0,1; + break; + } + else + { + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( player.intermission ) && player.intermission ) + { + wait 0,1; + break; + } + else + { + player_has_weapon = player [[ has_weapon ]](); + if ( !player_has_weapon ) + { + if ( player.score >= cost ) + { + if ( self.first_time_triggered == 0 ) + { + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread melee_weapon_show( player ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.first_time_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.first_time_triggered = 1; + } + } + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, cost, weapon_name, self.origin, "weapon" ); + player thread give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, give_weapon, flourish_fn, self ); + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon", undefined, 1 ); + } + break; + } + else + { + if ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + self setinvisibletoplayer( player ); + } + } + } + } + } + } +} + +melee_weapon_show( player ) +{ + player_angles = vectorToAngle( player.origin - self.origin ); + player_yaw = player_angles[ 1 ]; + weapon_yaw = self.angles[ 1 ]; + yaw_diff = angleClamp180( player_yaw - weapon_yaw ); + if ( yaw_diff > 0 ) + { + yaw = weapon_yaw - 90; + } + else + { + yaw = weapon_yaw + 90; + } + self.og_origin = self.origin; + self.origin += anglesToForward( ( 0, yaw, 0 ) ) * 8; + wait 0,05; + self show(); + play_sound_at_pos( "weapon_show", self.origin, self ); + time = 1; + self moveto( self.og_origin, time ); +} + +give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, give_weapon, flourish_fn, trigger ) +{ + if ( isDefined( flourish_fn ) ) + { + self thread [[ flourish_fn ]](); + } + gun = self do_melee_weapon_flourish_begin( flourish_weapon_name ); + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", vo_dialog_id ); + self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" ); + self do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ); + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + return; + } + self [[ give_weapon ]](); + if ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + trigger setinvisibletoplayer( self ); + self trigger_hide_all(); + } +} + +do_melee_weapon_flourish_begin( flourish_weapon_name ) +{ + self increment_is_drinking(); + self disable_player_move_states( 1 ); + gun = self getcurrentweapon(); + weapon = flourish_weapon_name; + self giveweapon( weapon ); + self switchtoweapon( weapon ); + return gun; +} + +do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ) +{ +/# + assert( gun != "zombie_perk_bottle_doubletap" ); +#/ +/# + assert( gun != "zombie_perk_bottle_revive" ); +#/ +/# + assert( gun != "zombie_perk_bottle_jugg" ); +#/ +/# + assert( gun != "zombie_perk_bottle_sleight" ); +#/ +/# + assert( gun != "zombie_perk_bottle_marathon" ); +#/ +/# + assert( gun != "zombie_perk_bottle_nuke" ); +#/ +/# + assert( gun != "zombie_perk_bottle_deadshot" ); +#/ +/# + assert( gun != "zombie_perk_bottle_additionalprimaryweapon" ); +#/ +/# + assert( gun != "zombie_perk_bottle_tombstone" ); +#/ +/# + assert( gun != level.revive_tool ); +#/ + self enable_player_move_states(); + weapon = flourish_weapon_name; + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + self takeweapon( weapon ); + self.lastactiveweapon = "none"; + return; + } + self takeweapon( weapon ); + self giveweapon( weapon_name ); + gun = change_melee_weapon( weapon_name, gun ); + if ( self hasweapon( "knife_zm" ) ) + { + self takeweapon( "knife_zm" ); + } + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + return; + } + else if ( gun == "knife_zm" ) + { + self switchtoweapon( weapon_name ); + self decrement_is_drinking(); + return; + } + else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) ) + { + self switchtoweapon( gun ); + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } + self waittill( "weapon_change_complete" ); + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( self.intermission ) && !self.intermission ) + { + self decrement_is_drinking(); + } +} diff --git a/zm_nuked/maps/mp/zombies/_zm_weap_ballistic_knife.gsc b/zm_nuked/maps/mp/zombies/_zm_weap_ballistic_knife.gsc new file mode 100644 index 0000000..cd33180 --- /dev/null +++ b/zm_nuked/maps/mp/zombies/_zm_weap_ballistic_knife.gsc @@ -0,0 +1,278 @@ +#include maps/mp/zombies/_zm_stats; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + if ( isDefined( level._uses_retrievable_ballisitic_knives ) && level._uses_retrievable_ballisitic_knives == 1 ) + { + precachemodel( "t5_weapon_ballistic_knife_projectile" ); + precachemodel( "t5_weapon_ballistic_knife_blade_retrieve" ); + } +} + +on_spawn( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + player endon( "zmb_lost_knife" ); + level endon( "game_ended" ); + self waittill( "stationary", endpos, normal, angles, attacker, prey, bone ); + isfriendly = 0; + if ( isDefined( endpos ) ) + { + retrievable_model = spawn( "script_model", endpos ); + retrievable_model setmodel( "t5_weapon_ballistic_knife_blade_retrieve" ); + retrievable_model setowner( player ); + retrievable_model.owner = player; + retrievable_model.angles = angles; + retrievable_model.name = watcher.weapon; + if ( isDefined( prey ) ) + { + if ( isplayer( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + else + { + if ( isai( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + } + if ( !isfriendly ) + { + retrievable_model linkto( prey, bone ); + retrievable_model thread force_drop_knives_to_ground_on_death( player, prey ); + } + else + { + if ( isfriendly ) + { + retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) ); + normal = ( 0, 0, 1 ); + } + } + } + watcher.objectarray[ watcher.objectarray.size ] = retrievable_model; + if ( isfriendly ) + { + retrievable_model waittill( "stationary" ); + } + retrievable_model thread drop_knives_to_ground( player ); + if ( isfriendly ) + { + player notify( "ballistic_knife_stationary" ); + } + else + { + player notify( "ballistic_knife_stationary" ); + } + retrievable_model thread wait_to_show_glowing_model( prey ); + } +} + +wait_to_show_glowing_model( prey ) +{ + level endon( "game_ended" ); + self endon( "death" ); + wait 2; + self setmodel( "t5_weapon_ballistic_knife_blade_retrieve" ); +} + +on_spawn_retrieve_trigger( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + player endon( "zmb_lost_knife" ); + level endon( "game_ended" ); + player waittill( "ballistic_knife_stationary", retrievable_model, normal, prey ); + if ( !isDefined( retrievable_model ) ) + { + return; + } + trigger_pos = []; + if ( isDefined( prey ) || isplayer( prey ) && isai( prey ) ) + { + trigger_pos[ 0 ] = prey.origin[ 0 ]; + trigger_pos[ 1 ] = prey.origin[ 1 ]; + trigger_pos[ 2 ] = prey.origin[ 2 ] + 10; + } + else + { + trigger_pos[ 0 ] = retrievable_model.origin[ 0 ] + ( 10 * normal[ 0 ] ); + trigger_pos[ 1 ] = retrievable_model.origin[ 1 ] + ( 10 * normal[ 1 ] ); + trigger_pos[ 2 ] = retrievable_model.origin[ 2 ] + ( 10 * normal[ 2 ] ); + } + pickup_trigger = spawn( "trigger_radius_use", ( trigger_pos[ 0 ], trigger_pos[ 1 ], trigger_pos[ 2 ] ) ); + pickup_trigger setcursorhint( "HINT_NOICON" ); + pickup_trigger.owner = player; + retrievable_model.retrievabletrigger = pickup_trigger; + hint_string = &"WEAPON_BALLISTIC_KNIFE_PICKUP"; + if ( isDefined( hint_string ) ) + { + pickup_trigger sethintstring( hint_string ); + } + else + { + pickup_trigger sethintstring( &"GENERIC_PICKUP" ); + } + pickup_trigger setteamfortrigger( player.team ); + player clientclaimtrigger( pickup_trigger ); + pickup_trigger enablelinkto(); + if ( isDefined( prey ) ) + { + pickup_trigger linkto( prey ); + } + else + { + pickup_trigger linkto( retrievable_model ); + } + if ( isDefined( level.knife_planted ) ) + { + [[ level.knife_planted ]]( retrievable_model, pickup_trigger, prey ); + } + retrievable_model thread watch_use_trigger( pickup_trigger, retrievable_model, ::pick_up, watcher.weapon, watcher.pickupsoundplayer, watcher.pickupsound ); + player thread watch_shutdown( pickup_trigger, retrievable_model ); +} + +debug_print( endpos ) +{ +/# + self endon( "death" ); + while ( 1 ) + { + print3d( endpos, "pickup_trigger" ); + wait 0,05; +#/ + } +} + +watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundonuse ) +{ + self endon( "death" ); + self endon( "delete" ); + level endon( "game_ended" ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + if ( isDefined( trigger.triggerteam ) && player.team != trigger.triggerteam ) + { + continue; + } + if ( isDefined( trigger.claimedby ) && player != trigger.claimedby ) + { + continue; + } + if ( player usebuttonpressed() && !player.throwinggrenade && !player meleebuttonpressed() ) + { + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + player thread [[ callback ]]( weapon, model, trigger ); + return; + } + else + { + } + } +} + +pick_up( weapon, model, trigger ) +{ + current_weapon = self getcurrentweapon(); + if ( current_weapon != weapon ) + { + clip_ammo = self getweaponammoclip( weapon ); + if ( !clip_ammo ) + { + self setweaponammoclip( weapon, 1 ); + } + else + { + new_ammo_stock = self getweaponammostock( weapon ) + 1; + self setweaponammostock( weapon, new_ammo_stock ); + } + } + else + { + new_ammo_stock = self getweaponammostock( weapon ) + 1; + self setweaponammostock( weapon, new_ammo_stock ); + } + self maps/mp/zombies/_zm_stats::increment_client_stat( "ballistic_knives_pickedup" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "ballistic_knives_pickedup" ); + model destroy_ent(); + trigger destroy_ent(); +} + +destroy_ent() +{ + if ( isDefined( self ) ) + { + if ( isDefined( self.glowing_model ) ) + { + self.glowing_model delete(); + } + self delete(); + } +} + +watch_shutdown( trigger, model ) +{ + self waittill_any( "death", "disconnect", "zmb_lost_knife" ); + trigger destroy_ent(); + model destroy_ent(); +} + +drop_knives_to_ground( player ) +{ + player endon( "death" ); + player endon( "zmb_lost_knife" ); + for ( ;; ) + { + level waittill( "drop_objects_to_ground", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread update_retrieve_trigger( player ); + } + } +} + +force_drop_knives_to_ground_on_death( player, prey ) +{ + self endon( "death" ); + player endon( "zmb_lost_knife" ); + prey waittill( "death" ); + self unlink(); + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread update_retrieve_trigger( player ); +} + +update_retrieve_trigger( player ) +{ + self endon( "death" ); + player endon( "zmb_lost_knife" ); + if ( isDefined( level.custom_update_retrieve_trigger ) ) + { + self [[ level.custom_update_retrieve_trigger ]]( player ); + return; + } + self waittill( "stationary" ); + trigger = self.retrievabletrigger; + trigger.origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 10 ); + trigger linkto( self ); +} diff --git a/zm_nuked/maps/mp/zombies/_zm_weap_bowie.gsc b/zm_nuked/maps/mp/zombies/_zm_weap_bowie.gsc new file mode 100644 index 0000000..54968b5 --- /dev/null +++ b/zm_nuked/maps/mp/zombies/_zm_weap_bowie.gsc @@ -0,0 +1,53 @@ +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( isDefined( level.bowie_cost ) ) + { + cost = level.bowie_cost; + } + else + { + cost = 3000; + } + maps/mp/zombies/_zm_melee_weapon::init( "bowie_knife_zm", "zombie_bowie_flourish", "knife_ballistic_bowie_zm", "knife_ballistic_bowie_upgraded_zm", cost, "bowie_upgrade", &"ZOMBIE_WEAPON_BOWIE_BUY", "bowie", ::has_bowie, ::give_bowie, ::take_bowie, ::bowie_flourish ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_bowie" ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_bowie_upgraded" ); +} + +spectator_respawn() +{ + maps/mp/zombies/_zm_melee_weapon::spectator_respawn( "bowie_upgrade", ::take_bowie, ::has_bowie ); +} + +has_bowie() +{ + if ( is_true( level._allow_melee_weapon_switching ) ) + { + return 0; + } + if ( !is_true( self._sickle_zm_equipped ) || is_true( self._bowie_zm_equipped ) && is_true( self._tazer_zm_equipped ) ) + { + return 1; + } + return 0; +} + +give_bowie() +{ + self._bowie_zm_equipped = 1; + self._sickle_zm_equipped = undefined; + self._tazer_zm_equipped = undefined; +} + +take_bowie() +{ + self._bowie_zm_equipped = undefined; +} + +bowie_flourish() +{ +} diff --git a/zm_nuked/maps/mp/zombies/_zm_weap_claymore.gsc b/zm_nuked/maps/mp/zombies/_zm_weap_claymore.gsc new file mode 100644 index 0000000..57ac3c0 --- /dev/null +++ b/zm_nuked/maps/mp/zombies/_zm_weap_claymore.gsc @@ -0,0 +1,487 @@ +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !isDefined( level.claymores_max_per_player ) ) + { + level.claymores_max_per_player = 12; + } + trigs = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < trigs.size ) + { + model = getent( trigs[ i ].target, "targetname" ); + if ( isDefined( model ) ) + { + model hide(); + } + i++; + } + array_thread( trigs, ::buy_claymores ); + level thread give_claymores_after_rounds(); + level.claymores_on_damage = ::satchel_damage; + level.pickup_claymores = ::pickup_claymores; + level.pickup_claymores_trigger_listener = ::pickup_claymores_trigger_listener; + level.claymore_detectiondot = cos( 70 ); + level.claymore_detectionmindist = 20; + level._effect[ "claymore_laser" ] = loadfx( "weapon/claymore/fx_claymore_laser" ); +} + +buy_claymores() +{ + self.zombie_cost = 1000; + self sethintstring( &"ZOMBIE_CLAYMORE_PURCHASE" ); + self setcursorhint( "HINT_NOICON" ); + self endon( "kill_trigger" ); + if ( !isDefined( self.stub ) ) + { + return; + } + if ( isDefined( self.stub ) && !isDefined( self.stub.claymores_triggered ) ) + { + self.stub.claymores_triggered = 0; + } + self.claymores_triggered = self.stub.claymores_triggered; + while ( 1 ) + { + self waittill( "trigger", who ); + while ( who in_revive_trigger() ) + { + continue; + } + while ( who has_powerup_weapon() ) + { + wait 0,1; + } + if ( is_player_valid( who ) ) + { + if ( who.score >= self.zombie_cost ) + { + if ( !who is_player_placeable_mine( "claymore_zm" ) ) + { + play_sound_at_pos( "purchase", self.origin ); + who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + who thread claymore_setup(); + who thread show_claymore_hint( "claymore_purchased" ); + who thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" ); + if ( isDefined( self.stub ) ) + { + self.claymores_triggered = self.stub.claymores_triggered; + } + if ( self.claymores_triggered == 0 ) + { + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread maps/mp/zombies/_zm_weapons::weapon_show( who ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.claymores_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.claymores_triggered = 1; + } + } + trigs = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < trigs.size ) + { + trigs[ i ] setinvisibletoplayer( who ); + i++; + } + } + else who thread show_claymore_hint( "already_purchased" ); + } + } + } +} + +claymore_unitrigger_update_prompt( player ) +{ + if ( player is_player_placeable_mine( "claymore_zm" ) ) + { + return 0; + } + return 1; +} + +set_claymore_visible() +{ + players = get_players(); + trigs = getentarray( "claymore_purchase", "targetname" ); + while ( 1 ) + { + j = 0; + while ( j < players.size ) + { + while ( !players[ j ] is_player_placeable_mine( "claymore_zm" ) ) + { + i = 0; + while ( i < trigs.size ) + { + trigs[ i ] setinvisibletoplayer( players[ j ], 0 ); + i++; + } + } + j++; + } + wait 1; + players = get_players(); + } +} + +claymore_safe_to_plant() +{ + if ( self.owner.claymores.size >= level.claymores_max_per_player ) + { + return 0; + } + if ( isDefined( level.claymore_safe_to_plant ) ) + { + return self [[ level.claymore_safe_to_plant ]](); + } + return 1; +} + +claymore_wait_and_detonate() +{ + wait 0,1; + self detonate( self.owner ); +} + +claymore_watch() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "grenade_fire", claymore, weapname ); + if ( weapname == "claymore_zm" ) + { + claymore.owner = self; + claymore.team = self.team; + self notify( "zmb_enable_claymore_prompt" ); + if ( claymore claymore_safe_to_plant() ) + { + if ( isDefined( level.claymore_planted ) ) + { + self thread [[ level.claymore_planted ]]( claymore ); + } + claymore thread satchel_damage(); + claymore thread claymore_detonation(); + claymore thread play_claymore_effects(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "claymores_planted" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "claymores_planted" ); + break; + } + else + { + claymore thread claymore_wait_and_detonate(); + } + } + } +} + +claymore_setup() +{ + if ( !isDefined( self.claymores ) ) + { + self.claymores = []; + } + self thread claymore_watch(); + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammostock( "claymore_zm", 2 ); +} + +adjust_trigger_origin( origin ) +{ + origin += vectorScale( ( 0, 0, 1 ), 20 ); + return origin; +} + +on_spawn_retrieve_trigger( watcher, player ) +{ + self maps/mp/gametypes_zm/_weaponobjects::onspawnretrievableweaponobject( watcher, player ); + if ( isDefined( self.pickuptrigger ) ) + { + self.pickuptrigger sethintlowpriority( 0 ); + } +} + +pickup_claymores() +{ + player = self.owner; + if ( !player hasweapon( "claymore_zm" ) ) + { + player thread claymore_watch(); + player giveweapon( "claymore_zm" ); + player set_player_placeable_mine( "claymore_zm" ); + player setactionslot( 4, "weapon", "claymore_zm" ); + player setweaponammoclip( "claymore_zm", 0 ); + player notify( "zmb_enable_claymore_prompt" ); + } + else + { + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo >= clip_max_ammo ) + { + player notify( "zmb_disable_claymore_prompt" ); + return; + } + } + self pick_up(); + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo >= clip_max_ammo ) + { + player notify( "zmb_disable_claymore_prompt" ); + } + player maps/mp/zombies/_zm_stats::increment_client_stat( "claymores_pickedup" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "claymores_pickedup" ); +} + +pickup_claymores_trigger_listener( trigger, player ) +{ + self thread pickup_claymores_trigger_listener_enable( trigger, player ); + self thread pickup_claymores_trigger_listener_disable( trigger, player ); +} + +pickup_claymores_trigger_listener_enable( trigger, player ) +{ + self endon( "delete" ); + while ( 1 ) + { + player waittill_any( "zmb_enable_claymore_prompt", "spawned_player" ); + if ( !isDefined( trigger ) ) + { + return; + } + trigger trigger_on(); + trigger linkto( self ); + } +} + +pickup_claymores_trigger_listener_disable( trigger, player ) +{ + self endon( "delete" ); + while ( 1 ) + { + player waittill( "zmb_disable_claymore_prompt" ); + if ( !isDefined( trigger ) ) + { + return; + } + trigger unlink(); + trigger trigger_off(); + } +} + +shouldaffectweaponobject( object ) +{ + pos = self.origin + vectorScale( ( 0, 0, 1 ), 32 ); + dirtopos = pos - object.origin; + objectforward = anglesToForward( object.angles ); + dist = vectordot( dirtopos, objectforward ); + if ( dist < level.claymore_detectionmindist ) + { + return 0; + } + dirtopos = vectornormalize( dirtopos ); + dot = vectordot( dirtopos, objectforward ); + return dot > level.claymore_detectiondot; +} + +claymore_detonation() +{ + self endon( "death" ); + self waittill_not_moving(); + detonateradius = 96; + damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 2 ); + damagearea setexcludeteamfortrigger( self.team ); + damagearea enablelinkto(); + damagearea linkto( self ); + if ( is_true( self.isonbus ) ) + { + damagearea setmovingplatformenabled( 1 ); + } + self.damagearea = damagearea; + self thread delete_claymores_on_death( self.owner, damagearea ); + self.owner.claymores[ self.owner.claymores.size ] = self; + while ( 1 ) + { + damagearea waittill( "trigger", ent ); + if ( isDefined( self.owner ) && ent == self.owner ) + { + continue; + } + while ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == self.team ) + { + continue; + } + while ( !ent shouldaffectweaponobject( self ) ) + { + continue; + } + if ( ent damageconetrace( self.origin, self ) > 0 ) + { + self playsound( "wpn_claymore_alert" ); + wait 0,4; + if ( isDefined( self.owner ) ) + { + self detonate( self.owner ); + } + else + { + self detonate( undefined ); + } + return; + } + } +} + +delete_claymores_on_death( player, ent ) +{ + self waittill( "death" ); + if ( isDefined( player ) ) + { + arrayremovevalue( player.claymores, self ); + } + wait 0,05; + if ( isDefined( ent ) ) + { + ent delete(); + } +} + +satchel_damage() +{ + self setcandamage( 1 ); + self.health = 100000; + self.maxhealth = self.health; + attacker = undefined; + while ( 1 ) + { + self waittill( "damage", amount, attacker ); + if ( !isDefined( self ) ) + { + return; + } + self.health = self.maxhealth; + while ( !isplayer( attacker ) ) + { + continue; + } + if ( isDefined( self.owner ) && attacker == self.owner ) + { + continue; + } + while ( isDefined( attacker.pers ) && isDefined( attacker.pers[ "team" ] ) && attacker.pers[ "team" ] != level.zombie_team ) + { + continue; + } + } + if ( level.satchelexplodethisframe ) + { + wait ( 0,1 + randomfloat( 0,4 ) ); + } + else wait 0,05; + if ( !isDefined( self ) ) + { + return; + } + level.satchelexplodethisframe = 1; + thread reset_satchel_explode_this_frame(); + self detonate( attacker ); +} + +reset_satchel_explode_this_frame() +{ + wait 0,05; + level.satchelexplodethisframe = 0; +} + +play_claymore_effects() +{ + self endon( "death" ); + self waittill_not_moving(); + playfxontag( level._effect[ "claymore_laser" ], self, "tag_fx" ); +} + +give_claymores_after_rounds() +{ + while ( 1 ) + { + level waittill( "between_round_over" ); + while ( !level flag_exists( "teleporter_used" ) || !flag( "teleporter_used" ) ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] is_player_placeable_mine( "claymore_zm" ) ) + { + players[ i ] giveweapon( "claymore_zm" ); + players[ i ] set_player_placeable_mine( "claymore_zm" ); + players[ i ] setactionslot( 4, "weapon", "claymore_zm" ); + players[ i ] setweaponammoclip( "claymore_zm", 2 ); + } + i++; + } + } + } +} + +init_hint_hudelem( x, y, alignx, aligny, fontscale, alpha ) +{ + self.x = x; + self.y = y; + self.alignx = alignx; + self.aligny = aligny; + self.fontscale = fontscale; + self.alpha = alpha; + self.sort = 20; +} + +setup_client_hintelem() +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( self.hintelem ) ) + { + self.hintelem = newclienthudelem( self ); + } + self.hintelem init_hint_hudelem( 320, 220, "center", "bottom", 1,6, 1 ); +} + +show_claymore_hint( string ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( string == "claymore_purchased" ) + { + text = &"ZOMBIE_CLAYMORE_HOWTO"; + } + else + { + text = &"ZOMBIE_CLAYMORE_ALREADY_PURCHASED"; + } + self setup_client_hintelem(); + self.hintelem settext( text ); + wait 3,5; + self.hintelem settext( "" ); +} diff --git a/zm_nuked/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc b/zm_nuked/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc new file mode 100644 index 0000000..926716f --- /dev/null +++ b/zm_nuked/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc @@ -0,0 +1,137 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + registerclientfield( "toplayer", "tazer_flourish", 1, 1, "int" ); + register_melee_weapon_for_level( "tazer_knuckles_zm" ); + if ( isDefined( level.tazer_cost ) ) + { + cost = level.tazer_cost; + } + else + { + cost = 6000; + } + maps/mp/zombies/_zm_melee_weapon::init( "tazer_knuckles_zm", "zombie_tazer_flourish", "knife_ballistic_no_melee_zm", "knife_ballistic_no_melee_upgraded_zm", cost, "tazer_upgrade", &"ZOMBIE_WEAPON_TAZER_BUY", "tazerknuckles", ::has_tazer, ::give_tazer, ::take_tazer, ::tazer_flourish_fx ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_no_melee" ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_no_melee_upgraded" ); + maps/mp/zombies/_zm_spawner::add_cusom_zombie_spawn_logic( ::watch_bodily_functions ); + level._effect[ "fx_zmb_taser_vomit" ] = loadfx( "maps/zombie/fx_zmb_taser_vomit" ); + level._effect[ "fx_zmb_taser_flourish" ] = loadfx( "weapon/taser/fx_taser_knuckles_anim_zmb" ); + level.tazer_flourish_delay = 0,5; +} + +spectator_respawn() +{ + maps/mp/zombies/_zm_melee_weapon::spectator_respawn( "tazer_upgrade", ::take_tazer, ::has_tazer ); +} + +watch_bodily_functions() +{ + if ( isDefined( self.isscreecher ) || self.isscreecher && isDefined( self.is_avogadro ) && self.is_avogadro ) + { + return; + } + while ( 1 ) + { + self waittill( "damage", amount, attacker, direction_vec, point, type ); + if ( !isDefined( self ) ) + { + return; + } + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + continue; + } + while ( type != "MOD_MELEE" ) + { + continue; + } + if ( !attacker hasweapon( "tazer_knuckles_zm" ) || isDefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) + { + continue; + } + ch = randomint( 100 ); + if ( ch < 4 ) + { + playfxontag( level._effect[ "fx_zmb_taser_vomit" ], self, "j_neck" ); + } + } +} + +onplayerconnect() +{ + self thread onplayerspawned(); +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchtazerknucklemelee(); + } +} + +watchtazerknucklemelee() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "weapon_melee", weapon ); + if ( weapon == "tazer_knuckles_zm" ) + { + self tazerknuckle_melee(); + } + } +} + +tazerknuckle_melee() +{ +} + +has_tazer() +{ + if ( isDefined( level._allow_melee_weapon_switching ) && level._allow_melee_weapon_switching ) + { + return 0; + } + if ( isDefined( self._sickle_zm_equipped ) && !self._sickle_zm_equipped && isDefined( self._bowie_zm_equipped ) || self._bowie_zm_equipped && isDefined( self._tazer_zm_equipped ) && self._tazer_zm_equipped ) + { + return 1; + } + return 0; +} + +give_tazer() +{ + self._tazer_zm_equipped = 1; + self._bowie_zm_equipped = undefined; + self._sickle_zm_equipped = undefined; +} + +take_tazer() +{ + self._tazer_zm_equipped = undefined; +} + +tazer_flourish_fx() +{ + self waittill( "weapon_change", newweapon ); + if ( newweapon == "zombie_tazer_flourish" ) + { + self endon( "weapon_change" ); + wait level.tazer_flourish_delay; + self thread maps/mp/zombies/_zm_audio::playerexert( "hitmed" ); + self setclientfieldtoplayer( "tazer_flourish", 1 ); + wait_network_frame(); + self setclientfieldtoplayer( "tazer_flourish", 0 ); + } +} diff --git a/zm_nuked/xmodelalias/c_zom_dlc0_zom_head_als.gsc b/zm_nuked/xmodelalias/c_zom_dlc0_zom_head_als.gsc new file mode 100644 index 0000000..431ef4c --- /dev/null +++ b/zm_nuked/xmodelalias/c_zom_dlc0_zom_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_dlc0_zom_head1"; + a[ 1 ] = "c_zom_dlc0_zom_head2"; + a[ 2 ] = "c_zom_dlc0_zom_head3"; + a[ 3 ] = "c_zom_dlc0_zom_head4"; + return a; +} diff --git a/zm_nuked/xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc b/zm_nuked/xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc new file mode 100644 index 0000000..82011f1 --- /dev/null +++ b/zm_nuked/xmodelalias/c_zom_dlc0_zom_head_blueeyes_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_dlc0_zom_head1_blueeyes"; + a[ 1 ] = "c_zom_dlc0_zom_head2_blueeyes"; + a[ 2 ] = "c_zom_dlc0_zom_head3_blueeyes"; + a[ 3 ] = "c_zom_dlc0_zom_head4_blueeyes"; + return a; +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc new file mode 100644 index 0000000..8bd9a0e --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_127" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_176.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_176.gsc new file mode 100644 index 0000000..ae88b6a --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_176.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_176" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_40.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_40.gsc new file mode 100644 index 0000000..a07466c --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_40.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_40" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc new file mode 100644 index 0000000..eb80121 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 72, 7 ); + } + else + { + dosimpletraverse( "jump_down_72" ); + } +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc new file mode 100644 index 0000000..e32a251 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 96, 7 ); + } + else + { + dosimpletraverse( "jump_down_96" ); + } +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_fast_40.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_fast_40.gsc new file mode 100644 index 0000000..7eb18ba --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_down_fast_40.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( self.zombie_move_speed == "sprint" ) + { + dosimpletraverse( "jump_down_fast_40" ); + } + else + { + dosimpletraverse( "jump_down_40" ); + } +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc new file mode 100644 index 0000000..06cec96 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_127" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_154.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_154.gsc new file mode 100644 index 0000000..7bfc6a9 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_154.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_154" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc new file mode 100644 index 0000000..793683d --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_222" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_72.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_72.gsc new file mode 100644 index 0000000..607262d --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_72.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_72" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_96.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_96.gsc new file mode 100644 index 0000000..fa18212 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_96.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_96" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_to_climb.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_to_climb.gsc new file mode 100644 index 0000000..10967b6 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_jump_up_to_climb.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_to_climb" ); +} diff --git a/zm_nuked_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc new file mode 100644 index 0000000..ace7bd7 --- /dev/null +++ b/zm_nuked_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_garage_door", 1 ); +} diff --git a/zm_nuked_patch/maps/mp/createart/zm_nuked_art.gsc b/zm_nuked_patch/maps/mp/createart/zm_nuked_art.gsc new file mode 100644 index 0000000..f68ae26 --- /dev/null +++ b/zm_nuked_patch/maps/mp/createart/zm_nuked_art.gsc @@ -0,0 +1,44 @@ + +main() +{ + level.tweakfile = 1; + visionsetnaked( "mp_nuked", 1 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1,25 ); + setdvar( "r_lightGridContrast", 0,18 ); + setdvar( "scr_fog_exp_halfplane", "639.219" ); + setdvar( "scr_fog_exp_halfheight", "18691.3" ); + setdvar( "scr_fog_nearplane", "138.679" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "1145.21" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 138,679; + half_dist = 1011,624; + half_height = 10834,5; + base_height = 1145,21; + fog_r = 0,501961; + fog_g = 0,501961; + fog_b = 0,501961; + fog_scale = 7,5834; + sun_col_r = 0,501961; + sun_col_g = 0,501961; + sun_col_b = 0,501961; + sun_dir_x = -0,99; + sun_dir_y = 0,06; + sun_dir_z = -0,11; + sun_start_ang = 0; + sun_stop_ang = 0; + time = 0; + max_fog_opacity = 0,8546; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); +} diff --git a/zm_nuked_patch/maps/mp/createfx/zm_nuked_fx.gsc b/zm_nuked_patch/maps/mp/createfx/zm_nuked_fx.gsc new file mode 100644 index 0000000..4a1dfdd --- /dev/null +++ b/zm_nuked_patch/maps/mp/createfx/zm_nuked_fx.gsc @@ -0,0 +1,1491 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_linger_core" ); + ent.v[ "origin" ] = ( 445,226, 10827,9, -3660,41 ); + ent.v[ "angles" ] = ( 270, 0, -14 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 41,525, -2750,68, -75,3277 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -937,065, -3497,88, -50,1126 ); + ent.v[ "angles" ] = ( 273,652, 322,536, 117,531 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_debris_streamer_volume" ); + ent.v[ "origin" ] = ( 18,2005, 101,9, -54,6617 ); + ent.v[ "angles" ] = ( 270, 0,516025, -0,516014 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( 1081,89, 493,638, 127,047 ); + ent.v[ "angles" ] = ( 270, 0, 141 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( -249,48, -377,549, 200,445 ); + ent.v[ "angles" ] = ( 298, 321, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( 643,139, 700,744, -53,5099 ); + ent.v[ "angles" ] = ( 270, 0, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_blowing_lg" ); + ent.v[ "origin" ] = ( 1873,09, 975,065, 155,143 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_blowing_lg" ); + ent.v[ "origin" ] = ( -1966,19, 1368,03, 107,328 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 266 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_radioactive_ash_gusty" ); + ent.v[ "origin" ] = ( -41,6646, 630,257, -32,715 ); + ent.v[ "angles" ] = ( 3, 281, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_ceiling_edge_md" ); + ent.v[ "origin" ] = ( 504,862, 667,287, 67,3657 ); + ent.v[ "angles" ] = ( 72,9077, 267,649, -13,2309 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_fire_windblown_md" ); + ent.v[ "origin" ] = ( -709,762, -571,211, 134,819 ); + ent.v[ "angles" ] = ( 354,1, 264,518, -15,6971 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_wood_floor_int" ); + ent.v[ "origin" ] = ( 890,183, 519,432, 118,773 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_wood_floor_int" ); + ent.v[ "origin" ] = ( 776,965, 497,249, 106,67 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -187,638, 545,083, -3,0519 ); + ent.v[ "angles" ] = ( 349,396, 207,878, -44,9608 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_eaves_md" ); + ent.v[ "origin" ] = ( -276,783, 1006,11, 76,125 ); + ent.v[ "angles" ] = ( 334,459, 290,689, -4,2706 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( 637,937, 661,921, 73,7494 ); + ent.v[ "angles" ] = ( 347, 285, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 1533,28, 73,7367, 5,7648 ); + ent.v[ "angles" ] = ( 0, 258, -45 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( -287,163, -816,474, 4,5551 ); + ent.v[ "angles" ] = ( 314,389, 248,061, -138,142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_radioactive_ash_gusty" ); + ent.v[ "origin" ] = ( -1725,6, 567,512, -33 ); + ent.v[ "angles" ] = ( 3, 290, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_radioactive_ash_gusty" ); + ent.v[ "origin" ] = ( 1510,3, 842,699, -59 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_rubble_md_int" ); + ent.v[ "origin" ] = ( 612,678, 709,124, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 231 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_plume_md_blk_wispy_dist" ); + ent.v[ "origin" ] = ( -596,399, 497,52, 290,26 ); + ent.v[ "angles" ] = ( 26, 276, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_wood_sm_black" ); + ent.v[ "origin" ] = ( 645,654, 668,519, -19,3929 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 237 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( 1449,32, 1110,58, -54,9784 ); + ent.v[ "angles" ] = ( 335, 283,772, 0,574565 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_md" ); + ent.v[ "origin" ] = ( -1907,01, -67,6244, -80,4186 ); + ent.v[ "angles" ] = ( 2, 241, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_md" ); + ent.v[ "origin" ] = ( -93,7951, -820,453, -65 ); + ent.v[ "angles" ] = ( 357, 273, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_md" ); + ent.v[ "origin" ] = ( 1671,55, 260,601, -53,6296 ); + ent.v[ "angles" ] = ( 346, 283, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_md" ); + ent.v[ "origin" ] = ( -1346,46, -234,953, -57,5488 ); + ent.v[ "angles" ] = ( 357, 263, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( -1277,63, 1256,54, 3,8342 ); + ent.v[ "angles" ] = ( 347,005, 237,864, 2,85391 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_md" ); + ent.v[ "origin" ] = ( 129,994, 1168,57, 146,125 ); + ent.v[ "angles" ] = ( 358,068, 261,992, 0,517913 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( -627,548, -288,422, -19,7478 ); + ent.v[ "angles" ] = ( 6, 256, -26 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 579,779, -285,6, -47,0624 ); + ent.v[ "angles" ] = ( 272, 360, 105 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1958,86, 624,942, -46,2195 ); + ent.v[ "angles" ] = ( 338,131, 284,83, 93,5505 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2048,79, 341,904, -47,0714 ); + ent.v[ "angles" ] = ( 272, 360, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1603,57, 599,497, -3,86064 ); + ent.v[ "angles" ] = ( 315,381, 281,951, 87,2322 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1759,17, 87,4756, -18,1138 ); + ent.v[ "angles" ] = ( 272, 360, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( 338,176, -555,153, 218,675 ); + ent.v[ "angles" ] = ( 68,0054, 224,425, 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -228,368, -338,549, 248,159 ); + ent.v[ "angles" ] = ( 36, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( -637,081, 238,816, 172,508 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_elec_spark_wire_xsm_runner" ); + ent.v[ "origin" ] = ( -862,532, 322,962, 20,2642 ); + ent.v[ "angles" ] = ( 90, 334,669, 64,6695 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_mp_elec_spark_burst_xsm_thin_runner" ); + ent.v[ "origin" ] = ( 562,947, -195,76, 45,7788 ); + ent.v[ "angles" ] = ( 3, 250, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_ceiling_rafter_md" ); + ent.v[ "origin" ] = ( -44,1217, 1280,19, 71,0198 ); + ent.v[ "angles" ] = ( 356,102, 294,872, 177,633 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -148,616, 1230,93, 97,875 ); + ent.v[ "angles" ] = ( 0,315608, 299,435, -148,474 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -339,905, 986,868, 46,0477 ); + ent.v[ "angles" ] = ( 291,561, 213,792, -103,719 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_ceiling_rafter_md" ); + ent.v[ "origin" ] = ( 486,764, 1088,3, 97,7656 ); + ent.v[ "angles" ] = ( 357, 249, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 544,56, 1081,85, 115,174 ); + ent.v[ "angles" ] = ( 346,168, 246,191, -71,5734 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 732,396, 12,911, 181,087 ); + ent.v[ "angles" ] = ( 281,384, 156,871, 127,577 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 745,596, 65,6857, 209,106 ); + ent.v[ "angles" ] = ( 14,4775, 278,496, -3,96713 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( 870,11, 816,714, 107,283 ); + ent.v[ "angles" ] = ( 15,9545, 287,701, -6,3861 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 810,803, 772,44, -23,1783 ); + ent.v[ "angles" ] = ( 341,553, 218,663, -10,2158 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( 825,547, 738,247, 23,7776 ); + ent.v[ "angles" ] = ( 272, 285, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 820,731, 709,463, -53,875 ); + ent.v[ "angles" ] = ( 359,53, 287, -0,8831 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 705,286, 679,889, -53,875 ); + ent.v[ "angles" ] = ( 359,245, 266, -0,656188 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_burning_ash_gusty" ); + ent.v[ "origin" ] = ( 77,2403, -78,4967, -45,9001 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_burning_ash_gusty" ); + ent.v[ "origin" ] = ( -1584,16, -211,734, -64 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_burning_ash_gusty" ); + ent.v[ "origin" ] = ( 1411,21, -381,773, -80,896 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_radioactive_embers" ); + ent.v[ "origin" ] = ( 61,5189, 1775,38, 304,187 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_radioactive_embers_crater" ); + ent.v[ "origin" ] = ( -109,662, 4081,69, 849,8 ); + ent.v[ "angles" ] = ( 19, 271, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_wall_wood_ext_md" ); + ent.v[ "origin" ] = ( -437,299, 533,905, 194,518 ); + ent.v[ "angles" ] = ( 0, 345, 66 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( -487,159, 506,119, 241,591 ); + ent.v[ "angles" ] = ( 336,811, 154,342, -42,8908 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_pole_md_long" ); + ent.v[ "origin" ] = ( -572,404, 575,137, 265,125 ); + ent.v[ "angles" ] = ( 314,125, 255,325, 155,6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( -695,51, 525,979, 265,379 ); + ent.v[ "angles" ] = ( 331,322, 319,284, 72,4991 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_rubble_md_int" ); + ent.v[ "origin" ] = ( -511,016, 520,297, 86,4583 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 248 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -478,575, 437,648, 220,639 ); + ent.v[ "angles" ] = ( 339,66, 247,856, 84,5675 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -504,978, 358,411, 221,958 ); + ent.v[ "angles" ] = ( 329,708, 248,947, 84,0991 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_fire_windblown_md" ); + ent.v[ "origin" ] = ( -703,411, -845,709, 130,691 ); + ent.v[ "angles" ] = ( 354,1, 264,518, -15,6971 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_fire_windblown_md" ); + ent.v[ "origin" ] = ( -609,896, -1223,16, 193,685 ); + ent.v[ "angles" ] = ( 339,658, 260,34, 16,2592 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm" ); + ent.v[ "origin" ] = ( -1049,36, -1107,05, 175,154 ); + ent.v[ "angles" ] = ( 355,788, 332,293, 82,0389 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_fire_windblown_md" ); + ent.v[ "origin" ] = ( 712,441, -626,117, 84,125 ); + ent.v[ "angles" ] = ( 350,706, 279,562, 0,696748 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm" ); + ent.v[ "origin" ] = ( 642,866, -692,345, 96,7364 ); + ent.v[ "angles" ] = ( 1,87194, 328,296, 47,287 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( 883,783, -429,588, 31,125 ); + ent.v[ "angles" ] = ( 271, 180, -86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( 823,72, -389,939, 48,125 ); + ent.v[ "angles" ] = ( 13,1575, 317,775, 44,5273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_fire_windblown_md" ); + ent.v[ "origin" ] = ( 383,536, 1010,29, 131,652 ); + ent.v[ "angles" ] = ( 354,095, 251,449, 0,652758 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_wall_wood_ext_md" ); + ent.v[ "origin" ] = ( -436,711, 1145,36, 1,49848 ); + ent.v[ "angles" ] = ( 0, 203, -46 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( -321,146, -209,831, -14,0275 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 277 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 104,142, -479,193, -25,978 ); + ent.v[ "angles" ] = ( 9,67821, 221,348, -74,5512 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -26,1763, -437,007, -19,2142 ); + ent.v[ "angles" ] = ( 0,911239, 230,547, 4,81652 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 88,3389, -508,587, -59,8167 ); + ent.v[ "angles" ] = ( 299,272, 66,5849, 48,0344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( 54,516, -511,388, -36,7732 ); + ent.v[ "angles" ] = ( 6, 276, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_smolder_area_sm" ); + ent.v[ "origin" ] = ( 1299,44, 638,812, -55,783 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 350 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_smolder_area_sm" ); + ent.v[ "origin" ] = ( 1087,07, 625,523, -57,2874 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_rubble_md_int" ); + ent.v[ "origin" ] = ( 902,073, 355,675, 93,236 ); + ent.v[ "angles" ] = ( 3, 291, 6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 939,399, 762,949, 31,9496 ); + ent.v[ "angles" ] = ( 321,957, 18,3462, 86,1918 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_ceiling_edge_sm" ); + ent.v[ "origin" ] = ( 833,663, 695,377, 75,8235 ); + ent.v[ "angles" ] = ( 81,6093, 298,882, 15,4692 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_ceiling_md" ); + ent.v[ "origin" ] = ( 840,874, 642,215, 90,875 ); + ent.v[ "angles" ] = ( 86, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 862,286, 741,768, -39,4932 ); + ent.v[ "angles" ] = ( 295,064, 22,428, 82,9064 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1126,11, 718,831, -64,8801 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 305 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1206,55, 652,177, -63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1436,12, 446,719, -54,4219 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1496,4, 260,401, -63 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1379,63, 437,967, -55,0723 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1699,91, 847,433, -31,1341 ); + ent.v[ "angles" ] = ( 0, 286, 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( 1258,8, 1113,46, -116,975 ); + ent.v[ "angles" ] = ( 301,159, 102,265, 0,975478 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 1150,71, 998,591, -76,651 ); + ent.v[ "angles" ] = ( 8,73988, 282,726, 27,5934 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1199,56, 1014,64, 3,10688 ); + ent.v[ "angles" ] = ( 315,397, 293,367, 176,746 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 817,827, 791,393, -33,1773 ); + ent.v[ "angles" ] = ( 322,371, 292,56, -94,7225 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 970,598, 775,64, 10,36 ); + ent.v[ "angles" ] = ( 322,37, 292,56, -39,7225 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_pole_md_long" ); + ent.v[ "origin" ] = ( 1003,54, 703,304, 91,6861 ); + ent.v[ "angles" ] = ( 340,221, 283,986, -91,0187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 1010,57, 628,573, 8,27523 ); + ent.v[ "angles" ] = ( 294,421, 317,647, -176,431 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( 1036,8, 599,061, 129,51 ); + ent.v[ "angles" ] = ( 342,391, 288,54, 177,155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_smolder_area_sm" ); + ent.v[ "origin" ] = ( 1167,18, 433,861, 77,6994 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 288 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_smolder_area_sm" ); + ent.v[ "origin" ] = ( 877,835, 365,641, 91,4731 ); + ent.v[ "angles" ] = ( 10,4144, 281,025, 5,88351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 902,363, 336,777, 250,031 ); + ent.v[ "angles" ] = ( 4,40402, 286,154, 131,967 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_ceiling_edge_sm" ); + ent.v[ "origin" ] = ( 752,705, 132,337, 216,57 ); + ent.v[ "angles" ] = ( 85,0493, 102,932, -150,795 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_ceiling_edge_sm" ); + ent.v[ "origin" ] = ( 766,26, 166,922, 220,636 ); + ent.v[ "angles" ] = ( 84,6047, 129,841, -119,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_lf_zmb_nuke_sun" ); + ent.v[ "origin" ] = ( -338396, -327676, 221727 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 350,535, -1031,63, -39,8235 ); + ent.v[ "angles" ] = ( 3,09771, 264,722, 22,2979 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( -46,2206, 1184,99, -48,697 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 305 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -170,6, 1199,31, -49,358 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_ceiling_edge_sm" ); + ent.v[ "origin" ] = ( 489,115, 1020,15, 98,9513 ); + ent.v[ "angles" ] = ( 89,9128, 90,2751, -178,729 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -281,018, 504,195, 21,7972 ); + ent.v[ "angles" ] = ( 291,608, 257,58, 59,7848 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -455,244, 462,779, 90,6362 ); + ent.v[ "angles" ] = ( 0, 255, -73 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -427,615, 399,407, 65,8158 ); + ent.v[ "angles" ] = ( 345,654, 233,354, -97,6119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -472,01, 421,038, 132,085 ); + ent.v[ "angles" ] = ( 352,104, 242,192, -70,85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( 226,868, -252,836, -57,6819 ); + ent.v[ "angles" ] = ( 358,982, 266,028, -0,809154 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( -436,565, 952,713, -62 ); + ent.v[ "angles" ] = ( 1,21988, 289,002, -0,36118 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( 340,212, 816,277, -59,7699 ); + ent.v[ "angles" ] = ( 0,981772, 266, -0,809142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( -1485,23, 486,065, -59,6137 ); + ent.v[ "angles" ] = ( 358,775, 253,035, -1,00939 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -2263,81, -889,092, -24,1558 ); + ent.v[ "angles" ] = ( 270, 357,51, 80,4895 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -2266,79, -1297,7, -65,1407 ); + ent.v[ "angles" ] = ( 359,001, 275,996, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -2389,42, -837,586, -110,366 ); + ent.v[ "angles" ] = ( 359,086, 254,994, 0,406816 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_fire_lg_black" ); + ent.v[ "origin" ] = ( -2279,62, -960,342, 9,62501 ); + ent.v[ "angles" ] = ( 285, 258, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -695,94, -300,493, -16,9227 ); + ent.v[ "angles" ] = ( 335,002, 301,314, 25,2887 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -601,21, -398,426, 44,668 ); + ent.v[ "angles" ] = ( 330,244, 230,725, -25,9171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -766,159, -344,729, -15,3255 ); + ent.v[ "angles" ] = ( 279,292, 278,179, -131,334 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( -933,685, -354,732, -18,6244 ); + ent.v[ "angles" ] = ( 270, 0, 150 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_eaves_md_right" ); + ent.v[ "origin" ] = ( -1029,84, -596,344, 101,689 ); + ent.v[ "angles" ] = ( 9,97539, 208,061, 0,704702 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 484,874, 197,525, 62,7568 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 293 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 546,028, -856,478, 96,6235 ); + ent.v[ "angles" ] = ( 344, 293, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 370,921, -171,36, -26,4123 ); + ent.v[ "angles" ] = ( 316, 293, 36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( 1862,85, -317,07, -95,7691 ); + ent.v[ "angles" ] = ( 358,623, 239,058, -4,80797 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( 2140,39, -156,88, -123,797 ); + ent.v[ "angles" ] = ( 357,889, 230,084, -4,53358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( 4520,86, -20,4233, -31,2087 ); + ent.v[ "angles" ] = ( 358,623, 239,058, -4,80797 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( 4611,85, 276,534, -56,3477 ); + ent.v[ "angles" ] = ( 358,719, 275,176, -4,69962 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( -2045,06, 1057,59, -79,4201 ); + ent.v[ "angles" ] = ( 356,919, 251,225, -3,77449 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( -2295,18, 879,646, -107,663 ); + ent.v[ "angles" ] = ( 356,919, 251,225, -3,77449 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( -2273,14, -800,201, -120,875 ); + ent.v[ "angles" ] = ( 353,999, 290,636, -4,89762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_plume_md_blk_wispy_dist" ); + ent.v[ "origin" ] = ( -763,556, -613,056, 152,35 ); + ent.v[ "angles" ] = ( 16, 276, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_plume_md_blk_wispy_dist" ); + ent.v[ "origin" ] = ( 751,634, -675,851, 97,0018 ); + ent.v[ "angles" ] = ( 12, 276, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -1672,58, 752,365, 71,8731 ); + ent.v[ "angles" ] = ( 356,082, 314,264, 25,1809 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -1629,84, 762,029, -38 ); + ent.v[ "angles" ] = ( 272, 0, 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -1808,34, 798,464, -45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 317 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_nuclear_lightning_runner" ); + ent.v[ "origin" ] = ( 17288,3, -29227,3, 63550,7 ); + ent.v[ "angles" ] = ( 270, 357,51, 80,4895 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_nuclear_lightning_runner" ); + ent.v[ "origin" ] = ( 63900,4, 27524,3, 76800,3 ); + ent.v[ "angles" ] = ( 270, 357,51, 80,4895 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_nuclear_lightning_runner" ); + ent.v[ "origin" ] = ( -66762,3, 4052,32, 92128,8 ); + ent.v[ "angles" ] = ( 270, 357,51, 80,4895 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_nuclear_lightning_runner" ); + ent.v[ "origin" ] = ( -1851,37, -132734, 93025,4 ); + ent.v[ "angles" ] = ( 270, 0,65106, -177,651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_nuclear_lightning_runner" ); + ent.v[ "origin" ] = ( 126197, -18115,3, 71243,8 ); + ent.v[ "angles" ] = ( 270, 0,65106, -177,651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_nuclear_lightning_runner" ); + ent.v[ "origin" ] = ( -52580,2, -13623, 45759,2 ); + ent.v[ "angles" ] = ( 270, 357,51, 80,4895 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( 1005,48, 1161,97, -130,671 ); + ent.v[ "angles" ] = ( 337,777, 285,349, -3,40055 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -96,2962, -2298,03, -48,9383 ); + ent.v[ "angles" ] = ( 354,204, 288,079, -1,55846 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_nic_fire_building_md_dist" ); + ent.v[ "origin" ] = ( 4894,47, 564,066, -72,9304 ); + ent.v[ "angles" ] = ( 1,07245, 303,079, -14,7514 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_up_lg" ); + ent.v[ "origin" ] = ( 724,001, -656,697, 124,384 ); + ent.v[ "angles" ] = ( 1,92204, 279,101, -3,20506 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_up_lg" ); + ent.v[ "origin" ] = ( -537,17, 533,386, 272,409 ); + ent.v[ "angles" ] = ( 356, 279, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_ext" ); + ent.v[ "origin" ] = ( -84,0686, 733,174, -64 ); + ent.v[ "angles" ] = ( 270, 0, 25 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 502; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_rubble_md_int" ); + ent.v[ "origin" ] = ( 751,718, 270,039, 93,7874 ); + ent.v[ "angles" ] = ( 6, 244, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 652,838, 336,776, 86,4649 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 581,059, 305,474, 227,486 ); + ent.v[ "angles" ] = ( 0, 293, -177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 644,644, 269,331, 235,694 ); + ent.v[ "angles" ] = ( 7,1649, 277,993, -121,838 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( 798,918, 227,273, 223,815 ); + ent.v[ "angles" ] = ( 18,0053, 222,798, -98,529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_ext" ); + ent.v[ "origin" ] = ( -67,7972, 266,944, -43,6904 ); + ent.v[ "angles" ] = ( 270, 0, 25 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int" ); + ent.v[ "origin" ] = ( -448,66, 612,547, -64,2531 ); + ent.v[ "angles" ] = ( 270, 1,48787, -22,4878 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 501; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int_shockwave" ); + ent.v[ "origin" ] = ( -444,488, 621,286, -64,48 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 71 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 501; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int" ); + ent.v[ "origin" ] = ( 795,783, -70,8028, -61,6158 ); + ent.v[ "angles" ] = ( 270, 0, -72 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 503; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int_shockwave" ); + ent.v[ "origin" ] = ( 801,75, -77,1695, -64 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 198 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 503; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int" ); + ent.v[ "origin" ] = ( -835,375, 64,6386, -54,6829 ); + ent.v[ "angles" ] = ( 270, 0, -60 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 504; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int_shockwave" ); + ent.v[ "origin" ] = ( -842,976, 52,3471, -56,0671 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 111 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 504; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int_shockwave" ); + ent.v[ "origin" ] = ( 719,362, 50,6538, 78,4329 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 155 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 505; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int" ); + ent.v[ "origin" ] = ( 718,327, 54,9845, 79,8171 ); + ent.v[ "angles" ] = ( 270, 0, 15 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 505; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_ext" ); + ent.v[ "origin" ] = ( 1621,1, 955,583, -61,2986 ); + ent.v[ "angles" ] = ( 270, 16,1094, -1,10941 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 506; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_ext" ); + ent.v[ "origin" ] = ( -2031,07, 232,356, -62,698 ); + ent.v[ "angles" ] = ( 270, 16,1094, -1,10941 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 507; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_ext" ); + ent.v[ "origin" ] = ( -1692,58, 960,953, -64 ); + ent.v[ "angles" ] = ( 270, 16,1094, -1,10941 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 508; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_ext" ); + ent.v[ "origin" ] = ( 2041,86, 154,715, -63,5821 ); + ent.v[ "angles" ] = ( 270, 16,1094, -1,10941 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 509; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int" ); + ent.v[ "origin" ] = ( 1357,97, 580,943, -56,7789 ); + ent.v[ "angles" ] = ( 270, 0, -73 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 510; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_exp_perk_impact_int_shockwave" ); + ent.v[ "origin" ] = ( 1359,34, 581,444, -56,7662 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 107 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 510; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( 1348,08, 601,578, -48,804 ); + ent.v[ "angles" ] = ( 297, 102, 21 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 510; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( 2031,87, 170,67, -63,3168 ); + ent.v[ "angles" ] = ( 297, 102, 21 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 509; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( 1615,58, 951,798, -48,0679 ); + ent.v[ "angles" ] = ( 350, 263, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 506; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_slow" ); + ent.v[ "origin" ] = ( 786,688, -81,2597, -54 ); + ent.v[ "angles" ] = ( 358,746, 268,447, 32,1635 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 503; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_slow" ); + ent.v[ "origin" ] = ( 705,493, 54,8815, 85,125 ); + ent.v[ "angles" ] = ( 0,432776, 212,866, -8,54822 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 505; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( -90,7017, 726,382, -64 ); + ent.v[ "angles" ] = ( 356,648, 290,836, 19,5181 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 502; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( -448,82, 622,422, -55,3517 ); + ent.v[ "angles" ] = ( 348,817, 314,792, 16,4361 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 501; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_slow" ); + ent.v[ "origin" ] = ( -843,836, 65,1143, -43,875 ); + ent.v[ "angles" ] = ( 347,327, 182,037, -18,1646 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 504; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( -1687,56, 962,63, -54 ); + ent.v[ "angles" ] = ( 337,478, 268,869, 0,613819 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 508; + ent = maps/mp/_utility::createexploder( "fx_smk_smolder_gray_fast" ); + ent.v[ "origin" ] = ( -2030,81, 237,488, -47,4957 ); + ent.v[ "angles" ] = ( 349,543, 300,994, -34,6538 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 507; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( 758,039, 368,914, 260,544 ); + ent.v[ "angles" ] = ( 26,2469, 272,323, -25,0868 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( 536,447, 309,012, 250,579 ); + ent.v[ "angles" ] = ( 32,9779, 305,74, 5,92861 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( 714,263, 114,348, 224,186 ); + ent.v[ "angles" ] = ( 42,4676, 260,329, -23,3999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( 900,685, 460,238, 232,833 ); + ent.v[ "angles" ] = ( 33,1859, 265,055, -20,4905 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( 856,037, 457,029, 191,592 ); + ent.v[ "angles" ] = ( 7,57328, 274,281, -7,18966 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_sm" ); + ent.v[ "origin" ] = ( 38,9442, 357,353, 48,0998 ); + ent.v[ "angles" ] = ( 13,3813, 348,185, -38,7605 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( 38,6534, 546,094, 53,3111 ); + ent.v[ "angles" ] = ( 12,7355, 291,767, 3,0367 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -72,2776, 1146,67, 28,1412 ); + ent.v[ "angles" ] = ( 1,05724, 285,143, 2,86748 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -539,143, 599,544, 228,286 ); + ent.v[ "angles" ] = ( 26,8589, 254,988, -11,8748 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_sm" ); + ent.v[ "origin" ] = ( -777,084, 593,841, 195,875 ); + ent.v[ "angles" ] = ( 31,8369, 246,503, -10,3563 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( -765,656, 676,502, 232,931 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 252 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_sm_pole" ); + ent.v[ "origin" ] = ( -857,199, 729,038, 244,187 ); + ent.v[ "angles" ] = ( 3,25894, 340,925, 117,052 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -739,369, 728,214, 159,875 ); + ent.v[ "angles" ] = ( 9,2012, 258,681, -10,7176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -740,655, 700,344, 235,875 ); + ent.v[ "angles" ] = ( 54,8516, 274,975, 5,78444 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -890,777, 786,765, 144,538 ); + ent.v[ "angles" ] = ( 1,86959, 269,11, -8,99706 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -834,546, 78,237, 104,908 ); + ent.v[ "angles" ] = ( 50,4017, 243,511, -17,8334 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_md" ); + ent.v[ "origin" ] = ( -971,698, 106,477, 112,158 ); + ent.v[ "angles" ] = ( 53,9039, 272,917, 10,1142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_thin" ); + ent.v[ "origin" ] = ( -827,841, 562,784, 72,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_thin" ); + ent.v[ "origin" ] = ( -988,132, 474,414, 74,344 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_spatter" ); + ent.v[ "origin" ] = ( -826,169, 565,039, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_spatter" ); + ent.v[ "origin" ] = ( -984,647, 473,859, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_sm" ); + ent.v[ "origin" ] = ( -1581,76, 63,3593, -5,97322 ); + ent.v[ "angles" ] = ( 338,551, 281,573, 17,906 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_falling_radioactive_sm" ); + ent.v[ "origin" ] = ( -1398,31, 100,802, -4,54848 ); + ent.v[ "angles" ] = ( 340,749, 275,707, 12,0232 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_up_lg" ); + ent.v[ "origin" ] = ( -704,127, -563,141, 152,04 ); + ent.v[ "angles" ] = ( 343,152, 305,492, -12,1529 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_ash_embers_up_lg" ); + ent.v[ "origin" ] = ( -621,927, -1220,26, 192,207 ); + ent.v[ "angles" ] = ( 359,121, 313,849, -6,13558 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 951,777, 361,991, 229,199 ); + ent.v[ "angles" ] = ( 4,40401, 286,154, -113,033 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 757,662, 283,895, 69,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 350 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 693,471, 167,917, 224,787 ); + ent.v[ "angles" ] = ( 357,001, 41,9972, 0,104802 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( -622,128, 431,41, 68,875 ); + ent.v[ "angles" ] = ( 357,011, 38,9931, 0,261735 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( -902,323, 495,906, 67,3331 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 42 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( -753,758, 632,906, 229,217 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 339 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( -899,967, 511,921, 192,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 15 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( -1122,69, 603,186, 70,9287 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 615,005, 564,502, 97,4658 ); + ent.v[ "angles" ] = ( 15,3598, 122,284, 9,50017 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 536,657, 111,88, 67,7328 ); + ent.v[ "angles" ] = ( 357,374, 99,7013, 2,18813 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 982,398, 300,54, 67,875 ); + ent.v[ "angles" ] = ( 356,623, 130,736, 0,522271 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 1239,46, 335,822, 72,875 ); + ent.v[ "angles" ] = ( 3,15055, 296,715, -1,32492 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_xsm" ); + ent.v[ "origin" ] = ( 1103,83, 426,366, 27,9148 ); + ent.v[ "angles" ] = ( 347,196, 290,515, -31,9129 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1121,59, 361,034, 20,394 ); + ent.v[ "angles" ] = ( 331,219, 291,431, -93,2406 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow" ); + ent.v[ "origin" ] = ( 776,715, 679,094, -56,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -1856,48, 846,551, 61,1532 ); + ent.v[ "angles" ] = ( 344,855, 304,04, -17,7261 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( -990,401, 701,174, 138,432 ); + ent.v[ "angles" ] = ( 271, 81, -36 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm_pole" ); + ent.v[ "origin" ] = ( -1057,11, 728,051, 191,199 ); + ent.v[ "angles" ] = ( 4,66833, 342,211, 93,8223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -1044,92, 530,902, 149,229 ); + ent.v[ "angles" ] = ( 337,009, 246,09, 86,8292 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -967,441, 746,726, 107,668 ); + ent.v[ "angles" ] = ( 321,009, 246,15, 89,7976 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit_z" ); + ent.v[ "origin" ] = ( -888,748, 167,505, -56,875 ); + ent.v[ "angles" ] = ( 305,852, 224,678, -90,0354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow" ); + ent.v[ "origin" ] = ( -846,922, 434,851, 100,5 ); + ent.v[ "angles" ] = ( 351, 209, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_smolder_gray_slow" ); + ent.v[ "origin" ] = ( -587,957, 515,134, 103,743 ); + ent.v[ "angles" ] = ( 356,496, 276,254, -8,29492 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( 18,3445, 347,718, 40,6696 ); + ent.v[ "angles" ] = ( 30,9725, 337,299, 21,0652 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( -53,8461, 1118,8, 28,125 ); + ent.v[ "angles" ] = ( 25, 280,774, -11,8562 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit" ); + ent.v[ "origin" ] = ( 750,533, 183,32, 93,125 ); + ent.v[ "angles" ] = ( 327,188, 229,439, 4,59922 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 721,942, 125,367, 69,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 62 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0,3; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createexploder( "fx_zm_nuked_perk_impact_ceiling_dust" ); + ent.v[ "origin" ] = ( 1034,01, 131,68, 207,459 ); + ent.v[ "angles" ] = ( 358,003, 193,8, -2,77325 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 511; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_fireplace_md" ); + ent.v[ "origin" ] = ( 683,285, 377,83, -49,5459 ); + ent.v[ "angles" ] = ( 274, 180, -72 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_radiation_140x300" ); + ent.v[ "origin" ] = ( -891,539, 515,361, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 261 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_radiation_140x300" ); + ent.v[ "origin" ] = ( -896,733, 542,604, 80,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_elec_spark_wire_xsm_runner" ); + ent.v[ "origin" ] = ( -1041,55, 519,275, 101,507 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 45 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createloopeffect( "fx_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -76,2322, 91,6051, -60,0491 ); + ent.v[ "angles" ] = ( 11,7408, 83,7822, 49,2868 ); + ent.v[ "type" ] = "loopfx"; + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( 550,155, 280,534, 243,017 ); + ent.v[ "angles" ] = ( 60,5506, 55,7581, 117,849 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( 640,509, 292,827, 248,176 ); + ent.v[ "angles" ] = ( 58,8515, 53,4092, 124,99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( 701,585, 91,2234, 222,035 ); + ent.v[ "angles" ] = ( 68,6387, 46,439, 89,4071 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( -579,39, 422,91, 282,327 ); + ent.v[ "angles" ] = ( 79,267, 103,447, 37,1853 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( -528,27, 446,041, 258,311 ); + ent.v[ "angles" ] = ( 68,8982, 61,2584, -5,38676 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( 669,56, 48,9236, 238,125 ); + ent.v[ "angles" ] = ( 70,1478, 53,8143, 23,3122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide" ); + ent.v[ "origin" ] = ( 905,223, 352,314, 109,825 ); + ent.v[ "angles" ] = ( 305,884, 219,334, 133,147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak" ); + ent.v[ "origin" ] = ( 1003,55, 403,728, 115,433 ); + ent.v[ "angles" ] = ( 305,884, 219,334, 133,147 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_flour_glow_cool_sngl_shrt" ); + ent.v[ "origin" ] = ( 1048,19, 98,7792, 2,43868 ); + ent.v[ "angles" ] = ( 316,848, 16,5884, -93,6101 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak" ); + ent.v[ "origin" ] = ( -894,866, 173,81, -62,875 ); + ent.v[ "angles" ] = ( 300,234, 213,189, 150,527 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak" ); + ent.v[ "origin" ] = ( -786,558, 153,172, -26,3997 ); + ent.v[ "angles" ] = ( 300,234, 213,189, 150,527 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak_1s" ); + ent.v[ "origin" ] = ( -907,393, 666,849, 32,1068 ); + ent.v[ "angles" ] = ( 302,859, 91,0294, 20,9428 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak" ); + ent.v[ "origin" ] = ( -867,067, 580,141, 109,107 ); + ent.v[ "angles" ] = ( 317,956, 76,5415, 102,488 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak_1s" ); + ent.v[ "origin" ] = ( -572,652, 509,568, -50,7644 ); + ent.v[ "angles" ] = ( 308,279, 126,711, -2,20114 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_light_ray_grate_warm" ); + ent.v[ "origin" ] = ( -751,485, 690,114, 198,125 ); + ent.v[ "angles" ] = ( 40,3701, 263,547, -91,4733 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide" ); + ent.v[ "origin" ] = ( -820,457, 418,156, 64,0783 ); + ent.v[ "angles" ] = ( 300,856, 220,363, 18,3297 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak" ); + ent.v[ "origin" ] = ( -805,39, 586,709, 104,125 ); + ent.v[ "angles" ] = ( 304,845, 74,9583, 104,122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit_slow" ); + ent.v[ "origin" ] = ( -660,76, 641,186, 102,866 ); + ent.v[ "angles" ] = ( 51,0816, 285,502, 85,9167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_smk_linger_lit_z" ); + ent.v[ "origin" ] = ( -912,221, 742,967, 155,488 ); + ent.v[ "angles" ] = ( 21,4677, 336,379, 94,7282 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak_1s" ); + ent.v[ "origin" ] = ( -625,866, 472,437, -50 ); + ent.v[ "angles" ] = ( 310,239, 109,613, -0,883288 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_streaks_1s" ); + ent.v[ "origin" ] = ( -677,512, 592,392, 46,125 ); + ent.v[ "angles" ] = ( 318,803, 294,406, -2,45177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_streaks_1s" ); + ent.v[ "origin" ] = ( -851,032, 650,305, 108,125 ); + ent.v[ "angles" ] = ( 337,322, 223,59, 48,5054 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_light_ray_md_wide_streak_1s" ); + ent.v[ "origin" ] = ( -623,865, 549,649, -48,4828 ); + ent.v[ "angles" ] = ( 299,966, 109,834, 46,8043 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_flat" ); + ent.v[ "origin" ] = ( 22367,2, 18595,2, 5624,66 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_flat" ); + ent.v[ "origin" ] = ( -24470,6, 26405,6, 5199,8 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_flat" ); + ent.v[ "origin" ] = ( 37860,6, 21667,1, 4713,99 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_flat" ); + ent.v[ "origin" ] = ( -32651,2, 15251,8, 4013,16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_flat" ); + ent.v[ "origin" ] = ( 30523,3, -4471,4, 3328,24 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( 12900,7, -11077,4, 7956,09 ); + ent.v[ "angles" ] = ( 279, 140, -90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( -16962,3, -3560,39, 6221,83 ); + ent.v[ "angles" ] = ( 270, 354,289, 141,711 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( 433,252, 24186,5, 7322,05 ); + ent.v[ "angles" ] = ( 270, 0, 85 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( -3556,4, -17019,2, 5327,17 ); + ent.v[ "angles" ] = ( 270, 357,797, 110,203 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( -14488,4, 13918,8, 7082 ); + ent.v[ "angles" ] = ( 270, 2,86241, 117,138 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( 16939,5, 15417,8, 6238,46 ); + ent.v[ "angles" ] = ( 270, 0, 19 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createexploder( "fx_cloud_cover_volume" ); + ent.v[ "origin" ] = ( 5304,38, 35180,7, 9297,49 ); + ent.v[ "angles" ] = ( 270, 3,36646, 73,6335 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 676; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_thin" ); + ent.v[ "origin" ] = ( -1009,86, 517,158, 195,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_thin" ); + ent.v[ "origin" ] = ( -859,311, 572,6, 195,875 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_spatter" ); + ent.v[ "origin" ] = ( -859,311, 572,6, 80,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_nuked_water_stream_radioactive_spatter" ); + ent.v[ "origin" ] = ( -1009,86, 517,158, 80,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_zm_elec_arc_vert" ); + ent.v[ "origin" ] = ( -2335,36, -945,512, 103,773 ); + ent.v[ "angles" ] = ( 270, 356,82, -129,82 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_elec_transformer_sparks_runner" ); + ent.v[ "origin" ] = ( -2319,89, -921,68, 101,125 ); + ent.v[ "angles" ] = ( 38,8277, 307,037, -37,5344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_fire_line_xsm" ); + ent.v[ "origin" ] = ( -884,313, -368,767, -17,998 ); + ent.v[ "angles" ] = ( 324,92, 290,565, -60,0378 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_sm" ); + ent.v[ "origin" ] = ( -473,334, 174,651, -51,2521 ); + ent.v[ "angles" ] = ( 358,942, 263,029, -0,702441 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_nuke_sand_windy_hvy_md" ); + ent.v[ "origin" ] = ( 1360,67, -765,871, -59,1856 ); + ent.v[ "angles" ] = ( 359, 283, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; +} diff --git a/zm_prison/aitype/zm_alcatraz_basic.gsc b/zm_prison/aitype/zm_alcatraz_basic.gsc new file mode 100644 index 0000000..a40f938 --- /dev/null +++ b/zm_prison/aitype/zm_alcatraz_basic.gsc @@ -0,0 +1,401 @@ +#include codescripts/character; + +#using_animtree( "zm_prison_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_left_b; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_a; + dummy_anim_ref = %ai_zombie_spets_sidestep_right_b; + dummy_anim_ref = %ai_zombie_spets_roll_a; + dummy_anim_ref = %ai_zombie_spets_roll_b; + dummy_anim_ref = %ai_zombie_spets_roll_c; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_inert_v4; + dummy_anim_ref = %ai_zombie_inert_v6; + dummy_anim_ref = %ai_zombie_inert_stagger_v1; + dummy_anim_ref = %ai_zombie_inert_stagger_v2; + dummy_anim_ref = %ai_zombie_inert_stagger_v3; + dummy_anim_ref = %ai_zombie_inert_stagger_v4; + dummy_anim_ref = %ai_zombie_inert_circle_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_inert_2_awake_v6; + dummy_anim_ref = %ai_zombie_inert_2_awake_v7; + dummy_anim_ref = %ai_zombie_inert_2_awake_v8; + dummy_anim_ref = %ai_zombie_crawl_inert_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_v5; + dummy_anim_ref = %ai_zombie_crawl_inert_v6; + dummy_anim_ref = %ai_zombie_crawl_inert_v7; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v1; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v2; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v3; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v4; + dummy_anim_ref = %ai_zombie_crawl_inert_2_awake_v5; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_walk; + dummy_anim_ref = %ai_zombie_traverse_ground_v2_walk_alta; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_run; + dummy_anim_ref = %ai_zombie_traverse_ground_climbout_fast; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_ceiling_attack_01; + dummy_anim_ref = %ai_zombie_ceiling_attack_02; + dummy_anim_ref = %ai_zombie_ceiling_emerge_01; + dummy_anim_ref = %ai_zombie_ceiling_death; + dummy_anim_ref = %ai_zombie_ceiling_dropdown_01; + dummy_anim_ref = %ai_zombie_ceiling_fall_loop; + dummy_anim_ref = %ai_zombie_ceiling_fall_land; + dummy_anim_ref = %ai_zombie_ceiling_fall_land_02; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_dreamcatch_shrink; + dummy_anim_ref = %ai_zombie_dreamcatch_impact; + dummy_anim_ref = %ai_zombie_dreamcatch_rise; + dummy_anim_ref = %ai_zombie_dreamcatch_shrink_a; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_climb_down_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_down_pothole; + dummy_anim_ref = %ai_zombie_climb_up_pothole; + dummy_anim_ref = %ai_zombie_crawl_climb_up_pothole; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_stumble_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_stumble_90; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_stumble_127; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_down_190; + dummy_anim_ref = %ai_zombie_jump_down_stumble_190; + dummy_anim_ref = %ai_zombie_crawl_jump_down_189; + dummy_anim_ref = %ai_zombie_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_down_stumble_222; + dummy_anim_ref = %ai_zombie_crawl_jump_down_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_48; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_127; + dummy_anim_ref = %ai_zombie_jump_up_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_222; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_222; + dummy_anim_ref = %ai_zombie_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_crawl_jump_up_grabbed_190; + dummy_anim_ref = %ai_zombie_jump_down_cellblock; + dummy_anim_ref = %ai_zombie_jump_up_cellblock; + dummy_anim_ref = %ai_zombie_crawl_jump_down_cellblock; + dummy_anim_ref = %ai_zombie_crawl_jump_up_cellblock; + dummy_anim_ref = %ai_zombie_sprint_jump_up_cellblock; + dummy_anim_ref = %ai_zombie_sprint_jump_down_cellblock; + dummy_anim_ref = %ai_zombie_crawl_sprint_jump_up_cellblock; + dummy_anim_ref = %ai_zombie_crawl_sprint_jump_down_cellblock; + dummy_anim_ref = %ai_zombie_jump_down_dock_tommygun; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_crawl_diner_roof_hatch_jump_up; + dummy_anim_ref = %ai_zombie_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_crawl_traverse_diner_roof; + dummy_anim_ref = %ai_zombie_traverse_garage_roll; + dummy_anim_ref = %ai_zombie_crawl_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_diner_roof; + dummy_anim_ref = %ai_zombie_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_crawl_jump_up_2_climb; + dummy_anim_ref = %ai_zombie_climb_over_dock_fence; + dummy_anim_ref = %ai_zombie_crawl_climb_over_dock_fence; + dummy_anim_ref = %ai_zombie_jump_up_goldengate; + dummy_anim_ref = %ai_zombie_jump_up_dock; + dummy_anim_ref = %ai_zombie_climb_up_ext_low; + dummy_anim_ref = %ai_zombie_climb_up_ext_mid; + dummy_anim_ref = %ai_zombie_climb_up_ext_roof; + dummy_anim_ref = %ai_zombie_jump_down_cellblock_basic; + dummy_anim_ref = %ai_zombie_crawl_jump_down_cellblock_basic; + dummy_anim_ref = %ai_zombie_traverse_lower_gondola; + dummy_anim_ref = %ai_zombie_crawl_jump_up_dock_middle; + dummy_anim_ref = %ai_zombie_jump_up_dock_middle; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_sprint_v6; + dummy_anim_ref = %ai_zombie_sprint_v7; + dummy_anim_ref = %ai_zombie_sprint_v8; + dummy_anim_ref = %ai_zombie_sprint_v9; + dummy_anim_ref = %ai_zombie_sprint_v10; + dummy_anim_ref = %ai_zombie_sprint_v11; + dummy_anim_ref = %ai_zombie_sprint_v12; + dummy_anim_ref = %ai_zombie_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_loop_v1; + dummy_anim_ref = %ai_zombie_crawl_riotshield_breakthrough_v1; + dummy_anim_ref = %ai_zombie_afterlife_stun_a; + dummy_anim_ref = %ai_zombie_afterlife_stun_b; + dummy_anim_ref = %ai_zombie_afterlife_stun_c; + dummy_anim_ref = %ai_zombie_afterlife_stun_d; + dummy_anim_ref = %ai_zombie_afterlife_stun_e; + dummy_anim_ref = %ai_zombie_acid_stun_a; + dummy_anim_ref = %ai_zombie_acid_stun_b; + dummy_anim_ref = %ai_zombie_acid_stun_c; + dummy_anim_ref = %ai_zombie_acid_stun_d; + dummy_anim_ref = %ai_zombie_acid_stun_e; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_prison_basic.asd"; + self.animtree = "zm_prison_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 3 ); + switch( randchar ) + { + case 0: + character/c_zom_guard::main(); + break; + case 1: + character/c_zom_inmate1::main(); + break; + case 2: + character/c_zom_inmate2::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_prison_basic" ); + character/c_zom_guard::precache(); + character/c_zom_inmate1::precache(); + character/c_zom_inmate2::precache(); +} diff --git a/zm_prison/aitype/zm_alcatraz_brutus.gsc b/zm_prison/aitype/zm_alcatraz_brutus.gsc new file mode 100644 index 0000000..192efb5 --- /dev/null +++ b/zm_prison/aitype/zm_alcatraz_brutus.gsc @@ -0,0 +1,80 @@ + +#using_animtree( "zm_alcatraz_brutus" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_cellbreaker_attack_swingleft; + dummy_anim_ref = %ai_zombie_cellbreaker_attack_swingright_a; + dummy_anim_ref = %ai_zombie_cellbreaker_attack_swingright_b; + dummy_anim_ref = %ai_zombie_cellbreaker_death; + dummy_anim_ref = %ai_zombie_cellbreaker_death_a; + dummy_anim_ref = %ai_zombie_cellbreaker_death_explode; + dummy_anim_ref = %ai_zombie_cellbreaker_death_mg; + dummy_anim_ref = %ai_zombie_cellbreaker_tesla_death_a; + dummy_anim_ref = %ai_zombie_cellbreaker_enrage_start; + dummy_anim_ref = %ai_zombie_cellbreaker_idle_a; + dummy_anim_ref = %ai_zombie_cellbreaker_idle_b; + dummy_anim_ref = %ai_zombie_cellbreaker_run_a; + dummy_anim_ref = %ai_zombie_cellbreaker_run_b; + dummy_anim_ref = %ai_zombie_cellbreaker_run_c; + dummy_anim_ref = %ai_zombie_cellbreaker_run_d; + dummy_anim_ref = %ai_zombie_cellbreaker_sprint_a; + dummy_anim_ref = %ai_zombie_cellbreaker_sprint_b; + dummy_anim_ref = %ai_zombie_cellbreaker_walk_a; + dummy_anim_ref = %ai_zombie_cellbreaker_boardsmash_a; + dummy_anim_ref = %ai_zombie_cellbreaker_boardsmash_b; + dummy_anim_ref = %ai_zombie_cellbreaker_boardsmash_c; + dummy_anim_ref = %ai_zombie_cellbreaker_lock_magicbox; + dummy_anim_ref = %ai_zombie_cellbreaker_lock_perkmachine; + dummy_anim_ref = %ai_zombie_cellbreaker_lock_planeramp; + dummy_anim_ref = %ai_zombie_cellbreaker_bullcharge_tell; + dummy_anim_ref = %ai_zombie_cellbreaker_gasattack; + dummy_anim_ref = %ai_zombie_cellbreaker_headpain; + dummy_anim_ref = %ai_zombie_cellbreaker_spawn; + dummy_anim_ref = %ai_zombie_cellbreaker_stumble_running; + dummy_anim_ref = %ai_zombie_cellbreaker_summondogs; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_alcatraz_brutus.asd"; + self.animtree = "zm_alcatraz_brutus.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = "zm_brutus_footstepfxtable"; + self.footstepprepend = "fly_step_brutus"; + self.footstepscriptcallback = 1; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_cellbreaker::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_alcatraz_brutus" ); + character/c_zom_cellbreaker::precache(); +} diff --git a/zm_prison/character/c_zom_cellbreaker.gsc b/zm_prison/character/c_zom_cellbreaker.gsc new file mode 100644 index 0000000..8044e54 --- /dev/null +++ b/zm_prison/character/c_zom_cellbreaker.gsc @@ -0,0 +1,15 @@ + +main() +{ + self setmodel( "c_zom_cellbreaker_fb" ); + self.hatmodel = "c_zom_cellbreaker_helmet"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_cellbreaker_fb" ); + precachemodel( "c_zom_cellbreaker_helmet" ); +} diff --git a/zm_prison/character/c_zom_guard.gsc b/zm_prison/character/c_zom_guard.gsc new file mode 100644 index 0000000..0d0c6d1 --- /dev/null +++ b/zm_prison/character/c_zom_guard.gsc @@ -0,0 +1,47 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_guard_body" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_prison_guard_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = codescripts/character::randomelement( xmodelalias/c_zom_prison_guard_hat_als::main() ); + self attach( self.hatmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_guard_body_g_upclean"; + self.torsodmg2 = "c_zom_guard_body_g_rarmoff"; + self.torsodmg3 = "c_zom_guard_body_g_larmoff"; + self.torsodmg5 = "c_zom_inmate_body2_g_behead"; + self.legdmg1 = "c_zom_guard_body_g_lowclean"; + self.legdmg2 = "c_zom_guard_body_g_rlegoff"; + self.legdmg3 = "c_zom_guard_body_g_llegoff"; + self.legdmg4 = "c_zom_guard_body_g_legsoff"; + self.gibspawn1 = "c_zom_inmate_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_inmate_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_inmate_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_inmate_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_guard_body" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_prison_guard_head_als::main() ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_prison_guard_hat_als::main() ); + precachemodel( "c_zom_guard_body_g_upclean" ); + precachemodel( "c_zom_guard_body_g_rarmoff" ); + precachemodel( "c_zom_guard_body_g_larmoff" ); + precachemodel( "c_zom_inmate_body2_g_behead" ); + precachemodel( "c_zom_guard_body_g_lowclean" ); + precachemodel( "c_zom_guard_body_g_rlegoff" ); + precachemodel( "c_zom_guard_body_g_llegoff" ); + precachemodel( "c_zom_guard_body_g_legsoff" ); + precachemodel( "c_zom_inmate_g_rarmspawn" ); + precachemodel( "c_zom_inmate_g_larmspawn" ); + precachemodel( "c_zom_inmate_g_rlegspawn" ); + precachemodel( "c_zom_inmate_g_llegspawn" ); +} diff --git a/zm_prison/character/c_zom_inmate1.gsc b/zm_prison/character/c_zom_inmate1.gsc new file mode 100644 index 0000000..3bca92e --- /dev/null +++ b/zm_prison/character/c_zom_inmate1.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_inmate_body1" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_prison_inmate_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_inmate_body1_g_upclean"; + self.torsodmg2 = "c_zom_inmate_body1_g_rarmoff"; + self.torsodmg3 = "c_zom_inmate_body1_g_larmoff"; + self.torsodmg5 = "c_zom_inmate_body2_g_behead"; + self.legdmg1 = "c_zom_inmate_body1_g_lowclean"; + self.legdmg2 = "c_zom_inmate_body1_g_rlegoff"; + self.legdmg3 = "c_zom_inmate_body1_g_llegoff"; + self.legdmg4 = "c_zom_inmate_body1_g_legsoff"; + self.gibspawn1 = "c_zom_inmate_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_inmate_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_inmate_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_inmate_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_inmate_body1" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_prison_inmate_head_als::main() ); + precachemodel( "c_zom_inmate_body1_g_upclean" ); + precachemodel( "c_zom_inmate_body1_g_rarmoff" ); + precachemodel( "c_zom_inmate_body1_g_larmoff" ); + precachemodel( "c_zom_inmate_body2_g_behead" ); + precachemodel( "c_zom_inmate_body1_g_lowclean" ); + precachemodel( "c_zom_inmate_body1_g_rlegoff" ); + precachemodel( "c_zom_inmate_body1_g_llegoff" ); + precachemodel( "c_zom_inmate_body1_g_legsoff" ); + precachemodel( "c_zom_inmate_g_rarmspawn" ); + precachemodel( "c_zom_inmate_g_larmspawn" ); + precachemodel( "c_zom_inmate_g_rlegspawn" ); + precachemodel( "c_zom_inmate_g_llegspawn" ); +} diff --git a/zm_prison/character/c_zom_inmate2.gsc b/zm_prison/character/c_zom_inmate2.gsc new file mode 100644 index 0000000..8ec1fcc --- /dev/null +++ b/zm_prison/character/c_zom_inmate2.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_inmate_body2" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_prison_inmate_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_inmate_body2_g_upclean"; + self.torsodmg2 = "c_zom_inmate_body2_g_rarmoff"; + self.torsodmg3 = "c_zom_inmate_body2_g_larmoff"; + self.torsodmg5 = "c_zom_inmate_body2_g_behead"; + self.legdmg1 = "c_zom_inmate_body1_g_lowclean"; + self.legdmg2 = "c_zom_inmate_body1_g_rlegoff"; + self.legdmg3 = "c_zom_inmate_body1_g_llegoff"; + self.legdmg4 = "c_zom_inmate_body1_g_legsoff"; + self.gibspawn1 = "c_zom_inmate_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_inmate_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_inmate_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_inmate_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_inmate_body2" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_prison_inmate_head_als::main() ); + precachemodel( "c_zom_inmate_body2_g_upclean" ); + precachemodel( "c_zom_inmate_body2_g_rarmoff" ); + precachemodel( "c_zom_inmate_body2_g_larmoff" ); + precachemodel( "c_zom_inmate_body2_g_behead" ); + precachemodel( "c_zom_inmate_body1_g_lowclean" ); + precachemodel( "c_zom_inmate_body1_g_rlegoff" ); + precachemodel( "c_zom_inmate_body1_g_llegoff" ); + precachemodel( "c_zom_inmate_body1_g_legsoff" ); + precachemodel( "c_zom_inmate_g_rarmspawn" ); + precachemodel( "c_zom_inmate_g_larmspawn" ); + precachemodel( "c_zom_inmate_g_rlegspawn" ); + precachemodel( "c_zom_inmate_g_llegspawn" ); +} diff --git a/zm_prison/xmodelalias/c_zom_prison_guard_hat_als.gsc b/zm_prison/xmodelalias/c_zom_prison_guard_hat_als.gsc new file mode 100644 index 0000000..3117918 --- /dev/null +++ b/zm_prison/xmodelalias/c_zom_prison_guard_hat_als.gsc @@ -0,0 +1,7 @@ + +main() +{ + a[ 0 ] = "c_zom_guard_hat"; + a[ 1 ] = "c_viet_zombie_nohat"; + return a; +} diff --git a/zm_prison/xmodelalias/c_zom_prison_guard_head_als.gsc b/zm_prison/xmodelalias/c_zom_prison_guard_head_als.gsc new file mode 100644 index 0000000..e98cf9a --- /dev/null +++ b/zm_prison/xmodelalias/c_zom_prison_guard_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_barbwire_head"; + a[ 1 ] = "c_zom_zombie_hellcatraz_head"; + a[ 2 ] = "c_zom_zombie_mask_head"; + a[ 3 ] = "c_zom_zombie_slackjaw_head"; + return a; +} diff --git a/zm_prison/xmodelalias/c_zom_prison_inmate_head_als.gsc b/zm_prison/xmodelalias/c_zom_prison_inmate_head_als.gsc new file mode 100644 index 0000000..a0e0a74 --- /dev/null +++ b/zm_prison/xmodelalias/c_zom_prison_inmate_head_als.gsc @@ -0,0 +1,9 @@ + +main() +{ + a[ 0 ] = "c_zom_zombie_barbwire_head"; + a[ 1 ] = "c_zom_zombie_hellcatraz_head"; + a[ 2 ] = "c_zom_zombie_mask_head_device"; + a[ 3 ] = "c_zom_zombie_slackjaw_head"; + return a; +} diff --git a/zm_prison_patch/character/c_zom_arlington.gsc b/zm_prison_patch/character/c_zom_arlington.gsc new file mode 100644 index 0000000..1ba8568 --- /dev/null +++ b/zm_prison_patch/character/c_zom_arlington.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_arlington_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_arlington_fb" ); +} diff --git a/zm_prison_patch/character/c_zom_deluca.gsc b/zm_prison_patch/character/c_zom_deluca.gsc new file mode 100644 index 0000000..9dde50a --- /dev/null +++ b/zm_prison_patch/character/c_zom_deluca.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_deluca_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_deluca_fb" ); +} diff --git a/zm_prison_patch/character/c_zom_handsome.gsc b/zm_prison_patch/character/c_zom_handsome.gsc new file mode 100644 index 0000000..9591983 --- /dev/null +++ b/zm_prison_patch/character/c_zom_handsome.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_handsome_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_handsome_fb" ); +} diff --git a/zm_prison_patch/character/c_zom_oleary.gsc b/zm_prison_patch/character/c_zom_oleary.gsc new file mode 100644 index 0000000..bc64b4e --- /dev/null +++ b/zm_prison_patch/character/c_zom_oleary.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oleary_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oleary_fb" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_first_floor_climb.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_first_floor_climb.gsc new file mode 100644 index 0000000..5f568a1 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_first_floor_climb.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "baseball_to_first_floor_climb" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_roof_climb.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_roof_climb.gsc new file mode 100644 index 0000000..316b10e --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_roof_climb.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "baseball_to_roof_climb" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_second_floor.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_second_floor.gsc new file mode 100644 index 0000000..c7fd03a --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_base_to_second_floor.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "baseball_to_second_floor_climb" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbdown.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbdown.gsc new file mode 100644 index 0000000..3e7ce3b --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbdown.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_cellblock" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbdown_norail.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbdown_norail.gsc new file mode 100644 index 0000000..ae94b67 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbdown_norail.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_cellblock_norailing" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbup.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbup.gsc new file mode 100644 index 0000000..b46d8f7 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_cellblock_climbup.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_cellblock" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_fence_climb.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_fence_climb.gsc new file mode 100644 index 0000000..33e7010 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_fence_climb.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "climb_over_dock_fence", 1 ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_mid_climb_up.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_mid_climb_up.gsc new file mode 100644 index 0000000..83b1288 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_mid_climb_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dock_mid_way_jump_up_climb", 1 ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_tommygun_drop.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_tommygun_drop.gsc new file mode 100644 index 0000000..c339460 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_tommygun_drop.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dock_tommygun_dropdown", 1 ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_water_jump_up.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_water_jump_up.gsc new file mode 100644 index 0000000..ad92329 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_dock_water_jump_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "dock_water_climb_up" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_golden_gate_jump.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_golden_gate_jump.gsc new file mode 100644 index 0000000..71d7344 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_golden_gate_jump.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "golden_gate_jump_up" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_gondola_climb.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_gondola_climb.gsc new file mode 100644 index 0000000..2edc9ea --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_alcatraz_gondola_climb.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "prison_gondola_traversal", 1 ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc new file mode 100644 index 0000000..8bd9a0e --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_127" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc new file mode 100644 index 0000000..ff54012 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_222" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_286.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_286.gsc new file mode 100644 index 0000000..1b54907 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_286.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_286" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc new file mode 100644 index 0000000..eb80121 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 72, 7 ); + } + else + { + dosimpletraverse( "jump_down_72" ); + } +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc new file mode 100644 index 0000000..e32a251 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 96, 7 ); + } + else + { + dosimpletraverse( "jump_down_96" ); + } +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc new file mode 100644 index 0000000..06cec96 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_127" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc new file mode 100644 index 0000000..793683d --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_222" ); +} diff --git a/zm_prison_patch/maps/mp/animscripts/traverse/zm_prison_jump_up_to_climb.gsc b/zm_prison_patch/maps/mp/animscripts/traverse/zm_prison_jump_up_to_climb.gsc new file mode 100644 index 0000000..f3e27f8 --- /dev/null +++ b/zm_prison_patch/maps/mp/animscripts/traverse/zm_prison_jump_up_to_climb.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "cellblock_jump_up_climb" ); +} diff --git a/zm_prison_patch/maps/mp/createfx/zm_prison_fx.gsc b/zm_prison_patch/maps/mp/createfx/zm_prison_fx.gsc new file mode 100644 index 0000000..93ea418 --- /dev/null +++ b/zm_prison_patch/maps/mp/createfx/zm_prison_fx.gsc @@ -0,0 +1,3653 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createexploder( "fx_alcatraz_dryer_on" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1580,06, 10596,5, 1144,13 ); + ent.v[ "angles" ] = ( 358,936, 90,89, -3,42846 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_storm_start" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -7158,76, 9486,71, 4645,13 ); + ent.v[ "angles" ] = ( 0,992545, 7,00395, 0,121882 ); + ent.v[ "delay" ] = 0,5; + ent.v[ "exploder" ] = 10000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_generator_smk" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -451,134, 6294,92, 106,892 ); + ent.v[ "angles" ] = ( 275,029, 43,3103, 145,18 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3100; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_generator_sparks" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -426,856, 6309,19, 100,792 ); + ent.v[ "angles" ] = ( 271,545, 320,377, -131,117 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3200; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_generator_exp" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -447,409, 6309,94, 95,7917 ); + ent.v[ "angles" ] = ( 275,029, 43,311, 144,179 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3300; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 7342,27, -1239,57, -56,32 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1529,65, -74,6753, -103,128 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3162,48, 906,901, -112,39 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -7767,62, 1896,04, 535,771 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -11390,9, 6036,43, 622,107 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -11845,1, 8759,95, 713,719 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -10196,1, 10963,3, 769,695 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -8544,78, 12775,9, 643,932 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -5994,11, 14521,9, 1173,7 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3605,93, 15594,1, -185,955 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -566,058, 16321,3, 22,028 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2782,79, 16558,4, -7,81899 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9763,82, 17188,9, 209,793 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 16226,4, 13493,6, 288,663 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 20353,1, 11057,8, 785,277 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 16048, 7489,45, 609,427 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 15934,5, 3775,54, -0,382989 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 11907,4, 2073,58, 60,092 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_door_blocker" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2132,35, 9208,9, 1335,59 ); + ent.v[ "angles" ] = ( 271,285, 159,957, 109,776 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_door_blocker" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1229,51, 9982,55, 1128,13 ); + ent.v[ "angles" ] = ( 271,285, 159,954, 20,7791 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 419,924, 8645,09, 804,025 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 421,137, 8654,28, 431,025 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 734,791, 8593,32, 670,626 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 502,015, 8078,21, 784,399 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 78,4272, 8369,79, 926,833 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 157,648, 8673,2, 996,251 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 577,807, 8743,26, 1010,39 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 491,398, 8767,96, 618,174 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 91,1186, 8503,61, 522,555 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 186,705, 8232,87, 440,658 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_tunnel_dust_fall" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 317,003, 8752,82, 582,406 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_elec_fence" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -869,315, 9523,63, 1364,03 ); + ent.v[ "angles" ] = ( 359,8, 181,381, 89,7941 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2011,81, 9915,29, 1140,63 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1702,67, 10247,5, 1143,63 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1766,91, 9971,22, 1147,63 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1713,95, 9675,05, 1143,63 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1995,66, 9568,79, 1143,63 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1871,99, 9190,41, 1143,63 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2559,22, 9361,3, 1532,03 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2542,36, 9429,4, 1683,78 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2561,98, 9453,56, 1683,78 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2632,91, 9260,28, 1624,77 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2889,04, 9354,63, 1542,03 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3181,12, 9358,07, 1543,03 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2661,32, 9346,76, 1532,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2582,52, 9353,85, 1556,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2872,79, 9310,92, 1594,21 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2810, 9317,82, 1582,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2874,26, 9299,27, 1567,94 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2872,85, 9271,97, 1560,94 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2807,44, 9291,96, 1567,91 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2023,55, 10274, 1165,72 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_shower_steam" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1697,86, 9283,56, 1154,13 ); + ent.v[ "angles" ] = ( 1,66691, 260,366, 0,770388 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_steam_pipe" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1670,47, 10334,7, 1265,27 ); + ent.v[ "angles" ] = ( 13,6657, 260,532, 0,792235 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2935,96, 9719, 1405,23 ); + ent.v[ "angles" ] = ( 331,623, 263,046, 8,24825 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_md" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2916,12, 9526,54, 1392,61 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1915,56, 9714,44, 1199,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1914,03, 9847,78, 1208,69 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2011,07, 9938,63, 1178,54 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2157,54, 9939,59, 1193,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2123,86, 9938,14, 1199,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1989,11, 9696,68, 1210,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1963,54, 9246,12, 1199,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1802,51, 9209,58, 1199,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1823,18, 9354,43, 1189,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1827,13, 9516,26, 1189,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1707,84, 9687,23, 1180,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2758,3, 9477,92, 1353,49 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2707,26, 9807,33, 1360,06 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3144,32, 9922,52, 1351,16 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3203,34, 9553,01, 1366,27 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_smk_linger" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2699,66, 9648,03, 1346,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_smk_linger" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3005,26, 9948,82, 1336,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_smk_linger" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3248,53, 9657,68, 1336,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_smk_linger" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3058,11, 9375,84, 1336,44 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_indoor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3197,03, 9461,74, 1366,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 360 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_indoor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2946,12, 9431,4, 1336,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_indoor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3234,88, 9767,94, 1351,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 356 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_indoor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2878,35, 9841,63, 1384,4 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 357 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_indoor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2846,04, 9498,34, 1372,82 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3194,97, 9997,61, 1344,34 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3071,89, 9564,52, 1347,22 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2664,43, 9491,19, 1346,75 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2682,34, 9889,09, 1358,41 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 589,654, 10405,2, 1336,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 414,931, 10676,5, 1336,13 ); + ent.v[ "angles" ] = ( 0, 269,001, 2 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -933,041, 9060,05, 1339,15 ); + ent.v[ "angles" ] = ( 0,174242, 265,004, 1,9927 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -961,581, 8588,5, 1336,13 ); + ent.v[ "angles" ] = ( 358,015, 352,996, 0,243711 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3640,25, 9570,16, 1528,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3414,1, 9593,14, 1528,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3997,47, 9513,13, 1528,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3829,13, 9767,36, 1528,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2015,94, 9680,29, 1164,09 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1910,75, 9914,85, 1160,69 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2106,76, 10213,8, 1172,64 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2132,49, 10212,1, 1174,46 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2157,22, 10212,1, 1182,06 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2180,24, 10213,1, 1170,42 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1911,83, 9628,21, 1163,8 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1913,69, 9654,86, 1164,09 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1619,93, 9436,56, 1165,91 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1590,47, 9438,35, 1181,94 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1641,2, 9443,34, 1185,35 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1831,03, 9853,19, 1164,39 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1830,3, 9878,42, 1167,11 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2958,64, 9446,22, 1528,13 ); + ent.v[ "angles" ] = ( 1,81247, 205,015, 0,845933 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3073,71, 9354,23, 1528,13 ); + ent.v[ "angles" ] = ( 1,81247, 205,015, 0,845933 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3478,99, 9643,84, 1542,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3855,27, 9655,09, 1534,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4099,19, 9564,1, 1534,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3204,61, 9286,51, 1552,19 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3686,24, 9647,25, 1538,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2428,39, 9657,28, 1348,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1973,75, 9654,84, 1359,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1994,6, 9213,62, 1351,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1726,04, 10538,2, 1348,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1191,13, 10599, 1349,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 565,169, 10514, 1351,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 639,384, 10193,1, 1351,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1084,87, 10162,2, 1357,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1562,32, 9678,89, 1353,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 896,835, 8860,77, 1563,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -396,579, 6435,79, 79,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5,05365, 6470,85, 77,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -254,544, 6784,77, 80,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 41,6386, 6679,69, 82,025 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -498,575, 6674,52, 77,325 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -465,948, 7001,1, 74,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -91,6424, 7089,39, 70,325 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -81,3869, 7364,98, 83,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -803,928, 8631,35, 1345,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -919,681, 9057,68, 1346,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -899,236, 9368,42, 1342,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -942,955, 9004,09, 1352,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -201,07, 9183,46, 1346,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 361,177, 9165,03, 1346,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 914,905, 9145,19, 1348,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 413,012, 9016,36, 1144,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 708,841, 9100,86, 1142,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 712,28, 9497,85, 1120,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 725,952, 9940,24, 1134,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 428,394, 9599,1, 1114,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 224,739, 8627,48, 1240,13 ); + ent.v[ "angles" ] = ( 0, 266,004, 0,997717 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 152,409, 8741,8, 1223,43 ); + ent.v[ "angles" ] = ( 1, 181,004, 0 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 83,4124, 8835,14, 1242,89 ); + ent.v[ "angles" ] = ( 0, 266,004, 0,997717 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1039,41, 10002,4, 1137,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_lightning_bridge" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -1958,8, -3583,98, -8405,5 ); + ent.v[ "angles" ] = ( 1, 0, 0 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 666; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1406,16, 10570,3, 1587,88 ); + ent.v[ "angles" ] = ( 358,18, 97,0161, -31,0387 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 552,727, 10588,9, 1544,88 ); + ent.v[ "angles" ] = ( 273,313, 328,899, 20,1914 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 576,783, 10701,1, 1422,29 ); + ent.v[ "angles" ] = ( 7,13962, 259,258, -88,0948 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1902,57, 10308,3, 1416,78 ); + ent.v[ "angles" ] = ( 352,701, 73,2123, -91,1448 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 980,162, 10569,7, 1586,88 ); + ent.v[ "angles" ] = ( 281,024, 211,769, -113,592 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1580,32, 10664,4, 1331,44 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1595,53, 10624,9, 1337,92 ); + ent.v[ "angles" ] = ( 320,949, 270,139, -2,32201 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1850,35, 10320,3, 1336,28 ); + ent.v[ "angles" ] = ( 320,949, 270,139, -2,32201 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1468,07, 10699,1, 1381,26 ); + ent.v[ "angles" ] = ( 5,74593, 283,373, -85,3484 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1634,21, 10597,7, 1341,35 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1536,05, 10666,6, 1335,57 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 681,37, 10678, 1337,33 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 12,495, 9146,95, 1344,95 ); + ent.v[ "angles" ] = ( 275,158, 259,127, 100,714 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -11,2735, 9169,99, 1344,17 ); + ent.v[ "angles" ] = ( 279,097, 129,863, -130,867 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 702,221, 10653,1, 1336,92 ); + ent.v[ "angles" ] = ( 271,046, 356,238, 3,63297 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 667,163, 10648,3, 1338,47 ); + ent.v[ "angles" ] = ( 271,046, 356,238, 3,63297 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1903,45, 10308,9, 1337,48 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1860,95, 10381,7, 1339,46 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1484,69, 10644,9, 1336,13 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1046,82, 10585,9, 1345,35 ); + ent.v[ "angles" ] = ( 271,046, 356,238, 3,63297 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1256,08, 10560,4, 1449,38 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 895,989, 10614,1, 1446,71 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 904,043, 10580,5, 1484,06 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 860,018, 10589,1, 1492,01 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1655,19, 10617,5, 1344,35 ); + ent.v[ "angles" ] = ( 274,044, 358,933, 0,939596 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1079,73, 10573,1, 1341,46 ); + ent.v[ "angles" ] = ( 280,512, 286,527, 73,0785 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 482,028, 10246,4, 1342,25 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 928,138, 10215,3, 1341,89 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 514,69, 9128,72, 1352 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 681,726, 9137,38, 1340,85 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 26,7562, 9154,91, 1341,87 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -130,213, 9097,76, 1342,75 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 233,662, 9181,73, 1343,22 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1605,16, 10656,5, 1388,85 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1640,42, 10701,1, 1444,2 ); + ent.v[ "angles" ] = ( 5,74593, 283,373, -85,3484 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2975,03, 9641,5, 1369,12 ); + ent.v[ "angles" ] = ( 331,623, 263,046, 8,24825 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3588,77, 9707,04, 1679,88 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2735,51, 9363,67, 1502,88 ); + ent.v[ "angles" ] = ( 25,1188, 92,9962, -11,1595 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3273,48, 9653,32, 1501,88 ); + ent.v[ "angles" ] = ( 27,2793, 154,424, 10,9775 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1783,09, 9810,6, 1336,58 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2004,37, 9633,44, 1343,92 ); + ent.v[ "angles" ] = ( 279,88, 246,962, 113,635 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2042,02, 9435,18, 1343,15 ); + ent.v[ "angles" ] = ( 274,044, 358,933, 0,939596 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1780,21, 9840,95, 1340,57 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1835,35, 9888,03, 1341,15 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1020,62, 10582,3, 1343,5 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1592,96, 10542, 1345,7 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1822,83, 10510, 1336,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1942,09, 10485,8, 1342,32 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1975,43, 9649,22, 1343,19 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1969,21, 9446,75, 1341,05 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1832,03, 9142,47, 1343,12 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2196,72, 9073,62, 1434,12 ); + ent.v[ "angles" ] = ( 1,46616, 180,068, 89,0883 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1830,24, 9018,15, 1399,62 ); + ent.v[ "angles" ] = ( 0,104001, 92,0835, 89,5545 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1609,71, 10565,4, 1344,41 ); + ent.v[ "angles" ] = ( 270,926, 86,7671, -87,6804 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_falling_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1602,95, 10655,1, 1388,71 ); + ent.v[ "angles" ] = ( 284,235, 101,132, -102,043 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ceiling_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2858,47, 9827,81, 1382,29 ); + ent.v[ "angles" ] = ( 270, 360, 0 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2781,71, 9859,82, 1341,99 ); + ent.v[ "angles" ] = ( 278,618, 290,413, 69,246 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2850,44, 9830,63, 1345,14 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2847,19, 9834,98, 1345,3 ); + ent.v[ "angles" ] = ( 298,018, 194,866, 162,645 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3070,15, 9414,14, 1344,35 ); + ent.v[ "angles" ] = ( 286,153, 249,458, 111,819 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ceiling_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2868,19, 9623,34, 1384,03 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 285 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2822,36, 9542,62, 1336,13 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3018,92, 9566,49, 1359,21 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3062,11, 9786,73, 1374,04 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3345,83, 9965,6, 1338,47 ); + ent.v[ "angles" ] = ( 331,623, 263,046, 8,24825 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3162,6, 9567,16, 1342,08 ); + ent.v[ "angles" ] = ( 286,106, 78,5502, -80,145 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3202,2, 9655,18, 1337,82 ); + ent.v[ "angles" ] = ( 295,277, 9,20946, -11,4485 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3311,53, 9892,21, 1336,82 ); + ent.v[ "angles" ] = ( 274,255, 24,6379, -26,0689 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2917,54, 9319,16, 1336,52 ); + ent.v[ "angles" ] = ( 274,255, 24,6379, -26,0689 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1489,89, 9732,73, 1338,13 ); + ent.v[ "angles" ] = ( 274,255, 24,6379, -26,0689 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1753,47, 9663,77, 1342,99 ); + ent.v[ "angles" ] = ( 283,969, 43,8212, -44,8058 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2581,19, 9538,97, 1342,65 ); + ent.v[ "angles" ] = ( 274,384, 116,502, -116,352 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2655,73, 9872,91, 1358,54 ); + ent.v[ "angles" ] = ( 297,212, 286,003, 72,1875 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2631,43, 9974,47, 1377,77 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1646,15, 10592,2, 1344,21 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1736,19, 9658,28, 1342,31 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2595,91, 9550,02, 1344,56 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2808,63, 9863,33, 1340,55 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3259,13, 9974,1, 1345,95 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2015,33, 9436,95, 1343,48 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_ash" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 683,494, 10667,8, 1336,23 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1901,4, 10494,8, 1343,4 ); + ent.v[ "angles" ] = ( 281,123, 169,791, -170,119 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 617,367, 10387,4, 1336,33 ); + ent.v[ "angles" ] = ( 271,046, 356,238, 3,63297 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 473,008, 10595,1, 1338,98 ); + ent.v[ "angles" ] = ( 271,046, 356,238, 3,63297 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 394,892, 10644,7, 1338,22 ); + ent.v[ "angles" ] = ( 271,046, 356,238, 3,63297 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 486,078, 10235,4, 1343,48 ); + ent.v[ "angles" ] = ( 287,957, 92,9286, -92,9109 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 741,183, 10395,7, 1343,71 ); + ent.v[ "angles" ] = ( 274,956, 180,635, 179,233 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 947,43, 10230,7, 1342,46 ); + ent.v[ "angles" ] = ( 282,885, 112,727, -111,945 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 971,453, 10199,9, 1344,91 ); + ent.v[ "angles" ] = ( 276,307, 234,116, 127,128 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2028,97, 10420,7, 1493,81 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2003,66, 10400,3, 1493,06 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_blood_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 481,194, 10390,6, 1442,77 ); + ent.v[ "angles" ] = ( 87,2665, 19,9036, -157,009 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_falling_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2827,94, 9642,21, 1362,9 ); + ent.v[ "angles" ] = ( 284,235, 101,132, -102,043 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2728,7, 9932,34, 1502,88 ); + ent.v[ "angles" ] = ( 27,2793, 154,424, 10,9775 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1139,74, 9183,71, 1342,29 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1538,25, 9161,64, 1341,92 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1122,66, 9163,84, 1348,97 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1502,71, 9167,7, 1345,38 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -548,867, 9285,93, 1336,32 ); + ent.v[ "angles" ] = ( 274,058, 74,8172, -75,2586 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -928,928, 9350,51, 1339,62 ); + ent.v[ "angles" ] = ( 271,49, 313,346, 46,1678 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -531,364, 8540,54, 1336,13 ); + ent.v[ "angles" ] = ( 359,861, 86,0029, -1,99545 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -992,053, 8980,17, 1336,13 ); + ent.v[ "angles" ] = ( 0,174242, 265,004, 1,9927 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -959,544, 9129,57, 1336,13 ); + ent.v[ "angles" ] = ( 0,174242, 265,004, 1,9927 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -936,053, 9354,49, 1336,13 ); + ent.v[ "angles" ] = ( 0,174242, 265,004, 1,9927 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -757,838, 9350,15, 1342,69 ); + ent.v[ "angles" ] = ( 0,174242, 265,004, 1,9927 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -523,02, 9309,18, 1336,13 ); + ent.v[ "angles" ] = ( 0,174242, 265,004, 1,9927 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -925,949, 9028,78, 1338,12 ); + ent.v[ "angles" ] = ( 294,943, 91,5663, -92,2952 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -938,21, 8989,24, 1352,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -562,519, 9300,83, 1351,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_steam_pipe" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1572,54, 10595,4, 1237,1 ); + ent.v[ "angles" ] = ( 307,948, 269,133, 8,52223 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_steam_pipe" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1573,97, 10598,6, 1241,04 ); + ent.v[ "angles" ] = ( 336,914, 77,4272, -177,593 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1000; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_generator_sparks" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -468,935, 6306,68, 101,568 ); + ent.v[ "angles" ] = ( 271,545, 320,377, -131,117 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3200; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_3floor" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 883,113, 9289,07, 1650,48 ); + ent.v[ "angles" ] = ( 88,959, 101,532, -169,894 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2822,56, 9797,21, 1336,6 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_flight_clouds" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -933,391, 9419,79, 3750,13 ); + ent.v[ "angles" ] = ( 6, 359,842, -1,00489 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 10001; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2407,47, 9685,8, 1338,13 ); + ent.v[ "angles" ] = ( 274,384, 116,502, -116,352 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2917,66, 10054,5, 1336,13 ); + ent.v[ "angles" ] = ( 360, 270, 2 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2729,4, 9970,44, 1352,2 ); + ent.v[ "angles" ] = ( 360, 270, 2 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2766,99, 9770,14, 1336,13 ); + ent.v[ "angles" ] = ( 1,4864, 222,017, 1,33874 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3069,43, 9323,92, 1342,13 ); + ent.v[ "angles" ] = ( 359,86, 86,0019, -1,99543 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3168,04, 9666,45, 1336,13 ); + ent.v[ "angles" ] = ( 358,076, 343,99, 0,551883 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3211,15, 10005,5, 1347,43 ); + ent.v[ "angles" ] = ( 359,756, 276,995, 1,98541 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2473,83, 10017,2, 1432,13 ); + ent.v[ "angles" ] = ( 2, 178,999, 0 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2410,57, 9621,92, 1528,13 ); + ent.v[ "angles" ] = ( 358,188, 334,987, 0,845598 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3012,87, 9888,56, 1560,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3256,54, 9554,08, 1528,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3444,37, 9584,08, 1528,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 358 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3802,17, 9725,26, 1528,13 ); + ent.v[ "angles" ] = ( 358,234, 331,986, 0,939384 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4140,56, 9454,87, 1530,96 ); + ent.v[ "angles" ] = ( 359,55, 77,0076, -1,94882 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3754,67, 9891,84, 1708,09 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3654,77, 9856,02, 1710,58 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3928,71, 9648,46, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3897,87, 9418,06, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3611,64, 9448,36, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3622,4, 9305,04, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3436,25, 9586,12, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3438,73, 9736,43, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3006,05, 9764,95, 1705,55 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2836,07, 9345,84, 1706,26 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3045,95, 9551,25, 1706,07 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2593,02, 10007,5, 1704,13 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2655,16, 9921,61, 1710,92 ); + ent.v[ "angles" ] = ( 358,98, 187,99, 0,278593 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3309,09, 9847,24, 1713,41 ); + ent.v[ "angles" ] = ( 275,284, 158,67, -123,854 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3281,38, 9649,85, 1709,98 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3717,82, 9891,55, 1712,31 ); + ent.v[ "angles" ] = ( 276,373, 252,521, 107,799 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3381,98, 9860,42, 1336,65 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3261,28, 9256,64, 1336,13 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3358,42, 9339,63, 1337,02 ); + ent.v[ "angles" ] = ( 273,685, 148,196, -149,513 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3309,19, 9269,22, 1339,56 ); + ent.v[ "angles" ] = ( 295,355, 101,008, 173,07 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -731,236, 9331,66, 1345,52 ); + ent.v[ "angles" ] = ( 274,058, 74,8172, -75,2586 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4219,6, 9883,97, 1686,2 ); + ent.v[ "angles" ] = ( 358,469, 266,4, 89,3724 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -900,62, 8581,17, 1336,32 ); + ent.v[ "angles" ] = ( 271,409, 178,413, -176,397 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -466,08, 8807,48, 1333,03 ); + ent.v[ "angles" ] = ( 331,623, 263,046, 8,24825 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_pipe_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -447,483, 8689,35, 1444,46 ); + ent.v[ "angles" ] = ( 59,3735, 233,096, -33,8609 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 317,273, 8749,42, 1216,65 ); + ent.v[ "angles" ] = ( 1, 181,004, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 129,882, 8738,25, 1144,46 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 652,458, 8984,75, 1128,13 ); + ent.v[ "angles" ] = ( 359,187, 66,0123, -1,82752 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 336,022, 9042,62, 1134,27 ); + ent.v[ "angles" ] = ( 358,044, 347,993, 0,415989 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -73,4138, 8022,48, 276,125 ); + ent.v[ "angles" ] = ( 359,187, 66,0123, -1,82752 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 42,2798, 7573,77, 64,125 ); + ent.v[ "angles" ] = ( 1,69702, 212,016, 1,06081 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -62,7467, 7542,91, 72,0493 ); + ent.v[ "angles" ] = ( 0,650964, 251,012, 1,89219 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -94,2778, 7318,94, 64,125 ); + ent.v[ "angles" ] = ( 0, 269,002, 2 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -215,374, 7130,16, 64,125 ); + ent.v[ "angles" ] = ( 0, 269,001, 2 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -606,146, 7051,41, 64,125 ); + ent.v[ "angles" ] = ( 0, 269,002, 2 ); + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9,43524, 6826,6, 64,625 ); + ent.v[ "angles" ] = ( 1,98077, 188,006, 0,278867 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -305,732, 6748,36, 176,125 ); + ent.v[ "angles" ] = ( 1, 283, 0 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -9,75635, 6804,97, 173,885 ); + ent.v[ "angles" ] = ( 1, 283, 0 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -379,102, 6417,79, 174,021 ); + ent.v[ "angles" ] = ( 1, 283, 0 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 32,8236, 6494,58, 174,947 ); + ent.v[ "angles" ] = ( 0,998629, 280, 0 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -467,596, 6715,43, 173,671 ); + ent.v[ "angles" ] = ( 1, 283, 0 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_pipe_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -580,039, 6488,17, 120,733 ); + ent.v[ "angles" ] = ( 36,4703, 294,217, 6,72309 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_pipe_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -635,867, 6795,17, 104,186 ); + ent.v[ "angles" ] = ( 25,1853, 334,388, 28,0504 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_pipe_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 79,6997, 6709,9, 174,997 ); + ent.v[ "angles" ] = ( 53, 103, 135 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2,77522, 6900,08, 69,025 ); + ent.v[ "angles" ] = ( 272,1, 174,225, 15,0277 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 52,7936, 6880,71, 67,025 ); + ent.v[ "angles" ] = ( 272,1, 174,225, 15,0277 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -96,7265, 7553,39, 85,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 159,787, 6616,82, 121,652 ); + ent.v[ "angles" ] = ( 15, 180, -180 ); + ent.v[ "delay" ] = 5; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -159,776, 9118,96, 1343,61 ); + ent.v[ "angles" ] = ( 279,097, 129,863, -130,867 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 335,58, 6121,61, 51,208 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 29,3548, 6071,81, 17,1162 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -176,858, 6020,8, -1,46361 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -621,387, 5743,81, -47,875 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -707, 6024,22, -48,0669 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1073,87, 5808,45, -72 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1079,21, 5648,27, -72 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1204,23, 5428,41, -64,3255 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -760,422, 5419,79, -70,7786 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -490,389, 5350,47, -72 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -269,186, 5390,14, -72 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 408,443, 6180,08, 52,4562 ); + ent.v[ "angles" ] = ( 0,34777, 99,9951, -1,97077 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 261,556, 6151,54, 64,4823 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -29,8913, 6132,18, 37,7886 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -442,86, 5996,47, 5,62947 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -699,945, 5915,38, -22,2505 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1182,38, 5843,2, -47 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -898,028, 5474,64, -45 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -503,838, 5463,26, -51 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_portal_amb" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 893,493, 9676,43, 1300,5 ); + ent.v[ "angles" ] = ( 270,361, 146,301, -146,301 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_elec_key" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 2112,86, 9546,15, 1491,17 ); + ent.v[ "angles" ] = ( 0, 1,61288, 0,493361 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 100; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_elec_key" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -340,17, 9085,09, 1489,84 ); + ent.v[ "angles" ] = ( 359,931, 173,613, -0,488561 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 101; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_flight_clouds" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 1368,04, 9589,45, 2246,13 ); + ent.v[ "angles" ] = ( 6, 359,842, -1,00489 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 10001; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_works" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -14011,5, -10415,8, 15941,6 ); + ent.v[ "angles" ] = ( 357,253, 305,018, 8,18714 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3299,46, 9686,36, 1707,03 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3264,68, 9867,13, 1748,01 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2506,14, 9780,6, 1704,13 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2411,6, 9614,65, 1704,33 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_sm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2340,37, 9352,26, 1711,15 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3697,81, 9868,33, 1717,09 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3715,53, 9376,47, 1720,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3452,16, 9536,83, 1725,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3467,93, 9756,3, 1719,13 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3759,16, 9586,4, 1704,23 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2758,36, 9459,87, 1708,03 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2017,64, 9666,53, 1344,04 ); + ent.v[ "angles" ] = ( 274,297, 331,58, 26,2103 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_flies" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3871,12, 9589,39, 1537,08 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 2 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -850,724, 6678,8, 80,6406 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_ground_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1041,45, 6361,84, 73,125 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 270 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -853,933, 6697,45, 70,8289 ); + ent.v[ "angles" ] = ( 1,98077, 188,006, 0,278867 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_papers" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1162,83, 6626,91, 79,364 ); + ent.v[ "angles" ] = ( 359,687, 278,996, 1,97567 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -514,717, 8742,86, 1336,92 ); + ent.v[ "angles" ] = ( 276,248, 104,973, -103,03 ); + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_docks_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 437,647, 4164,58, -179,558 ); + ent.v[ "angles" ] = ( 273,066, 140,006, -40,0394 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -762,183, 9510,43, 1336,63 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -754,294, 9582,81, 1340,43 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -746,487, 9544,06, 1338,76 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -781,124, 8884,93, 1337,66 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -526,294, 8788,21, 1336,13 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -121,706, 8859,73, 1137,45 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -89,6046, 8871,91, 1138,16 ); + ent.v[ "angles" ] = ( 326,678, 262,19, 8,68818 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 407,075, 8917,91, 1128,42 ); + ent.v[ "angles" ] = ( 277,38, 187,745, 79,3305 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_embers_flat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 346,021, 8906,26, 1128,72 ); + ent.v[ "angles" ] = ( 277,38, 187,745, 79,3305 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 239,79, 8611,99, 1194,45 ); + ent.v[ "angles" ] = ( 359,629, 87,0357, 172,749 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_water_drip" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 627,908, 9466,32, 1214,44 ); + ent.v[ "angles" ] = ( 1, 181,004, 0 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1493,18, 9859,98, 1236,3 ); + ent.v[ "angles" ] = ( 359,629, 87,0357, 172,749 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3505,03, 10071, 1836,5 ); + ent.v[ "angles" ] = ( 359,374, 256,997, -0,852405 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3140,49, 10071,3, 1838,29 ); + ent.v[ "angles" ] = ( 359,549, 267,997, -0,956077 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3512,07, 9240,68, 1837,86 ); + ent.v[ "angles" ] = ( 359,549, 267,997, -0,956077 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2567,41, 9239,09, 1836,79 ); + ent.v[ "angles" ] = ( 359,549, 267,997, -0,956077 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3245,83, 9356,68, 1809,87 ); + ent.v[ "angles" ] = ( 88,2621, 234,619, -33,3817 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2504,11, 9653,06, 1495,16 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3013,48, 9369,17, 1494,78 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3013,42, 9945,22, 1495,16 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3283,65, 9362,79, 1494,53 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1927,86, 9672,2, 1559,09 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 423,669, 10589,5, 1553,63 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 713,441, 10407,4, 1555,28 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1196,23, 10671,9, 1355,82 ); + ent.v[ "angles" ] = ( 3, 180, -179 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 890,943, 9922,62, 1678,88 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 890,761, 9416,6, 1670,78 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 891,356, 10209,5, 1679,53 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2363,55, 9957,42, 1675,41 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2400,18, 9568,7, 1673,89 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2830,29, 9567,95, 1673,89 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3155,6, 9400,79, 1670,76 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -564,353, 6131,82, 173,804 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 147,474, 6266,18, 174,089 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1134,02, 6026,12, 173,672 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -569,979, 5833,6, 124,43 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -547,544, 5691,97, 125,33 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 440,405, 5737,47, 437,449 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1023,9, 5737,35, 436,58 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 890,853, 8930,39, 1670,88 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 816,006, 8448,9, 1690,6 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 980,761, 8449,74, 1690,95 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1451, 9679,38, 1555,67 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2043,35, 9792,53, 1555,77 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3550,27, 9700,23, 1356,74 ); + ent.v[ "angles" ] = ( 350,776, 209,184, 175,996 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 785,455, 9056,21, 1251,57 ); + ent.v[ "angles" ] = ( 44,9397, 190,891, 170,592 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 447,928, 8762,6, 1147,03 ); + ent.v[ "angles" ] = ( 337,384, 199,53, 171,258 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 316,692, 10522,5, 1617,96 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,625, 10657,6, 1622,49 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,625, 10402,8, 1616,14 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,625, 10400,4, 1505,41 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,625, 10531,2, 1508,28 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 320,625, 10654,7, 1493,38 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 311,423, 10426,9, 1417,13 ); + ent.v[ "angles" ] = ( 26,96, 356,634, -1,52751 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1569,88, 10462,9, 1382,04 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1723,7, 10471,2, 1381,03 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1323,79, 10466,9, 1388,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 448,142, 10076,1, 1382,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 611,63, 10057,6, 1378,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1091,71, 10079,4, 1393,28 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1244,25, 10070,9, 1381,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -30,9473, 9019,22, 1387,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 132,446, 9021,45, 1389,42 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 371,723, 9012,43, 1389,46 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 767,811, 9013,37, 1391,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1007,32, 9014,39, 1402,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1492,93, 9266,77, 1391,13 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1170,08, 9252,34, 1391,48 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1006,98, 9267,06, 1392,13 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 688,911, 9262,78, 1389,75 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 206,046, 9274,31, 1391,13 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1010,31, 9543,9, 1497,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 770,992, 9552,95, 1498,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1720,47, 9270,14, 1491,67 ); + ent.v[ "angles" ] = ( 9,92145, 269,658, 2,39977 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1568,39, 9267,45, 1494,86 ); + ent.v[ "angles" ] = ( 9,92145, 269,658, 2,39977 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1245,01, 9268,15, 1493,94 ); + ent.v[ "angles" ] = ( 9,92145, 269,658, 2,39977 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1088,69, 9272,64, 1492,86 ); + ent.v[ "angles" ] = ( 9,92145, 269,658, 2,39977 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 765,737, 9265,8, 1489,91 ); + ent.v[ "angles" ] = ( 9,92145, 269,658, 2,39977 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 607,758, 9271,79, 1491,13 ); + ent.v[ "angles" ] = ( 9,92145, 269,658, 2,39977 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1015,94, 9027,97, 1494,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 765,951, 9030, 1496,65 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 527,6, 9028,08, 1494,85 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 287,869, 9023, 1491,85 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 50,6901, 9027,66, 1496,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -110,165, 9024,2, 1491,85 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1569,11, 9557,99, 1390,47 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1486,33, 9546,5, 1392,86 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1415,67, 9783,88, 1389,09 ); + ent.v[ "angles" ] = ( 13,8118, 270,389, 2,80952 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1649,48, 9800,45, 1391,13 ); + ent.v[ "angles" ] = ( 13,8118, 270,389, 1,80952 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1486,94, 9797,82, 1393,13 ); + ent.v[ "angles" ] = ( 13,8118, 270,389, 1,80952 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1889,64, 9554,51, 1494,2 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1650,77, 9554, 1494,7 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1407,12, 9549,6, 1495,13 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2680,41, 9241,74, 1607,55 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2559,16, 9251,56, 1606,23 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2815,99, 9241,74, 1607,39 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2941,83, 9241,74, 1610,52 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3073,12, 9243,77, 1605,54 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3198,28, 9241,74, 1604,28 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3327,58, 9241,74, 1604,89 ); + ent.v[ "angles" ] = ( 39, 90, -90 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 406,69, 10711,4, 1485,18 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 407,744, 10705,4, 1596,58 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 728,378, 10702,6, 1597,54 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 726,087, 10711,4, 1484,7 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 885,363, 10711,4, 1483,53 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 886,745, 10711,4, 1605,65 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1046,04, 10711,4, 1604,41 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1046,56, 10711,4, 1487,01 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1369,93, 10711,4, 1487,85 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1365,1, 10711,4, 1605,1 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1524,45, 10711,4, 1604,6 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1524,79, 10711,4, 1495,05 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1690,26, 10711,4, 1484,78 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1690,75, 10711,4, 1604,31 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3312,84, 10052,6, 1434,41 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3189,64, 10063,6, 1434,34 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3064,33, 10063,9, 1436,83 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2809,5, 10063,8, 1434,68 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2692,33, 10070,1, 1435,34 ); + ent.v[ "angles" ] = ( 32,5749, 270,764, 90,509 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3315,4, 9248,5, 1425,71 ); + ent.v[ "angles" ] = ( 23,4234, 90,3041, 96,5324 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3189,54, 9247,91, 1436,81 ); + ent.v[ "angles" ] = ( 23,4234, 90,3041, 96,5324 ); + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2935,97, 9248,13, 1434,52 ); + ent.v[ "angles" ] = ( 23,4234, 90,3041, 96,5324 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2808,35, 9247,4, 1434,97 ); + ent.v[ "angles" ] = ( 23,4234, 90,3041, 96,5324 ); + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2684,48, 9251,12, 1432,67 ); + ent.v[ "angles" ] = ( 23,4234, 90,3041, 96,5324 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1851,76, 9666,95, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1689,81, 9672,34, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1528,3, 9666,39, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1377,93, 9668, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1216,79, 9667,93, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1056,31, 9667,57, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 731,424, 9670,17, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 565,92, 9668,89, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 407,767, 9667,76, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 256,685, 9668,92, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 96,9389, 9668,97, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -58,1716, 9667,61, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1206,34, 9145,07, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1050,18, 9141,42, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 733,914, 9141,55, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 568,491, 9139,29, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 414,404, 9140,03, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 253,372, 9139,45, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 88,891, 9142,25, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -57,3577, 9139,38, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1042,91, 10210, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1213,28, 10210,5, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1364,23, 10212,7, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1532,33, 10210,3, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1689,03, 10214,1, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_grill_lg" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1848,9, 10211,3, 1696,68 ); + ent.v[ "angles" ] = vectorScale( ( 1, 0, 0 ), 72 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_skinny" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2578,89, 9342,72, 1615,18 ); + ent.v[ "angles" ] = ( 39, 90, 4 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 401,419, 6214,84, 236,176 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1291,9, 5262,93, 85,1909 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -507,892, 5356,69, 85,4086 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -194,699, 5414,74, 85,7782 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -774,753, 4920,69, 85,2359 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -460,783, 4960,4, 85,2728 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -46,4178, 5919,75, 308,628 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 317,223, 6463,84, 463,01 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 786,301, 6457,22, 225,263 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 991,071, 6495,34, 242,168 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 582,236, 6419,38, 201,504 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 89,8474, 6226,05, 436,7 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -352,84, 6141,79, 436,856 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 486,265, 6571,19, 307,796 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1158,42, 6607,94, 405,51 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -818,707, 5297,98, 85,7438 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1142,86, 5237,31, 84,9536 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 104,214, 6475,26, 168,218 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -197,748, 6437,94, 168,111 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -459,679, 6417,96, 170,195 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -528,85, 6721,84, 167,801 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -253,095, 6775,98, 168,278 ); + ent.v[ "angles" ] = ( 87,7649, 206,476, -168,354 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( 89,038, 6849,09, 75,057 ); + ent.v[ "angles" ] = ( 316,948, 121,676, 9,58068 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 10,2684, 6655,25, 159,499 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 138,161, 6724,55, 157,718 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -553,939, 6543,81, 156,55 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -435,901, 6817,92, 137,947 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -316,12, 6866,29, 157,493 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -84,2072, 6535,8, 138,646 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -103,272, 7239,8, 183,45 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -86,1894, 8081,85, 388,829 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 157,288, 8184,97, 421,462 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 352,994, 8441,6, 1022,28 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 478,062, 8437,4, 1022,53 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 412,855, 8939,26, 959,914 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 414,777, 9560,82, 1239,88 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 819,513, 9903,79, 1147,69 ); + ent.v[ "angles" ] = ( 352,607, 137,27, -179,538 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1699,24, 10590,7, 1275,52 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1872,09, 10311,2, 1275,57 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1872,27, 9136,04, 1274,87 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1661,05, 9510,7, 1276,91 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1710,07, 10452,4, 1170,78 ); + ent.v[ "angles" ] = ( 320,227, 252,198, -64,0511 ); + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2162,05, 10094,1, 1166,03 ); + ent.v[ "angles" ] = ( 3,09201, 249,964, -92,2163 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1779,21, 9973,23, 1279,9 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -955,011, 9653,45, 1470,93 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -900,354, 9006,9, 1474,53 ); + ent.v[ "angles" ] = ( 68,8801, 19,8961, 18,3607 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -773,216, 8671,79, 1474,97 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -525,033, 9302,02, 1472,5 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -521,188, 9532,77, 1471,4 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -517,18, 9885,99, 1620,33 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5,61688, 9138,99, 1555,76 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1122,61, 9138,22, 1556 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1539,18, 9134,92, 1556,23 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1771,89, 9132,89, 1554,68 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3494,65, 9802,49, 1448,48 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3356,18, 9388,43, 1448,11 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2648,33, 9468,2, 1448,38 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2190,27, 9172,78, 1430,96 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2190,59, 9074,75, 1532,77 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2192,47, 9485,15, 1540,64 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2190,65, 9773,38, 1531,11 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2190,64, 10147,1, 1531,75 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2043,31, 9269,78, 1555,28 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 782,629, 10562,3, 1428,92 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2192,61, 9803,98, 1432,3 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3755,64, 9803,88, 1622,18 ); + ent.v[ "angles" ] = ( 3,74498, 208,282, 176,039 ); + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3559,12, 9576,33, 1858,36 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1355,83, 5603,76, 85,6469 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 332,569, 7221,49, 781,074 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 886,704, 7413,74, 837,356 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 827,948, 6935,94, 757,722 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 655,77, 8112,22, 1349,92 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1077,13, 6734,67, 243,379 ); + ent.v[ "angles" ] = ( 357, 360, -1 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1446,42, 8786,81, 1336,13 ); + ent.v[ "angles" ] = ( 357, 360, -1 ); + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -301,037, 9758,66, 1336,13 ); + ent.v[ "angles" ] = ( 357, 360, -1 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -296,616, 10024,6, 1561,02 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -381,96, 9359,96, 1421,61 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -294,089, 9137,74, 1555,6 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1038,56, 8307,04, 1470,39 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 58,6422, 5028,87, 85,5442 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1077,74, 4880,22, 85,3633 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -148,397, 6691,36, 156,587 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -102,925, 7167,09, 204,785 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 255,812, 7238,75, 183,851 ); + ent.v[ "angles" ] = ( 0,786996, 93,9423, 3,06272 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 481,194, 6705,34, 228,47 ); + ent.v[ "angles" ] = ( 1,18527, 77,9467, 0,769855 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2038,86, 10591, 1275,2 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_works" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -16163,6, -24902,8, 5721,57 ); + ent.v[ "angles" ] = ( 357,253, 305,018, 8,18714 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1364,11, 10473,7, 1458,77 ); + ent.v[ "angles" ] = ( 1,5043, 99,9372, 177,218 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1160,21, 9657,1, 1667,77 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 533,91, 9563,95, 1595,92 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 371,03, 9556, 1599,39 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 768,419, 9791,94, 1496,75 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 606,036, 9784,37, 1494,09 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 989,424, 9782,96, 1491,41 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1240,71, 9790,43, 1596,71 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1165,63, 9255,2, 1600,83 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 529,666, 9253, 1600,59 ); + ent.v[ "angles" ] = ( 8,84569, 270,125, 1,15222 ); + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 1076,08, 9049,83, 1594,92 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_godray_jail" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 449,965, 9034, 1601,22 ); + ent.v[ "angles" ] = ( 15,1496, 89,6387, -5,17936 ); + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 147,805, 8736,36, 471,843 ); + ent.v[ "angles" ] = ( 1,8203, 325,493, -174,863 ); + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 708,688, 8697,52, 594,988 ); + ent.v[ "angles" ] = ( 5,42363, 249,387, 179,472 ); + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 399,19, 8036,93, 757,379 ); + ent.v[ "angles" ] = ( 1,03643, 99,2729, 177,746 ); + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 9,83607, 8457,23, 866,271 ); + ent.v[ "angles" ] = ( 358,734, 358,353, -174,7 ); + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 352,342, 8854,08, 933,438 ); + ent.v[ "angles" ] = ( 4,10524, 275,464, -178,093 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 665,592, 8621,58, 927,116 ); + ent.v[ "angles" ] = ( 358,897, 146,438, 175,61 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1161,57, 6548,38, 157,284 ); + ent.v[ "angles" ] = ( 356,243, 104,479, 177,474 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -812,679, 6550,35, 156,07 ); + ent.v[ "angles" ] = ( 356,381, 107,482, 177,281 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -828,262, 6643,1, 177,801 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1050,98, 6344,51, 178,115 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_steam_pipe_2" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1155,38, 6436,78, 127,459 ); + ent.v[ "angles" ] = ( 325,572, 103,717, -118,254 ); + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -899,01, 9249,23, 1470,88 ); + ent.v[ "angles" ] = ( 86,2212, 270,779, 107,648 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_ceiling" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -668,878, 8115,17, 1524,9 ); + ent.v[ "angles" ] = ( 86,2212, 270,779, 107,648 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -969,349, 9031,18, 1464,88 ); + ent.v[ "angles" ] = ( 86,2212, 270,779, 107,648 ); + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3405,9, 9339,15, 1529,66 ); + ent.v[ "angles" ] = ( 331,623, 263,046, 8,24825 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3917,37, 9634,78, 1684,65 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3497,73, 9900,04, 1558,98 ); + ent.v[ "angles" ] = ( 353,244, 296,4, 11,1766 ); + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2557,04, 9721,06, 1674,06 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 3312,89, 9721,35, 1674,23 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_falling_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2829,98, 9601,53, 1365,18 ); + ent.v[ "angles" ] = ( 284,235, 101,132, -102,043 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -430,366, 6320,19, 74,1536 ); + ent.v[ "angles" ] = ( 321,026, 8,30788, -178,503 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3200; + ent = maps/mp/_utility::createexploder( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "exploder"; + ent.v[ "origin" ] = ( -424,851, 6295,92, 74,5358 ); + ent.v[ "angles" ] = ( 321,026, 8,30788, -178,503 ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3200; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_sparks_panel" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -292,577, 6932,69, 164,028 ); + ent.v[ "angles" ] = ( 16,7863, 57,6032, -25,3165 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1712,46, -3882,27, -8427,66 ); + ent.v[ "angles" ] = ( 357,654, 131,461, 173,437 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1195,31, -3185,81, -8403,06 ); + ent.v[ "angles" ] = ( 357,938, 271,364, 5,80023 ); + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1737,05, -3361,13, -8427,08 ); + ent.v[ "angles" ] = ( 0,264099, 220,383, 6,29505 ); + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2260,25, -3424,57, -8394,88 ); + ent.v[ "angles" ] = ( 5,21218, 0,72745, 3,53907 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2186,54, -3850,05, -8392,88 ); + ent.v[ "angles" ] = ( 5,21218, 0,72745, 3,53907 ); + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2183,18, -3608,02, -8358,08 ); + ent.v[ "angles" ] = ( 5,21218, 0,72745, 3,53907 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2381,42, -3229,07, -8381,88 ); + ent.v[ "angles" ] = ( 5,21218, 0,72745, 3,53907 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fog_closet" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -2176,15, -4051,01, -8404,34 ); + ent.v[ "angles" ] = ( 5,21218, 0,72745, 3,53907 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -3844,63, 2669,63, -8906,04 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1347,37, 5991,52, -9034,89 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -6841,27, 772,29, -8673,81 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 6565,82, 2870,47, -9193,91 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 4953,08, -2793,47, -8690,6 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 5966,02, -7924,01, -8993,2 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_vista_fog" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -264,355, -9708,51, -9199,76 ); + ent.v[ "angles" ] = ( 274,434, 58,5957, -148,678 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 727,317, 9515,69, 1112,52 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 692,964, 9527,48, 1109,83 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 697,939, 9555,2, 1104,42 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 742,295, 9561,95, 1107,22 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 755,3, 9531,58, 1113,22 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -747,307, 9189,86, 1377,64 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -964,739, 8862,04, 1390 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -978,462, 8866,31, 1370 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -948,451, 9032,78, 1337,62 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -972,437, 9025,12, 1337,92 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -914,71, 8989,99, 1337,52 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -666,12, 9215,17, 1342,02 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2166,32, 9398,12, 1384,02 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 450,04, 10295,1, 1374,01 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 429,026, 10302,1, 1379,21 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -756,418, 8668,83, 1376,01 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -780,913, 8650,59, 1375,71 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -978,15, 8827,38, 1376,74 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -994,333, 8796,53, 1344,73 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -255,782, 7773,52, 149,925 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -129,488, 7791,41, 89,125 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -289,519, 7808,43, 180,625 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -219,39, 7881,49, 177,025 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 123,975, 7569,75, 64,625 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2610,22, 9258,08, 1532,32 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2598,16, 9259,59, 1534,13 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1873,77, -3732,44, -8446,28 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1884,71, -3434,8, -8441,69 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1887,09, -3419,79, -8446,28 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1887,97, -3429,18, -8438,87 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1887,88, -3731,23, -8439,17 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1947,66, -3727,37, -8399,39 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2476,05, 9441,09, 1564 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2471,93, 9438,04, 1567 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2606,03, 9261,8, 1534,13 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2144,01, 9384,09, 1379,32 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2146,25, 9356,15, 1382,53 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -679,561, 9218,32, 1337,02 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -716,517, 9205,81, 1338,62 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -900,584, 9035,59, 1341,63 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 719,208, 9557,13, 1110,73 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 871,139, 9593,56, 1144,54 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -194,315, 7711,4, 84,225 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -226,304, 7756,25, 121,325 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -148,564, 7805,71, 108,625 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 432,151, 7878,44, 71,125 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 332,167, 8255,32, 65,425 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_tinhat_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 384,185, 8125,68, 183,399 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 112,608, 6949,11, 121,618 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1877,71, -3746,33, -8443,78 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1907,92, -3737,14, -8423,5 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1881,17, -3416,76, -8443,88 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1913,68, -3429,53, -8423,3 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1939,52, -3436,6, -8409,8 ); + ent.v[ "angles" ] = ( 356,385, 310,775, 6,57062 ); + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 417,981, 10292,2, 1374,12 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 445,107, 10299,9, 1377,22 ); + ent.v[ "angles" ] = ( 0,319972, 280,816, 1,58965 ); + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -796,584, 9192,11, 1378,24 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -1024,91, 8778,35, 1336,92 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -726,891, 9213,39, 1342,03 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_candle_fire" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -978,093, 8981,14, 1337,72 ); + ent.v[ "angles" ] = ( 0,32829, 280,516, 1,58795 ); + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -422,865, 9127,95, 1526,2 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_light_round_oo" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( -422,036, 9822,33, 1526,47 ); + ent.v[ "angles" ] = ( 87,765, 206,475, -153,455 ); + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_alcatraz_fire_xsm" ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "origin" ] = ( 2192,36, 9573,53, 1556,93 ); + ent.v[ "angles" ] = ( 321,739, 261,228, 9,25082 ); + ent.v[ "delay" ] = -70; +} diff --git a/zm_tomb/aitype/zm_tomb_basic_crusader.gsc b/zm_tomb/aitype/zm_tomb_basic_crusader.gsc new file mode 100644 index 0000000..c901aa6 --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_basic_crusader.gsc @@ -0,0 +1,413 @@ +#include codescripts/character; + +#using_animtree( "zm_tomb_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_dugup; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_up_48; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_traverse_alcove_40; + dummy_anim_ref = %ai_zombie_traverse_alcove_56; + dummy_anim_ref = %ai_zombie_traverse_alcove_96; + dummy_anim_ref = %ai_zombie_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_crawl_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_jump_down_church; + dummy_anim_ref = %ai_zombie_jump_down_church; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_b; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_d; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_e; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_a; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_c; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_d; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_e; + dummy_anim_ref = %ai_zombie_death_icestaff_a; + dummy_anim_ref = %ai_zombie_death_icestaff_b; + dummy_anim_ref = %ai_zombie_death_icestaff_c; + dummy_anim_ref = %ai_zombie_death_icestaff_d; + dummy_anim_ref = %ai_zombie_death_icestaff_e; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_01; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_02; + dummy_anim_ref = %ai_zombie_afterlife_stun_a; + dummy_anim_ref = %ai_zombie_afterlife_stun_b; + dummy_anim_ref = %ai_zombie_afterlife_stun_c; + dummy_anim_ref = %ai_zombie_afterlife_stun_d; + dummy_anim_ref = %ai_zombie_afterlife_stun_e; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_d; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_a; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_b; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_c; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_a; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_b; + dummy_anim_ref = %ai_zombie_grabbed_by_mech; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_basic.asd"; + self.animtree = "zm_tomb_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = "fly_step_crusader"; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 6 ); + switch( randchar ) + { + case 0: + character/c_zom_tomb_crusader_1a::main(); + break; + case 1: + character/c_zom_tomb_crusader_1a_nohat::main(); + break; + case 2: + character/c_zom_tomb_crusader_2b::main(); + break; + case 3: + character/c_zom_tomb_crusader_2b_nohat::main(); + break; + case 4: + character/c_zom_tomb_crusader_2c::main(); + break; + case 5: + character/c_zom_tomb_crusader_1c::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_basic" ); + character/c_zom_tomb_crusader_1a::precache(); + character/c_zom_tomb_crusader_1a_nohat::precache(); + character/c_zom_tomb_crusader_2b::precache(); + character/c_zom_tomb_crusader_2b_nohat::precache(); + character/c_zom_tomb_crusader_2c::precache(); + character/c_zom_tomb_crusader_1c::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_basic_german.gsc b/zm_tomb/aitype/zm_tomb_basic_german.gsc new file mode 100644 index 0000000..943e3bb --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_basic_german.gsc @@ -0,0 +1,413 @@ +#include codescripts/character; + +#using_animtree( "zm_tomb_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_dugup; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_up_48; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_traverse_alcove_40; + dummy_anim_ref = %ai_zombie_traverse_alcove_56; + dummy_anim_ref = %ai_zombie_traverse_alcove_96; + dummy_anim_ref = %ai_zombie_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_crawl_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_jump_down_church; + dummy_anim_ref = %ai_zombie_jump_down_church; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_b; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_d; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_e; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_a; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_c; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_d; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_e; + dummy_anim_ref = %ai_zombie_death_icestaff_a; + dummy_anim_ref = %ai_zombie_death_icestaff_b; + dummy_anim_ref = %ai_zombie_death_icestaff_c; + dummy_anim_ref = %ai_zombie_death_icestaff_d; + dummy_anim_ref = %ai_zombie_death_icestaff_e; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_01; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_02; + dummy_anim_ref = %ai_zombie_afterlife_stun_a; + dummy_anim_ref = %ai_zombie_afterlife_stun_b; + dummy_anim_ref = %ai_zombie_afterlife_stun_c; + dummy_anim_ref = %ai_zombie_afterlife_stun_d; + dummy_anim_ref = %ai_zombie_afterlife_stun_e; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_d; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_a; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_b; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_c; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_a; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_b; + dummy_anim_ref = %ai_zombie_grabbed_by_mech; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_basic.asd"; + self.animtree = "zm_tomb_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 6 ); + switch( randchar ) + { + case 0: + character/c_zom_tomb_german_1a::main(); + break; + case 1: + character/c_zom_tomb_german_1a_nohat::main(); + break; + case 2: + character/c_zom_tomb_german_2b::main(); + break; + case 3: + character/c_zom_tomb_german_bare::main(); + break; + case 4: + character/c_zom_tomb_german_bare_nohat::main(); + break; + case 5: + character/c_zom_tomb_german_bare_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_basic" ); + character/c_zom_tomb_german_1a::precache(); + character/c_zom_tomb_german_1a_nohat::precache(); + character/c_zom_tomb_german_2b::precache(); + character/c_zom_tomb_german_bare::precache(); + character/c_zom_tomb_german_bare_nohat::precache(); + character/c_zom_tomb_german_bare_nohat::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_basic_german2.gsc b/zm_tomb/aitype/zm_tomb_basic_german2.gsc new file mode 100644 index 0000000..3814ef6 --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_basic_german2.gsc @@ -0,0 +1,413 @@ +#include codescripts/character; + +#using_animtree( "zm_tomb_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_dugup; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_up_48; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_traverse_alcove_40; + dummy_anim_ref = %ai_zombie_traverse_alcove_56; + dummy_anim_ref = %ai_zombie_traverse_alcove_96; + dummy_anim_ref = %ai_zombie_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_crawl_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_jump_down_church; + dummy_anim_ref = %ai_zombie_jump_down_church; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_b; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_d; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_e; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_a; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_c; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_d; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_e; + dummy_anim_ref = %ai_zombie_death_icestaff_a; + dummy_anim_ref = %ai_zombie_death_icestaff_b; + dummy_anim_ref = %ai_zombie_death_icestaff_c; + dummy_anim_ref = %ai_zombie_death_icestaff_d; + dummy_anim_ref = %ai_zombie_death_icestaff_e; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_01; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_02; + dummy_anim_ref = %ai_zombie_afterlife_stun_a; + dummy_anim_ref = %ai_zombie_afterlife_stun_b; + dummy_anim_ref = %ai_zombie_afterlife_stun_c; + dummy_anim_ref = %ai_zombie_afterlife_stun_d; + dummy_anim_ref = %ai_zombie_afterlife_stun_e; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_d; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_a; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_b; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_c; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_a; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_b; + dummy_anim_ref = %ai_zombie_grabbed_by_mech; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_basic.asd"; + self.animtree = "zm_tomb_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + randchar = codescripts/character::get_random_character( 6 ); + switch( randchar ) + { + case 0: + character/c_zom_tomb_german_2b_nohat::main(); + break; + case 1: + character/c_zom_tomb_german_3c::main(); + break; + case 2: + character/c_zom_tomb_german_3c_nohat::main(); + break; + case 3: + character/c_zom_tomb_german_bare::main(); + break; + case 4: + character/c_zom_tomb_german_bare_nohat::main(); + break; + case 5: + character/c_zom_tomb_german_bare_nohat::main(); + break; + } + self setcharacterindex( randchar ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_basic" ); + character/c_zom_tomb_german_2b_nohat::precache(); + character/c_zom_tomb_german_3c::precache(); + character/c_zom_tomb_german_3c_nohat::precache(); + character/c_zom_tomb_german_bare::precache(); + character/c_zom_tomb_german_bare_nohat::precache(); + character/c_zom_tomb_german_bare_nohat::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_basic_zone_capture.gsc b/zm_tomb/aitype/zm_tomb_basic_zone_capture.gsc new file mode 100644 index 0000000..66ec9cf --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_basic_zone_capture.gsc @@ -0,0 +1,386 @@ + +#using_animtree( "zm_tomb_basic" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_idle_v1_delta; + dummy_anim_ref = %ai_zombie_idle_crawl_delta; + dummy_anim_ref = %ai_zombie_walk_v1; + dummy_anim_ref = %ai_zombie_walk_v2; + dummy_anim_ref = %ai_zombie_walk_v3; + dummy_anim_ref = %ai_zombie_walk_v4; + dummy_anim_ref = %ai_zombie_walk_v6; + dummy_anim_ref = %ai_zombie_walk_v7; + dummy_anim_ref = %ai_zombie_walk_v9; + dummy_anim_ref = %ai_zombie_crawl; + dummy_anim_ref = %ai_zombie_crawl_v1; + dummy_anim_ref = %ai_zombie_crawl_v2; + dummy_anim_ref = %ai_zombie_crawl_v3; + dummy_anim_ref = %ai_zombie_crawl_v4; + dummy_anim_ref = %ai_zombie_crawl_v5; + dummy_anim_ref = %ai_zombie_walk_fast_v1; + dummy_anim_ref = %ai_zombie_walk_fast_v2; + dummy_anim_ref = %ai_zombie_walk_fast_v3; + dummy_anim_ref = %ai_zombie_run_v2; + dummy_anim_ref = %ai_zombie_run_v4; + dummy_anim_ref = %ai_zombie_run_v3; + dummy_anim_ref = %ai_zombie_sprint_v1; + dummy_anim_ref = %ai_zombie_sprint_v2; + dummy_anim_ref = %ai_zombie_crawl_sprint; + dummy_anim_ref = %ai_zombie_crawl_sprint_1; + dummy_anim_ref = %ai_zombie_crawl_sprint_2; + dummy_anim_ref = %ai_zombie_fast_sprint_01; + dummy_anim_ref = %ai_zombie_fast_sprint_02; + dummy_anim_ref = %ai_zombie_walk_on_hands_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_b; + dummy_anim_ref = %ai_zombie_attack_v2; + dummy_anim_ref = %ai_zombie_attack_v4; + dummy_anim_ref = %ai_zombie_attack_v6; + dummy_anim_ref = %ai_zombie_attack_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v1; + dummy_anim_ref = %ai_zombie_attack_forward_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v1; + dummy_anim_ref = %ai_zombie_walk_attack_v2; + dummy_anim_ref = %ai_zombie_walk_attack_v3; + dummy_anim_ref = %ai_zombie_walk_attack_v4; + dummy_anim_ref = %ai_zombie_run_attack_v1; + dummy_anim_ref = %ai_zombie_run_attack_v2; + dummy_anim_ref = %ai_zombie_run_attack_v3; + dummy_anim_ref = %ai_zombie_attack_crawl; + dummy_anim_ref = %ai_zombie_attack_crawl_lunge; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_a; + dummy_anim_ref = %ai_zombie_walk_on_hands_shot_b; + dummy_anim_ref = %ai_zombie_taunts_4; + dummy_anim_ref = %ai_zombie_taunts_7; + dummy_anim_ref = %ai_zombie_taunts_9; + dummy_anim_ref = %ai_zombie_taunts_5b; + dummy_anim_ref = %ai_zombie_taunts_5c; + dummy_anim_ref = %ai_zombie_taunts_5d; + dummy_anim_ref = %ai_zombie_taunts_5e; + dummy_anim_ref = %ai_zombie_taunts_5f; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_grab; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_hold; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_m_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_r_6_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_1_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_2_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_3_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_4_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_5_pull; + dummy_anim_ref = %ai_zombie_crawl_boardtear_aligned_l_6_pull; + dummy_anim_ref = %ai_zombie_window_attack_arm_l_out; + dummy_anim_ref = %ai_zombie_window_attack_arm_r_out; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathinside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside; + dummy_anim_ref = %ai_zombie_traverse_ground_v1_deathoutside_alt; + dummy_anim_ref = %ai_zombie_traverse_ground_dugup; + dummy_anim_ref = %ch_dazed_a_death; + dummy_anim_ref = %ch_dazed_b_death; + dummy_anim_ref = %ch_dazed_c_death; + dummy_anim_ref = %ch_dazed_d_death; + dummy_anim_ref = %ai_zombie_crawl_death_v1; + dummy_anim_ref = %ai_zombie_crawl_death_v2; + dummy_anim_ref = %ai_zombie_traverse_v1; + dummy_anim_ref = %ai_zombie_traverse_v2; + dummy_anim_ref = %ai_zombie_traverse_v5; + dummy_anim_ref = %ai_zombie_traverse_v6; + dummy_anim_ref = %ai_zombie_traverse_v7; + dummy_anim_ref = %ai_zombie_traverse_crawl_v1; + dummy_anim_ref = %ai_zombie_traverse_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_l; + dummy_anim_ref = %ai_zombie_barricade_enter_r; + dummy_anim_ref = %ai_zombie_barricade_enter_m_nolegs; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v1; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v2; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v3; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v4; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v5; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v6; + dummy_anim_ref = %ai_zombie_barricade_enter_m_v7; + dummy_anim_ref = %ai_zombie_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_run_r; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_l; + dummy_anim_ref = %ai_zombie_crawl_barricade_enter_sprint_r; + dummy_anim_ref = %ai_zombie_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_onto_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_down_markiv_rightrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_front; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_leftrear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rear; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightfront; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightmid; + dummy_anim_ref = %ai_zombie_crawl_jump_up_markiv_rightrear; + dummy_anim_ref = %ai_zombie_jump_across_120; + dummy_anim_ref = %ai_zombie_jump_down_48; + dummy_anim_ref = %ai_zombie_jump_down_72; + dummy_anim_ref = %ai_zombie_jump_down_96; + dummy_anim_ref = %ai_zombie_jump_down_127; + dummy_anim_ref = %ai_zombie_jump_up_48; + dummy_anim_ref = %ai_zombie_jump_up_96; + dummy_anim_ref = %ai_zombie_jump_up_127; + dummy_anim_ref = %ai_zombie_crawl_jump_across_120; + dummy_anim_ref = %ai_zombie_crawl_jump_down_48; + dummy_anim_ref = %ai_zombie_crawl_jump_down_72; + dummy_anim_ref = %ai_zombie_crawl_jump_down_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_127; + dummy_anim_ref = %ai_zombie_crawl_jump_up_48; + dummy_anim_ref = %ai_zombie_crawl_jump_up_96; + dummy_anim_ref = %ai_zombie_crawl_jump_up_127; + dummy_anim_ref = %ai_zombie_traverse_alcove_40; + dummy_anim_ref = %ai_zombie_traverse_alcove_56; + dummy_anim_ref = %ai_zombie_traverse_alcove_96; + dummy_anim_ref = %ai_zombie_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_72; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_84; + dummy_anim_ref = %ai_zombie_crawler_traverse_scaffold_100; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_crawl_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_crawl_jump_up_dlc4_trench_wall_140; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire; + dummy_anim_ref = %ai_zombie_crawl_vaultover_barbedwire_24; + dummy_anim_ref = %ai_zombie_crawl_jump_down_church; + dummy_anim_ref = %ai_zombie_jump_down_church; + dummy_anim_ref = %ai_zombie_thundergun_hit; + dummy_anim_ref = %ai_zombie_thundergun_hit_armslegsforward; + dummy_anim_ref = %ai_zombie_thundergun_hit_doublebounce; + dummy_anim_ref = %ai_zombie_thundergun_hit_forwardtoface; + dummy_anim_ref = %ai_zombie_thundergun_hit_upontoback; + dummy_anim_ref = %ai_zombie_thundergun_hit_stumblefall; + dummy_anim_ref = %ai_zombie_thundergun_hit_deadfallknee; + dummy_anim_ref = %ai_zombie_thundergun_hit_flatonback; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_legsout_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_left; + dummy_anim_ref = %ai_zombie_thundergun_hit_jackiespin_right; + dummy_anim_ref = %ai_zombie_thundergun_hit_faceplant; + dummy_anim_ref = %ai_zombie_thundergun_getup; + dummy_anim_ref = %ai_zombie_thundergun_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_c; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_a; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_b; + dummy_anim_ref = %ai_zombie_thundergun_getup_quick_c; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_a; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_b; + dummy_anim_ref = %ai_zombie_thundergun_sprinter_getup_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_b; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_c; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_d; + dummy_anim_ref = %ai_zombie_dlc4_tesla_death_e; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_a; + dummy_anim_ref = %ai_zombie_dlc4_tesla_crawl_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_a; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_b; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_c; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_d; + dummy_anim_ref = %ai_zombie_dlc4_freeze_death_e; + dummy_anim_ref = %ai_zombie_death_icestaff_a; + dummy_anim_ref = %ai_zombie_death_icestaff_b; + dummy_anim_ref = %ai_zombie_death_icestaff_c; + dummy_anim_ref = %ai_zombie_death_icestaff_d; + dummy_anim_ref = %ai_zombie_death_icestaff_e; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_01; + dummy_anim_ref = %ai_zombie_dlc4_crawl_freeze_death_02; + dummy_anim_ref = %ai_zombie_afterlife_stun_a; + dummy_anim_ref = %ai_zombie_afterlife_stun_b; + dummy_anim_ref = %ai_zombie_afterlife_stun_c; + dummy_anim_ref = %ai_zombie_afterlife_stun_d; + dummy_anim_ref = %ai_zombie_afterlife_stun_e; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_a; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_b; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_c; + dummy_anim_ref = %ai_zombie_airstaff_death_vacuumed_midair_d; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_a; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_b; + dummy_anim_ref = %ai_zombie_firestaff_death_walking_c; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_a; + dummy_anim_ref = %ai_zombie_firestaff_death_collapse_b; + dummy_anim_ref = %ai_zombie_grabbed_by_mech; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_basic.asd"; + self.animtree = "zm_tomb_basic.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = "fly_step_crusader"; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_tomb_crusader_zc::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_basic" ); + character/c_zom_tomb_crusader_zc::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_giant_robot.gsc b/zm_tomb/aitype/zm_tomb_giant_robot.gsc new file mode 100644 index 0000000..259fcf1 --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_giant_robot.gsc @@ -0,0 +1,62 @@ + +#using_animtree( "zm_tomb_giant_robot" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_giant_robot_walk_a; + dummy_anim_ref = %ai_zombie_giant_robot_walk_b; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_bunker_intro; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_giant_robot.asd"; + self.animtree = "zm_tomb_giant_robot.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "neutral"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_giant_robot::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "neutral" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_giant_robot" ); + character/c_zom_giant_robot::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_giant_robot_0.gsc b/zm_tomb/aitype/zm_tomb_giant_robot_0.gsc new file mode 100644 index 0000000..2365c3f --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_giant_robot_0.gsc @@ -0,0 +1,62 @@ + +#using_animtree( "zm_tomb_giant_robot" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_giant_robot_walk_a; + dummy_anim_ref = %ai_zombie_giant_robot_walk_b; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_bunker_intro; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_giant_robot.asd"; + self.animtree = "zm_tomb_giant_robot.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "neutral"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_giant_robot_0::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "neutral" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_giant_robot" ); + character/c_zom_giant_robot_0::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_giant_robot_1.gsc b/zm_tomb/aitype/zm_tomb_giant_robot_1.gsc new file mode 100644 index 0000000..eba30d2 --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_giant_robot_1.gsc @@ -0,0 +1,62 @@ + +#using_animtree( "zm_tomb_giant_robot" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_giant_robot_walk_a; + dummy_anim_ref = %ai_zombie_giant_robot_walk_b; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_bunker_intro; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_giant_robot.asd"; + self.animtree = "zm_tomb_giant_robot.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "neutral"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_giant_robot_1::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "neutral" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_giant_robot" ); + character/c_zom_giant_robot_1::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_giant_robot_2.gsc b/zm_tomb/aitype/zm_tomb_giant_robot_2.gsc new file mode 100644 index 0000000..61f7194 --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_giant_robot_2.gsc @@ -0,0 +1,62 @@ + +#using_animtree( "zm_tomb_giant_robot" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_giant_robot_walk_a; + dummy_anim_ref = %ai_zombie_giant_robot_walk_b; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml; + dummy_anim_ref = %ai_zombie_giant_robot_walk_nml_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches; + dummy_anim_ref = %ai_zombie_giant_robot_walk_trenches_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_intro; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village; + dummy_anim_ref = %ai_zombie_giant_robot_walk_village_outtro; + dummy_anim_ref = %ai_zombie_giant_robot_bunker_intro; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_giant_robot.asd"; + self.animtree = "zm_tomb_giant_robot.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "neutral"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_giant_robot_2::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "neutral" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_giant_robot" ); + character/c_zom_giant_robot_2::precache(); +} diff --git a/zm_tomb/aitype/zm_tomb_mech_zombie.gsc b/zm_tomb/aitype/zm_tomb_mech_zombie.gsc new file mode 100644 index 0000000..56b242a --- /dev/null +++ b/zm_tomb/aitype/zm_tomb_mech_zombie.gsc @@ -0,0 +1,122 @@ + +#using_animtree( "zm_tomb_mechz" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %ai_zombie_mech_death; + dummy_anim_ref = %ai_zombie_mech_death_explode; + dummy_anim_ref = %ai_zombie_mech_ft_aim_1; + dummy_anim_ref = %ai_zombie_mech_ft_aim_2; + dummy_anim_ref = %ai_zombie_mech_ft_aim_3; + dummy_anim_ref = %ai_zombie_mech_ft_aim_4; + dummy_anim_ref = %ai_zombie_mech_ft_aim_5; + dummy_anim_ref = %ai_zombie_mech_ft_aim_6; + dummy_anim_ref = %ai_zombie_mech_ft_aim_7; + dummy_anim_ref = %ai_zombie_mech_ft_aim_8; + dummy_anim_ref = %ai_zombie_mech_ft_aim_9; + dummy_anim_ref = %ai_zombie_mech_ft_intro_sprint_to_aim_5; + dummy_anim_ref = %ai_zombie_mech_ft_aim_idle; + dummy_anim_ref = %ai_zombie_mech_ft_fire_end; + dummy_anim_ref = %ai_zombie_mech_ft_fire_loop; + dummy_anim_ref = %ai_zombie_mech_ft_fire_start; + dummy_anim_ref = %ai_zombie_mech_ft_sweep; + dummy_anim_ref = %ai_zombie_mech_ft_sweep_up; + dummy_anim_ref = %ai_zombie_mech_ft_burn_player; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_1; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_2; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_3; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_4; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_5; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_6; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_7; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_8; + dummy_anim_ref = %ai_zombie_mech_grapple_aim_9; + dummy_anim_ref = %ai_zombie_mech_grapple_intro_sprint_to_aim_5; + dummy_anim_ref = %ai_zombie_mech_grapple_arm_closed_idle; + dummy_anim_ref = %ai_zombie_mech_grapple_arm_open_idle; + dummy_anim_ref = %ai_zombie_mech_idle; + dummy_anim_ref = %ai_zombie_mech_melee_a; + dummy_anim_ref = %ai_zombie_mech_melee_b; + dummy_anim_ref = %ai_zombie_mech_run_melee; + dummy_anim_ref = %ai_zombie_mech_sprint_melee; + dummy_anim_ref = %ai_zombie_mech_pain; + dummy_anim_ref = %ai_zombie_mech_injury_hit_by_tank; + dummy_anim_ref = %ai_zombie_mech_injury_down_by_tank_loop; + dummy_anim_ref = %ai_zombie_mech_injury_recover_from_tank; + dummy_anim_ref = %ai_zombie_mech_injury_hit_by_footstep; + dummy_anim_ref = %ai_zombie_mech_injury_down_by_footstep_loop; + dummy_anim_ref = %ai_zombie_mech_injury_recover_from_footstep; + dummy_anim_ref = %ai_zombie_mech_stunned; + dummy_anim_ref = %ai_zombie_mech_powercore_pain; + dummy_anim_ref = %ai_zombie_mech_faceplate_pain; + dummy_anim_ref = %ai_zombie_mech_head_pain; + dummy_anim_ref = %ai_zombie_mech_run; + dummy_anim_ref = %ai_zombie_mech_walk_basic; + dummy_anim_ref = %ai_zombie_mech_walk_patrol; + dummy_anim_ref = %ai_zombie_mech_sprint; + dummy_anim_ref = %ai_zombie_mech_sprint_booster_liftoff; + dummy_anim_ref = %ai_zombie_mech_sprint_booster_loop; + dummy_anim_ref = %ai_zombie_mech_sprint_booster_touchdown; + dummy_anim_ref = %ai_zombie_mech_intro_jump_in; + dummy_anim_ref = %ai_zombie_mech_exit; + dummy_anim_ref = %ai_zombie_mech_exit_hover; + dummy_anim_ref = %ai_zombie_mech_arrive; + dummy_anim_ref = %ai_zombie_mech_jump_down_48; + dummy_anim_ref = %ai_zombie_mech_jump_down_72; + dummy_anim_ref = %ai_zombie_mech_jump_down_96; + dummy_anim_ref = %ai_zombie_mech_jump_down_127; + dummy_anim_ref = %ai_zombie_mech_jump_up_48; + dummy_anim_ref = %ai_zombie_mech_jump_up_96; + dummy_anim_ref = %ai_zombie_mech_jump_up_127; + dummy_anim_ref = %ai_zombie_mech_traverse_hurdle_40; + dummy_anim_ref = %ai_zombie_mech_jump_across_120; + dummy_anim_ref = %ai_zombie_mech_jump_down_church; + dummy_anim_ref = %ai_zombie_mech_jump_down_dlc4_trench_wall_96; + dummy_anim_ref = %ai_zombie_mech_jump_down_dlc4_trench_wall_112; + dummy_anim_ref = %ai_zombie_mech_jump_down_dlc4_trench_wall_120; + dummy_anim_ref = %ai_zombie_mech_jump_up_dlc4_trench_wall_140; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_tomb_mechz.asd"; + self.animtree = "zm_tomb_mechz.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = "zm_mechz_footstepfxtable"; + self.footstepprepend = "fly_step_mechz"; + self.footstepscriptcallback = 1; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "axis"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_dlc_mech::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "axis" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_tomb_mechz" ); + character/c_zom_dlc_mech::precache(); +} diff --git a/zm_tomb/character/c_zom_dlc_mech.gsc b/zm_tomb/character/c_zom_dlc_mech.gsc new file mode 100644 index 0000000..e30b2af --- /dev/null +++ b/zm_tomb/character/c_zom_dlc_mech.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_mech_body" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_mech_body" ); +} diff --git a/zm_tomb/character/c_zom_giant_robot.gsc b/zm_tomb/character/c_zom_giant_robot.gsc new file mode 100644 index 0000000..8daea0c --- /dev/null +++ b/zm_tomb/character/c_zom_giant_robot.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "veh_t6_dlc_zm_robot" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "veh_t6_dlc_zm_robot" ); +} diff --git a/zm_tomb/character/c_zom_giant_robot_0.gsc b/zm_tomb/character/c_zom_giant_robot_0.gsc new file mode 100644 index 0000000..26f8d9a --- /dev/null +++ b/zm_tomb/character/c_zom_giant_robot_0.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "veh_t6_dlc_zm_robot_0" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "veh_t6_dlc_zm_robot_0" ); +} diff --git a/zm_tomb/character/c_zom_giant_robot_1.gsc b/zm_tomb/character/c_zom_giant_robot_1.gsc new file mode 100644 index 0000000..2f3093e --- /dev/null +++ b/zm_tomb/character/c_zom_giant_robot_1.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "veh_t6_dlc_zm_robot_1" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "veh_t6_dlc_zm_robot_1" ); +} diff --git a/zm_tomb/character/c_zom_giant_robot_2.gsc b/zm_tomb/character/c_zom_giant_robot_2.gsc new file mode 100644 index 0000000..0dfc9fa --- /dev/null +++ b/zm_tomb/character/c_zom_giant_robot_2.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "veh_t6_dlc_zm_robot_2" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "veh_t6_dlc_zm_robot_2" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_1a.gsc b/zm_tomb/character/c_zom_tomb_crusader_1a.gsc new file mode 100644 index 0000000..5dcfced --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_1a.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_1a" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_crusader_hat_1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_1a"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_1a"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_1a"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_1a"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_1a"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_1a"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_1a"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_crusader_hat_1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_1a" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + precachemodel( "c_zom_tomb_crusader_hat_1" ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_1a" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_crusader_hat_1" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_1a_nohat.gsc b/zm_tomb/character/c_zom_tomb_crusader_1a_nohat.gsc new file mode 100644 index 0000000..5737d3f --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_1a_nohat.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_1a_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_1a"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_1a"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_1a"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_1a"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_1a"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_1a"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_1a"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_1a_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_1a" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_1a" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_1c.gsc b/zm_tomb/character/c_zom_tomb_crusader_1c.gsc new file mode 100644 index 0000000..48f838d --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_1c.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_1c" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_crusader_hat_1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_1c"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_1c"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_1c"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_1c"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_1c"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_1c"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_1c"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_crusader_hat_3"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_1c" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + precachemodel( "c_zom_tomb_crusader_hat_1" ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_1c" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_1c" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_1c" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_1c" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_1c" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_1c" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_1c" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_crusader_hat_3" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_2b.gsc b/zm_tomb/character/c_zom_tomb_crusader_2b.gsc new file mode 100644 index 0000000..f5fc18b --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_2b.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_2b" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_crusader_hat_2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_2b"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_2b"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_2b"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_2b"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_2b"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_2b"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_2b"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_crusader_hat_3"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_2b" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + precachemodel( "c_zom_tomb_crusader_hat_2" ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_2b" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_2b" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_crusader_hat_3" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_2b_nohat.gsc b/zm_tomb/character/c_zom_tomb_crusader_2b_nohat.gsc new file mode 100644 index 0000000..7e85a4e --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_2b_nohat.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_2b_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_2b"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_2b"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_2b"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_2b"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_2b"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_2b"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_2b"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_2b_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_2b" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_2b" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_2b" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_2c.gsc b/zm_tomb/character/c_zom_tomb_crusader_2c.gsc new file mode 100644 index 0000000..ed32d15 --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_2c.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_2c" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_crusader_hat_2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_2c"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_2c"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_2c"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_2c"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_2c"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_2c"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_2c"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_crusader_hat_1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_2c" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_crusader_head_als::main() ); + precachemodel( "c_zom_tomb_crusader_hat_2" ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_2c" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_2c" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_2c" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_2c" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_2c" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_2c" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_2c" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_crusader_hat_1" ); +} diff --git a/zm_tomb/character/c_zom_tomb_crusader_zc.gsc b/zm_tomb/character/c_zom_tomb_crusader_zc.gsc new file mode 100644 index 0000000..1f92889 --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_crusader_zc.gsc @@ -0,0 +1,49 @@ + +main() +{ + self setmodel( "c_zom_tomb_crusader_body_zc" ); + self.headmodel = "c_zom_tomb_crusader_headz"; + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_crusader_hat_3"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_crusader_body_g_upclean_zc"; + self.torsodmg2 = "c_zom_tomb_crusader_body_g_rarm_zc"; + self.torsodmg3 = "c_zom_tomb_crusader_body_g_larm_zc"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_crusader_body_g_lowclean_zc"; + self.legdmg2 = "c_zom_tomb_crusader_body_g_rleg_zc"; + self.legdmg3 = "c_zom_tomb_crusader_body_g_lleg_zc"; + self.legdmg4 = "c_zom_tomb_crusader_body_g_legsoff_zc"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_crusader_hat_3"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_crusader_body_zc" ); + precachemodel( "c_zom_tomb_crusader_headz" ); + precachemodel( "c_zom_tomb_crusader_hat_3" ); + precachemodel( "c_zom_tomb_crusader_body_g_upclean_zc" ); + precachemodel( "c_zom_tomb_crusader_body_g_rarm_zc" ); + precachemodel( "c_zom_tomb_crusader_body_g_larm_zc" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_crusader_body_g_lowclean_zc" ); + precachemodel( "c_zom_tomb_crusader_body_g_rleg_zc" ); + precachemodel( "c_zom_tomb_crusader_body_g_lleg_zc" ); + precachemodel( "c_zom_tomb_crusader_body_g_legsoff_zc" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_crusader_hat_3" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_1a.gsc b/zm_tomb/character/c_zom_tomb_german_1a.gsc new file mode 100644 index 0000000..e91b016 --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_1a.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_1a" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_german_hat_1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_1a"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_1a"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_1a"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_1a"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_1a"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_1a"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_1a"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_german_hat_1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_1a" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_hat_1" ); + precachemodel( "c_zom_tomb_german_body_g_upclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_larm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_1a" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_german_hat_1" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_1a_nohat.gsc b/zm_tomb/character/c_zom_tomb_german_1a_nohat.gsc new file mode 100644 index 0000000..35f5c0a --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_1a_nohat.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_1a_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_1a"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_1a"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_1a"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_1a"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_1a"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_1a"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_1a"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_1a_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_body_g_upclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_larm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_1a" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_2b.gsc b/zm_tomb/character/c_zom_tomb_german_2b.gsc new file mode 100644 index 0000000..4382a17 --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_2b.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_1b" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_german_hat_2"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_1b"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_1b"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_1b"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_1b"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_1b"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_1b"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_1b"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_german_hat_2"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_1b" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_hat_2" ); + precachemodel( "c_zom_tomb_german_body_g_upclean_1b" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_1b" ); + precachemodel( "c_zom_tomb_german_body_g_larm_1b" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_1b" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_1b" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_1b" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_1b" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_german_hat_2" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_2b_nohat.gsc b/zm_tomb/character/c_zom_tomb_german_2b_nohat.gsc new file mode 100644 index 0000000..91981da --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_2b_nohat.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_1b_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_1b"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_1b"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_1b"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_1b"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_1b"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_1b"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_1b"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_1b_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_body_g_upclean_1b" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_1b" ); + precachemodel( "c_zom_tomb_german_body_g_larm_1b" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_1b" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_1b" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_1b" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_1b" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_3c.gsc b/zm_tomb/character/c_zom_tomb_german_3c.gsc new file mode 100644 index 0000000..b49c55c --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_3c.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_3c" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_german_hat_3"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_3c"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_3c"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_3c"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_3c"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_3c"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_3c"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_3c"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_german_hat_3"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_3c" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_hat_3" ); + precachemodel( "c_zom_tomb_german_body_g_upclean_3c" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_3c" ); + precachemodel( "c_zom_tomb_german_body_g_larm_3c" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_3c" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_3c" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_3c" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_3c" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_german_hat_3" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_3c_nohat.gsc b/zm_tomb/character/c_zom_tomb_german_3c_nohat.gsc new file mode 100644 index 0000000..8f1170d --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_3c_nohat.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_3c_nohat" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_3c"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_3c"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_3c"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_3c"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_3c"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_3c"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_3c"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_3c_nohat" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_body_g_upclean_3c" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_3c" ); + precachemodel( "c_zom_tomb_german_body_g_larm_3c" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_3c" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_3c" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_3c" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_3c" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_bare.gsc b/zm_tomb/character/c_zom_tomb_german_bare.gsc new file mode 100644 index 0000000..e91b016 --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_bare.gsc @@ -0,0 +1,50 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_1a" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.hatmodel = "c_zom_tomb_german_hat_1"; + self attach( self.hatmodel ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_1a"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_1a"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_1a"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_1a"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_1a"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_1a"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_1a"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; + self.gibspawn5 = "c_zom_tomb_german_hat_1"; + self.gibspawntag5 = "J_Head"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_1a" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_hat_1" ); + precachemodel( "c_zom_tomb_german_body_g_upclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_larm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_1a" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); + precachemodel( "c_zom_tomb_german_hat_1" ); +} diff --git a/zm_tomb/character/c_zom_tomb_german_bare_nohat.gsc b/zm_tomb/character/c_zom_tomb_german_bare_nohat.gsc new file mode 100644 index 0000000..7a1a08c --- /dev/null +++ b/zm_tomb/character/c_zom_tomb_german_bare_nohat.gsc @@ -0,0 +1,44 @@ +#include codescripts/character; + +main() +{ + self setmodel( "c_zom_tomb_german_body_1a" ); + self.headmodel = codescripts/character::randomelement( xmodelalias/c_zom_tomb_german_head_als::main() ); + self attach( self.headmodel, "", 1 ); + self.voice = "american"; + self.skeleton = "base"; + self.torsodmg1 = "c_zom_tomb_german_body_g_upclean_1a"; + self.torsodmg2 = "c_zom_tomb_german_body_g_rarm_1a"; + self.torsodmg3 = "c_zom_tomb_german_body_g_larm_1a"; + self.torsodmg5 = "c_zom_tomb_german_body_g_behead"; + self.legdmg1 = "c_zom_tomb_german_body_g_lowclean_1a"; + self.legdmg2 = "c_zom_tomb_german_body_g_rleg_1a"; + self.legdmg3 = "c_zom_tomb_german_body_g_lleg_1a"; + self.legdmg4 = "c_zom_tomb_german_body_g_legsoff_1a"; + self.gibspawn1 = "c_zom_buried_g_rarmspawn"; + self.gibspawntag1 = "J_Elbow_RI"; + self.gibspawn2 = "c_zom_buried_g_larmspawn"; + self.gibspawntag2 = "J_Elbow_LE"; + self.gibspawn3 = "c_zom_buried_g_rlegspawn"; + self.gibspawntag3 = "J_Knee_RI"; + self.gibspawn4 = "c_zom_buried_g_llegspawn"; + self.gibspawntag4 = "J_Knee_LE"; +} + +precache() +{ + precachemodel( "c_zom_tomb_german_body_1a" ); + codescripts/character::precachemodelarray( xmodelalias/c_zom_tomb_german_head_als::main() ); + precachemodel( "c_zom_tomb_german_body_g_upclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rarm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_larm_1a" ); + precachemodel( "c_zom_tomb_german_body_g_behead" ); + precachemodel( "c_zom_tomb_german_body_g_lowclean_1a" ); + precachemodel( "c_zom_tomb_german_body_g_rleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_lleg_1a" ); + precachemodel( "c_zom_tomb_german_body_g_legsoff_1a" ); + precachemodel( "c_zom_buried_g_rarmspawn" ); + precachemodel( "c_zom_buried_g_larmspawn" ); + precachemodel( "c_zom_buried_g_rlegspawn" ); + precachemodel( "c_zom_buried_g_llegspawn" ); +} diff --git a/zm_tomb/xmodelalias/c_zom_tomb_crusader_head_als.gsc b/zm_tomb/xmodelalias/c_zom_tomb_crusader_head_als.gsc new file mode 100644 index 0000000..f8028d3 --- /dev/null +++ b/zm_tomb/xmodelalias/c_zom_tomb_crusader_head_als.gsc @@ -0,0 +1,7 @@ + +main() +{ + a[ 0 ] = "c_zom_tomb_crusader_head1"; + a[ 1 ] = "c_zom_tomb_crusader_head2"; + return a; +} diff --git a/zm_tomb/xmodelalias/c_zom_tomb_german_head_als.gsc b/zm_tomb/xmodelalias/c_zom_tomb_german_head_als.gsc new file mode 100644 index 0000000..5acce0c --- /dev/null +++ b/zm_tomb/xmodelalias/c_zom_tomb_german_head_als.gsc @@ -0,0 +1,8 @@ + +main() +{ + a[ 0 ] = "c_zom_tomb_german_head1"; + a[ 1 ] = "c_zom_tomb_german_head2"; + a[ 2 ] = "c_zom_tomb_german_head3"; + return a; +} diff --git a/zm_tomb_patch/character/c_ger_richtofen_dlc4.gsc b/zm_tomb_patch/character/c_ger_richtofen_dlc4.gsc new file mode 100644 index 0000000..2abf094 --- /dev/null +++ b/zm_tomb_patch/character/c_ger_richtofen_dlc4.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_tomb_richtofen_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_tomb_richtofen_fb" ); +} diff --git a/zm_tomb_patch/character/c_jap_takeo_dlc4.gsc b/zm_tomb_patch/character/c_jap_takeo_dlc4.gsc new file mode 100644 index 0000000..71c600f --- /dev/null +++ b/zm_tomb_patch/character/c_jap_takeo_dlc4.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_tomb_takeo_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_tomb_takeo_fb" ); +} diff --git a/zm_tomb_patch/character/c_rus_nikolai_dlc4.gsc b/zm_tomb_patch/character/c_rus_nikolai_dlc4.gsc new file mode 100644 index 0000000..a5ba18d --- /dev/null +++ b/zm_tomb_patch/character/c_rus_nikolai_dlc4.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_tomb_nikolai_fb" ); + self.voice = "russian"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_tomb_nikolai_fb" ); +} diff --git a/zm_tomb_patch/character/c_usa_dempsey_dlc4.gsc b/zm_tomb_patch/character/c_usa_dempsey_dlc4.gsc new file mode 100644 index 0000000..f30ccbe --- /dev/null +++ b/zm_tomb_patch/character/c_usa_dempsey_dlc4.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_tomb_dempsey_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_tomb_dempsey_fb" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_40.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_40.gsc new file mode 100644 index 0000000..af8ba57 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_40.gsc @@ -0,0 +1,18 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self thread alcove_traverse_fx( "rise_billow" ); + dosimpletraverse( "alcove_40" ); +} + +alcove_traverse_fx( str_fx ) +{ + self endon( "death" ); + wait 0,15; + v_facing = anglesToForward( self.angles ); + v_offset = v_facing * 32; + playfx( level._effect[ str_fx ], self.origin + v_offset ); + self playsound( "zmb_spawn_tomb" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_56.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_56.gsc new file mode 100644 index 0000000..2bb9ef1 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_56.gsc @@ -0,0 +1,18 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self thread alcove_traverse_fx( "rise_billow" ); + dosimpletraverse( "alcove_56" ); +} + +alcove_traverse_fx( str_fx ) +{ + self endon( "death" ); + wait 0,15; + v_facing = anglesToForward( self.angles ); + v_offset = v_facing * 32; + playfx( level._effect[ str_fx ], self.origin + v_offset ); + self playsound( "zmb_spawn_tomb" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_96.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_96.gsc new file mode 100644 index 0000000..2250044 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_alcove_96.gsc @@ -0,0 +1,18 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self thread alcove_traverse_fx( "rise_billow" ); + dosimpletraverse( "alcove_96" ); +} + +alcove_traverse_fx( str_fx ) +{ + self endon( "death" ); + wait 0,15; + v_facing = anglesToForward( self.angles ); + v_offset = v_facing * 32; + playfx( level._effect[ str_fx ], self.origin + v_offset ); + self playsound( "zmb_spawn_tomb" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc new file mode 100644 index 0000000..0e8b6df --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_across_120" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc new file mode 100644 index 0000000..8bd9a0e --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_127" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc new file mode 100644 index 0000000..8269b0e --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_48" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc new file mode 100644 index 0000000..eb80121 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_72.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 72, 7 ); + } + else + { + dosimpletraverse( "jump_down_72" ); + } +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc new file mode 100644 index 0000000..e32a251 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 96, 7 ); + } + else + { + dosimpletraverse( "jump_down_96" ); + } +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_church.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_church.gsc new file mode 100644 index 0000000..85df3a0 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_church.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_church" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_112.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_112.gsc new file mode 100644 index 0000000..a2b8813 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_112.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_dlc4_112" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_120.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_120.gsc new file mode 100644 index 0000000..7f9ef33 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_120.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_dlc4_120" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_96.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_96.gsc new file mode 100644 index 0000000..43a4112 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_down_dlc4_96.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_dlc4_96" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc new file mode 100644 index 0000000..06cec96 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_127" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_48.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_48.gsc new file mode 100644 index 0000000..922b6ed --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_48" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_72.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_72.gsc new file mode 100644 index 0000000..607262d --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_72.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_72" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_96.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_96.gsc new file mode 100644 index 0000000..fa18212 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_96.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_96" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_dlc4_140.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_dlc4_140.gsc new file mode 100644 index 0000000..7e009d1 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_jump_up_dlc4_140.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_dlc4_140" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc new file mode 100644 index 0000000..e97cc4a --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self dosimpletraverse( "mantle_over_40_hurdle" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_100.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_100.gsc new file mode 100644 index 0000000..c142e24 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_100.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "scaffold_100" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_72.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_72.gsc new file mode 100644 index 0000000..f50140f --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_72.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "scaffold_72" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_84.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_84.gsc new file mode 100644 index 0000000..c3c3b4d --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_scaffold_84.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "scaffold_84" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_vault_barbedwire_24.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_vault_barbedwire_24.gsc new file mode 100644 index 0000000..d1f64ab --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_vault_barbedwire_24.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "vault_barbedwire_24" ); +} diff --git a/zm_tomb_patch/maps/mp/animscripts/traverse/zm_vault_barbedwire_48.gsc b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_vault_barbedwire_48.gsc new file mode 100644 index 0000000..60c7dd2 --- /dev/null +++ b/zm_tomb_patch/maps/mp/animscripts/traverse/zm_vault_barbedwire_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "vault_barbedwire_48" ); +} diff --git a/zm_tomb_patch/maps/mp/createfx/zm_tomb_fx.gsc b/zm_tomb_patch/maps/mp/createfx/zm_tomb_fx.gsc new file mode 100644 index 0000000..6b9760d --- /dev/null +++ b/zm_tomb_patch/maps/mp/createfx/zm_tomb_fx.gsc @@ -0,0 +1,2945 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_sky_dist_aa_tracers" ); + ent.v[ "origin" ] = ( 3985,87, -2266,88, 620,347 ); + ent.v[ "angles" ] = ( 308, 157, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,5; + ent = maps/mp/_utility::createoneshoteffect( "fx_sky_dist_aa_tracers" ); + ent.v[ "origin" ] = ( -3484,26, -2358,33, 390,429 ); + ent.v[ "angles" ] = ( 303, 51, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,6; + ent = maps/mp/_utility::createoneshoteffect( "fx_sky_dist_aa_tracers" ); + ent.v[ "origin" ] = ( -3517,84, 6068,08, -148,928 ); + ent.v[ "angles" ] = ( 309, 304, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,7; + ent = maps/mp/_utility::createoneshoteffect( "fx_sky_dist_aa_tracers" ); + ent.v[ "origin" ] = ( 4636,09, 6184,08, -566,447 ); + ent.v[ "angles" ] = ( 309, 238, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,8; + ent = maps/mp/_utility::createoneshoteffect( "fx_sky_dist_aa_tracers" ); + ent.v[ "origin" ] = ( 5658,25, 2371,44, 67,287 ); + ent.v[ "angles" ] = ( 302, 210, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,9; + ent = maps/mp/_utility::createoneshoteffect( "fx_sky_dist_aa_tracers" ); + ent.v[ "origin" ] = ( -5002,88, -1552,28, 428,395 ); + ent.v[ "angles" ] = ( 304, 16, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 0,4; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2843,54, 5293,37, -363,418 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2513,15, 4672,39, -310,401 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2195,31, 4228,35, -339,899 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2106,41, 3592,28, -320,587 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1795, 3512,73, -306,407 ); + ent.v[ "angles" ] = ( 277, 52, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1734,71, 4133,62, -351 ); + ent.v[ "angles" ] = ( 270, 0, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1879,3, 2885,36, -288,043 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1049,73, 2752,76, -238,953 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 267,334, 3081,48, -177,704 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 542,076, 2284,97, -127,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -41,8083, 2641,51, -258,645 ); + ent.v[ "angles" ] = ( 270, 359,984, 1,01559 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1553,53, 4354,24, -312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1494,96, 3911,27, -312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 993,339, 3876,16, -317,868 ); + ent.v[ "angles" ] = ( 270, 0, 37 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 659,486, 3478,13, -297 ); + ent.v[ "angles" ] = ( 281, 119, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 90,9842, 3546,92, -296 ); + ent.v[ "angles" ] = ( 270, 2,3736, -30,3736 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -107,699, 3837,61, -347,875 ); + ent.v[ "angles" ] = ( 270, 358,457, -19,4571 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -216,538, 4350,95, -347,875 ); + ent.v[ "angles" ] = ( 270, 1,54295, 19,457 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -845,08, 3449,43, -296 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1281,75, 3621,73, -293 ); + ent.v[ "angles" ] = ( 270, 0, -17 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -842,809, 2436,9, -255,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -842,608, 2949,29, -111,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -513,288, 2499,41, -111,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -768,808, 2100,21, -106,74 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -711,139, 933,946, 129,849 ); + ent.v[ "angles" ] = ( 270, 0, 24 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1341,75, 1790,74, -17,5413 ); + ent.v[ "angles" ] = ( 274, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1209,29, 3329,64, -138,948 ); + ent.v[ "angles" ] = ( 270, 357,397, 125,603 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 396,941, 4628,73, -268,046 ); + ent.v[ "angles" ] = ( 281, 135,998, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -607,777, 4721,78, -276,636 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1627,84, 2857,51, -25,1478 ); + ent.v[ "angles" ] = ( 284, 90, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1298,53, 1958,12, 40,8049 ); + ent.v[ "angles" ] = ( 275, 104, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -934,452, 742,622, 101,931 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 209,42, 784,732, 59,6209 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 794,491, 795,849, 60,9929 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1357,57, 648,062, 85,4531 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1904,92, 636,498, 79,4319 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -2540,43, 639,014, 212,896 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -2764,06, -396,495, 172 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1549,44, -272,618, 100,397 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -719,127, -376,698, 81,4781 ); + ent.v[ "angles" ] = ( 270, 0, 126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 608,319, -809,919, 79,5367 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2044,26, -243,885, 124,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1446,3, 535,853, 143,553 ); + ent.v[ "angles" ] = ( 270, 3,57633, 104,424 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1349,04, 1051,96, 85,1172 ); + ent.v[ "angles" ] = ( 274,242, 44,0377, 45,0407 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1821,32, 828,037, 125,811 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2368,44, 829,501, 121,936 ); + ent.v[ "angles" ] = ( 270, 357,614, 98,386 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2587,41, -298,682, 158,935 ); + ent.v[ "angles" ] = ( 270, 0, 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1804,63, -1329,32, 153,411 ); + ent.v[ "angles" ] = ( 270, 0, 53 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -2437,57, 199,836, 97,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1512,23, -241,161, 74,6395 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 998,818, -268,386, 81,603 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1195,17, 160,436, 120,57 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2355,6, 105,519, 121,476 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1764,29, 4555,32, -312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2650,65, 5290,56, -360,636 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1131,71, -1371,34, 138,544 ); + ent.v[ "angles" ] = ( 271, 112,998, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( -6497,13, 4398, 151,701 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( -9726,2, 162,926, 578,613 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( 8988,9, -1245,46, 644,195 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 277 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( -8543,64, -7276,44, 1080,45 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( 7667,85, -9841,25, 1197,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2875,71, 5386,04, -257,821 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2875,93, 5171,45, -262,48 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2561,32, 5148,23, -252,125 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 1090,19, 4160,7, -217,153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 1026,02, 4211,22, -217,172 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -367,441, 3824,84, -254,85 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -343,797, 4302,17, -254,435 ); + ent.v[ "angles" ] = ( 270, 0, 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 19,3975, -2586,96, 248,965 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 78,0901, -1974,09, 230 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 590,711, -1970,39, 231 ); + ent.v[ "angles" ] = ( 270, 0, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1153,77, -2082,84, 129,98 ); + ent.v[ "angles" ] = ( 281, 221, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -30,2676, -2805,18, 342,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -191,168, -2411,97, 94,861 ); + ent.v[ "angles" ] = ( 284,96, 288,648, -142,7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 199,73, -2663,18, 35,5706 ); + ent.v[ "angles" ] = ( 270, 356,424, 114,576 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_skybox_vortex" ); + ent.v[ "origin" ] = ( 26,83, 9,96018, 4049,5 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2160,18, 2773,14, -230,924 ); + ent.v[ "angles" ] = ( 20, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2208,49, 2652,52, -258,351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1308,4, 4527,73, -280,926 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 333 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1376,79, 4592,89, -288,057 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 323 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1397,91, 4588, -219,295 ); + ent.v[ "angles" ] = ( 283,348, 205,493, 46,1594 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2289,97, 2705,53, -169,962 ); + ent.v[ "angles" ] = ( 20, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2300,55, 2668,53, -219,029 ); + ent.v[ "angles" ] = ( 15,6786, 62,0124, -26,4169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1343,77, 4556,23, -285,912 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -55,2918, 3401,85, -278,681 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -45,7065, 3426,32, -275,438 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 0,345567, 3401,86, -275,368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 275 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -34,9274, 3405,64, -275,731 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1413,27, 4481,31, -295,167 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1468,43, 4469,1, -294,749 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1463,66, 4403,79, -300,51 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2269,8, 2801,16, -250,057 ); + ent.v[ "angles" ] = ( 294, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2225,06, 2818,2, -259,935 ); + ent.v[ "angles" ] = ( 294, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 389,473, -2562,03, 335,952 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 454,156, -2758,77, 346,363 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 723,578, -2771,22, 313,931 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_fire_vista" ); + ent.v[ "origin" ] = ( 443,498, -2377,31, 613,078 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_fire_vista" ); + ent.v[ "origin" ] = ( 698,322, -2484,87, 732,146 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 650,999, -2463,41, 685,933 ); + ent.v[ "angles" ] = ( 329, 286, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 691,35, -2507,74, 673,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 106 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 693,113, -2523,15, 720,126 ); + ent.v[ "angles" ] = ( 32, 104, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_fire_vista" ); + ent.v[ "origin" ] = ( 1159,1, -2376, 923,934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1141,58, 2634,92, -194,103 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1660,77, 3112,93, -266,737 ); + ent.v[ "angles" ] = ( 329,03, 356,938, 9,35358 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1679,45, 3656,57, -294,379 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 296 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2051,16, 3460,72, -169,785 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1987,99, 4066,36, -202,976 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 91 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -1798,14, 3941,63, -190,553 ); + ent.v[ "angles" ] = ( 18,9826, 300,926, -6,41724 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -1832,25, 3959,03, -245,62 ); + ent.v[ "angles" ] = ( 15,2317, 291,084, -26,6643 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -1735,25, 4014,26, -262,608 ); + ent.v[ "angles" ] = ( 314, 130, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -1661,89, 3999,32, -257,515 ); + ent.v[ "angles" ] = ( 20, 320, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -1720,48, 3950,62, -270,983 ); + ent.v[ "angles" ] = ( 294, 320, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -2507,07, 457,774, 234,358 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -2282,47, 428,981, 212,731 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -2006,2, 218,543, 231,684 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -2203,47, 274,642, 201,723 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -2028,65, 343,274, 156,023 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 139 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -1914,86, 229,743, 155,351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 139 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -2027,79, 831,058, 128,021 ); + ent.v[ "angles" ] = ( 339, 91, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -2782,65, 717,79, 195,923 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 62 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 892,313, -2423,24, 444,256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 282 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 677,344, -2445,57, 549,02 ); + ent.v[ "angles" ] = ( 271, 89,9982, -89,9982 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 659,946, 338,159, 190,876 ); + ent.v[ "angles" ] = ( 339, 28, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 959,444, 463,092, 118,669 ); + ent.v[ "angles" ] = ( 328, 182, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 752,085, 255,592, 161,188 ); + ent.v[ "angles" ] = ( 345, 28, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 705,07, 330,688, 171,721 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 300 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 817,163, 185,378, 148,054 ); + ent.v[ "angles" ] = ( 294,543, 32,7905, -30,371 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 989,417, 249,04, 129,222 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 827,541, 60,0739, 155 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 793,703, 81,6701, 156,077 ); + ent.v[ "angles" ] = ( 345, 28, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1,0968, 838,705, 175,673 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -283,606, 801,684, 179,177 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -380,428, 795,687, 168,183 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -578,668, -581,305, 172,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( -581,151, -617,212, 181,994 ); + ent.v[ "angles" ] = ( 329, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 478,173, -2748,89, 361,913 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 268,286, -2544,9, 302,125 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 694,386, -2786,22, 320,088 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 638,601, -2522,27, 341,795 ); + ent.v[ "angles" ] = ( 288,346, 22,7803, -21,7329 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 472,588, -2779,91, 354,697 ); + ent.v[ "angles" ] = ( 284, 269, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 378,694, -2597,49, 342,625 ); + ent.v[ "angles" ] = ( 286,115, 188,513, 168,918 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2703,99, 5214,27, -316,065 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2885,49, 5538,88, -305,067 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2634,75, 5565,34, -294,132 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2782,81, 5557,19, -304,19 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2547,86, 5550,3, -297,722 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2236,17, 5118,87, -244,6 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2084,75, 5132,85, -243,383 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2688,17, 5392,29, -311,22 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2520,88, 4961,95, -307,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2510,4, 4600,03, -245,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2279,26, 4754,1, -246,004 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2075,91, 4788,76, -246,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 2809,88, 5357,93, -259,22 ); + ent.v[ "angles" ] = ( 21, 189, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2673,81, 5036,29, -340,404 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 106 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2949,31, 5486,56, -332,275 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 260 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2973,05, 5084,47, -369,322 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2799,71, 5279,23, -287,968 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2600,74, 4771,45, -246,324 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2730,44, 4663,85, -226,716 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2273,2, 4541,53, -254,446 ); + ent.v[ "angles" ] = ( 1, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1898,08, 4731,97, -225,834 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1893,93, 5011,8, -213,504 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2482,88, 4398,17, -225,285 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2572,84, 5009,08, -285,413 ); + ent.v[ "angles" ] = ( 358, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 2082,53, 4540,48, -260,773 ); + ent.v[ "angles" ] = ( 4,98628, 60,9853, -0,419415 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2310,53, 5103,81, -232,435 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2498,93, 4610,06, -183,748 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2088,24, 4638,71, -186,244 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2091,71, 4943,25, -185,956 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -225,877, 4507,16, -282,272 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -44,1163, 4515,35, -283,457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -331,545, 4517, -287,192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -458,555, 4522,05, -282,519 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -488,026, 3753,75, -278,824 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -297,115, 3751,99, -273,808 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -236,313, 3937,23, -249,751 ); + ent.v[ "angles" ] = ( 20, 96, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -420,134, 4254,74, -252,309 ); + ent.v[ "angles" ] = ( 14,7821, 279,345, 2,49013 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -248,143, 4066,55, -239,033 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 30,1202, 3823,51, -250,795 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -115,75, 4411,9, -259,453 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -267,517, 4407,53, -242,127 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 1648,8, 4438,5, -201,243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1884,67, 3880,74, -263,908 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -23,9182, 3801,96, -310,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -359,256, 3947,16, -311,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 95 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -209,556, 4363,93, -295,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 347 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -739,46, 2984,29, -202,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -906,312, 2671,99, -210,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -500,135, 2579,71, -203,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -487,117, 2688,07, -50,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -668,324, 2922,5, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -911,921, 2668,62, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -824,429, 2413,35, -53,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 38 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -744,125, 3138,41, -62,2236 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -892,647, 3143,82, -60,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -464,178, 3027,59, -64,9351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -607,875, 3022,34, -62,8019 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -373,261, 2688,13, -65,7059 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( -366,715, 2898,08, -63,6646 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -867,931, 2571,14, -244,699 ); + ent.v[ "angles" ] = ( 345,951, 98,3236, 5,1274 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -908,891, 3102,88, -59,4165 ); + ent.v[ "angles" ] = ( 14,965, 315,952, -1,3608 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_lg" ); + ent.v[ "origin" ] = ( -752,271, 2667, -3,7368 ); + ent.v[ "angles" ] = ( 90, 348,57, -11,4301 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -864,203, 3042,82, -148,299 ); + ent.v[ "angles" ] = ( 17, 29, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -933,163, 2335,36, -182,641 ); + ent.v[ "angles" ] = ( 359, 5, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -701,552, 2358,15, -249,06 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -254,399, 2659,47, -163,352 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -953,347, 2535,07, -76,8882 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -855,73, 2267,31, -23,1974 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 141 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -728,289, 2912,31, -146,921 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -883,269, 2471,4, -146,34 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -515,883, 2474,13, -145,385 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -455,035, 2655,2, -145,546 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -889,403, 2654,85, -3,52275 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -723,984, 2937,93, -2,73427 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( -868,283, 2487,89, -1,82285 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -890,798, 2893,5, -10,0809 ); + ent.v[ "angles" ] = ( 23,9186, 90,5422, -1,86874 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 870,208, -2594,04, 44,6886 ); + ent.v[ "angles" ] = ( 270, 0, -143 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 676,735, -3108,88, 251 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1119,58, -3121,99, 254 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1019,99, -3579,06, 304,999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 936,016, -2283,55, 266,033 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 66 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 1076,87, -2570,95, 125,575 ); + ent.v[ "angles" ] = ( 354,002, 237,989, 0,175246 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 777,844, -2400,58, 57,6874 ); + ent.v[ "angles" ] = ( 350, 164, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 290,811, -2980,77, 79,794 ); + ent.v[ "angles" ] = ( 348,185, 162,781, 0,113837 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_chamber_glow_yellow" ); + ent.v[ "origin" ] = ( 11257,1, -8661,46, -409,236 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_chamber_glow_red" ); + ent.v[ "origin" ] = ( 9457,3, -8557,93, -399,199 ); + ent.v[ "angles" ] = ( 271, 260,001, 89,9988 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_chamber_glow_purple" ); + ent.v[ "origin" ] = ( 9628,91, -7008,51, -347,199 ); + ent.v[ "angles" ] = ( 270, 32,3849, -132,385 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_chamber_glow_blue" ); + ent.v[ "origin" ] = ( 11232,6, -7046,67, -347,204 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 242 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_chamber_glow" ); + ent.v[ "origin" ] = ( 10342,7, -7907, -465,205 ); + ent.v[ "angles" ] = ( 270, 11,536, -11,5361 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10045,3, -7655,25, -370 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 9939,63, -8328,28, -382,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10710,7, -8497,33, -371,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 127 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10657,3, -7581,2, -391 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 2618,88, 5226,64, -366,908 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 303 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 148,477, -229,972, 332,336 ); + ent.v[ "angles" ] = ( 343, 217, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 81,0742, -290,633, 332,269 ); + ent.v[ "angles" ] = ( 345, 41, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -85,5674, 258,429, 332,456 ); + ent.v[ "angles" ] = ( 341, 234, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 293,829, -116,064, 393,685 ); + ent.v[ "angles" ] = ( 344, 118,728, -0,20071 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 235,295, 207,457, 480,164 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -336,632, -21,5365, 52,0506 ); + ent.v[ "angles" ] = ( 337, 55, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -42,0723, 83,5241, -196,473 ); + ent.v[ "angles" ] = ( 346,056, 95,9726, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 158,776, 225,973, 186,913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 208,091, -207,317, 146,846 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -300,493, 95,2871, -318,576 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 360,626, 208,227, -340,934 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -24,682, -323,078, -241,03 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -266,653, -388,68, -381,606 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 303,529, -349,916, -466,108 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -59,9885, -460,848, -488,396 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -251,721, -47,1445, -744,559 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 141,999, -113,932, -584,605 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -206,125, 177,255, -486,853 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 176,873, 174,28, -480,175 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -214,958, -292,397, 47,2714 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -164,141, 144,725, 40 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 0, 425,465, -256 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -23,5406, 121,805, -752 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 3,18417, -87,4657, -752 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -155,871, 159,395, 103,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 191,129, 323,609, -170,269 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -72,5692, -358,98, -543 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 349 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 1,01975, -83,7614, -691 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 95 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 1602,48, 4274,19, -200,575 ); + ent.v[ "angles" ] = ( 16,1712, 210,896, 1,9318 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 1582,16, 3870,77, -216,131 ); + ent.v[ "angles" ] = ( 27, 143, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 952,958, 3723,55, -245,65 ); + ent.v[ "angles" ] = ( 14,1001, 107,45, 10,2631 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 1207,01, 3990,99, -222,561 ); + ent.v[ "angles" ] = ( 43, 275, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 622,099, 3607,75, -201,135 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 123,534, 3379,65, -184,955 ); + ent.v[ "angles" ] = ( 35,9597, 55,8346, -18,8444 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 284,705, 3470,19, -187,941 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -617,429, 3524,84, -194,706 ); + ent.v[ "angles" ] = ( 47,8791, 261,182, -3,02978 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -1407,97, 3583,77, -184,816 ); + ent.v[ "angles" ] = ( 25,8576, 71,2699, 7,33332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 2157, 4367,14, -264,372 ); + ent.v[ "angles" ] = ( 16, 294, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 2215,63, 4015,23, -229,596 ); + ent.v[ "angles" ] = ( 35,5426, 152,453, -11,0361 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 2020,71, 3510,25, -194,629 ); + ent.v[ "angles" ] = ( 32,1279, 46,8079, -8,2971 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2012,03, 3589,01, -200,556 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 1646,83, 3450,24, -185,618 ); + ent.v[ "angles" ] = ( 32,055, 358,851, -1,37262 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 1875,15, 3683,47, -184,219 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 957,693, -2407,48, 302,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 974,777, -2400,66, 323,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 2040,78, 2819,25, -165,725 ); + ent.v[ "angles" ] = ( 26,2483, 97,8143, -11,184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 1157,1, 2714,94, -136,112 ); + ent.v[ "angles" ] = ( 14,6648, 134,59, -3,18866 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 594,332, 2080,93, -30,374 ); + ent.v[ "angles" ] = ( 26,7182, 10,0306, 3,59838 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( 362,67, 2082,48, -27,9839 ); + ent.v[ "angles" ] = ( 23,8053, 74,1944, -5,97859 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -459,457, 2873,44, -144,026 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -852,351, 2309,82, -148,638 ); + ent.v[ "angles" ] = ( 57,411, 79,5042, 76,3496 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -834,641, 2736,93, -151,951 ); + ent.v[ "angles" ] = ( 39,2228, 150,082, -19,2557 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -406,088, 2606,67, -148,478 ); + ent.v[ "angles" ] = ( 39,3881, 160,466, -16,4229 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -718,652, 2598,86, -114,082 ); + ent.v[ "angles" ] = ( 26, 66, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -804,725, 2692,08, -128,814 ); + ent.v[ "angles" ] = ( 326,162, 41,3746, -22,5945 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -503,313, 2939,71, -3,82324 ); + ent.v[ "angles" ] = ( 63,8394, 276,125, -83,1825 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -816,107, 2485,12, -4,38391 ); + ent.v[ "angles" ] = ( 33,054, 149,72, 162,335 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -699,652, 3027,46, -60,3237 ); + ent.v[ "angles" ] = ( 334,005, 204,497, -10,7883 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2695,68, 5417,73, -246,715 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 264 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2560, 5354,25, -248,917 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips" ); + ent.v[ "origin" ] = ( 2183,59, 4713, -177,781 ); + ent.v[ "angles" ] = ( 0,347275, 95,9946, -1,96994 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_custom" ); + ent.v[ "origin" ] = ( 681,349, -2595,57, 608,737 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 195 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 2795,17, 4183,73, -405,009 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 2880,22, 4359,05, -442,161 ); + ent.v[ "angles" ] = ( 360, 64, 17 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 3044,18, 4419,97, -441,19 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 2515,69, 4130,01, -285,311 ); + ent.v[ "angles" ] = ( 19,6657, 62,0059, 28,3106 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 701,636, -2344,06, 303,81 ); + ent.v[ "angles" ] = ( 350, 194, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 756,836, -2369,53, 287,125 ); + ent.v[ "angles" ] = ( 350, 194, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 489,365, -2714,28, 363,36 ); + ent.v[ "angles" ] = ( 273,512, 214,2, 143,332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 498,27, -2607,26, 370,013 ); + ent.v[ "angles" ] = ( 277,132, 194,595, 162,864 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 505,993, -2623,91, 370,894 ); + ent.v[ "angles" ] = ( 278,408, 199,119, 158,372 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 480,375, -2642,37, 369,803 ); + ent.v[ "angles" ] = ( 278,408, 199,119, 158,372 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 547,523, -2721,24, 354,662 ); + ent.v[ "angles" ] = ( 273,306, 288,565, 69,1685 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 387,845, -2696,87, 342,987 ); + ent.v[ "angles" ] = ( 281,25, 193,445, 163,965 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1052,39, -2617,35, 444,731 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 317,388, -2411,52, 62,3941 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 250,292, -2461,82, 59,9847 ); + ent.v[ "angles" ] = ( 359,983, 183, -1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 445,707, -2803,21, 159,462 ); + ent.v[ "angles" ] = ( 359,212, 132, -0,61612 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 914,732, -2315,37, 301,764 ); + ent.v[ "angles" ] = ( 315, 159, -12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 879,013, -2300,16, 333,393 ); + ent.v[ "angles" ] = ( 354, 160,005, -0,105097 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 885,397, -2585,22, 674,972 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 103 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2705,66, 4463,83, -270,923 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 2719,29, 802,905, 33,7266 ); + ent.v[ "angles" ] = ( 13,6698, 72,8641, 31,4379 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 3040,21, 837,337, -79,9756 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 3349,84, 1181,77, -177,67 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 2389,08, 808,252, -19,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 3344,57, 1214,05, -348 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2882,28, 4378,22, -510,695 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2996,82, 828,878, -162,675 ); + ent.v[ "angles" ] = ( 6, 358, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 3360,2, 1095,44, -281,759 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 2609,27, 4136,97, -394,49 ); + ent.v[ "angles" ] = ( 29, 19, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -3068,94, -294,956, -105,446 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 219 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -3177,68, -366,599, -178,459 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( -3174,32, -338,977, -34,3424 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -3199,05, 69,1339, -23,0807 ); + ent.v[ "angles" ] = ( 9, 284, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -2442,69, 86,6662, 146,125 ); + ent.v[ "angles" ] = ( 17, 183, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( -3102,39, -165,34, -9,34888 ); + ent.v[ "angles" ] = ( 0, 194, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( -3113,18, 77,107, 62,4578 ); + ent.v[ "angles" ] = ( 7,68019, 228,622, 9,24817 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( -2733,38, 121,802, 187,903 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1409,82, -1769,21, -118,84 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 1400,44, -1968,41, -31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 1426,17, -1785,95, 24,9835 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 1427,72, -2088,64, 86,6268 ); + ent.v[ "angles" ] = ( 0, 30, -10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 1431,06, -2395,14, 140,669 ); + ent.v[ "angles" ] = ( 2,27364, 41,7857, -10,7653 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_water_drips_sm" ); + ent.v[ "origin" ] = ( 1336,67, -2647,78, 231,553 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 1447,22, -2473,26, 76,026 ); + ent.v[ "angles" ] = ( 16, 88, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 1480,21, -2233,9, -51,5 ); + ent.v[ "angles" ] = ( 270,934, 269,834, 89,8081 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1228,07, -2613,91, 120,632 ); + ent.v[ "angles" ] = ( 0,484785, 335,002, 0,875333 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1479,28, -2617,36, 102,338 ); + ent.v[ "angles" ] = ( 0,211954, 131,989, -0,616066 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1539,2, -2232,74, -37,2481 ); + ent.v[ "angles" ] = ( 359,281, 138, -0,695113 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -71; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1574,45, -1678,21, -70,6174 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 197 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 1248,96, -1762,17, -73,5857 ); + ent.v[ "angles" ] = ( 357,947, 6,96405, 1 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10314,1, -7150,76, -392 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10494,8, -8444,68, -373,006 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10925,2, -7680,32, -371,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 66 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10864,3, -7851,97, -386,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 231 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createexploder( "fx_tomb_probe_elec_on" ); + ent.v[ "origin" ] = ( 0,661174, 231,756, 480,401 ); + ent.v[ "angles" ] = ( 6, 269, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5003; + ent = maps/mp/_utility::createexploder( "fx_tomb_probe_elec_on" ); + ent.v[ "origin" ] = ( 211,622, 153,136, 379,376 ); + ent.v[ "angles" ] = ( 15,9883, 223,818, -2,05218 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5001; + ent = maps/mp/_utility::createexploder( "fx_tomb_probe_elec_on" ); + ent.v[ "origin" ] = ( 239,078, -0,145034, 480,568 ); + ent.v[ "angles" ] = ( 7, 180, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5004; + ent = maps/mp/_utility::createexploder( "fx_tomb_probe_elec_on" ); + ent.v[ "origin" ] = ( 0,328866, -226,613, 480,627 ); + ent.v[ "angles" ] = ( 5, 89,9963, -0,104926 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5006; + ent = maps/mp/_utility::createexploder( "fx_tomb_probe_elec_on" ); + ent.v[ "origin" ] = ( -231,022, 2,10779, 480,198 ); + ent.v[ "angles" ] = ( 6,39872, 358,994, -0,122636 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5005; + ent = maps/mp/_utility::createexploder( "fx_tomb_probe_elec_on" ); + ent.v[ "origin" ] = ( -176,719, 181,685, 379,28 ); + ent.v[ "angles" ] = ( 18,4675, 313,665, -1,77444 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 5002; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10454,6, -7281,5, 173,545 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10485,7, -7317,26, -380 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 9617,92, -8129,65, -387,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10972,6, -7722,63, -390,5 ); + ent.v[ "angles" ] = ( 360, 291, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10746,6, -7466,48, 147,506 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10683,1, -8114, 144,593 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10323,3, -8613,96, 338,993 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 9795,59, -8158,02, 144,314 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 9609,18, -7574,33, 349,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10219,4, -7332,73, 258,772 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10007, -7701,44, 96,1417 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10436,4, -7609,52, 86,5436 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 327 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10596,6, -8459,21, 254,372 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 10252,5, -8171,73, 78,6495 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 11031,7, -8139,35, -11,6038 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 96 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 11132,6, -7470,59, 192,216 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 215 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 9585,82, -7911,54, 149,268 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 282 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall_lg" ); + ent.v[ "origin" ] = ( 9971,95, -7216,54, -3,51153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 327 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2033,26, 2295,77, -74,7656 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 16 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2475,21, 5226,47, -340,284 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 959,389, 4120,41, -264,619 ); + ent.v[ "angles" ] = ( 7,93895, 75,0805, 0,80711 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -148,475, 3764,52, -333,659 ); + ent.v[ "angles" ] = ( 5,83727, 50,927, -1,283 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -450,963, 4021,8, -309,163 ); + ent.v[ "angles" ] = ( 353,11, 258,086, -1,06419 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -457,248, 4475,68, -333,242 ); + ent.v[ "angles" ] = ( 354,576, 217,872, 2,34151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -217,985, 4255,18, -333,163 ); + ent.v[ "angles" ] = ( 354,575, 22,4658, -3,32847 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -475,534, 2980,81, -215,173 ); + ent.v[ "angles" ] = ( 1, 199, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -492,738, 2419,32, -47,6733 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 7 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1621,74, 2966,11, -199,898 ); + ent.v[ "angles" ] = ( 359, 269, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 1565,87, 2931,96, -213,247 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 274 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1747,56, 3125,74, -280,035 ); + ent.v[ "angles" ] = ( 285,001, 90,6045, -91,571 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -38,0725, -342,728, -558 ); + ent.v[ "angles" ] = ( 15, 83, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 2948,94, 5359,98, -233,125 ); + ent.v[ "angles" ] = ( 90, 0, -138 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 1133,51, 4272,66, -196,973 ); + ent.v[ "angles" ] = ( 90, 180, -49 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 1028,23, 4220,94, -210,669 ); + ent.v[ "angles" ] = ( 90, 0, 34 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 1140,35, 4188,18, -206,86 ); + ent.v[ "angles" ] = ( 90, 0, 34 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_godray_mist_md" ); + ent.v[ "origin" ] = ( 1072,54, 4165,21, -216,38 ); + ent.v[ "angles" ] = ( 90, 0, -57 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 906,456, 119,554, 249,939 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -257,863, 137,638, 291,484 ); + ent.v[ "angles" ] = ( 342,959, 323,713, 9,31921 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -293,576, -102,746, 285,825 ); + ent.v[ "angles" ] = ( 344,971, 14,8678, -7,11365 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 116,541, 290,542, 285,574 ); + ent.v[ "angles" ] = ( 341, 224, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 296,156, 108,418, 282,497 ); + ent.v[ "angles" ] = ( 342,43, 200,863, 0,349833 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 129,157, -279,986, 285,259 ); + ent.v[ "angles" ] = ( 343,132, 114,334, -5,37842 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 280,798, -357,617, -39,0851 ); + ent.v[ "angles" ] = ( 0, 224, -10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -82,3579, -387,457, -279,283 ); + ent.v[ "angles" ] = ( 8,56001, 345,389, 5,18908 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 313,501, -273,195, -381,992 ); + ent.v[ "angles" ] = ( 356,924, 206,256, -9,51976 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 28,399, -421,37, -510,974 ); + ent.v[ "angles" ] = ( 352,704, 177,438, -3,85717 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -170,228, -14,9198, -527,653 ); + ent.v[ "angles" ] = ( 355,196, 94,9094, 6,71258 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 176,501, -59,5695, -630,95 ); + ent.v[ "angles" ] = ( 355,196, 94,9094, 3,71258 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 166,315, 147,49, -508,358 ); + ent.v[ "angles" ] = ( 355,818, 179,226, -4,40185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -172,36, 147,426, -516,285 ); + ent.v[ "angles" ] = ( 3,86511, 3,22329, 4,68246 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -44,3194, 157,479, -511,06 ); + ent.v[ "angles" ] = ( 4,18201, 359,226, 4,40187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -374,971, -192,826, -330,311 ); + ent.v[ "angles" ] = ( 17,039, 306,915, -0,619566 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -418,439, 95,0414, -246,474 ); + ent.v[ "angles" ] = ( 7,53049, 260,701, 0,349842 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -429,244, 202,176, -47,6421 ); + ent.v[ "angles" ] = ( 347, 357, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 55,9099, 395,92, -22,1698 ); + ent.v[ "angles" ] = ( 359,958, 175,717, 14,0284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 441,239, 51,6459, -33,0588 ); + ent.v[ "angles" ] = ( 341,449, 171,586, 7,59726 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 385,354, -85,733, -265,99 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 76 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 168,035, -362,538, -261,271 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 201 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 103,482, -152,476, -229,36 ); + ent.v[ "angles" ] = ( 3, 55, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 165,365, -9,84316, -226,36 ); + ent.v[ "angles" ] = ( 2,08381, 101,039, 2,15929 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -73,3678, -141,08, -229,36 ); + ent.v[ "angles" ] = ( 0,62358, 336,984, -2,93498 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -170,797, 43,6615, -226,36 ); + ent.v[ "angles" ] = ( 357,428, 266,035, -1,54641 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 412,138, 148,755, -275,002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -337,351, -238,606, -26,4608 ); + ent.v[ "angles" ] = ( 353, 76, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 201,552, -25,9036, 200,948 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -416,633, -61,2323, -207,855 ); + ent.v[ "angles" ] = ( 15, 310, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 250,325, -110,651, -329,761 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 384,129, -64,2074, -454,204 ); + ent.v[ "angles" ] = ( 21, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -411,481, 36,0763, -387,427 ); + ent.v[ "angles" ] = ( 21,0357, 283,252, 6,44551 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -94,8236, 141,464, -470,899 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( -159,296, -86,2895, -480,26 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 157,621, -234,53, 187,209 ); + ent.v[ "angles" ] = ( 16, 176, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -96; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 275,338, 160,242, 192,587 ); + ent.v[ "angles" ] = ( 15, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -23; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_md" ); + ent.v[ "origin" ] = ( 303,366, 117,409, 196,842 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createexploder( "fx_tomb_chamber_walls_impact" ); + ent.v[ "origin" ] = ( -83,6255, -83,0232, 40,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_chamber_walls_impact" ); + ent.v[ "origin" ] = ( 128,404, -69,5363, 40,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_chamber_walls_impact" ); + ent.v[ "origin" ] = ( 92,8486, 116,891, 40,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 179,975, -131,823, 6,02911 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 220,96, -33,1347, 4,43854 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 89 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 207,889, 83,1946, 2,74467 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 129 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( 95,8509, 201,332, 1,74655 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 168 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createexploder( "fx_tomb_dust_fall" ); + ent.v[ "origin" ] = ( -55,8782, 215,914, 1,10722 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 222; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 1792,05, 1068,25, 199,75 ); + ent.v[ "angles" ] = ( 288,027, 93,074, -93,2325 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 1758,98, 1067,25, 188,072 ); + ent.v[ "angles" ] = ( 288,027, 93,074, -93,2325 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2716,82, 671,266, 182,486 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1954,99, 928,275, 124,325 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2737,12, 770,118, 199,224 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2047,36, 1110,18, 183,487 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1806,28, 1011,32, 178,827 ); + ent.v[ "angles" ] = ( 307, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 1828,6, 927,214, 125,786 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2683,07, 717,006, 186,013 ); + ent.v[ "angles" ] = ( 295,128, 172,773, -174,24 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2969,28, 585,145, 446,513 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2981,97, 461,458, 210,013 ); + ent.v[ "angles" ] = ( 0, 186, 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2703,85, 477,618, 165,687 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2683,27, 424,04, 153,219 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2351,76, 914,346, 122,328 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( 2354,54, 861,476, 121,712 ); + ent.v[ "angles" ] = ( 270, 359,851, 0,149435 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm" ); + ent.v[ "origin" ] = ( 2676,3, 907,538, 207,752 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 2658,73, 984,453, 205,764 ); + ent.v[ "angles" ] = ( 286,022, 349,64, -1,88535 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 2972,64, 616,95, 452,771 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 3018,72, 592,45, 415,265 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( 3070,29, 574,625, 384,331 ); + ent.v[ "angles" ] = ( 4, 82, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -2784,14, 23,7212, 437,68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2529,32, 487,749, 228,712 ); + ent.v[ "angles" ] = ( 286, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2561,07, 465,52, 239,28 ); + ent.v[ "angles" ] = ( 286, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2817,6, 374,432, 235,732 ); + ent.v[ "angles" ] = ( 290,318, 290,544, 69,6291 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2827,96, -27,9267, 241,05 ); + ent.v[ "angles" ] = ( 286, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2837,76, 4,07393, 237,865 ); + ent.v[ "angles" ] = ( 286, 90, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -2740,58, -79,9137, 362,455 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -2905,31, -220,352, 205,987 ); + ent.v[ "angles" ] = ( 312,347, 152,927, -6,62182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -2409,46, 421,066, 367,153 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2402,83, 335,627, 234,166 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2385,87, 282,789, 234,164 ); + ent.v[ "angles" ] = ( 270, 0,149457, -0,149446 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2380,3, -28,0319, 237,588 ); + ent.v[ "angles" ] = ( 278, 89,9989, -89,9988 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_sm_smolder" ); + ent.v[ "origin" ] = ( -2380,05, 7,49297, 234,29 ); + ent.v[ "angles" ] = ( 278, 89,9989, -89,9988 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -2840,54, 382,458, 229,167 ); + ent.v[ "angles" ] = ( 344, 142, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -2759,26, 410,759, 378,307 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -127,464, -4641,96, 559,502 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -249,624, -4644,14, 562,46 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -514,078, -4126,47, 494,044 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 300,204, -4024,28, 377,834 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -174,343, -4624,4, 559,465 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 805,26, -5094,32, 465,76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 846,434, -5082,77, 557,171 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 330,265, -5662,64, 569,648 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1267,92, -4487,96, 541,213 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -55; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1473,05, -4488,89, 531,005 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1594,58, -3831,53, 395,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2439,75, -4891,33, 688,666 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 213 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2644,44, -4859,16, 713,522 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 213 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 1991,36, -3376,02, 519,384 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 384,953, -3378,87, 349,757 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -1999,6, -3580,82, 555,986 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_robot_ambient" ); + ent.v[ "origin" ] = ( -5704,13, -6535,94, 153,436 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_robot_ambient" ); + ent.v[ "origin" ] = ( -6224,03, -6535,92, 153,434 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -29; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_robot_ambient" ); + ent.v[ "origin" ] = ( -6760,11, -6536,09, 153,429 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -5520,45, -6640,33, 273,628 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -6419,11, -6577,88, 346,793 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( 2269,48, 1126,3, 167,505 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 2133,06, 5069,61, -293,064 ); + ent.v[ "angles" ] = ( 351,084, 0,802813, -4,61889 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 1919,41, 4905,8, -278,831 ); + ent.v[ "angles" ] = ( 353,054, 82,6612, 0,145041 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 1955,21, 3903,11, -339,93 ); + ent.v[ "angles" ] = ( 350,38, 129,37, 2,4631 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( 3098,24, -237,82, 157,277 ); + ent.v[ "angles" ] = ( 270, 356,309, 90,6913 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -86; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -2249,13, -394,012, 174,999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_ground_fog" ); + ent.v[ "origin" ] = ( -1135,72, -395,117, 80 ); + ent.v[ "angles" ] = ( 270, 357,614, 99,386 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( 117,876, -6647,86, 670,966 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( 1859,17, 12435,9, -358,777 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10311,3, -7517,3, -382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 274 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 9948,29, -7878,86, -403 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 355 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_dust_motes_lg" ); + ent.v[ "origin" ] = ( 10358,5, -8299,95, -383 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_crafting_chamber_glow" ); + ent.v[ "origin" ] = ( 0,496392, -0,110062, -227,408 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createexploder( "fx_tomb_vortex_glow" ); + ent.v[ "origin" ] = ( -2,90164, 1,17459, 334,67 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 333; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5844,45, -6591,27, 388,802 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -5497,38, -6537,85, 178,5 ); + ent.v[ "angles" ] = ( 345, 212, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5759,94, -6675,6, 390,349 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5844,61, -6479,78, 390,422 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5759,06, -6396,1, 387,73 ); + ent.v[ "angles" ] = ( 78, 298, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5648,2, -6395,92, 389,661 ); + ent.v[ "angles" ] = ( 80, 262, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5563,55, -6479,73, 390,421 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5647,62, -6676,44, 389,768 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5563,52, -6591,28, 389,724 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -5771,88, -6712,72, 264,609 ); + ent.v[ "angles" ] = ( 21, 37, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -5870,37, -6396,77, 255,442 ); + ent.v[ "angles" ] = ( 9,74116, 318,194, 2,27144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6083,79, -6590,49, 389,826 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6167,89, -6675,65, 389,871 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6280,22, -6674,81, 390,451 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -79; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6364,72, -6590,48, 388,905 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6364,88, -6478,99, 390,524 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6279,33, -6395,31, 387,832 ); + ent.v[ "angles" ] = ( 78, 298, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6168,48, -6395,13, 389,763 ); + ent.v[ "angles" ] = ( 80, 262, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6083,82, -6478,94, 390,523 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6619,8, -6591,35, 389,713 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6703,9, -6676,51, 389,758 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6816,23, -6675,67, 390,339 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6900,73, -6591,34, 388,792 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6900,89, -6479,85, 390,411 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6815,34, -6396,17, 387,719 ); + ent.v[ "angles" ] = ( 78, 298, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6704,49, -6395,99, 389,65 ); + ent.v[ "angles" ] = ( 80, 262, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6619,83, -6479,79, 390,411 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6863,17, -6671,96, 272,833 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6794,64, -6700,83, 272,911 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6724,74, -6701,16, 272,687 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6655,81, -6673,05, 272,781 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6188,89, -6700,92, 272,197 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6258,8, -6700,59, 272,421 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6327,33, -6671,71, 272,343 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -6119,97, -6672,8, 272,291 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5669,38, -6700,92, 272,39 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5739,29, -6700,6, 272,615 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5807,82, -6671,72, 272,536 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -34; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -5600,46, -6672,81, 272,484 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -88; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -6362,55, -6411,19, 189,427 ); + ent.v[ "angles" ] = ( 311, 310, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -6058,33, -6602,14, 283,19 ); + ent.v[ "angles" ] = ( 40, 155, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -6032,19, -6484,8, 271,361 ); + ent.v[ "angles" ] = ( 28, 195, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -6706,01, -6675,33, 387,642 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_steam_lg" ); + ent.v[ "origin" ] = ( -6650,1, -6551,61, 116,796 ); + ent.v[ "angles" ] = ( 293,234, 29,4734, -25,0788 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_fire_vista" ); + ent.v[ "origin" ] = ( 248,72, 6464,08, -123,851 ); + ent.v[ "angles" ] = ( 332, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_fire_vista" ); + ent.v[ "origin" ] = ( -396,657, 6194,97, -125,263 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_smoke_pillar_xlg" ); + ent.v[ "origin" ] = ( -1846,57, 7753,14, -589,768 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -387,006, 5853,76, -453,25 ); + ent.v[ "angles" ] = ( 345,461, 226,585, 12,3341 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -251,569, 6054,81, -294,964 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 315 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -257,678, 6031,75, -318,769 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 300 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -1206,52, 5282,3, -50,9786 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_sparks" ); + ent.v[ "origin" ] = ( -1246,17, 5318,86, 133,77 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 295 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_church_fire_vista" ); + ent.v[ "origin" ] = ( -1018,92, 5610,69, -3,49614 ); + ent.v[ "angles" ] = ( 330, 180, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_lg" ); + ent.v[ "origin" ] = ( -292,259, 5902,1, -491,126 ); + ent.v[ "angles" ] = ( 345,461, 226,585, 12,3341 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2473,31, 4089,7, -280,51 ); + ent.v[ "angles" ] = ( 19, 41, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2855,58, 4153,37, -536,792 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 120 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 3180,85, 4192,81, -556,868 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 3062,73, 4306,96, -585,469 ); + ent.v[ "angles" ] = ( 352, 65, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -2546,49, -17,4801, 102,603 ); + ent.v[ "angles" ] = ( 355,044, 58,9857, 0,836672 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -2782,02, 151,467, 55,9396 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -3293,42, 38,6278, -61,6823 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 335 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( -3333,75, -159,603, -178,559 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 319 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( -3018,82, -296,116, -134,467 ); + ent.v[ "angles" ] = ( 1,97051, 240,028, -0,746979 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 3487,99, 1251,07, -292,593 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_md" ); + ent.v[ "origin" ] = ( 3421, 1300,95, -328,283 ); + ent.v[ "angles" ] = ( 358,779, 192,212, -4,19317 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -73; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 3392,22, 927,885, -292,369 ); + ent.v[ "angles" ] = ( 0, 184, 13 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 3058,66, 740,127, -214,788 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 2346,32, 714,132, 31,2441 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 75 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_light_expensive" ); + ent.v[ "origin" ] = ( 241,377, -2985,24, 353,839 ); + ent.v[ "angles" ] = ( 358,252, 73,0043, -1,46938 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_tomb_fire_line_sm" ); + ent.v[ "origin" ] = ( -1258,53, 3764,31, -178,677 ); + ent.v[ "angles" ] = ( 279, 179, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; +} diff --git a/zm_transit/maps/mp/teams/_teamset_cdc.gsc b/zm_transit/maps/mp/teams/_teamset_cdc.gsc new file mode 100644 index 0000000..62ec842 --- /dev/null +++ b/zm_transit/maps/mp/teams/_teamset_cdc.gsc @@ -0,0 +1,51 @@ + +register() +{ + game[ "teamset" ] = []; + game[ "teamset" ][ "cdc" ] = ::cdc; +} + +level_init() +{ + game[ "allies" ] = "cdc"; + game[ "axis" ] = "cia"; + setdvar( "g_TeamName_Allies", &"ZMUI_CDC_SHORT" ); + setdvar( "g_TeamName_Axis", &"ZMUI_CIA_SHORT" ); + game[ "strings" ][ "allies_win" ] = &"ZM_CDC_WIN_MATCH"; + game[ "strings" ][ "allies_win_round" ] = &"ZM_CDC_WIN_ROUND"; + game[ "strings" ][ "allies_mission_accomplished" ] = &"ZM_CDC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "allies_eliminated" ] = &"ZM_CDC_ELIMINATED"; + game[ "strings" ][ "allies_forfeited" ] = &"ZM_CDC_FORFEITED"; + game[ "strings" ][ "allies_name" ] = &"ZM_CDC_NAME"; + game[ "music" ][ "spawn_allies" ] = "SPAWN_OPS"; + game[ "music" ][ "victory_allies" ] = "mus_victory_usa"; + game[ "icons" ][ "allies" ] = "faction_cdc"; + game[ "colors" ][ "allies" ] = ( 0, 0, 0 ); + game[ "voice" ][ "allies" ] = "vox_st6_"; + setdvar( "scr_allies", "marines" ); + game[ "strings" ][ "axis_win" ] = &"ZM_CIA_WIN_MATCH"; + game[ "strings" ][ "axis_win_round" ] = &"ZM_CIA_WIN_ROUND"; + game[ "strings" ][ "axis_mission_accomplished" ] = &"ZM_CIA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "axis_eliminated" ] = &"ZM_CIA_ELIMINATED"; + game[ "strings" ][ "axis_forfeited" ] = &"ZM_CIA_FORFEITED"; + game[ "strings" ][ "axis_name" ] = &"ZM_CIA_NAME"; + game[ "music" ][ "spawn_axis" ] = "SPAWN_RUS"; + game[ "music" ][ "victory_axis" ] = "mus_victory_soviet"; + game[ "icons" ][ "axis" ] = "faction_cia"; + game[ "colors" ][ "axis" ] = ( 0,65, 0,57, 0,41 ); + game[ "voice" ][ "axis" ] = "vox_pmc_"; +} + +cdc() +{ + allies(); + axis(); +} + +allies() +{ +} + +axis() +{ +} diff --git a/zm_transit_dr/aitype/zm_ally_cdc.gsc b/zm_transit_dr/aitype/zm_ally_cdc.gsc new file mode 100644 index 0000000..f12c067 --- /dev/null +++ b/zm_transit_dr/aitype/zm_ally_cdc.gsc @@ -0,0 +1,53 @@ + +#using_animtree( "zm_ally" ); + +reference_anims_from_animtree() +{ + dummy_anim_ref = %pb_laststand_idle; + dummy_anim_ref = %pb_stand_alert; + dummy_anim_ref = %pb_crouch_alert; +} + +main() +{ + self.accuracy = 1; + self.animstatedef = "zm_ally_basic.asd"; + self.animtree = "zm_ally.atr"; + self.csvinclude = ""; + self.demolockonhighlightdistance = 100; + self.demolockonviewheightoffset1 = 60; + self.demolockonviewheightoffset2 = 30; + self.demolockonviewpitchmax1 = 60; + self.demolockonviewpitchmax2 = 60; + self.demolockonviewpitchmin1 = -15; + self.demolockonviewpitchmin2 = -5; + self.footstepfxtable = ""; + self.footstepprepend = ""; + self.footstepscriptcallback = 0; + self.grenadeammo = 0; + self.grenadeweapon = ""; + self.health = 200; + self.precachescript = ""; + self.secondaryweapon = ""; + self.sidearm = ""; + self.subclass = "regular"; + self.team = "allies"; + self.type = "zombie"; + self.weapon = ""; + self setengagementmindist( 0, 0 ); + self setengagementmaxdist( 100, 300 ); + character/c_zom_ally_cdc::main(); + self setcharacterindex( 0 ); +} + +spawner() +{ + self setspawnerteam( "allies" ); +} + +precache( ai_index ) +{ + level thread reference_anims_from_animtree(); + precacheanimstatedef( ai_index, -1, "zm_ally_basic" ); + character/c_zom_ally_cdc::precache(); +} diff --git a/zm_transit_dr/character/c_transit_player_engineer.gsc b/zm_transit_dr/character/c_transit_player_engineer.gsc new file mode 100644 index 0000000..b123803 --- /dev/null +++ b/zm_transit_dr/character/c_transit_player_engineer.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_engineer_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_engineer_fb" ); +} diff --git a/zm_transit_dr/character/c_transit_player_farmgirl.gsc b/zm_transit_dr/character/c_transit_player_farmgirl.gsc new file mode 100644 index 0000000..05c38e9 --- /dev/null +++ b/zm_transit_dr/character/c_transit_player_farmgirl.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_farmgirl_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_farmgirl_fb" ); +} diff --git a/zm_transit_dr/character/c_transit_player_oldman.gsc b/zm_transit_dr/character/c_transit_player_oldman.gsc new file mode 100644 index 0000000..5d5f2c5 --- /dev/null +++ b/zm_transit_dr/character/c_transit_player_oldman.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_oldman_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_oldman_fb" ); +} diff --git a/zm_transit_dr/character/c_transit_player_reporter.gsc b/zm_transit_dr/character/c_transit_player_reporter.gsc new file mode 100644 index 0000000..71e8021 --- /dev/null +++ b/zm_transit_dr/character/c_transit_player_reporter.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_reporter_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_reporter_fb" ); +} diff --git a/zm_transit_dr/character/c_zom_ally_cdc.gsc b/zm_transit_dr/character/c_zom_ally_cdc.gsc new file mode 100644 index 0000000..9530aee --- /dev/null +++ b/zm_transit_dr/character/c_zom_ally_cdc.gsc @@ -0,0 +1,12 @@ + +main() +{ + self setmodel( "c_zom_player_cdc_fb" ); + self.voice = "american"; + self.skeleton = "base"; +} + +precache() +{ + precachemodel( "c_zom_player_cdc_fb" ); +} diff --git a/zm_transit_dr/maps/mp/teams/_teamset_cdc.gsc b/zm_transit_dr/maps/mp/teams/_teamset_cdc.gsc new file mode 100644 index 0000000..62ec842 --- /dev/null +++ b/zm_transit_dr/maps/mp/teams/_teamset_cdc.gsc @@ -0,0 +1,51 @@ + +register() +{ + game[ "teamset" ] = []; + game[ "teamset" ][ "cdc" ] = ::cdc; +} + +level_init() +{ + game[ "allies" ] = "cdc"; + game[ "axis" ] = "cia"; + setdvar( "g_TeamName_Allies", &"ZMUI_CDC_SHORT" ); + setdvar( "g_TeamName_Axis", &"ZMUI_CIA_SHORT" ); + game[ "strings" ][ "allies_win" ] = &"ZM_CDC_WIN_MATCH"; + game[ "strings" ][ "allies_win_round" ] = &"ZM_CDC_WIN_ROUND"; + game[ "strings" ][ "allies_mission_accomplished" ] = &"ZM_CDC_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "allies_eliminated" ] = &"ZM_CDC_ELIMINATED"; + game[ "strings" ][ "allies_forfeited" ] = &"ZM_CDC_FORFEITED"; + game[ "strings" ][ "allies_name" ] = &"ZM_CDC_NAME"; + game[ "music" ][ "spawn_allies" ] = "SPAWN_OPS"; + game[ "music" ][ "victory_allies" ] = "mus_victory_usa"; + game[ "icons" ][ "allies" ] = "faction_cdc"; + game[ "colors" ][ "allies" ] = ( 0, 0, 0 ); + game[ "voice" ][ "allies" ] = "vox_st6_"; + setdvar( "scr_allies", "marines" ); + game[ "strings" ][ "axis_win" ] = &"ZM_CIA_WIN_MATCH"; + game[ "strings" ][ "axis_win_round" ] = &"ZM_CIA_WIN_ROUND"; + game[ "strings" ][ "axis_mission_accomplished" ] = &"ZM_CIA_MISSION_ACCOMPLISHED"; + game[ "strings" ][ "axis_eliminated" ] = &"ZM_CIA_ELIMINATED"; + game[ "strings" ][ "axis_forfeited" ] = &"ZM_CIA_FORFEITED"; + game[ "strings" ][ "axis_name" ] = &"ZM_CIA_NAME"; + game[ "music" ][ "spawn_axis" ] = "SPAWN_RUS"; + game[ "music" ][ "victory_axis" ] = "mus_victory_soviet"; + game[ "icons" ][ "axis" ] = "faction_cia"; + game[ "colors" ][ "axis" ] = ( 0,65, 0,57, 0,41 ); + game[ "voice" ][ "axis" ] = "vox_pmc_"; +} + +cdc() +{ + allies(); + axis(); +} + +allies() +{ +} + +axis() +{ +} diff --git a/zm_transit_dr_patch/codescripts/character_mp.gsc b/zm_transit_dr_patch/codescripts/character_mp.gsc new file mode 100644 index 0000000..99f3c87 --- /dev/null +++ b/zm_transit_dr_patch/codescripts/character_mp.gsc @@ -0,0 +1,21 @@ +#include codescripts/character; + +setmodelfromarray( a ) +{ + self setmodel( a[ randomint( a.size ) ] ); +} + +precachemodelarray( a ) +{ + i = 0; + while ( i < a.size ) + { + precachemodel( a[ i ] ); + i++; + } +} + +attachfromarray( a ) +{ + self attach( codescripts/character::randomelement( a ), "", 1 ); +} diff --git a/zm_transit_dr_patch/common_scripts/utility.gsc b/zm_transit_dr_patch/common_scripts/utility.gsc new file mode 100644 index 0000000..256268e --- /dev/null +++ b/zm_transit_dr_patch/common_scripts/utility.gsc @@ -0,0 +1,2011 @@ + +init_session_mode_flags() +{ + level.gamemode_public_match = 0; + level.gamemode_private_match = 1; + level.gamemode_local_splitscreen = 2; + level.gamemode_wager_match = 3; + level.gamemode_theater = 5; + level.gamemode_league_match = 6; + level.gamemode_rts = 7; + level.language = getDvar( "language" ); +} + +empty( a, b, c, d, e ) +{ +} + +add_to_array( array, item, allow_dupes ) +{ + if ( !isDefined( item ) ) + { + return array; + } + if ( !isDefined( allow_dupes ) ) + { + allow_dupes = 1; + } + if ( !isDefined( array ) ) + { + array[ 0 ] = item; + } + else + { + if ( allow_dupes || !isinarray( array, item ) ) + { + array[ array.size ] = item; + } + } + return array; +} + +array_copy( array ) +{ + a_copy = []; + _a92 = array; + _k92 = getFirstArrayKey( _a92 ); + while ( isDefined( _k92 ) ) + { + elem = _a92[ _k92 ]; + a_copy[ a_copy.size ] = elem; + _k92 = getNextArrayKey( _a92, _k92 ); + } + return a_copy; +} + +array_delete( array, is_struct ) +{ + _a109 = array; + _k109 = getFirstArrayKey( _a109 ); + while ( isDefined( _k109 ) ) + { + ent = _a109[ _k109 ]; + if ( isDefined( is_struct ) && is_struct ) + { + ent structdelete(); + ent = undefined; + } + else + { + if ( isDefined( ent ) ) + { + ent delete(); + } + } + _k109 = getNextArrayKey( _a109, _k109 ); + } +} + +array_randomize( array ) +{ + i = 0; + while ( i < array.size ) + { + j = randomint( array.size ); + temp = array[ i ]; + array[ i ] = array[ j ]; + array[ j ] = temp; + i++; + } + return array; +} + +array_reverse( array ) +{ + array2 = []; + i = array.size - 1; + while ( i >= 0 ) + { + array2[ array2.size ] = array[ i ]; + i--; + + } + return array2; +} + +array_exclude( array, arrayexclude ) +{ + newarray = array; + if ( isarray( arrayexclude ) ) + { + i = 0; + while ( i < arrayexclude.size ) + { + arrayremovevalue( newarray, arrayexclude[ i ] ); + i++; + } + } + else arrayremovevalue( newarray, arrayexclude ); + return newarray; +} + +array_notify( ents, notifier ) +{ + i = 0; + while ( i < ents.size ) + { + ents[ i ] notify( notifier ); + i++; + } +} + +array_wait( array, msg, timeout ) +{ + keys = getarraykeys( array ); + structs = []; + i = 0; + while ( i < keys.size ) + { + key = keys[ i ]; + structs[ key ] = spawnstruct(); + structs[ key ]._array_wait = 1; + structs[ key ] thread array_waitlogic1( array[ key ], msg, timeout ); + i++; + } + i = 0; + while ( i < keys.size ) + { + key = keys[ i ]; + if ( isDefined( array[ key ] ) && structs[ key ]._array_wait ) + { + structs[ key ] waittill( "_array_wait" ); + } + i++; + } +} + +array_wait_any( array, msg, timeout ) +{ + if ( array.size == 0 ) + { + return undefined; + } + keys = getarraykeys( array ); + structs = []; + internal_msg = msg + "array_wait"; + i = 0; + while ( i < keys.size ) + { + key = keys[ i ]; + structs[ key ] = spawnstruct(); + structs[ key ]._array_wait = 1; + structs[ key ] thread array_waitlogic3( array[ key ], msg, internal_msg, timeout ); + i++; + } + level waittill( internal_msg, ent ); + return ent; +} + +array_waitlogic1( ent, msg, timeout ) +{ + self array_waitlogic2( ent, msg, timeout ); + self._array_wait = 0; + self notify( "_array_wait" ); +} + +array_waitlogic2( ent, msg, timeout ) +{ + ent endon( msg ); + ent endon( "death" ); + if ( isDefined( timeout ) ) + { + wait timeout; + } + else + { + ent waittill( msg ); + } +} + +array_waitlogic3( ent, msg, internal_msg, timeout ) +{ + if ( msg != "death" ) + { + ent endon( "death" ); + } + level endon( internal_msg ); + self array_waitlogic2( ent, msg, timeout ); + level notify( internal_msg ); +} + +array_check_for_dupes( array, single ) +{ + i = 0; + while ( i < array.size ) + { + if ( array[ i ] == single ) + { + return 0; + } + i++; + } + return 1; +} + +array_swap( array, index1, index2 ) +{ +/# + assert( index1 < array.size, "index1 to swap out of range" ); +#/ +/# + assert( index2 < array.size, "index2 to swap out of range" ); +#/ + temp = array[ index1 ]; + array[ index1 ] = array[ index2 ]; + array[ index2 ] = temp; + return array; +} + +array_average( array ) +{ +/# + assert( isarray( array ) ); +#/ +/# + assert( array.size > 0 ); +#/ + total = 0; + i = 0; + while ( i < array.size ) + { + total += array[ i ]; + i++; + } + return total / array.size; +} + +array_std_deviation( array, mean ) +{ +/# + assert( isarray( array ) ); +#/ +/# + assert( array.size > 0 ); +#/ + tmp = []; + i = 0; + while ( i < array.size ) + { + tmp[ i ] = ( array[ i ] - mean ) * ( array[ i ] - mean ); + i++; + } + total = 0; + i = 0; + while ( i < tmp.size ) + { + total += tmp[ i ]; + i++; + } + return sqrt( total / array.size ); +} + +random_normal_distribution( mean, std_deviation, lower_bound, upper_bound ) +{ + x1 = 0; + x2 = 0; + w = 1; + y1 = 0; + while ( w >= 1 ) + { + x1 = ( 2 * randomfloatrange( 0, 1 ) ) - 1; + x2 = ( 2 * randomfloatrange( 0, 1 ) ) - 1; + w = ( x1 * x1 ) + ( x2 * x2 ); + } + w = sqrt( ( -2 * log( w ) ) / w ); + y1 = x1 * w; + number = mean + ( y1 * std_deviation ); + if ( isDefined( lower_bound ) && number < lower_bound ) + { + number = lower_bound; + } + if ( isDefined( upper_bound ) && number > upper_bound ) + { + number = upper_bound; + } + return number; +} + +random( array ) +{ + keys = getarraykeys( array ); + return array[ keys[ randomint( keys.size ) ] ]; +} + +get_players( str_team ) +{ + if ( isDefined( str_team ) ) + { + return getplayers( str_team ); + } + else + { + return getplayers(); + } +} + +is_prefix( msg, prefix ) +{ + if ( prefix.size > msg.size ) + { + return 0; + } + i = 0; + while ( i < prefix.size ) + { + if ( msg[ i ] != prefix[ i ] ) + { + return 0; + } + i++; + } + return 1; +} + +is_suffix( msg, suffix ) +{ + if ( suffix.size > msg.size ) + { + return 0; + } + i = 0; + while ( i < suffix.size ) + { + if ( msg[ ( msg.size - 1 ) - i ] != suffix[ ( suffix.size - 1 ) - i ] ) + { + return 0; + } + i++; + } + return 1; +} + +vector_compare( vec1, vec2 ) +{ + if ( abs( vec1[ 0 ] - vec2[ 0 ] ) < 0,001 && abs( vec1[ 1 ] - vec2[ 1 ] ) < 0,001 ) + { + return abs( vec1[ 2 ] - vec2[ 2 ] ) < 0,001; + } +} + +draw_debug_line( start, end, timer ) +{ +/# + i = 0; + while ( i < ( timer * 20 ) ) + { + line( start, end, ( 1, 1, 0,5 ) ); + wait 0,05; + i++; +#/ + } +} + +waittillend( msg ) +{ + self waittillmatch( msg ); + return "end"; +} + +random_vector( max_length ) +{ + return ( randomfloatrange( -1 * max_length, max_length ), randomfloatrange( -1 * max_length, max_length ), randomfloatrange( -1 * max_length, max_length ) ); +} + +angle_dif( oldangle, newangle ) +{ + outvalue = ( oldangle - newangle ) % 360; + if ( outvalue < 0 ) + { + outvalue += 360; + } + if ( outvalue > 180 ) + { + outvalue = ( outvalue - 360 ) * -1; + } + return outvalue; +} + +sign( x ) +{ + if ( x >= 0 ) + { + return 1; + } + return -1; +} + +track( spot_to_track ) +{ + if ( isDefined( self.current_target ) ) + { + if ( spot_to_track == self.current_target ) + { + return; + } + } + self.current_target = spot_to_track; +} + +clear_exception( type ) +{ +/# + assert( isDefined( self.exception[ type ] ) ); +#/ + self.exception[ type ] = anim.defaultexception; +} + +set_exception( type, func ) +{ +/# + assert( isDefined( self.exception[ type ] ) ); +#/ + self.exception[ type ] = func; +} + +set_all_exceptions( exceptionfunc ) +{ + keys = getarraykeys( self.exception ); + i = 0; + while ( i < keys.size ) + { + self.exception[ keys[ i ] ] = exceptionfunc; + i++; + } +} + +cointoss() +{ + return randomint( 100 ) >= 50; +} + +waittill_string( msg, ent ) +{ + if ( msg != "death" ) + { + self endon( "death" ); + } + ent endon( "die" ); + self waittill( msg ); + ent notify( "returned" ); +} + +waittill_multiple( string1, string2, string3, string4, string5 ) +{ + self endon( "death" ); + ent = spawnstruct(); + ent.threads = 0; + if ( isDefined( string1 ) ) + { + self thread waittill_string( string1, ent ); + ent.threads++; + } + if ( isDefined( string2 ) ) + { + self thread waittill_string( string2, ent ); + ent.threads++; + } + if ( isDefined( string3 ) ) + { + self thread waittill_string( string3, ent ); + ent.threads++; + } + if ( isDefined( string4 ) ) + { + self thread waittill_string( string4, ent ); + ent.threads++; + } + if ( isDefined( string5 ) ) + { + self thread waittill_string( string5, ent ); + ent.threads++; + } + while ( ent.threads ) + { + ent waittill( "returned" ); + ent.threads--; + + } + ent notify( "die" ); +} + +waittill_multiple_ents( ent1, string1, ent2, string2, ent3, string3, ent4, string4 ) +{ + self endon( "death" ); + ent = spawnstruct(); + ent.threads = 0; + if ( isDefined( ent1 ) ) + { +/# + assert( isDefined( string1 ) ); +#/ + ent1 thread waittill_string( string1, ent ); + ent.threads++; + } + if ( isDefined( ent2 ) ) + { +/# + assert( isDefined( string2 ) ); +#/ + ent2 thread waittill_string( string2, ent ); + ent.threads++; + } + if ( isDefined( ent3 ) ) + { +/# + assert( isDefined( string3 ) ); +#/ + ent3 thread waittill_string( string3, ent ); + ent.threads++; + } + if ( isDefined( ent4 ) ) + { +/# + assert( isDefined( string4 ) ); +#/ + ent4 thread waittill_string( string4, ent ); + ent.threads++; + } + while ( ent.threads ) + { + ent waittill( "returned" ); + ent.threads--; + + } + ent notify( "die" ); +} + +waittill_any_return( string1, string2, string3, string4, string5, string6, string7 ) +{ + if ( isDefined( string1 ) && string1 != "death" && isDefined( string2 ) && string2 != "death" && isDefined( string3 ) && string3 != "death" && isDefined( string4 ) && string4 != "death" && isDefined( string5 ) && string5 != "death" && isDefined( string6 ) && string6 != "death" || !isDefined( string7 ) && string7 != "death" ) + { + self endon( "death" ); + } + ent = spawnstruct(); + if ( isDefined( string1 ) ) + { + self thread waittill_string( string1, ent ); + } + if ( isDefined( string2 ) ) + { + self thread waittill_string( string2, ent ); + } + if ( isDefined( string3 ) ) + { + self thread waittill_string( string3, ent ); + } + if ( isDefined( string4 ) ) + { + self thread waittill_string( string4, ent ); + } + if ( isDefined( string5 ) ) + { + self thread waittill_string( string5, ent ); + } + if ( isDefined( string6 ) ) + { + self thread waittill_string( string6, ent ); + } + if ( isDefined( string7 ) ) + { + self thread waittill_string( string7, ent ); + } + ent waittill( "returned", msg ); + ent notify( "die" ); + return msg; +} + +waittill_any_array_return( a_notifies ) +{ + if ( isinarray( a_notifies, "death" ) ) + { + self endon( "death" ); + } + s_tracker = spawnstruct(); + _a825 = a_notifies; + _k825 = getFirstArrayKey( _a825 ); + while ( isDefined( _k825 ) ) + { + str_notify = _a825[ _k825 ]; + if ( isDefined( str_notify ) ) + { + self thread waittill_string( str_notify, s_tracker ); + } + _k825 = getNextArrayKey( _a825, _k825 ); + } + s_tracker waittill( "returned", msg ); + s_tracker notify( "die" ); + return msg; +} + +waittill_any( str_notify1, str_notify2, str_notify3, str_notify4, str_notify5 ) +{ +/# + assert( isDefined( str_notify1 ) ); +#/ + waittill_any_array( array( str_notify1, str_notify2, str_notify3, str_notify4, str_notify5 ) ); +} + +waittill_any_array( a_notifies ) +{ +/# + assert( isDefined( a_notifies[ 0 ] ), "At least the first element has to be defined for waittill_any_array." ); +#/ + i = 1; + while ( i < a_notifies.size ) + { + if ( isDefined( a_notifies[ i ] ) ) + { + self endon( a_notifies[ i ] ); + } + i++; + } + self waittill( a_notifies[ 0 ] ); +} + +waittill_any_timeout( n_timeout, string1, string2, string3, string4, string5 ) +{ + if ( isDefined( string1 ) && string1 != "death" && isDefined( string2 ) && string2 != "death" && isDefined( string3 ) && string3 != "death" && isDefined( string4 ) && string4 != "death" || !isDefined( string5 ) && string5 != "death" ) + { + self endon( "death" ); + } + ent = spawnstruct(); + if ( isDefined( string1 ) ) + { + self thread waittill_string( string1, ent ); + } + if ( isDefined( string2 ) ) + { + self thread waittill_string( string2, ent ); + } + if ( isDefined( string3 ) ) + { + self thread waittill_string( string3, ent ); + } + if ( isDefined( string4 ) ) + { + self thread waittill_string( string4, ent ); + } + if ( isDefined( string5 ) ) + { + self thread waittill_string( string5, ent ); + } + ent thread _timeout( n_timeout ); + ent waittill( "returned", msg ); + ent notify( "die" ); + return msg; +} + +_timeout( delay ) +{ + self endon( "die" ); + wait delay; + self notify( "returned" ); +} + +waittill_any_ents( ent1, string1, ent2, string2, ent3, string3, ent4, string4, ent5, string5, ent6, string6, ent7, string7 ) +{ +/# + assert( isDefined( ent1 ) ); +#/ +/# + assert( isDefined( string1 ) ); +#/ + if ( isDefined( ent2 ) && isDefined( string2 ) ) + { + ent2 endon( string2 ); + } + if ( isDefined( ent3 ) && isDefined( string3 ) ) + { + ent3 endon( string3 ); + } + if ( isDefined( ent4 ) && isDefined( string4 ) ) + { + ent4 endon( string4 ); + } + if ( isDefined( ent5 ) && isDefined( string5 ) ) + { + ent5 endon( string5 ); + } + if ( isDefined( ent6 ) && isDefined( string6 ) ) + { + ent6 endon( string6 ); + } + if ( isDefined( ent7 ) && isDefined( string7 ) ) + { + ent7 endon( string7 ); + } + ent1 waittill( string1 ); +} + +waittill_any_ents_two( ent1, string1, ent2, string2 ) +{ +/# + assert( isDefined( ent1 ) ); +#/ +/# + assert( isDefined( string1 ) ); +#/ + if ( isDefined( ent2 ) && isDefined( string2 ) ) + { + ent2 endon( string2 ); + } + ent1 waittill( string1 ); +} + +waittill_flag_exists( msg ) +{ + while ( !flag_exists( msg ) ) + { + waittillframeend; + if ( flag_exists( msg ) ) + { + return; + } + else + { + wait 0,05; + } + } +} + +isflashed() +{ + if ( !isDefined( self.flashendtime ) ) + { + return 0; + } + return getTime() < self.flashendtime; +} + +isstunned() +{ + if ( !isDefined( self.flashendtime ) ) + { + return 0; + } + return getTime() < self.flashendtime; +} + +flag( flagname ) +{ +/# + assert( isDefined( flagname ), "Tried to check flag but the flag was not defined." ); +#/ +/# + assert( isDefined( level.flag[ flagname ] ), "Tried to check flag " + flagname + " but the flag was not initialized." ); +#/ + if ( !level.flag[ flagname ] ) + { + return 0; + } + return 1; +} + +flag_delete( flagname ) +{ + if ( isDefined( level.flag[ flagname ] ) ) + { + } + else + { +/# + println( "flag_delete() called on flag that does not exist: " + flagname ); +#/ + } +} + +flag_init( flagname, val, b_is_trigger ) +{ + if ( !isDefined( b_is_trigger ) ) + { + b_is_trigger = 0; + } + if ( !isDefined( level.flag ) ) + { + level.flag = []; + } + if ( !isDefined( level.sp_stat_tracking_func ) ) + { + level.sp_stat_tracking_func = ::empty; + } + if ( !isDefined( level.first_frame ) ) + { +/# + assert( !isDefined( level.flag[ flagname ] ), "Attempt to reinitialize existing flag: " + flagname ); +#/ + } + if ( isDefined( val ) && val ) + { + level.flag[ flagname ] = 1; + } + else + { + level.flag[ flagname ] = 0; + } + if ( b_is_trigger ) + { + if ( !isDefined( level.trigger_flags ) ) + { + init_trigger_flags(); + level.trigger_flags[ flagname ] = []; + } + else + { + if ( !isDefined( level.trigger_flags[ flagname ] ) ) + { + level.trigger_flags[ flagname ] = []; + } + } + } + if ( is_suffix( flagname, "aa_" ) ) + { + thread [[ level.sp_stat_tracking_func ]]( flagname ); + } +} + +flag_set( flagname ) +{ +/# + assert( isDefined( level.flag[ flagname ] ), "Attempt to set a flag before calling flag_init: " + flagname ); +#/ + level.flag[ flagname ] = 1; + level notify( flagname ); + set_trigger_flag_permissions( flagname ); +} + +flag_set_for_time( n_time, str_flag ) +{ + level notify( "set_flag_for_time:" + str_flag ); + flag_set( str_flag ); + level endon( "set_flag_for_time:" + str_flag ); + wait n_time; + flag_clear( str_flag ); +} + +flag_toggle( flagname ) +{ + if ( flag( flagname ) ) + { + flag_clear( flagname ); + } + else + { + flag_set( flagname ); + } +} + +flag_wait( flagname ) +{ + level waittill_flag_exists( flagname ); + while ( !level.flag[ flagname ] ) + { + level waittill( flagname ); + } +} + +flag_wait_any( str_flag1, str_flag2, str_flag3, str_flag4, str_flag5 ) +{ + level flag_wait_any_array( array( str_flag1, str_flag2, str_flag3, str_flag4, str_flag5 ) ); +} + +flag_wait_any_array( a_flags ) +{ + while ( 1 ) + { + i = 0; + while ( i < a_flags.size ) + { + if ( flag( a_flags[ i ] ) ) + { + return a_flags[ i ]; + } + i++; + } + level waittill_any_array( a_flags ); + } +} + +flag_clear( flagname ) +{ +/# + assert( isDefined( level.flag[ flagname ] ), "Attempt to set a flag before calling flag_init: " + flagname ); +#/ + if ( level.flag[ flagname ] ) + { + level.flag[ flagname ] = 0; + level notify( flagname ); + set_trigger_flag_permissions( flagname ); + } +} + +flag_waitopen( flagname ) +{ + while ( level.flag[ flagname ] ) + { + level waittill( flagname ); + } +} + +flag_waitopen_array( a_flags ) +{ + _a1324 = a_flags; + _k1324 = getFirstArrayKey( _a1324 ); + while ( isDefined( _k1324 ) ) + { + str_flag = _a1324[ _k1324 ]; + if ( flag( str_flag ) ) + { + flag_waitopen( str_flag ); + break; + } + _k1324 = getNextArrayKey( _a1324, _k1324 ); + } +} + +flag_exists( flagname ) +{ + if ( self == level ) + { + if ( !isDefined( level.flag ) ) + { + return 0; + } + if ( isDefined( level.flag[ flagname ] ) ) + { + return 1; + } + } + else + { + if ( !isDefined( self.ent_flag ) ) + { + return 0; + } + if ( isDefined( self.ent_flag[ flagname ] ) ) + { + return 1; + } + } + return 0; +} + +script_gen_dump_addline( string, signature ) +{ + if ( !isDefined( string ) ) + { + string = "nowrite"; + } + if ( !isDefined( level._loadstarted ) ) + { + if ( !isDefined( level.script_gen_dump_preload ) ) + { + level.script_gen_dump_preload = []; + } + struct = spawnstruct(); + struct.string = string; + struct.signature = signature; + level.script_gen_dump_preload[ level.script_gen_dump_preload.size ] = struct; + return; + } + if ( !isDefined( level.script_gen_dump[ signature ] ) ) + { + level.script_gen_dump_reasons[ level.script_gen_dump_reasons.size ] = "Added: " + string; + } + level.script_gen_dump[ signature ] = string; + level.script_gen_dump2[ signature ] = string; +} + +array_func( entities, func, arg1, arg2, arg3, arg4, arg5, arg6 ) +{ + if ( !isDefined( entities ) ) + { + return; + } + if ( isarray( entities ) ) + { + while ( entities.size ) + { + keys = getarraykeys( entities ); + i = 0; + while ( i < keys.size ) + { + single_func( entities[ keys[ i ] ], func, arg1, arg2, arg3, arg4, arg5, arg6 ); + i++; + } + } + } + else single_func( entities, func, arg1, arg2, arg3, arg4, arg5, arg6 ); +} + +single_func( entity, func, arg1, arg2, arg3, arg4, arg5, arg6 ) +{ + if ( !isDefined( entity ) ) + { + entity = level; + } + if ( isDefined( arg6 ) ) + { + return entity [[ func ]]( arg1, arg2, arg3, arg4, arg5, arg6 ); + } + else + { + if ( isDefined( arg5 ) ) + { + return entity [[ func ]]( arg1, arg2, arg3, arg4, arg5 ); + } + else + { + if ( isDefined( arg4 ) ) + { + return entity [[ func ]]( arg1, arg2, arg3, arg4 ); + } + else + { + if ( isDefined( arg3 ) ) + { + return entity [[ func ]]( arg1, arg2, arg3 ); + } + else + { + if ( isDefined( arg2 ) ) + { + return entity [[ func ]]( arg1, arg2 ); + } + else + { + if ( isDefined( arg1 ) ) + { + return entity [[ func ]]( arg1 ); + } + else + { + return entity [[ func ]](); + } + } + } + } + } + } +} + +new_func( func, arg1, arg2, arg3, arg4, arg5, arg6 ) +{ + s_func = spawnstruct(); + s_func.func = func; + s_func.arg1 = arg1; + s_func.arg2 = arg2; + s_func.arg3 = arg3; + s_func.arg4 = arg4; + s_func.arg5 = arg5; + s_func.arg6 = arg6; + return s_func; +} + +call_func( s_func ) +{ + return single_func( self, s_func.func, s_func.arg1, s_func.arg2, s_func.arg3, s_func.arg4, s_func.arg5, s_func.arg6 ); +} + +array_thread( entities, func, arg1, arg2, arg3, arg4, arg5, arg6 ) +{ +/# + assert( isDefined( entities ), "Undefined entity array passed to common_scriptsutility::array_thread" ); +#/ +/# + assert( isDefined( func ), "Undefined function passed to common_scriptsutility::array_thread" ); +#/ + if ( isarray( entities ) ) + { + if ( isDefined( arg6 ) ) + { + _a1554 = entities; + _k1554 = getFirstArrayKey( _a1554 ); + while ( isDefined( _k1554 ) ) + { + ent = _a1554[ _k1554 ]; + ent thread [[ func ]]( arg1, arg2, arg3, arg4, arg5, arg6 ); + _k1554 = getNextArrayKey( _a1554, _k1554 ); + } + } + else if ( isDefined( arg5 ) ) + { + _a1561 = entities; + _k1561 = getFirstArrayKey( _a1561 ); + while ( isDefined( _k1561 ) ) + { + ent = _a1561[ _k1561 ]; + ent thread [[ func ]]( arg1, arg2, arg3, arg4, arg5 ); + _k1561 = getNextArrayKey( _a1561, _k1561 ); + } + } + else if ( isDefined( arg4 ) ) + { + _a1568 = entities; + _k1568 = getFirstArrayKey( _a1568 ); + while ( isDefined( _k1568 ) ) + { + ent = _a1568[ _k1568 ]; + ent thread [[ func ]]( arg1, arg2, arg3, arg4 ); + _k1568 = getNextArrayKey( _a1568, _k1568 ); + } + } + else if ( isDefined( arg3 ) ) + { + _a1575 = entities; + _k1575 = getFirstArrayKey( _a1575 ); + while ( isDefined( _k1575 ) ) + { + ent = _a1575[ _k1575 ]; + ent thread [[ func ]]( arg1, arg2, arg3 ); + _k1575 = getNextArrayKey( _a1575, _k1575 ); + } + } + else if ( isDefined( arg2 ) ) + { + _a1582 = entities; + _k1582 = getFirstArrayKey( _a1582 ); + while ( isDefined( _k1582 ) ) + { + ent = _a1582[ _k1582 ]; + ent thread [[ func ]]( arg1, arg2 ); + _k1582 = getNextArrayKey( _a1582, _k1582 ); + } + } + else if ( isDefined( arg1 ) ) + { + _a1589 = entities; + _k1589 = getFirstArrayKey( _a1589 ); + while ( isDefined( _k1589 ) ) + { + ent = _a1589[ _k1589 ]; + ent thread [[ func ]]( arg1 ); + _k1589 = getNextArrayKey( _a1589, _k1589 ); + } + } + else _a1596 = entities; + _k1596 = getFirstArrayKey( _a1596 ); + while ( isDefined( _k1596 ) ) + { + ent = _a1596[ _k1596 ]; + ent thread [[ func ]](); + _k1596 = getNextArrayKey( _a1596, _k1596 ); + } + } + else single_thread( entities, func, arg1, arg2, arg3, arg4, arg5, arg6 ); +} + +array_ent_thread( entities, func, arg1, arg2, arg3, arg4, arg5 ) +{ +/# + assert( isDefined( entities ), "Undefined entity array passed to common_scriptsutility::array_ent_thread" ); +#/ +/# + assert( isDefined( func ), "Undefined function passed to common_scriptsutility::array_ent_thread" ); +#/ + if ( isarray( entities ) ) + { + while ( entities.size ) + { + keys = getarraykeys( entities ); + i = 0; + while ( i < keys.size ) + { + single_thread( self, func, entities[ keys[ i ] ], arg1, arg2, arg3, arg4, arg5 ); + i++; + } + } + } + else single_thread( self, func, entities, arg1, arg2, arg3, arg4, arg5 ); +} + +single_thread( entity, func, arg1, arg2, arg3, arg4, arg5, arg6 ) +{ +/# + assert( isDefined( entity ), "Undefined entity passed to common_scriptsutility::single_thread()" ); +#/ + if ( isDefined( arg6 ) ) + { + entity thread [[ func ]]( arg1, arg2, arg3, arg4, arg5, arg6 ); + } + else if ( isDefined( arg5 ) ) + { + entity thread [[ func ]]( arg1, arg2, arg3, arg4, arg5 ); + } + else if ( isDefined( arg4 ) ) + { + entity thread [[ func ]]( arg1, arg2, arg3, arg4 ); + } + else if ( isDefined( arg3 ) ) + { + entity thread [[ func ]]( arg1, arg2, arg3 ); + } + else if ( isDefined( arg2 ) ) + { + entity thread [[ func ]]( arg1, arg2 ); + } + else if ( isDefined( arg1 ) ) + { + entity thread [[ func ]]( arg1 ); + } + else + { + entity thread [[ func ]](); + } +} + +remove_undefined_from_array( array ) +{ + newarray = []; + i = 0; + while ( i < array.size ) + { + if ( !isDefined( array[ i ] ) ) + { + i++; + continue; + } + else + { + newarray[ newarray.size ] = array[ i ]; + } + i++; + } + return newarray; +} + +trigger_on( name, type ) +{ + if ( isDefined( name ) ) + { + if ( !isDefined( type ) ) + { + type = "targetname"; + } + ents = getentarray( name, type ); + array_thread( ents, ::trigger_on_proc ); + } + else + { + self trigger_on_proc(); + } +} + +trigger_on_proc() +{ + if ( isDefined( self.realorigin ) ) + { + self.origin = self.realorigin; + } + self.trigger_off = undefined; +} + +trigger_off( name, type ) +{ + if ( isDefined( name ) ) + { + if ( !isDefined( type ) ) + { + type = "targetname"; + } + ents = getentarray( name, type ); + array_thread( ents, ::trigger_off_proc ); + } + else + { + self trigger_off_proc(); + } +} + +trigger_off_proc() +{ + if ( !isDefined( self.trigger_off ) || !self.trigger_off ) + { + self.realorigin = self.origin; + self.origin += vectorScale( ( 0, 0, -1 ), 10000 ); + self.trigger_off = 1; + } +} + +trigger_wait( str_name, str_key, e_entity ) +{ + if ( !isDefined( str_key ) ) + { + str_key = "targetname"; + } + if ( isDefined( str_name ) ) + { + triggers = getentarray( str_name, str_key ); +/# + assert( triggers.size > 0, "trigger not found: " + str_name + " key: " + str_key ); +#/ + if ( triggers.size == 1 ) + { + trigger_hit = triggers[ 0 ]; + trigger_hit _trigger_wait( e_entity ); + } + else + { + s_tracker = spawnstruct(); + array_thread( triggers, ::_trigger_wait_think, s_tracker, e_entity ); + s_tracker waittill( "trigger", e_other, trigger_hit ); + trigger_hit.who = e_other; + } + level notify( str_name ); + return trigger_hit; + } + else + { + return _trigger_wait( e_entity ); + } +} + +_trigger_wait( e_entity ) +{ + if ( is_look_trigger( self ) ) + { + self waittill( "trigger_look", e_other ); + } + else + { + self waittill( "trigger", e_other ); + } + if ( isDefined( e_entity )self.who = e_other; + return self; +} + +_trigger_wait_think( s_tracker, e_entity ) +{ + self endon( "death" ); + s_tracker endon( "trigger" ); + e_other = _trigger_wait( e_entity ); + s_tracker notify( "trigger" ); +} + +trigger_use( str_name, str_key, ent, b_assert ) +{ + if ( !isDefined( str_key ) ) + { + str_key = "targetname"; + } + if ( !isDefined( b_assert ) ) + { + b_assert = 1; + } + if ( !isDefined( ent ) ) + { + ent = get_players()[ 0 ]; + } + if ( isDefined( str_name ) ) + { + e_trig = getent( str_name, str_key ); + if ( !isDefined( e_trig ) ) + { + if ( b_assert ) + { +/# + assertmsg( "trigger not found: " + str_name + " key: " + str_key ); +#/ + } + return; + } + } + else + { + e_trig = self; + str_name = self.targetname; + } + e_trig useby( ent ); + level notify( str_name ); + if ( is_look_trigger( e_trig ) ) + { + e_trig notify( "trigger_look" ); + } + return e_trig; +} + +set_trigger_flag_permissions( msg ) +{ + if ( !isDefined( level.trigger_flags ) || !isDefined( level.trigger_flags[ msg ] ) ) + { + return; + } + level.trigger_flags[ msg ] = remove_undefined_from_array( level.trigger_flags[ msg ] ); + array_thread( level.trigger_flags[ msg ], ::update_trigger_based_on_flags ); +} + +update_trigger_based_on_flags() +{ + true_on = 1; + while ( isDefined( self.script_flag_true ) ) + { + true_on = 0; + tokens = create_flags_and_return_tokens( self.script_flag_true ); + i = 0; + while ( i < tokens.size ) + { + if ( flag( tokens[ i ] ) ) + { + true_on = 1; + break; + } + else + { + i++; + } + } + } + false_on = 1; + while ( isDefined( self.script_flag_false ) ) + { + tokens = create_flags_and_return_tokens( self.script_flag_false ); + i = 0; + while ( i < tokens.size ) + { + if ( flag( tokens[ i ] ) ) + { + false_on = 0; + break; + } + else + { + i++; + } + } + } + if ( true_on ) + { + [[ level.trigger_func[ false_on ] ]](); + } +} + +create_flags_and_return_tokens( flags ) +{ + tokens = strtok( flags, " " ); + i = 0; + while ( i < tokens.size ) + { + if ( !isDefined( level.flag[ tokens[ i ] ] ) ) + { + flag_init( tokens[ i ], undefined, 1 ); + } + i++; + } + return tokens; +} + +init_trigger_flags() +{ + level.trigger_flags = []; + level.trigger_func[ 1 ] = ::trigger_on; + level.trigger_func[ 0 ] = ::trigger_off; +} + +is_look_trigger( trig ) +{ + if ( isDefined( trig ) ) + { + if ( trig has_spawnflag( 256 ) ) + { + if ( !isDefined( trig.classname ) && isDefined( "trigger_damage" ) && isDefined( trig.classname ) && isDefined( "trigger_damage" )} + } + else + { + } + return 0; +} + +is_trigger_once( trig ) +{ + if ( isDefined( trig ) ) + { + if ( !trig has_spawnflag( 1024 ) ) + { + if ( !isDefined( self.classname ) && isDefined( "trigger_once" ) ) + { + if ( isDefined( self.classname ) && isDefined( "trigger_once" ) ) + { + } + } + } + } + else + { + } + return 0; +} + +getstruct( name, type ) +{ + if ( !isDefined( type ) ) + { + type = "targetname"; + } +/# + assert( isDefined( level.struct_class_names ), "Tried to getstruct before the structs were init" ); +#/ + array = level.struct_class_names[ type ][ name ]; + if ( !isDefined( array ) ) + { + return undefined; + } + if ( array.size > 1 ) + { +/# + assertmsg( "getstruct used for more than one struct of type " + type + " called " + name + "." ); +#/ + return undefined; + } + return array[ 0 ]; +} + +getstructarray( name, type ) +{ + if ( !isDefined( type ) ) + { + type = "targetname"; + } +/# + assert( isDefined( level.struct_class_names ), "Tried to getstruct before the structs were init" ); +#/ + array = level.struct_class_names[ type ][ name ]; + if ( !isDefined( array ) ) + { + return []; + } + return array; +} + +structdelete() +{ + if ( isDefined( self.target ) && isDefined( level.struct_class_names[ "target" ][ self.target ] ) ) + { + } + if ( isDefined( self.targetname ) && isDefined( level.struct_class_names[ "targetname" ][ self.targetname ] ) ) + { + } + if ( isDefined( self.script_noteworthy ) && isDefined( level.struct_class_names[ "script_noteworthy" ][ self.script_noteworthy ] ) ) + { + } + if ( isDefined( self.script_linkname ) && isDefined( level.struct_class_names[ "script_linkname" ][ self.script_linkname ] ) ) + { + } +} + +struct_class_init() +{ +/# + assert( !isDefined( level.struct_class_names ), "level.struct_class_names is being initialized in the wrong place! It shouldn't be initialized yet." ); +#/ + level.struct_class_names = []; + level.struct_class_names[ "target" ] = []; + level.struct_class_names[ "targetname" ] = []; + level.struct_class_names[ "script_noteworthy" ] = []; + level.struct_class_names[ "script_linkname" ] = []; + level.struct_class_names[ "script_unitrigger_type" ] = []; + _a2064 = level.struct; + _k2064 = getFirstArrayKey( _a2064 ); + while ( isDefined( _k2064 ) ) + { + s_struct = _a2064[ _k2064 ]; + if ( isDefined( s_struct.targetname ) ) + { + if ( !isDefined( level.struct_class_names[ "targetname" ][ s_struct.targetname ] ) ) + { + level.struct_class_names[ "targetname" ][ s_struct.targetname ] = []; + } + size = level.struct_class_names[ "targetname" ][ s_struct.targetname ].size; + level.struct_class_names[ "targetname" ][ s_struct.targetname ][ size ] = s_struct; + } + if ( isDefined( s_struct.target ) ) + { + if ( !isDefined( level.struct_class_names[ "target" ][ s_struct.target ] ) ) + { + level.struct_class_names[ "target" ][ s_struct.target ] = []; + } + size = level.struct_class_names[ "target" ][ s_struct.target ].size; + level.struct_class_names[ "target" ][ s_struct.target ][ size ] = s_struct; + } + if ( isDefined( s_struct.script_noteworthy ) ) + { + if ( !isDefined( level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] ) ) + { + level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ] = []; + } + size = level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ].size; + level.struct_class_names[ "script_noteworthy" ][ s_struct.script_noteworthy ][ size ] = s_struct; + } + if ( isDefined( s_struct.script_linkname ) ) + { +/# + assert( !isDefined( level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ] ), "Two structs have the same linkname" ); +#/ + level.struct_class_names[ "script_linkname" ][ s_struct.script_linkname ][ 0 ] = s_struct; + } + if ( isDefined( s_struct.script_unitrigger_type ) ) + { + if ( !isDefined( level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] ) ) + { + level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ] = []; + } + size = level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ].size; + level.struct_class_names[ "script_unitrigger_type" ][ s_struct.script_unitrigger_type ][ size ] = s_struct; + } + _k2064 = getNextArrayKey( _a2064, _k2064 ); + } +} + +fileprint_start( file ) +{ +/# + filename = file; + file = openfile( filename, "write" ); + level.fileprint = file; + level.fileprintlinecount = 0; + level.fileprint_filename = filename; +#/ +} + +fileprint_map_start( file ) +{ +/# + file = "map_source/" + file + ".map"; + fileprint_start( file ); + level.fileprint_mapentcount = 0; + fileprint_map_header( 1 ); +#/ +} + +fileprint_chk( file, str ) +{ +/# + level.fileprintlinecount++; + if ( level.fileprintlinecount > 400 ) + { + wait 0,05; + level.fileprintlinecount++; + level.fileprintlinecount = 0; + } + fprintln( file, str ); +#/ +} + +fileprint_map_header( binclude_blank_worldspawn ) +{ + if ( !isDefined( binclude_blank_worldspawn ) ) + { + binclude_blank_worldspawn = 0; + } +/# + assert( isDefined( level.fileprint ) ); +#/ +/# + fileprint_chk( level.fileprint, "iwmap 4" ); + fileprint_chk( level.fileprint, ""000_Global" flags active" ); + fileprint_chk( level.fileprint, ""The Map" flags" ); + if ( !binclude_blank_worldspawn ) + { + return; + } + fileprint_map_entity_start(); + fileprint_map_keypairprint( "classname", "worldspawn" ); + fileprint_map_entity_end(); +#/ +} + +fileprint_map_keypairprint( key1, key2 ) +{ +/# + assert( isDefined( level.fileprint ) ); + fileprint_chk( level.fileprint, """ + key1 + "" "" + key2 + """ ); +#/ +} + +fileprint_map_entity_start() +{ +/# + assert( !isDefined( level.fileprint_entitystart ) ); + level.fileprint_entitystart = 1; + assert( isDefined( level.fileprint ) ); + fileprint_chk( level.fileprint, "// entity " + level.fileprint_mapentcount ); + fileprint_chk( level.fileprint, "{" ); + level.fileprint_mapentcount++; +#/ +} + +fileprint_map_entity_end() +{ +/# + assert( isDefined( level.fileprint_entitystart ) ); + assert( isDefined( level.fileprint ) ); + level.fileprint_entitystart = undefined; + fileprint_chk( level.fileprint, "}" ); +#/ +} + +fileprint_end() +{ +/# + assert( !isDefined( level.fileprint_entitystart ) ); + saved = closefile( level.fileprint ); + if ( saved != 1 ) + { + println( "-----------------------------------" ); + println( " " ); + println( "file write failure" ); + println( "file with name: " + level.fileprint_filename ); + println( "make sure you checkout the file you are trying to save" ); + println( "note: USE P4 Search to find the file and check that one out" ); + println( " Do not checkin files in from the xenonoutput folder, " ); + println( " this is junctioned to the proper directory where you need to go" ); + println( "junctions looks like this" ); + println( " " ); + println( "..\\xenonOutput\\scriptdata\\createfx ..\\share\\raw\\maps\\createfx" ); + println( "..\\xenonOutput\\scriptdata\\createart ..\\share\\raw\\maps\\createart" ); + println( "..\\xenonOutput\\scriptdata\\vision ..\\share\\raw\\vision" ); + println( "..\\xenonOutput\\scriptdata\\scriptgen ..\\share\\raw\\maps\\scriptgen" ); + println( "..\\xenonOutput\\scriptdata\\zone_source ..\\xenon\\zone_source" ); + println( "..\\xenonOutput\\accuracy ..\\share\\raw\\accuracy" ); + println( "..\\xenonOutput\\scriptdata\\map_source ..\\map_source\\xenon_export" ); + println( " " ); + println( "-----------------------------------" ); + println( "File not saved( see console.log for info ) " ); + } + level.fileprint = undefined; + level.fileprint_filename = undefined; +#/ +} + +fileprint_radiant_vec( vector ) +{ +/# + string = "" + vector[ 0 ] + " " + vector[ 1 ] + " " + vector[ 2 ] + ""; + return string; +#/ +} + +is_mature() +{ + if ( level.onlinegame ) + { + return 1; + } + return getlocalprofileint( "cg_mature" ); +} + +is_german_build() +{ + if ( level.language == "german" ) + { + return 1; + } + return 0; +} + +is_gib_restricted_build() +{ + if ( getDvar( "language" ) == "japanese" ) + { + return 1; + } + return 0; +} + +is_true( check ) +{ + if ( isDefined( check ) ) + { + return check; + } +} + +is_false( check ) +{ + if ( isDefined( check ) ) + { + return !check; + } +} + +has_spawnflag( spawnflags ) +{ + if ( isDefined( self.spawnflags ) ) + { + return ( self.spawnflags & spawnflags ) == spawnflags; + } + return 0; +} + +clamp( val, val_min, val_max ) +{ + if ( val < val_min ) + { + val = val_min; + } + else + { + if ( val > val_max ) + { + val = val_max; + } + } + return val; +} + +linear_map( num, min_a, max_a, min_b, max_b ) +{ + return clamp( ( ( ( num - min_a ) / ( max_a - min_a ) ) * ( max_b - min_b ) ) + min_b, min_b, max_b ); +} + +lag( desired, curr, k, dt ) +{ + r = 0; + if ( ( k * dt ) >= 1 || k <= 0 ) + { + r = desired; + } + else + { + err = desired - curr; + r = curr + ( k * err * dt ); + } + return r; +} + +death_notify_wrapper( attacker, damagetype ) +{ + level notify( "face" ); + self notify( "death" ); +} + +damage_notify_wrapper( damage, attacker, direction_vec, point, type, modelname, tagname, partname, idflags ) +{ + level notify( "face" ); + self notify( "damage" ); +} + +explode_notify_wrapper() +{ + level notify( "face" ); + self notify( "explode" ); +} + +alert_notify_wrapper() +{ + level notify( "face" ); + self notify( "alert" ); +} + +shoot_notify_wrapper() +{ + level notify( "face" ); + self notify( "shoot" ); +} + +melee_notify_wrapper() +{ + level notify( "face" ); + self notify( "melee" ); +} + +isusabilityenabled() +{ + return !self.disabledusability; +} + +_disableusability() +{ + self.disabledusability++; + self disableusability(); +} + +_enableusability() +{ + self.disabledusability--; + +/# + assert( self.disabledusability >= 0 ); +#/ + if ( !self.disabledusability ) + { + self enableusability(); + } +} + +resetusability() +{ + self.disabledusability = 0; + self enableusability(); +} + +_disableweapon() +{ + if ( !isDefined( self.disabledweapon ) ) + { + self.disabledweapon = 0; + } + self.disabledweapon++; + self disableweapons(); +} + +_enableweapon() +{ + self.disabledweapon--; + +/# + assert( self.disabledweapon >= 0 ); +#/ + if ( !self.disabledweapon ) + { + self enableweapons(); + } +} + +isweaponenabled() +{ + return !self.disabledweapon; +} + +delay_thread( timer, func, param1, param2, param3, param4, param5, param6 ) +{ + self thread _delay_thread_proc( func, timer, param1, param2, param3, param4, param5, param6 ); +} + +_delay_thread_proc( func, timer, param1, param2, param3, param4, param5, param6 ) +{ + self endon( "death" ); + self endon( "disconnect" ); + wait timer; + single_thread( self, func, param1, param2, param3, param4, param5, param6 ); +} + +delay_notify( str_notify, n_delay, str_endon ) +{ +/# + assert( isDefined( str_notify ) ); +#/ +/# + assert( isDefined( n_delay ) ); +#/ + self thread _delay_notify_proc( str_notify, n_delay, str_endon ); +} + +_delay_notify_proc( str_notify, n_delay, str_endon ) +{ + self endon( "death" ); + if ( isDefined( str_endon ) ) + { + self endon( str_endon ); + } + if ( n_delay > 0 ) + { + wait n_delay; + } + self notify( str_notify ); +} + +notify_delay_with_ender( snotifystring, fdelay, ender ) +{ + if ( isDefined( ender ) ) + { + level endon( ender ); + } +/# + assert( isDefined( self ) ); +#/ +/# + assert( isDefined( snotifystring ) ); +#/ +/# + assert( isDefined( fdelay ) ); +#/ + self endon( "death" ); + if ( fdelay > 0 ) + { + wait fdelay; + } + if ( !isDefined( self ) ) + { + return; + } + self notify( snotifystring ); +} diff --git a/zm_transit_dr_patch/maps/mp/_art.gsc b/zm_transit_dr_patch/maps/mp/_art.gsc new file mode 100644 index 0000000..84313fc --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_art.gsc @@ -0,0 +1,497 @@ +#include maps/mp/_utility; +#include common_scripts/utility; + +main() +{ +/# + if ( getDvar( "scr_art_tweak" ) == "" || getDvar( "scr_art_tweak" ) == "0" ) + { + setdvar( "scr_art_tweak", 0 ); + } + if ( getDvar( "scr_dof_enable" ) == "" ) + { + setdvar( "scr_dof_enable", "1" ); + } + if ( getDvar( "scr_cinematic_autofocus" ) == "" ) + { + setdvar( "scr_cinematic_autofocus", "1" ); + } + if ( getDvar( "scr_art_visionfile" ) == "" && isDefined( level.script ) ) + { + setdvar( "scr_art_visionfile", level.script ); + } + if ( getDvar( "debug_reflection" ) == "" ) + { + setdvar( "debug_reflection", "0" ); + } + if ( getDvar( "debug_reflection_matte" ) == "" ) + { + setdvar( "debug_reflection_matte", "0" ); + } + if ( getDvar( "debug_color_pallete" ) == "" ) + { + setdvar( "debug_color_pallete", "0" ); + } + precachemodel( "test_sphere_lambert" ); + precachemodel( "test_macbeth_chart" ); + precachemodel( "test_macbeth_chart_unlit" ); + precachemodel( "test_sphere_silver" ); + level thread debug_reflection(); + level thread debug_reflection_matte(); + level thread debug_color_pallete(); +#/ + if ( !isDefined( level.dofdefault ) ) + { + level.dofdefault[ "nearStart" ] = 0; + level.dofdefault[ "nearEnd" ] = 1; + level.dofdefault[ "farStart" ] = 8000; + level.dofdefault[ "farEnd" ] = 10000; + level.dofdefault[ "nearBlur" ] = 6; + level.dofdefault[ "farBlur" ] = 0; + } + level.curdof = ( level.dofdefault[ "farStart" ] - level.dofdefault[ "nearEnd" ] ) / 2; +/# + thread tweakart(); +#/ + if ( !isDefined( level.script ) ) + { + level.script = tolower( getDvar( "mapname" ) ); + } +} + +artfxprintln( file, string ) +{ +/# + if ( file == -1 ) + { + return; + } + fprintln( file, string ); +#/ +} + +strtok_loc( string, par1 ) +{ + stringlist = []; + indexstring = ""; + i = 0; + while ( i < string.size ) + { + if ( string[ i ] == " " ) + { + stringlist[ stringlist.size ] = indexstring; + indexstring = ""; + i++; + continue; + } + else + { + indexstring += string[ i ]; + } + i++; + } + if ( indexstring.size ) + { + stringlist[ stringlist.size ] = indexstring; + } + return stringlist; +} + +setfogsliders() +{ + fogall = strtok_loc( getDvar( "g_fogColorReadOnly" ), " " ); + red = fogall[ 0 ]; + green = fogall[ 1 ]; + blue = fogall[ 2 ]; + halfplane = getDvar( "g_fogHalfDistReadOnly" ); + nearplane = getDvar( "g_fogStartDistReadOnly" ); + if ( isDefined( red ) && isDefined( green ) || !isDefined( blue ) && !isDefined( halfplane ) ) + { + red = 1; + green = 1; + blue = 1; + halfplane = 10000001; + nearplane = 10000000; + } + setdvar( "scr_fog_exp_halfplane", halfplane ); + setdvar( "scr_fog_nearplane", nearplane ); + setdvar( "scr_fog_color", ( red + " " ) + green + " " + blue ); +} + +tweakart() +{ +/# + if ( !isDefined( level.tweakfile ) ) + { + level.tweakfile = 0; + } + if ( getDvar( "scr_fog_baseheight" ) == "" ) + { + setdvar( "scr_fog_exp_halfplane", "500" ); + setdvar( "scr_fog_exp_halfheight", "500" ); + setdvar( "scr_fog_nearplane", "0" ); + setdvar( "scr_fog_baseheight", "0" ); + } + setdvar( "scr_fog_fraction", "1.0" ); + setdvar( "scr_art_dump", "0" ); + setdvar( "scr_art_sun_fog_dir_set", "0" ); + setdvar( "scr_dof_nearStart", level.dofdefault[ "nearStart" ] ); + setdvar( "scr_dof_nearEnd", level.dofdefault[ "nearEnd" ] ); + setdvar( "scr_dof_farStart", level.dofdefault[ "farStart" ] ); + setdvar( "scr_dof_farEnd", level.dofdefault[ "farEnd" ] ); + setdvar( "scr_dof_nearBlur", level.dofdefault[ "nearBlur" ] ); + setdvar( "scr_dof_farBlur", level.dofdefault[ "farBlur" ] ); + file = undefined; + filename = undefined; + tweak_toggle = 1; + for ( ;; ) + { + while ( getDvarInt( "scr_art_tweak" ) == 0 ) + { + tweak_toggle = 1; + wait 0,05; + } + if ( tweak_toggle ) + { + tweak_toggle = 0; + fogsettings = getfogsettings(); + setdvar( "scr_fog_nearplane", fogsettings[ 0 ] ); + setdvar( "scr_fog_exp_halfplane", fogsettings[ 1 ] ); + setdvar( "scr_fog_exp_halfheight", fogsettings[ 3 ] ); + setdvar( "scr_fog_baseheight", fogsettings[ 2 ] ); + setdvar( "scr_fog_color", fogsettings[ 4 ] + " " + fogsettings[ 5 ] + " " + fogsettings[ 6 ] ); + setdvar( "scr_fog_color_scale", fogsettings[ 7 ] ); + setdvar( "scr_sun_fog_color", fogsettings[ 8 ] + " " + fogsettings[ 9 ] + " " + fogsettings[ 10 ] ); + level.fogsundir = []; + level.fogsundir[ 0 ] = fogsettings[ 11 ]; + level.fogsundir[ 1 ] = fogsettings[ 12 ]; + level.fogsundir[ 2 ] = fogsettings[ 13 ]; + setdvar( "scr_sun_fog_start_angle", fogsettings[ 14 ] ); + setdvar( "scr_sun_fog_end_angle", fogsettings[ 15 ] ); + setdvar( "scr_fog_max_opacity", fogsettings[ 16 ] ); + } + level.fogexphalfplane = getDvarFloat( "scr_fog_exp_halfplane" ); + level.fogexphalfheight = getDvarFloat( "scr_fog_exp_halfheight" ); + level.fognearplane = getDvarFloat( "scr_fog_nearplane" ); + level.fogbaseheight = getDvarFloat( "scr_fog_baseheight" ); + level.fogcolorred = getDvarColorRed( "scr_fog_color" ); + level.fogcolorgreen = getDvarColorGreen( "scr_fog_color" ); + level.fogcolorblue = getDvarColorBlue( "scr_fog_color" ); + level.fogcolorscale = getDvarFloat( "scr_fog_color_scale" ); + level.sunfogcolorred = getDvarColorRed( "scr_sun_fog_color" ); + level.sunfogcolorgreen = getDvarColorGreen( "scr_sun_fog_color" ); + level.sunfogcolorblue = getDvarColorBlue( "scr_sun_fog_color" ); + level.sunstartangle = getDvarFloat( "scr_sun_fog_start_angle" ); + level.sunendangle = getDvarFloat( "scr_sun_fog_end_angle" ); + level.fogmaxopacity = getDvarFloat( "scr_fog_max_opacity" ); + if ( getDvarInt( "scr_art_sun_fog_dir_set" ) ) + { + setdvar( "scr_art_sun_fog_dir_set", "0" ); + println( "Setting sun fog direction to facing of player" ); + players = get_players(); + dir = vectornormalize( anglesToForward( players[ 0 ] getplayerangles() ) ); + level.fogsundir = []; + level.fogsundir[ 0 ] = dir[ 0 ]; + level.fogsundir[ 1 ] = dir[ 1 ]; + level.fogsundir[ 2 ] = dir[ 2 ]; + } + fovslidercheck(); + dumpsettings(); + if ( !getDvarInt( "scr_fog_disable" ) ) + { + if ( !isDefined( level.fogsundir ) ) + { + level.fogsundir = []; + level.fogsundir[ 0 ] = 1; + level.fogsundir[ 1 ] = 0; + level.fogsundir[ 2 ] = 0; + } + setvolfog( level.fognearplane, level.fogexphalfplane, level.fogexphalfheight, level.fogbaseheight, level.fogcolorred, level.fogcolorgreen, level.fogcolorblue, level.fogcolorscale, level.sunfogcolorred, level.sunfogcolorgreen, level.sunfogcolorblue, level.fogsundir[ 0 ], level.fogsundir[ 1 ], level.fogsundir[ 2 ], level.sunstartangle, level.sunendangle, 0, level.fogmaxopacity ); + } + else + { + setexpfog( 100000000, 100000001, 0, 0, 0, 0 ); + } + wait 0,1; +#/ + } +} + +fovslidercheck() +{ + if ( level.dofdefault[ "nearStart" ] >= level.dofdefault[ "nearEnd" ] ) + { + level.dofdefault[ "nearStart" ] = level.dofdefault[ "nearEnd" ] - 1; + setdvar( "scr_dof_nearStart", level.dofdefault[ "nearStart" ] ); + } + if ( level.dofdefault[ "nearEnd" ] <= level.dofdefault[ "nearStart" ] ) + { + level.dofdefault[ "nearEnd" ] = level.dofdefault[ "nearStart" ] + 1; + setdvar( "scr_dof_nearEnd", level.dofdefault[ "nearEnd" ] ); + } + if ( level.dofdefault[ "farStart" ] >= level.dofdefault[ "farEnd" ] ) + { + level.dofdefault[ "farStart" ] = level.dofdefault[ "farEnd" ] - 1; + setdvar( "scr_dof_farStart", level.dofdefault[ "farStart" ] ); + } + if ( level.dofdefault[ "farEnd" ] <= level.dofdefault[ "farStart" ] ) + { + level.dofdefault[ "farEnd" ] = level.dofdefault[ "farStart" ] + 1; + setdvar( "scr_dof_farEnd", level.dofdefault[ "farEnd" ] ); + } + if ( level.dofdefault[ "farBlur" ] >= level.dofdefault[ "nearBlur" ] ) + { + level.dofdefault[ "farBlur" ] = level.dofdefault[ "nearBlur" ] - 0,1; + setdvar( "scr_dof_farBlur", level.dofdefault[ "farBlur" ] ); + } + if ( level.dofdefault[ "farStart" ] <= level.dofdefault[ "nearEnd" ] ) + { + level.dofdefault[ "farStart" ] = level.dofdefault[ "nearEnd" ] + 1; + setdvar( "scr_dof_farStart", level.dofdefault[ "farStart" ] ); + } +} + +dumpsettings() +{ +/# + if ( getDvar( "scr_art_dump" ) != "0" ) + { + println( "\tstart_dist = " + level.fognearplane + ";" ); + println( "\thalf_dist = " + level.fogexphalfplane + ";" ); + println( "\thalf_height = " + level.fogexphalfheight + ";" ); + println( "\tbase_height = " + level.fogbaseheight + ";" ); + println( "\tfog_r = " + level.fogcolorred + ";" ); + println( "\tfog_g = " + level.fogcolorgreen + ";" ); + println( "\tfog_b = " + level.fogcolorblue + ";" ); + println( "\tfog_scale = " + level.fogcolorscale + ";" ); + println( "\tsun_col_r = " + level.sunfogcolorred + ";" ); + println( "\tsun_col_g = " + level.sunfogcolorgreen + ";" ); + println( "\tsun_col_b = " + level.sunfogcolorblue + ";" ); + println( "\tsun_dir_x = " + level.fogsundir[ 0 ] + ";" ); + println( "\tsun_dir_y = " + level.fogsundir[ 1 ] + ";" ); + println( "\tsun_dir_z = " + level.fogsundir[ 2 ] + ";" ); + println( "\tsun_start_ang = " + level.sunstartangle + ";" ); + println( "\tsun_stop_ang = " + level.sunendangle + ";" ); + println( "\ttime = 0;" ); + println( "\tmax_fog_opacity = " + level.fogmaxopacity + ";" ); + println( "" ); + println( "\tsetVolFog(start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale," ); + println( "\t\tsun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, " ); + println( "\t\tsun_stop_ang, time, max_fog_opacity);" ); + setdvar( "scr_art_dump", "0" ); +#/ + } +} + +debug_reflection() +{ +/# + level.debug_reflection = 0; + while ( 1 ) + { + wait 0,1; + if ( getDvar( "debug_reflection" ) == "2" || level.debug_reflection != 2 && getDvar( "debug_reflection" ) == "3" && level.debug_reflection != 3 ) + { + remove_reflection_objects(); + if ( getDvar( "debug_reflection" ) == "2" ) + { + create_reflection_objects(); + level.debug_reflection = 2; + } + else + { + create_reflection_objects(); + create_reflection_object(); + level.debug_reflection = 3; + } + continue; + } + else + { + if ( getDvar( "debug_reflection" ) == "1" && level.debug_reflection != 1 ) + { + setdvar( "debug_reflection_matte", "0" ); + setdvar( "debug_color_pallete", "0" ); + remove_reflection_objects(); + create_reflection_object(); + level.debug_reflection = 1; + break; + } + else + { + if ( getDvar( "debug_reflection" ) == "0" && level.debug_reflection != 0 ) + { + remove_reflection_objects(); + level.debug_reflection = 0; + } + } + } +#/ + } +} + +remove_reflection_objects() +{ +/# + if ( level.debug_reflection != 2 && level.debug_reflection == 3 && isDefined( level.debug_reflection_objects ) ) + { + i = 0; + while ( i < level.debug_reflection_objects.size ) + { + level.debug_reflection_objects[ i ] delete(); + i++; + } + level.debug_reflection_objects = undefined; + } + if ( level.debug_reflection != 1 && level.debug_reflection != 3 && level.debug_reflection_matte != 1 || level.debug_color_pallete == 1 && level.debug_color_pallete == 2 ) + { + if ( isDefined( level.debug_reflectionobject ) ) + { + level.debug_reflectionobject delete(); +#/ + } + } +} + +create_reflection_objects() +{ +/# + reflection_locs = getreflectionlocs(); + i = 0; + while ( i < reflection_locs.size ) + { + level.debug_reflection_objects[ i ] = spawn( "script_model", reflection_locs[ i ] ); + level.debug_reflection_objects[ i ] setmodel( "test_sphere_silver" ); + i++; +#/ + } +} + +create_reflection_object( model ) +{ + if ( !isDefined( model ) ) + { + model = "test_sphere_silver"; + } +/# + if ( isDefined( level.debug_reflectionobject ) ) + { + level.debug_reflectionobject delete(); + } + players = get_players(); + player = players[ 0 ]; + level.debug_reflectionobject = spawn( "script_model", player geteye() + vectorScale( anglesToForward( player.angles ), 100 ) ); + level.debug_reflectionobject setmodel( model ); + level.debug_reflectionobject.origin = player geteye() + vectorScale( anglesToForward( player getplayerangles() ), 100 ); + level.debug_reflectionobject linkto( player ); + thread debug_reflection_buttons(); +#/ +} + +debug_reflection_buttons() +{ +/# + level notify( "new_reflection_button_running" ); + level endon( "new_reflection_button_running" ); + level.debug_reflectionobject endon( "death" ); + offset = 100; + lastoffset = offset; + while ( getDvar( "debug_reflection" ) != "1" && getDvar( "debug_reflection" ) != "3" && getDvar( "debug_reflection_matte" ) != "1" || getDvar( "debug_color_pallete" ) == "1" && getDvar( "debug_color_pallete" ) == "2" ) + { + players = get_players(); + if ( players[ 0 ] buttonpressed( "BUTTON_X" ) ) + { + offset += 50; + } + if ( players[ 0 ] buttonpressed( "BUTTON_Y" ) ) + { + offset -= 50; + } + if ( offset > 1000 ) + { + offset = 1000; + } + if ( offset < 64 ) + { + offset = 64; + } + level.debug_reflectionobject unlink(); + level.debug_reflectionobject.origin = players[ 0 ] geteye() + vectorScale( anglesToForward( players[ 0 ] getplayerangles() ), offset ); + temp_angles = vectorToAngle( players[ 0 ].origin - level.debug_reflectionobject.origin ); + level.debug_reflectionobject.angles = ( 0, temp_angles[ 1 ], 0 ); + lastoffset = offset; + line( level.debug_reflectionobject.origin, getreflectionorigin( level.debug_reflectionobject.origin ), ( 1, 0, 0 ), 1, 1 ); + wait 0,05; + if ( isDefined( level.debug_reflectionobject ) ) + { + level.debug_reflectionobject linkto( players[ 0 ] ); + } +#/ + } +} + +debug_reflection_matte() +{ +/# + level.debug_reflection_matte = 0; + while ( 1 ) + { + wait 0,1; + if ( getDvar( "debug_reflection_matte" ) == "1" && level.debug_reflection_matte != 1 ) + { + setdvar( "debug_reflection", "0" ); + setdvar( "debug_color_pallete", "0" ); + remove_reflection_objects(); + create_reflection_object( "test_sphere_lambert" ); + level.debug_reflection_matte = 1; + continue; + } + else + { + if ( getDvar( "debug_reflection_matte" ) == "0" && level.debug_reflection_matte != 0 ) + { + remove_reflection_objects(); + level.debug_reflection_matte = 0; + } + } +#/ + } +} + +debug_color_pallete() +{ +/# + level.debug_color_pallete = 0; + while ( 1 ) + { + wait 0,1; + if ( getDvar( "debug_color_pallete" ) == "1" && level.debug_color_pallete != 1 ) + { + setdvar( "debug_reflection", "0" ); + setdvar( "debug_reflection_matte", "0" ); + remove_reflection_objects(); + create_reflection_object( "test_macbeth_chart" ); + level.debug_color_pallete = 1; + continue; + } + else + { + if ( getDvar( "debug_color_pallete" ) == "2" && level.debug_color_pallete != 2 ) + { + remove_reflection_objects(); + create_reflection_object( "test_macbeth_chart_unlit" ); + level.debug_color_pallete = 2; + break; + } + else + { + if ( getDvar( "debug_color_pallete" ) == "0" && level.debug_color_pallete != 0 ) + { + remove_reflection_objects(); + level.debug_color_pallete = 0; + } + } + } +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/_audio.gsc b/zm_transit_dr_patch/maps/mp/_audio.gsc new file mode 100644 index 0000000..bbfcf66 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_audio.gsc @@ -0,0 +1,150 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ +} + +wait_until_first_player() +{ + players = get_players(); + if ( !isDefined( players[ 0 ] ) ) + { + level waittill( "first_player_ready" ); + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] thread monitor_player_sprint(); + i++; + } +} + +stand_think( trig ) +{ + killtext = "kill_stand_think" + trig getentitynumber(); + self endon( "disconnect" ); + self endon( "death" ); + self endon( killtext ); + while ( 1 ) + { + if ( self.player_is_moving ) + { + trig playsound( trig.script_label ); + } + wait 1; + } +} + +monitor_player_sprint() +{ + self endon( "disconnect" ); + self thread monitor_player_movement(); + self._is_sprinting = 0; + while ( 1 ) + { + self waittill( "sprint_begin" ); + self._is_sprinting = 1; + self waittill( "sprint_end" ); + self._is_sprinting = 0; + } +} + +monitor_player_movement() +{ + self endon( "disconnect" ); + while ( 1 ) + { + org_1 = self.origin; + wait 1; + org_2 = self.origin; + distancemoved = distancesquared( org_1, org_2 ); + if ( distancemoved > 4096 ) + { + self.player_is_moving = 1; + continue; + } + else + { + self.player_is_moving = 0; + } + } +} + +thread_enter_exit_sound( trig ) +{ + self endon( "death" ); + self endon( "disconnect" ); + trig.touchingplayers[ self getentitynumber() ] = 1; + if ( isDefined( trig.script_sound ) && trig.script_activated && self._is_sprinting ) + { + self playsound( trig.script_sound ); + } + self thread stand_think( trig ); + while ( self istouching( trig ) ) + { + wait 0,1; + } + self notify( "kill_stand_think" + trig getentitynumber() ); + self playsound( trig.script_noteworthy ); + trig.touchingplayers[ self getentitynumber() ] = 0; +} + +thread_step_trigger() +{ + if ( !isDefined( self.script_activated ) ) + { + self.script_activated = 1; + } + while ( !isDefined( self.touchingplayers ) ) + { + self.touchingplayers = []; + i = 0; + while ( i < 4 ) + { + self.touchingplayers[ i ] = 0; + i++; + } + } + while ( 1 ) + { + self waittill( "trigger", who ); + if ( self.touchingplayers[ who getentitynumber() ] == 0 ) + { + who thread thread_enter_exit_sound( self ); + } + } +} + +disable_bump_trigger( triggername ) +{ + triggers = getentarray( "audio_bump_trigger", "targetname" ); + while ( isDefined( triggers ) ) + { + i = 0; + while ( i < triggers.size ) + { + if ( isDefined( triggers[ i ].script_label ) && triggers[ i ].script_label == triggername ) + { + triggers[ i ].script_activated = 0; + } + i++; + } + } +} + +get_player_index_number( player ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] == player ) + { + return i; + } + i++; + } + return 1; +} diff --git a/zm_transit_dr_patch/maps/mp/_ballistic_knife.gsc b/zm_transit_dr_patch/maps/mp/_ballistic_knife.gsc new file mode 100644 index 0000000..8b4286c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_ballistic_knife.gsc @@ -0,0 +1,273 @@ +#include maps/mp/_challenges; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + precachemodel( "t6_wpn_ballistic_knife_projectile" ); + precachemodel( "t6_wpn_ballistic_knife_blade_retrieve" ); +} + +onspawn( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + level endon( "game_ended" ); + self waittill( "stationary", endpos, normal, angles, attacker, prey, bone ); + isfriendly = 0; + if ( isDefined( endpos ) ) + { + retrievable_model = spawn( "script_model", endpos ); + retrievable_model setmodel( "t6_wpn_ballistic_knife_projectile" ); + retrievable_model setteam( player.team ); + retrievable_model setowner( player ); + retrievable_model.owner = player; + retrievable_model.angles = angles; + retrievable_model.name = watcher.weapon; + retrievable_model.targetname = "sticky_weapon"; + if ( isDefined( prey ) ) + { + if ( level.teambased && isplayer( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + else + { + if ( level.teambased && isai( prey ) && player.team == prey.aiteam ) + { + isfriendly = 1; + } + } + if ( !isfriendly ) + { + if ( isalive( prey ) ) + { + retrievable_model droptoground( retrievable_model.origin, 80 ); + } + else + { + retrievable_model linkto( prey, bone ); + } + } + else + { + if ( isfriendly ) + { + retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) ); + normal = ( 0, 0, 1 ); + } + } + } + watcher.objectarray[ watcher.objectarray.size ] = retrievable_model; + if ( isfriendly ) + { + retrievable_model waittill( "stationary" ); + } + retrievable_model thread dropknivestoground(); + if ( isfriendly ) + { + player notify( "ballistic_knife_stationary" ); + } + else + { + player notify( "ballistic_knife_stationary" ); + } + retrievable_model thread wait_to_show_glowing_model( prey ); + } +} + +wait_to_show_glowing_model( prey ) +{ + level endon( "game_ended" ); + self endon( "death" ); + glowing_retrievable_model = spawn( "script_model", self.origin ); + self.glowing_model = glowing_retrievable_model; + glowing_retrievable_model.angles = self.angles; + glowing_retrievable_model linkto( self ); + if ( isDefined( prey ) && !isalive( prey ) ) + { + wait 2; + } + glowing_retrievable_model setmodel( "t6_wpn_ballistic_knife_blade_retrieve" ); +} + +watch_shutdown() +{ + pickuptrigger = self.pickuptrigger; + glowing_model = self.glowing_model; + self waittill( "death" ); + if ( isDefined( pickuptrigger ) ) + { + pickuptrigger delete(); + } + if ( isDefined( glowing_model ) ) + { + glowing_model delete(); + } +} + +onspawnretrievetrigger( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + level endon( "game_ended" ); + player waittill( "ballistic_knife_stationary", retrievable_model, normal, prey ); + if ( !isDefined( retrievable_model ) ) + { + return; + } + vec_scale = 10; + trigger_pos = []; + if ( isDefined( prey ) || isplayer( prey ) && isai( prey ) ) + { + trigger_pos[ 0 ] = prey.origin[ 0 ]; + trigger_pos[ 1 ] = prey.origin[ 1 ]; + trigger_pos[ 2 ] = prey.origin[ 2 ] + vec_scale; + } + else + { + trigger_pos[ 0 ] = retrievable_model.origin[ 0 ] + ( vec_scale * normal[ 0 ] ); + trigger_pos[ 1 ] = retrievable_model.origin[ 1 ] + ( vec_scale * normal[ 1 ] ); + trigger_pos[ 2 ] = retrievable_model.origin[ 2 ] + ( vec_scale * normal[ 2 ] ); + } + trigger_pos[ 2 ] -= 50; + pickup_trigger = spawn( "trigger_radius", ( trigger_pos[ 0 ], trigger_pos[ 1 ], trigger_pos[ 2 ] ), 0, 50, 100 ); + pickup_trigger.owner = player; + retrievable_model.pickuptrigger = pickup_trigger; + pickup_trigger enablelinkto(); + if ( isDefined( prey ) ) + { + pickup_trigger linkto( prey ); + } + else + { + pickup_trigger linkto( retrievable_model ); + } + retrievable_model thread watch_use_trigger( pickup_trigger, retrievable_model, ::pick_up, watcher.pickupsoundplayer, watcher.pickupsound ); + retrievable_model thread watch_shutdown(); +} + +watch_use_trigger( trigger, model, callback, playersoundonuse, npcsoundonuse ) +{ + self endon( "death" ); + self endon( "delete" ); + level endon( "game_ended" ); + max_ammo = weaponmaxammo( "knife_ballistic_mp" ) + 1; + while ( 1 ) + { + trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + if ( isDefined( trigger.triggerteam ) && player.team != trigger.triggerteam ) + { + continue; + } + if ( isDefined( trigger.claimedby ) && player != trigger.claimedby ) + { + continue; + } + while ( !player hasweapon( "knife_ballistic_mp" ) ) + { + continue; + } + ammo_stock = player getweaponammostock( "knife_ballistic_mp" ); + ammo_clip = player getweaponammoclip( "knife_ballistic_mp" ); + current_weapon = player getcurrentweapon(); + total_ammo = ammo_stock + ammo_clip; + hasreloaded = 1; + if ( total_ammo > 0 && ammo_stock == total_ammo && current_weapon == "knife_ballistic_mp" ) + { + hasreloaded = 0; + } + if ( total_ammo >= max_ammo || !hasreloaded ) + { + continue; + } + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + self thread [[ callback ]]( player ); + return; + } +} + +pick_up( player ) +{ + self destroy_ent(); + current_weapon = player getcurrentweapon(); + player maps/mp/_challenges::pickedupballisticknife(); + if ( current_weapon != "knife_ballistic_mp" ) + { + clip_ammo = player getweaponammoclip( "knife_ballistic_mp" ); + if ( !clip_ammo ) + { + player setweaponammoclip( "knife_ballistic_mp", 1 ); + } + else + { + new_ammo_stock = player getweaponammostock( "knife_ballistic_mp" ) + 1; + player setweaponammostock( "knife_ballistic_mp", new_ammo_stock ); + } + } + else + { + new_ammo_stock = player getweaponammostock( "knife_ballistic_mp" ) + 1; + player setweaponammostock( "knife_ballistic_mp", new_ammo_stock ); + } +} + +destroy_ent() +{ + if ( isDefined( self ) ) + { + pickuptrigger = self.pickuptrigger; + if ( isDefined( pickuptrigger ) ) + { + pickuptrigger delete(); + } + if ( isDefined( self.glowing_model ) ) + { + self.glowing_model delete(); + } + self delete(); + } +} + +dropknivestoground() +{ + self endon( "death" ); + for ( ;; ) + { + level waittill( "drop_objects_to_ground", origin, radius ); + self droptoground( origin, radius ); + } +} + +droptoground( origin, radius ) +{ + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread updateretrievetrigger(); + } +} + +updateretrievetrigger() +{ + self endon( "death" ); + self waittill( "stationary" ); + trigger = self.pickuptrigger; + trigger.origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 10 ); + trigger linkto( self ); +} diff --git a/zm_transit_dr_patch/maps/mp/_bb.gsc b/zm_transit_dr_patch/maps/mp/_bb.gsc new file mode 100644 index 0000000..d24054b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_bb.gsc @@ -0,0 +1,87 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connected", player ); + player thread onplayerspawned(); + player thread onplayerdeath(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + self._bbdata = []; + for ( ;; ) + { + self waittill( "spawned_player" ); + self._bbdata[ "score" ] = 0; + self._bbdata[ "momentum" ] = 0; + self._bbdata[ "spawntime" ] = getTime(); + self._bbdata[ "shots" ] = 0; + self._bbdata[ "hits" ] = 0; + } +} + +onplayerdisconnect() +{ + for ( ;; ) + { + self waittill( "disconnect" ); + self commitspawndata(); + return; + } +} + +onplayerdeath() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "death" ); + self commitspawndata(); + } +} + +commitspawndata() +{ +/# + assert( isDefined( self._bbdata ) ); +#/ + if ( !isDefined( self._bbdata ) ) + { + return; + } + bbprint( "mpplayerlives", "gametime %d spawnid %d lifescore %d lifemomentum %d lifetime %d name %s", getTime(), getplayerspawnid( self ), self._bbdata[ "score" ], self._bbdata[ "momentum" ], getTime() - self._bbdata[ "spawntime" ], self.name ); +} + +commitweapondata( spawnid, currentweapon, time0 ) +{ +/# + assert( isDefined( self._bbdata ) ); +#/ + if ( !isDefined( self._bbdata ) ) + { + return; + } + time1 = getTime(); + bbprint( "mpweapons", "spawnid %d name %s duration %d shots %d hits %d", spawnid, currentweapon, time1 - time0, self._bbdata[ "shots" ], self._bbdata[ "hits" ] ); + self._bbdata[ "shots" ] = 0; + self._bbdata[ "hits" ] = 0; +} + +bbaddtostat( statname, delta ) +{ + if ( isDefined( self._bbdata ) && isDefined( self._bbdata[ statname ] ) ) + { + self._bbdata[ statname ] += delta; + } +} diff --git a/zm_transit_dr_patch/maps/mp/_busing.gsc b/zm_transit_dr_patch/maps/mp/_busing.gsc new file mode 100644 index 0000000..75250e7 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_busing.gsc @@ -0,0 +1,19 @@ +#include maps/mp/_utility; + +businit() +{ +/# + assert( level.clientscripts ); +#/ + level.busstate = ""; + registerclientsys( "busCmd" ); +} + +setbusstate( state ) +{ + if ( level.busstate != state ) + { + setclientsysstate( "busCmd", state ); + } + level.busstate = state; +} diff --git a/zm_transit_dr_patch/maps/mp/_challenges.gsc b/zm_transit_dr_patch/maps/mp/_challenges.gsc new file mode 100644 index 0000000..cd9dc43 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_challenges.gsc @@ -0,0 +1,2109 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + if ( !isDefined( level.challengescallbacks ) ) + { + level.challengescallbacks = []; + } + waittillframeend; + if ( canprocesschallenges() ) + { + registerchallengescallback( "playerKilled", ::challengekills ); + registerchallengescallback( "gameEnd", ::challengegameend ); + registerchallengescallback( "roundEnd", ::challengeroundend ); + } + level thread onplayerconnect(); + _a24 = level.teams; + _k24 = getFirstArrayKey( _a24 ); + while ( isDefined( _k24 ) ) + { + team = _a24[ _k24 ]; + initteamchallenges( team ); + _k24 = getNextArrayKey( _a24, _k24 ); + } +} + +addflyswatterstat( weapon, aircraft ) +{ + if ( !isDefined( self.pers[ "flyswattercount" ] ) ) + { + self.pers[ "flyswattercount" ] = 0; + } + self addweaponstat( weapon, "destroyed_aircraft", 1 ); + self.pers[ "flyswattercount" ]++; + if ( self.pers[ "flyswattercount" ] == 5 ) + { + self addweaponstat( weapon, "destroyed_5_aircraft", 1 ); + } + if ( isDefined( aircraft ) && isDefined( aircraft.birthtime ) ) + { + if ( ( getTime() - aircraft.birthtime ) < 20000 ) + { + self addweaponstat( weapon, "destroyed_aircraft_under20s", 1 ); + } + } + if ( !isDefined( self.destroyedaircrafttime ) ) + { + self.destroyedaircrafttime = []; + } + if ( isDefined( self.destroyedaircrafttime[ weapon ] ) && ( getTime() - self.destroyedaircrafttime[ weapon ] ) < 10000 ) + { + self addweaponstat( weapon, "destroyed_2aircraft_quickly", 1 ); + } + else + { + self.destroyedaircrafttime[ weapon ] = getTime(); + } +} + +canprocesschallenges() +{ +/# + if ( getdvarintdefault( "scr_debug_challenges", 0 ) ) + { + return 1; +#/ + } + if ( level.rankedmatch || level.wagermatch ) + { + return 1; + } + return 0; +} + +initteamchallenges( team ) +{ + if ( !isDefined( game[ "challenge" ] ) ) + { + game[ "challenge" ] = []; + } + if ( !isDefined( game[ "challenge" ][ team ] ) ) + { + game[ "challenge" ][ team ] = []; + game[ "challenge" ][ team ][ "plantedBomb" ] = 0; + game[ "challenge" ][ team ][ "destroyedBombSite" ] = 0; + game[ "challenge" ][ team ][ "capturedFlag" ] = 0; + } + game[ "challenge" ][ team ][ "allAlive" ] = 1; +} + +registerchallengescallback( callback, func ) +{ + if ( !isDefined( level.challengescallbacks[ callback ] ) ) + { + level.challengescallbacks[ callback ] = []; + } + level.challengescallbacks[ callback ][ level.challengescallbacks[ callback ].size ] = func; +} + +dochallengecallback( callback, data ) +{ + if ( !isDefined( level.challengescallbacks ) ) + { + return; + } + if ( !isDefined( level.challengescallbacks[ callback ] ) ) + { + return; + } + if ( isDefined( data ) ) + { + i = 0; + while ( i < level.challengescallbacks[ callback ].size ) + { + thread [[ level.challengescallbacks[ callback ][ i ] ]]( data ); + i++; + } + } + else i = 0; + while ( i < level.challengescallbacks[ callback ].size ) + { + thread [[ level.challengescallbacks[ callback ][ i ] ]](); + i++; + } +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connected", player ); + player thread initchallengedata(); + player thread spawnwatcher(); + player thread monitorreloads(); + } +} + +monitorreloads() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "reload" ); + currentweapon = self getcurrentweapon(); + while ( currentweapon == "none" ) + { + continue; + } + time = getTime(); + self.lastreloadtime = time; + if ( currentweapon == "crossbow_mp" ) + { + self.crossbowclipkillcount = 0; + } + if ( weaponhasattachment( currentweapon, "dualclip" ) ) + { + self thread reloadthenkill( currentweapon ); + } + } +} + +reloadthenkill( reloadweapon ) +{ + self endon( "disconnect" ); + self endon( "death" ); + self endon( "reloadThenKillTimedOut" ); + self notify( "reloadThenKillStart" ); + self endon( "reloadThenKillStart" ); + self thread reloadthenkilltimeout( 5 ); + for ( ;; ) + { + self waittill( "killed_enemy_player", time, weapon ); + if ( reloadweapon == weapon ) + { + self addplayerstat( "reload_then_kill_dualclip", 1 ); + } + } +} + +reloadthenkilltimeout( time ) +{ + self endon( "disconnect" ); + self endon( "death" ); + self endon( "reloadThenKillStart" ); + wait time; + self notify( "reloadThenKillTimedOut" ); +} + +initchallengedata() +{ + self.pers[ "bulletStreak" ] = 0; + self.pers[ "lastBulletKillTime" ] = 0; + self.pers[ "stickExplosiveKill" ] = 0; + self.pers[ "carepackagesCalled" ] = 0; + self.explosiveinfo = []; +} + +isdamagefromplayercontrolledaitank( eattacker, einflictor, sweapon ) +{ + if ( sweapon == "ai_tank_drone_gun_mp" ) + { + if ( isDefined( eattacker ) && isDefined( eattacker.remoteweapon ) && isDefined( einflictor ) ) + { + if ( isDefined( einflictor.controlled ) && einflictor.controlled == 1 ) + { + if ( eattacker.remoteweapon == einflictor ) + { + return 1; + } + } + } + } + else + { + if ( sweapon == "ai_tank_drone_rocket_mp" ) + { + if ( isDefined( einflictor ) && !isDefined( einflictor.from_ai ) ) + { + return 1; + } + } + } + return 0; +} + +isdamagefromplayercontrolledsentry( eattacker, einflictor, sweapon ) +{ + if ( sweapon == "auto_gun_turret_mp" ) + { + if ( isDefined( eattacker ) && isDefined( eattacker.remoteweapon ) && isDefined( einflictor ) ) + { + if ( eattacker.remoteweapon == einflictor ) + { + if ( isDefined( einflictor.controlled ) && einflictor.controlled == 1 ) + { + return 1; + } + } + } + } + return 0; +} + +challengekills( data, time ) +{ + victim = data.victim; + player = data.attacker; + attacker = data.attacker; + time = data.time; + victim = data.victim; + weapon = data.sweapon; + time = data.time; + inflictor = data.einflictor; + meansofdeath = data.smeansofdeath; + wasplanting = data.wasplanting; + wasdefusing = data.wasdefusing; + lastweaponbeforetoss = data.lastweaponbeforetoss; + ownerweaponatlaunch = data.ownerweaponatlaunch; + if ( !isDefined( data.sweapon ) ) + { + return; + } + if ( !isDefined( player ) || !isplayer( player ) ) + { + return; + } + weaponclass = getweaponclass( weapon ); + game[ "challenge" ][ victim.team ][ "allAlive" ] = 0; + if ( level.teambased ) + { + if ( player.team == victim.team ) + { + return; + } + } + else + { + if ( player == victim ) + { + return; + } + } + if ( isdamagefromplayercontrolledaitank( player, inflictor, weapon ) == 1 ) + { + player addplayerstat( "kill_with_remote_control_ai_tank", 1 ); + } + if ( weapon == "auto_gun_turret_mp" ) + { + if ( isDefined( inflictor ) ) + { + if ( !isDefined( inflictor.killcount ) ) + { + inflictor.killcount = 0; + } + inflictor.killcount++; + if ( inflictor.killcount >= 5 ) + { + inflictor.killcount = 0; + player addplayerstat( "killstreak_5_with_sentry_gun", 1 ); + } + } + if ( isdamagefromplayercontrolledsentry( player, inflictor, weapon ) == 1 ) + { + player addplayerstat( "kill_with_remote_control_sentry_gun", 1 ); + } + } + if ( weapon == "minigun_mp" ) + { + player.deathmachinekills++; + if ( player.deathmachinekills >= 5 ) + { + player.deathmachinekills = 0; + player addplayerstat( "killstreak_5_with_death_machine", 1 ); + } + } + if ( data.waslockingon == 1 && weapon == "chopper_minigun_mp" ) + { + player addplayerstat( "kill_enemy_locking_on_with_chopper_gunner", 1 ); + } + if ( isDefined( level.iskillstreakweapon ) ) + { + if ( [[ level.iskillstreakweapon ]]( data.sweapon ) ) + { + return; + } + } + attacker notify( "killed_enemy_player" ); + if ( isDefined( player.primaryloadoutweapon ) && weapon == player.primaryloadoutweapon ) + { + if ( player isbonuscardactive( 0, player.class_num ) ) + { + player addbonuscardstat( 0, "kills", 1, player.class_num ); + player addplayerstat( "kill_with_loadout_weapon_with_3_attachments", 1 ); + } + if ( isDefined( player.secondaryweaponkill ) && player.secondaryweaponkill == 1 ) + { + player.primaryweaponkill = 0; + player.secondaryweaponkill = 0; + if ( player isbonuscardactive( 2, player.class_num ) ) + { + player addbonuscardstat( 2, "kills", 1, player.class_num ); + player addplayerstat( "kill_with_both_primary_weapons", 1 ); + } + } + else + { + player.primaryweaponkill = 1; + } + } + else + { + if ( isDefined( player.secondaryloadoutweapon ) && weapon == player.secondaryloadoutweapon ) + { + if ( player isbonuscardactive( 1, player.class_num ) ) + { + player addbonuscardstat( 1, "kills", 1, player.class_num ); + } + if ( isDefined( player.primaryweaponkill ) && player.primaryweaponkill == 1 ) + { + player.primaryweaponkill = 0; + player.secondaryweaponkill = 0; + if ( player isbonuscardactive( 2, player.class_num ) ) + { + player addbonuscardstat( 2, "kills", 1, player.class_num ); + player addplayerstat( "kill_with_both_primary_weapons", 1 ); + } + } + else + { + player.secondaryweaponkill = 1; + } + } + } + if ( !player isbonuscardactive( 5, player.class_num ) || player isbonuscardactive( 4, player.class_num ) && player isbonuscardactive( 3, player.class_num ) ) + { + player addplayerstat( "kill_with_2_perks_same_category", 1 ); + } + baseweaponname = getreffromitemindex( getbaseweaponitemindex( weapon ) ) + "_mp"; + if ( isDefined( player.weaponkills[ baseweaponname ] ) ) + { + player.weaponkills[ baseweaponname ]++; + if ( player.weaponkills[ baseweaponname ] == 5 ) + { + player addweaponstat( baseweaponname, "killstreak_5", 1 ); + } + if ( player.weaponkills[ baseweaponname ] == 10 ) + { + player addweaponstat( baseweaponname, "killstreak_10", 1 ); + } + } + else + { + player.weaponkills[ baseweaponname ] = 1; + } + attachmentname = player getweaponoptic( weapon ); + if ( isDefined( attachmentname ) && attachmentname != "" ) + { + if ( isDefined( player.attachmentkills[ attachmentname ] ) ) + { + player.attachmentkills[ attachmentname ]++; + if ( player.attachmentkills[ attachmentname ] == 5 ) + { + player addweaponstat( weapon, "killstreak_5_attachment", 1 ); + } + } + else + { + player.attachmentkills[ attachmentname ] = 1; + } + } +/# + assert( isDefined( player.activecounteruavs ) ); +#/ +/# + assert( isDefined( player.activeuavs ) ); +#/ +/# + assert( isDefined( player.activesatellites ) ); +#/ + if ( player.activeuavs > 0 ) + { + player addplayerstat( "kill_while_uav_active", 1 ); + } + if ( player.activecounteruavs > 0 ) + { + player addplayerstat( "kill_while_cuav_active", 1 ); + } + if ( player.activesatellites > 0 ) + { + player addplayerstat( "kill_while_satellite_active", 1 ); + } + if ( isDefined( attacker.tacticalinsertiontime ) && ( attacker.tacticalinsertiontime + 5000 ) > time ) + { + player addplayerstat( "kill_after_tac_insert", 1 ); + player addweaponstat( "tactical_insertion_mp", "CombatRecordStat", 1 ); + } + if ( isDefined( victim.tacticalinsertiontime ) && ( victim.tacticalinsertiontime + 5000 ) > time ) + { + player addweaponstat( "tactical_insertion_mp", "headshots", 1 ); + } + if ( isDefined( level.isplayertrackedfunc ) ) + { + if ( attacker [[ level.isplayertrackedfunc ]]( victim, time ) ) + { + attacker addplayerstat( "kill_enemy_revealed_by_sensor", 1 ); + attacker addweaponstat( "sensor_grenade_mp", "CombatRecordStat", 1 ); + } + } + if ( level.teambased ) + { + activeempowner = level.empowners[ player.team ]; + if ( isDefined( activeempowner ) ) + { + if ( activeempowner == player ) + { + player addplayerstat( "kill_while_emp_active", 1 ); + } + } + } + else + { + if ( isDefined( level.empplayer ) ) + { + if ( level.empplayer == player ) + { + player addplayerstat( "kill_while_emp_active", 1 ); + } + } + } + if ( isDefined( player.flakjacketclaymore[ victim.clientid ] ) && player.flakjacketclaymore[ victim.clientid ] == 1 ) + { + player addplayerstat( "survive_claymore_kill_planter_flak_jacket_equipped", 1 ); + } + if ( isDefined( player.dogsactive ) ) + { + if ( weapon != "dog_bite_mp" ) + { + player.dogsactivekillstreak++; + if ( player.dogsactivekillstreak > 5 ) + { + player addplayerstat( "killstreak_5_dogs", 1 ); + } + } + } + isstunned = 0; + if ( victim maps/mp/_utility::isflashbanged() ) + { + if ( isDefined( victim.lastflashedby ) && victim.lastflashedby == player ) + { + player addplayerstat( "kill_flashed_enemy", 1 ); + player addweaponstat( "flash_grenade_mp", "CombatRecordStat", 1 ); + } + isstunned = 1; + } + if ( isDefined( victim.concussionendtime ) && victim.concussionendtime > getTime() ) + { + if ( isDefined( victim.lastconcussedby ) && victim.lastconcussedby == player ) + { + player addplayerstat( "kill_concussed_enemy", 1 ); + player addweaponstat( "concussion_grenade_mp", "CombatRecordStat", 1 ); + } + isstunned = 1; + } + if ( isDefined( player.laststunnedby ) ) + { + if ( player.laststunnedby == victim && ( player.laststunnedtime + 5000 ) > time ) + { + player addplayerstat( "kill_enemy_who_shocked_you", 1 ); + } + } + if ( isDefined( victim.laststunnedby ) && ( victim.laststunnedtime + 5000 ) > time ) + { + isstunned = 1; + if ( victim.laststunnedby == player ) + { + player addplayerstat( "kill_shocked_enemy", 1 ); + player addweaponstat( "proximity_grenade_mp", "CombatRecordStat", 1 ); + if ( data.smeansofdeath == "MOD_MELEE" ) + { + player addplayerstat( "shock_enemy_then_stab_them", 1 ); + } + } + } + if ( ( player.mantletime + 5000 ) > time ) + { + player addplayerstat( "mantle_then_kill", 1 ); + } + if ( isDefined( player.tookweaponfrom ) && isDefined( player.tookweaponfrom[ weapon ] ) && isDefined( player.tookweaponfrom[ weapon ].previousowner ) ) + { + if ( level.teambased ) + { + if ( player.tookweaponfrom[ weapon ].previousowner.team != player.team ) + { + player.pickedupweaponkills[ weapon ]++; + player addplayerstat( "kill_enemy_with_picked_up_weapon", 1 ); + } + } + else + { + player.pickedupweaponkills[ weapon ]++; + player addplayerstat( "kill_enemy_with_picked_up_weapon", 1 ); + } + if ( player.pickedupweaponkills[ weapon ] >= 5 ) + { + player.pickedupweaponkills[ weapon ] = 0; + player addplayerstat( "killstreak_5_picked_up_weapon", 1 ); + } + } + if ( isDefined( victim.explosiveinfo[ "originalOwnerKill" ] ) && victim.explosiveinfo[ "originalOwnerKill" ] == 1 ) + { + if ( victim.explosiveinfo[ "damageExplosiveKill" ] == 1 ) + { + player addplayerstat( "kill_enemy_shoot_their_explosive", 1 ); + } + } + if ( data.attackerstance == "crouch" ) + { + player addplayerstat( "kill_enemy_while_crouched", 1 ); + } + else + { + if ( data.attackerstance == "prone" ) + { + player addplayerstat( "kill_enemy_while_prone", 1 ); + } + } + if ( data.victimstance == "prone" ) + { + player addplayerstat( "kill_prone_enemy", 1 ); + } + if ( data.smeansofdeath != "MOD_HEAD_SHOT" || data.smeansofdeath == "MOD_PISTOL_BULLET" && data.smeansofdeath == "MOD_RIFLE_BULLET" ) + { + player genericbulletkill( data, victim, weapon ); + } + if ( level.teambased ) + { + if ( !isDefined( player.pers[ "kill_every_enemy" ] ) && level.playercount[ victim.pers[ "team" ] ] > 3 && player.pers[ "killed_players" ].size >= level.playercount[ victim.pers[ "team" ] ] ) + { + player addplayerstat( "kill_every_enemy", 1 ); + player.pers[ "kill_every_enemy" ] = 1; + } + } + switch( weaponclass ) + { + case "weapon_pistol": + if ( data.smeansofdeath == "MOD_HEAD_SHOT" ) + { + player.pers[ "pistolHeadshot" ]++; + if ( player.pers[ "pistolHeadshot" ] >= 10 ) + { + player.pers[ "pistolHeadshot" ] = 0; + player addplayerstat( "pistolHeadshot_10_onegame", 1 ); + } + } + break; + case "weapon_assault": + if ( data.smeansofdeath == "MOD_HEAD_SHOT" ) + { + player.pers[ "assaultRifleHeadshot" ]++; + if ( player.pers[ "assaultRifleHeadshot" ] >= 5 ) + { + player.pers[ "assaultRifleHeadshot" ] = 0; + player addplayerstat( "headshot_assault_5_onegame", 1 ); + } + } + break; + case "weapon_lmg": + case "weapon_smg": + case "weapon_sniper": + if ( isDefined( victim.firsttimedamaged ) && victim.firsttimedamaged == time ) + { + player addplayerstat( "kill_enemy_one_bullet_sniper", 1 ); + player addweaponstat( weapon, "kill_enemy_one_bullet_sniper", 1 ); + if ( !isDefined( player.pers[ "one_shot_sniper_kills" ] ) ) + { + player.pers[ "one_shot_sniper_kills" ] = 0; + } + player.pers[ "one_shot_sniper_kills" ]++; + if ( player.pers[ "one_shot_sniper_kills" ] == 10 ) + { + player addplayerstat( "kill_10_enemy_one_bullet_sniper_onegame", 1 ); + } + } + break; + case "weapon_cqb": + if ( isDefined( victim.firsttimedamaged ) && victim.firsttimedamaged == time ) + { + player addplayerstat( "kill_enemy_one_bullet_shotgun", 1 ); + player addweaponstat( weapon, "kill_enemy_one_bullet_shotgun", 1 ); + if ( !isDefined( player.pers[ "one_shot_shotgun_kills" ] ) ) + { + player.pers[ "one_shot_shotgun_kills" ] = 0; + } + player.pers[ "one_shot_shotgun_kills" ]++; + if ( player.pers[ "one_shot_shotgun_kills" ] == 10 ) + { + player addplayerstat( "kill_10_enemy_one_bullet_shotgun_onegame", 1 ); + } + } + break; + } + if ( data.smeansofdeath == "MOD_MELEE" ) + { + if ( weaponhasattachment( weapon, "tacknife" ) ) + { + player addplayerstat( "kill_enemy_with_tacknife", 1 ); + player bladekill(); + } + else if ( weapon == "knife_ballistic_mp" ) + { + player bladekill(); + player addweaponstat( weapon, "ballistic_knife_melee", 1 ); + } + else if ( weapon == "knife_held_mp" || weapon == "knife_mp" ) + { + player bladekill(); + } + else + { + if ( weapon == "riotshield_mp" ) + { + if ( ( victim.lastfiretime + 3000 ) > time ) + { + player addweaponstat( weapon, "shield_melee_while_enemy_shooting", 1 ); + } + } + } + } + else + { + if ( data.smeansofdeath == "MOD_IMPACT" && baseweaponname == "crossbow_mp" ) + { + if ( weaponhasattachment( weapon, "stackfire" ) ) + { + player addplayerstat( "KILL_CROSSBOW_STACKFIRE", 1 ); + } + } + else + { + if ( isDefined( ownerweaponatlaunch ) ) + { + if ( weaponhasattachment( ownerweaponatlaunch, "stackfire" ) ) + { + player addplayerstat( "KILL_CROSSBOW_STACKFIRE", 1 ); + } + } + } + if ( weapon == "knife_ballistic_mp" ) + { + player bladekill(); + if ( isDefined( player.retreivedblades ) && player.retreivedblades > 0 ) + { + player.retreivedblades--; + + player addweaponstat( weapon, "kill_retrieved_blade", 1 ); + } + } + } + lethalgrenadekill = 0; + switch( weapon ) + { + case "bouncingbetty_mp": + lethalgrenadekill = 1; + player notify( "lethalGrenadeKill" ); + break; + case "hatchet_mp": + player bladekill(); + lethalgrenadekill = 1; + player notify( "lethalGrenadeKill" ); + if ( isDefined( lastweaponbeforetoss ) ) + { + if ( lastweaponbeforetoss == level.riotshield_name ) + { + player addweaponstat( level.riotshield_name, "hatchet_kill_with_shield_equiped", 1 ); + player addplayerstat( "hatchet_kill_with_shield_equiped", 1 ); + } + } + break; + case "claymore_mp": + lethalgrenadekill = 1; + player notify( "lethalGrenadeKill" ); + player addplayerstat( "kill_with_claymore", 1 ); + if ( data.washacked ) + { + player addplayerstat( "kill_with_hacked_claymore", 1 ); + } + break; + case "satchel_charge_mp": + lethalgrenadekill = 1; + player notify( "lethalGrenadeKill" ); + player addplayerstat( "kill_with_c4", 1 ); + break; + case "destructible_car_mp": + player addplayerstat( "kill_enemy_withcar", 1 ); + if ( isDefined( inflictor.destroyingweapon ) ) + { + player addweaponstat( inflictor.destroyingweapon, "kills_from_cars", 1 ); + } + break; + case "sticky_grenade_mp": + lethalgrenadekill = 1; + player notify( "lethalGrenadeKill" ); + if ( isDefined( victim.explosiveinfo[ "stuckToPlayer" ] ) && victim.explosiveinfo[ "stuckToPlayer" ] == victim ) + { + attacker.pers[ "stickExplosiveKill" ]++; + if ( attacker.pers[ "stickExplosiveKill" ] >= 5 ) + { + attacker.pers[ "stickExplosiveKill" ] = 0; + player addplayerstat( "stick_explosive_kill_5_onegame", 1 ); + } + } + break; + case "frag_grenade_mp": + lethalgrenadekill = 1; + player notify( "lethalGrenadeKill" ); + if ( isDefined( data.victim.explosiveinfo[ "cookedKill" ] ) && data.victim.explosiveinfo[ "cookedKill" ] == 1 ) + { + player addplayerstat( "kill_with_cooked_grenade", 1 ); + } + if ( isDefined( data.victim.explosiveinfo[ "throwbackKill" ] ) && data.victim.explosiveinfo[ "throwbackKill" ] == 1 ) + { + player addplayerstat( "kill_with_tossed_back_lethal", 1 ); + } + break; + case "crossbow_mp": + case "explosive_bolt_mp": + if ( !isDefined( player.crossbowclipkillcount ) ) + { + player.crossbowclipkillcount = 0; + } + player.crossbowclipkillcount++; + if ( player.crossbowclipkillcount >= weaponclipsize( "crossbow_mp" ) ) + { + player.crossbowclipkillcount = 0; + player addweaponstat( "crossbow_mp", "crossbow_kill_clip", 1 ); + } + break; + } + if ( lethalgrenadekill ) + { + if ( player isbonuscardactive( 6, player.class_num ) ) + { + player addbonuscardstat( 6, "kills", 1, player.class_num ); + if ( !isDefined( player.pers[ "dangerCloseKills" ] ) ) + { + player.pers[ "dangerCloseKills" ] = 0; + } + player.pers[ "dangerCloseKills" ]++; + if ( player.pers[ "dangerCloseKills" ] == 5 ) + { + player addplayerstat( "kill_with_dual_lethal_grenades", 1 ); + } + } + } + player perkkills( victim, isstunned, time ); + } +} + +perkkills( victim, isstunned, time ) +{ + player = self; + if ( player hasperk( "specialty_movefaster" ) ) + { + player addplayerstat( "perk_movefaster_kills", 1 ); + } + if ( player hasperk( "specialty_noname" ) ) + { + player addplayerstat( "perk_noname_kills", 1 ); + } + if ( player hasperk( "specialty_quieter" ) ) + { + player addplayerstat( "perk_quieter_kills", 1 ); + } + if ( player hasperk( "specialty_longersprint" ) ) + { + if ( isDefined( player.lastsprinttime ) && ( getTime() - player.lastsprinttime ) < 2500 ) + { + player addplayerstat( "perk_longersprint", 1 ); + } + } + if ( player hasperk( "specialty_fastmantle" ) ) + { + if ( isDefined( player.lastsprinttime ) && ( getTime() - player.lastsprinttime ) < 2500 && player playerads() >= 1 ) + { + player addplayerstat( "perk_fastmantle_kills", 1 ); + } + } + if ( player hasperk( "specialty_loudenemies" ) ) + { + player addplayerstat( "perk_loudenemies_kills", 1 ); + } + if ( isstunned == 1 && player hasperk( "specialty_stunprotection" ) ) + { + player addplayerstat( "perk_protection_stun_kills", 1 ); + } +/# + assert( isDefined( victim.activecounteruavs ) ); +#/ + activeemp = 0; + if ( level.teambased ) + { + _a903 = level.teams; + _k903 = getFirstArrayKey( _a903 ); + while ( isDefined( _k903 ) ) + { + team = _a903[ _k903 ]; + if ( team == player.team ) + { + } + else + { + if ( isDefined( level.empowners[ team ] ) ) + { + activeemp = 1; + break; + } + } + else + { + _k903 = getNextArrayKey( _a903, _k903 ); + } + } + } + else if ( isDefined( level.empplayer ) ) + { + if ( level.empplayer != player ) + { + activeemp = 1; + } + } + activecuav = 0; + if ( level.teambased ) + { + _a930 = level.teams; + _k930 = getFirstArrayKey( _a930 ); + while ( isDefined( _k930 ) ) + { + team = _a930[ _k930 ]; + if ( team == player.team ) + { + } + else + { + if ( level.activecounteruavs[ team ] > 0 ) + { + activecuav = 1; + break; + } + } + else + { + _k930 = getNextArrayKey( _a930, _k930 ); + } + } + } + else players = level.players; + i = 0; + while ( i < players.size ) + { + if ( players[ i ] != player ) + { + if ( isDefined( level.activecounteruavs[ players[ i ].entnum ] ) && level.activecounteruavs[ players[ i ].entnum ] > 0 ) + { + activecuav = 1; + break; + } + } + else + { + i++; + } + } + if ( activecuav == 1 || activeemp == 1 ) + { + if ( player hasperk( "specialty_immunecounteruav" ) ) + { + player addplayerstat( "perk_immune_cuav_kills", 1 ); + } + } + activeuavvictim = 0; + if ( level.teambased ) + { + if ( level.activeuavs[ victim.team ] > 0 ) + { + activeuavvictim = 1; + } + } + else + { + if ( isDefined( level.activeuavs[ victim.entnum ] ) ) + { + activeuavvictim = level.activeuavs[ victim.entnum ] > 0; + } + } + if ( activeuavvictim == 1 ) + { + if ( player hasperk( "specialty_gpsjammer" ) ) + { + player addplayerstat( "perk_gpsjammer_immune_kills", 1 ); + } + } + if ( ( player.lastweaponchange + 5000 ) > time ) + { + if ( player hasperk( "specialty_fastweaponswitch" ) ) + { + player addplayerstat( "perk_fastweaponswitch_kill_after_swap", 1 ); + } + } + if ( player.scavenged == 1 ) + { + if ( player hasperk( "specialty_scavenger" ) ) + { + player addplayerstat( "perk_scavenger_kills_after_resupply", 1 ); + } + } +} + +flakjacketprotected( weapon, attacker ) +{ + if ( weapon == "claymore_mp" ) + { + self.flakjacketclaymore[ attacker.clientid ] = 1; + } + self addplayerstat( "perk_flak_survive", 1 ); +} + +earnedkillstreak() +{ + if ( self hasperk( "specialty_earnmoremomentum" ) ) + { + self addplayerstat( "perk_earnmoremomentum_earn_streak", 1 ); + } +} + +genericbulletkill( data, victim, weapon ) +{ + player = self; + time = data.time; + if ( player.pers[ "lastBulletKillTime" ] == time ) + { + player.pers[ "bulletStreak" ]++; + } + else + { + player.pers[ "bulletStreak" ] = 1; + } + player.pers[ "lastBulletKillTime" ] = time; + if ( data.victim.idflagstime == time ) + { + if ( data.victim.idflags & level.idflags_penetration ) + { + player addplayerstat( "kill_enemy_through_wall", 1 ); + if ( isDefined( weapon ) && weaponhasattachment( weapon, "fmj" ) ) + { + player addplayerstat( "kill_enemy_through_wall_with_fmj", 1 ); + } + } + } +} + +ishighestscoringplayer( player ) +{ + if ( !isDefined( player.score ) || player.score < 1 ) + { + return 0; + } + players = level.players; + if ( level.teambased ) + { + team = player.pers[ "team" ]; + } + else + { + team = "all"; + } + highscore = player.score; + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ].score ) ) + { + i++; + continue; + } + else if ( players[ i ] == player ) + { + i++; + continue; + } + else if ( players[ i ].score < 1 ) + { + i++; + continue; + } + else if ( team != "all" && players[ i ].pers[ "team" ] != team ) + { + i++; + continue; + } + else + { + if ( players[ i ].score >= highscore ) + { + return 0; + } + } + i++; + } + return 1; +} + +spawnwatcher() +{ + self endon( "disconnect" ); + self.pers[ "stickExplosiveKill" ] = 0; + self.pers[ "pistolHeadshot" ] = 0; + self.pers[ "assaultRifleHeadshot" ] = 0; + self.pers[ "killNemesis" ] = 0; + while ( 1 ) + { + self waittill( "spawned_player" ); + self.pers[ "longshotsPerLife" ] = 0; + self.flakjacketclaymore = []; + self.weaponkills = []; + self.attachmentkills = []; + self.retreivedblades = 0; + self.lastreloadtime = 0; + self.crossbowclipkillcount = 0; + self thread watchfordtp(); + self thread watchformantle(); + self thread monitor_player_sprint(); + } +} + +pickedupballisticknife() +{ + self.retreivedblades++; +} + +watchfordtp() +{ + self endon( "disconnect" ); + self endon( "death" ); + self.dtptime = 0; + while ( 1 ) + { + self waittill( "dtp_end" ); + self.dtptime = getTime() + 4000; + } +} + +watchformantle() +{ + self endon( "disconnect" ); + self endon( "death" ); + self.mantletime = 0; + while ( 1 ) + { + self waittill( "mantle_start", mantleendtime ); + self.mantletime = mantleendtime; + } +} + +disarmedhackedcarepackage() +{ + self addplayerstat( "disarm_hacked_carepackage", 1 ); +} + +destroyed_car() +{ + if ( !isDefined( self ) || !isplayer( self ) ) + { + return; + } + self addplayerstat( "destroy_car", 1 ); +} + +killednemesis() +{ + self.pers[ "killNemesis" ]++; + if ( self.pers[ "killNemesis" ] >= 5 ) + { + self.pers[ "killNemesis" ] = 0; + self addplayerstat( "kill_nemesis", 1 ); + } +} + +killwhiledamagingwithhpm() +{ + self addplayerstat( "kill_while_damaging_with_microwave_turret", 1 ); +} + +longdistancehatchetkill() +{ + self addplayerstat( "long_distance_hatchet_kill", 1 ); +} + +blockedsatellite() +{ + self addplayerstat( "activate_cuav_while_enemy_satelite_active", 1 ); +} + +longdistancekill() +{ + self.pers[ "longshotsPerLife" ]++; + if ( self.pers[ "longshotsPerLife" ] >= 3 ) + { + self.pers[ "longshotsPerLife" ] = 0; + self addplayerstat( "longshot_3_onelife", 1 ); + } +} + +challengeroundend( data ) +{ + player = data.player; + winner = data.winner; + if ( endedearly( winner ) ) + { + return; + } + if ( level.teambased ) + { + winnerscore = game[ "teamScores" ][ winner ]; + loserscore = getlosersteamscores( winner ); + } + switch( level.gametype ) + { + case "sd": + if ( player.team == winner ) + { + if ( game[ "challenge" ][ winner ][ "allAlive" ] ) + { + player addgametypestat( "round_win_no_deaths", 1 ); + } + if ( isDefined( player.lastmansddefeat3enemies ) ) + { + player addgametypestat( "last_man_defeat_3_enemies", 1 ); + } + } + break; + default: + } + } +} + +roundend( winner ) +{ + wait 0,05; + data = spawnstruct(); + data.time = getTime(); + if ( level.teambased ) + { + if ( isDefined( winner ) && isDefined( level.teams[ winner ] ) ) + { + data.winner = winner; + } + } + else + { + if ( isDefined( winner ) ) + { + data.winner = winner; + } + } + index = 0; + while ( index < level.placement[ "all" ].size ) + { + data.player = level.placement[ "all" ][ index ]; + data.place = index; + dochallengecallback( "roundEnd", data ); + index++; + } +} + +gameend( winner ) +{ + wait 0,05; + data = spawnstruct(); + data.time = getTime(); + if ( level.teambased ) + { + if ( isDefined( winner ) && isDefined( level.teams[ winner ] ) ) + { + data.winner = winner; + } + } + else + { + if ( isDefined( winner ) && isplayer( winner ) ) + { + data.winner = winner; + } + } + index = 0; + while ( index < level.placement[ "all" ].size ) + { + data.player = level.placement[ "all" ][ index ]; + data.place = index; + dochallengecallback( "gameEnd", data ); + index++; + } +} + +getfinalkill( player ) +{ + if ( isplayer( player ) ) + { + player addplayerstat( "get_final_kill", 1 ); + } +} + +destroyrcbomb( weaponname ) +{ + self destroyscorestreak( weaponname ); + if ( weaponname == "hatchet_mp" ) + { + self addplayerstat( "destroy_rcbomb_with_hatchet", 1 ); + } +} + +capturedcrate() +{ + if ( isDefined( self.lastrescuedby ) && isDefined( self.lastrescuedtime ) ) + { + if ( ( self.lastrescuedtime + 5000 ) > getTime() ) + { + self.lastrescuedby addplayerstat( "defend_teammate_who_captured_package", 1 ); + } + } +} + +destroyscorestreak( weaponname ) +{ + if ( isDefined( weaponname ) && weaponname == "qrdrone_turret_mp" ) + { + self addplayerstat( "destroy_score_streak_with_qrdrone", 1 ); + } +} + +capturedobjective( capturetime ) +{ + if ( isDefined( self.smokegrenadetime ) && isDefined( self.smokegrenadeposition ) ) + { + if ( ( self.smokegrenadetime + 14000 ) > capturetime ) + { + distsq = distancesquared( self.smokegrenadeposition, self.origin ); + if ( distsq < 57600 ) + { + self addplayerstat( "capture_objective_in_smoke", 1 ); + self addweaponstat( "willy_pete_mp", "CombatRecordStat", 1 ); + return; + } + } + } +} + +hackedordestroyedequipment() +{ + if ( self hasperk( "specialty_showenemyequipment" ) ) + { + self addplayerstat( "perk_hacker_destroy", 1 ); + } +} + +destroyedequipment( weaponname ) +{ + if ( isDefined( weaponname ) && weaponname == "emp_grenade_mp" ) + { + self addplayerstat( "destroy_equipment_with_emp_grenade", 1 ); + self addweaponstat( "emp_grenade_mp", "combatRecordStat", 1 ); + } + self addplayerstat( "destroy_equipment", 1 ); + self hackedordestroyedequipment(); +} + +destroyedtacticalinsert() +{ + if ( !isDefined( self.pers[ "tacticalInsertsDestroyed" ] ) ) + { + self.pers[ "tacticalInsertsDestroyed" ] = 0; + } + self.pers[ "tacticalInsertsDestroyed" ]++; + if ( self.pers[ "tacticalInsertsDestroyed" ] >= 5 ) + { + self.pers[ "tacticalInsertsDestroyed" ] = 0; + self addplayerstat( "destroy_5_tactical_inserts", 1 ); + } +} + +bladekill() +{ + if ( !isDefined( self.pers[ "bladeKills" ] ) ) + { + self.pers[ "bladeKills" ] = 0; + } + self.pers[ "bladeKills" ]++; + if ( self.pers[ "bladeKills" ] >= 15 ) + { + self.pers[ "bladeKills" ] = 0; + self addplayerstat( "kill_15_with_blade", 1 ); + } +} + +destroyedexplosive( weaponname ) +{ + self destroyedequipment( weaponname ); + self addplayerstat( "destroy_explosive", 1 ); +} + +assisted() +{ + self addplayerstat( "assist", 1 ); +} + +earnedmicrowaveassistscore( score ) +{ + self addplayerstat( "assist_score_microwave_turret", score ); + self addplayerstat( "assist_score_killstreak", score ); +} + +earnedcuavassistscore( score ) +{ + self addplayerstat( "assist_score_cuav", score ); + self addplayerstat( "assist_score_killstreak", score ); + self addweaponstat( "counteruav_mp", "assists", 1 ); +} + +earneduavassistscore( score ) +{ + self addplayerstat( "assist_score_uav", score ); + self addplayerstat( "assist_score_killstreak", score ); + self addweaponstat( "radar_mp", "assists", 1 ); +} + +earnedsatelliteassistscore( score ) +{ + self addplayerstat( "assist_score_satellite", score ); + self addplayerstat( "assist_score_killstreak", score ); + self addweaponstat( "radardirection_mp", "assists", 1 ); +} + +earnedempassistscore( score ) +{ + self addplayerstat( "assist_score_emp", score ); + self addplayerstat( "assist_score_killstreak", score ); + self addweaponstat( "emp_mp", "assists", 1 ); +} + +teamcompletedchallenge( team, challenge ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].team ) && players[ i ].team == team ) + { + players[ i ] addgametypestat( challenge, 1 ); + } + i++; + } +} + +endedearly( winner ) +{ + if ( level.hostforcedend ) + { + return 1; + } + if ( !isDefined( winner ) ) + { + return 1; + } + if ( level.teambased ) + { + if ( winner == "tie" ) + { + return 1; + } + } + return 0; +} + +getlosersteamscores( winner ) +{ + teamscores = 0; + _a1472 = level.teams; + _k1472 = getFirstArrayKey( _a1472 ); + while ( isDefined( _k1472 ) ) + { + team = _a1472[ _k1472 ]; + if ( team == winner ) + { + } + else + { + teamscores += game[ "teamScores" ][ team ]; + } + _k1472 = getNextArrayKey( _a1472, _k1472 ); + } + return teamscores; +} + +didloserfailchallenge( winner, challenge ) +{ + _a1485 = level.teams; + _k1485 = getFirstArrayKey( _a1485 ); + while ( isDefined( _k1485 ) ) + { + team = _a1485[ _k1485 ]; + if ( team == winner ) + { + } + else + { + if ( game[ "challenge" ][ team ][ challenge ] ) + { + return 0; + } + } + _k1485 = getNextArrayKey( _a1485, _k1485 ); + } + return 1; +} + +challengegameend( data ) +{ + player = data.player; + winner = data.winner; + if ( isDefined( level.scoreeventgameendcallback ) ) + { + [[ level.scoreeventgameendcallback ]]( data ); + } + if ( endedearly( winner ) ) + { + return; + } + if ( level.teambased ) + { + winnerscore = game[ "teamScores" ][ winner ]; + loserscore = getlosersteamscores( winner ); + } + switch( level.gametype ) + { + case "tdm": + if ( player.team == winner ) + { + if ( winnerscore >= ( loserscore + 20 ) ) + { + player addgametypestat( "CRUSH", 1 ); + } + } + mostkillsleastdeaths = 1; + index = 0; + while ( index < level.placement[ "all" ].size ) + { + if ( level.placement[ "all" ][ index ].deaths < player.deaths ) + { + mostkillsleastdeaths = 0; + } + if ( level.placement[ "all" ][ index ].kills > player.kills ) + { + mostkillsleastdeaths = 0; + } + index++; + } + if ( mostkillsleastdeaths && player.kills > 0 && level.placement[ "all" ].size > 3 ) + { + player addgametypestat( "most_kills_least_deaths", 1 ); + } + break; + case "dm": + if ( player == winner ) + { + if ( level.placement[ "all" ].size >= 2 ) + { + secondplace = level.placement[ "all" ][ 1 ]; + if ( player.kills >= ( secondplace.kills + 7 ) ) + { + player addgametypestat( "CRUSH", 1 ); + } + } + } + break; + case "ctf": + if ( player.team == winner ) + { + if ( loserscore == 0 ) + { + player addgametypestat( "SHUT_OUT", 1 ); + } + } + break; + case "dom": + if ( player.team == winner ) + { + if ( winnerscore >= ( loserscore + 70 ) ) + { + player addgametypestat( "CRUSH", 1 ); + } + } + break; + case "hq": + if ( player.team == winner && winnerscore > 0 ) + { + if ( winnerscore >= ( loserscore + 70 ) ) + { + player addgametypestat( "CRUSH", 1 ); + } + } + break; + case "koth": + if ( player.team == winner && winnerscore > 0 ) + { + if ( winnerscore >= ( loserscore + 70 ) ) + { + player addgametypestat( "CRUSH", 1 ); + } + } + if ( player.team == winner && winnerscore > 0 ) + { + if ( winnerscore >= ( loserscore + 110 ) ) + { + player addgametypestat( "ANNIHILATION", 1 ); + } + } + break; + case "dem": + if ( player.team == game[ "defenders" ] && player.team == winner ) + { + if ( loserscore == 0 ) + { + player addgametypestat( "SHUT_OUT", 1 ); + } + } + break; + case "sd": + if ( player.team == winner ) + { + if ( loserscore <= 1 ) + { + player addgametypestat( "CRUSH", 1 ); + } + } + default: + break; + } + } +} + +multikill( killcount, weapon ) +{ + if ( killcount >= 3 && isDefined( self.lastkillwheninjured ) ) + { + if ( ( self.lastkillwheninjured + 5000 ) > getTime() ) + { + self addplayerstat( "multikill_3_near_death", 1 ); + } + } +} + +domattackermultikill( killcount ) +{ + self addgametypestat( "kill_2_enemies_capturing_your_objective", 1 ); +} + +totaldomination( team ) +{ + teamcompletedchallenge( team, "control_3_points_3_minutes" ); +} + +holdflagentirematch( team, label ) +{ + switch( label ) + { + case "_a": + event = "hold_a_entire_match"; + break; + case "_b": + event = "hold_b_entire_match"; + break; + case "_c": + event = "hold_c_entire_match"; + break; + default: + return; + } + teamcompletedchallenge( team, event ); +} + +capturedbfirstminute() +{ + self addgametypestat( "capture_b_first_minute", 1 ); +} + +controlzoneentirely( team ) +{ + teamcompletedchallenge( team, "control_zone_entirely" ); +} + +multi_lmg_smg_kill() +{ + self addplayerstat( "multikill_3_lmg_or_smg_hip_fire", 1 ); +} + +killedzoneattacker( weapon ) +{ + if ( weapon != "planemortar_mp" || weapon == "remote_missile_missile_mp" && weapon == "remote_missile_bomblet_mp" ) + { + self thread updatezonemultikills(); + } +} + +killeddog() +{ + origin = self.origin; + while ( level.teambased ) + { + teammates = get_team_alive_players_s( self.team ); + _a1712 = teammates.a; + _k1712 = getFirstArrayKey( _a1712 ); + while ( isDefined( _k1712 ) ) + { + player = _a1712[ _k1712 ]; + if ( player == self ) + { + } + else + { + distsq = distancesquared( origin, player.origin ); + if ( distsq < 57600 ) + { + self addplayerstat( "killed_dog_close_to_teammate", 1 ); + return; + } + } + else + { + _k1712 = getNextArrayKey( _a1712, _k1712 ); + } + } + } +} + +updatezonemultikills() +{ + self endon( "disconnect" ); + level endon( "game_ended" ); + self notify( "updateRecentZoneKills" ); + self endon( "updateRecentZoneKills" ); + if ( !isDefined( self.recentzonekillcount ) ) + { + self.recentzonekillcount = 0; + } + self.recentzonekillcount++; + wait 4; + if ( self.recentzonekillcount > 1 ) + { + self addplayerstat( "multikill_2_zone_attackers", 1 ); + } + self.recentzonekillcount = 0; +} + +multi_rcbomb_kill() +{ + self addplayerstat( "muiltikill_2_with_rcbomb", 1 ); +} + +multi_remotemissile_kill() +{ + self addplayerstat( "multikill_3_remote_missile", 1 ); +} + +multi_mgl_kill() +{ + self addplayerstat( "multikill_3_with_mgl", 1 ); +} + +immediatecapture() +{ + self addgametypestat( "immediate_capture", 1 ); +} + +killedlastcontester() +{ + self addgametypestat( "contest_then_capture", 1 ); +} + +bothbombsdetonatewithintime() +{ + self addgametypestat( "both_bombs_detonate_10_seconds", 1 ); +} + +fullclipnomisses( weaponclass, weapon ) +{ +} + +destroyedturret( weaponname ) +{ + self destroyscorestreak( weaponname ); + self addplayerstat( "destroy_turret", 1 ); +} + +calledincarepackage() +{ + self.pers[ "carepackagesCalled" ]++; + if ( self.pers[ "carepackagesCalled" ] >= 3 ) + { + self addplayerstat( "call_in_3_care_packages", 1 ); + self.pers[ "carepackagesCalled" ] = 0; + } +} + +destroyedhelicopter( attacker, weapon, damagetype ) +{ + attacker destroyscorestreak( weapon ); + if ( damagetype == "MOD_RIFLE_BULLET" || damagetype == "MOD_PISTOL_BULLET" ) + { + attacker addplayerstat( "destroyed_helicopter_with_bullet", 1 ); + } + attacker addplayerstat( "destroy_helicopter", 1 ); +} + +destroyedqrdrone( damagetype, weapon ) +{ + self destroyscorestreak( weapon ); + self addplayerstat( "destroy_qrdrone", 1 ); + if ( damagetype == "MOD_RIFLE_BULLET" || damagetype == "MOD_PISTOL_BULLET" ) + { + self addplayerstat( "destroyed_qrdrone_with_bullet", 1 ); + } +} + +destroyedaircraft( attacker, weapon ) +{ + attacker destroyscorestreak( weapon ); + if ( isDefined( weapon ) ) + { + if ( weapon == "emp_mp" || weapon == "killstreak_emp_mp" ) + { + attacker addplayerstat( "destroy_aircraft_with_emp", 1 ); + } + else + { + if ( weapon == "missile_drone_projectile_mp" || weapon == "missile_drone_mp" ) + { + attacker addplayerstat( "destroy_aircraft_with_missile_drone", 1 ); + } + } + } + if ( attacker hasperk( "specialty_nottargetedbyairsupport" ) ) + { + attacker addplayerstat( "perk_nottargetedbyairsupport_destroy_aircraft", 1 ); + } + attacker addplayerstat( "destroy_aircraft", 1 ); +} + +killstreakten() +{ + primary = self getloadoutitem( self.class_num, "primary" ); + if ( primary != 0 ) + { + return; + } + secondary = self getloadoutitem( self.class_num, "secondary" ); + if ( secondary != 0 ) + { + return; + } + primarygrenade = self getloadoutitem( self.class_num, "primarygrenade" ); + if ( primarygrenade != 0 ) + { + return; + } + specialgrenade = self getloadoutitem( self.class_num, "specialgrenade" ); + if ( specialgrenade != 0 ) + { + return; + } + numspecialties = 0; + while ( numspecialties < level.maxspecialties ) + { + perk = self getloadoutitem( self.class_num, "specialty" + ( numspecialties + 1 ) ); + if ( perk != 0 ) + { + return; + } + numspecialties++; + } + self addplayerstat( "killstreak_10_no_weapons_perks", 1 ); +} + +scavengedgrenade() +{ + self endon( "disconnect" ); + self endon( "death" ); + self notify( "scavengedGrenade" ); + self endon( "scavengedGrenade" ); + for ( ;; ) + { + self waittill( "lethalGrenadeKill" ); + self addplayerstat( "kill_with_resupplied_lethal_grenade", 1 ); + } +} + +stunnedtankwithempgrenade( attacker ) +{ + attacker addplayerstat( "stun_aitank_wIth_emp_grenade", 1 ); +} + +playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, shitloc, attackerstance ) +{ +/# + print( level.gametype ); +#/ + self.anglesondeath = self getplayerangles(); + if ( isDefined( attacker ) ) + { + attacker.anglesonkill = attacker getplayerangles(); + } + if ( !isDefined( sweapon ) ) + { + sweapon = "none"; + } + self endon( "disconnect" ); + data = spawnstruct(); + data.victim = self; + data.victimstance = self getstance(); + data.einflictor = einflictor; + data.attacker = attacker; + data.attackerstance = attackerstance; + data.idamage = idamage; + data.smeansofdeath = smeansofdeath; + data.sweapon = sweapon; + data.shitloc = shitloc; + data.time = getTime(); + if ( isDefined( einflictor ) && isDefined( einflictor.lastweaponbeforetoss ) ) + { + data.lastweaponbeforetoss = einflictor.lastweaponbeforetoss; + } + if ( isDefined( einflictor ) && isDefined( einflictor.ownerweaponatlaunch ) ) + { + data.ownerweaponatlaunch = einflictor.ownerweaponatlaunch; + } + waslockingon = 0; + if ( isDefined( einflictor.locking_on ) ) + { + waslockingon |= einflictor.locking_on; + } + if ( isDefined( einflictor.locked_on ) ) + { + waslockingon |= einflictor.locked_on; + } + waslockingon &= 1 << data.victim.entnum; + if ( waslockingon != 0 ) + { + data.waslockingon = 1; + } + else + { + data.waslockingon = 0; + } + data.washacked = einflictor maps/mp/_utility::ishacked(); + data.wasplanting = data.victim.isplanting; + if ( !isDefined( data.wasplanting ) ) + { + data.wasplanting = 0; + } + data.wasdefusing = data.victim.isdefusing; + if ( !isDefined( data.wasdefusing ) ) + { + data.wasdefusing = 0; + } + data.victimweapon = data.victim.currentweapon; + data.victimonground = data.victim isonground(); + if ( isplayer( attacker ) ) + { + data.attackeronground = data.attacker isonground(); + if ( !isDefined( data.attackerstance ) ) + { + data.attackerstance = data.attacker getstance(); + } + } + else + { + data.attackeronground = 0; + data.attackerstance = "stand"; + } + waitandprocessplayerkilledcallback( data ); + data.attacker notify( "playerKilledChallengesProcessed" ); +} + +waittillslowprocessallowed() +{ + while ( level.lastslowprocessframe == getTime() ) + { + wait 0,05; + } + level.lastslowprocessframe = getTime(); +} + +doscoreeventcallback( callback, data ) +{ + if ( !isDefined( level.scoreeventcallbacks ) ) + { + return; + } + if ( !isDefined( level.scoreeventcallbacks[ callback ] ) ) + { + return; + } + if ( isDefined( data ) ) + { + i = 0; + while ( i < level.scoreeventcallbacks[ callback ].size ) + { + thread [[ level.scoreeventcallbacks[ callback ][ i ] ]]( data ); + i++; + } + } + else i = 0; + while ( i < level.scoreeventcallbacks[ callback ].size ) + { + thread [[ level.scoreeventcallbacks[ callback ][ i ] ]](); + i++; + } +} + +waitandprocessplayerkilledcallback( data ) +{ + if ( isDefined( data.attacker ) ) + { + data.attacker endon( "disconnect" ); + } + wait 0,05; + waittillslowprocessallowed(); + level thread dochallengecallback( "playerKilled", data ); + level thread doscoreeventcallback( "playerKilled", data ); +} + +weaponisknife( weapon ) +{ + if ( weapon != "knife_held_mp" || weapon == "knife_mp" && weapon == "knife_ballistic_mp" ) + { + return 1; + } + return 0; +} + +eventreceived( eventname ) +{ + self endon( "disconnect" ); + waittillslowprocessallowed(); + switch( level.gametype ) + { + case "tdm": + if ( eventname == "killstreak_10" ) + { + self addgametypestat( "killstreak_10", 1 ); + } + else if ( eventname == "killstreak_15" ) + { + self addgametypestat( "killstreak_15", 1 ); + } + else if ( eventname == "killstreak_20" ) + { + self addgametypestat( "killstreak_20", 1 ); + } + else if ( eventname == "multikill_3" ) + { + self addgametypestat( "multikill_3", 1 ); + } + else if ( eventname == "kill_enemy_who_killed_teammate" ) + { + self addgametypestat( "kill_enemy_who_killed_teammate", 1 ); + } + else + { + if ( eventname == "kill_enemy_injuring_teammate" ) + { + self addgametypestat( "kill_enemy_injuring_teammate", 1 ); + } + } + break; + case "dm": + if ( eventname == "killstreak_10" ) + { + self addgametypestat( "killstreak_10", 1 ); + } + else if ( eventname == "killstreak_15" ) + { + self addgametypestat( "killstreak_15", 1 ); + } + else if ( eventname == "killstreak_20" ) + { + self addgametypestat( "killstreak_20", 1 ); + } + else + { + if ( eventname == "killstreak_30" ) + { + self addgametypestat( "killstreak_30", 1 ); + } + } + break; + case "sd": + if ( eventname == "defused_bomb_last_man_alive" ) + { + self addgametypestat( "defused_bomb_last_man_alive", 1 ); + } + else if ( eventname == "elimination_and_last_player_alive" ) + { + self addgametypestat( "elimination_and_last_player_alive", 1 ); + } + else if ( eventname == "killed_bomb_planter" ) + { + self addgametypestat( "killed_bomb_planter", 1 ); + } + else + { + if ( eventname == "killed_bomb_defuser" ) + { + self addgametypestat( "killed_bomb_defuser", 1 ); + } + } + break; + case "ctf": + if ( eventname == "kill_flag_carrier" ) + { + self addgametypestat( "kill_flag_carrier", 1 ); + } + else + { + if ( eventname == "defend_flag_carrier" ) + { + self addgametypestat( "defend_flag_carrier", 1 ); + } + } + break; + case "dem": + if ( eventname == "killed_bomb_planter" ) + { + self addgametypestat( "killed_bomb_planter", 1 ); + } + else + { + if ( eventname == "killed_bomb_defuser" ) + { + self addgametypestat( "killed_bomb_defuser", 1 ); + } + } + break; + default: + } + } +} + +monitor_player_sprint() +{ + self endon( "disconnect" ); + self endon( "death" ); + self.lastsprinttime = undefined; + while ( 1 ) + { + self waittill( "sprint_begin" ); + self waittill( "sprint_end" ); + self.lastsprinttime = getTime(); + } +} diff --git a/zm_transit_dr_patch/maps/mp/_compass.gsc b/zm_transit_dr_patch/maps/mp/_compass.gsc new file mode 100644 index 0000000..4b074d8 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_compass.gsc @@ -0,0 +1,67 @@ + +setupminimap( material ) +{ + requiredmapaspectratio = getDvarFloat( "scr_RequiredMapAspectratio" ); + corners = getentarray( "minimap_corner", "targetname" ); + if ( corners.size != 2 ) + { +/# + println( "^1Error: There are not exactly two "minimap_corner" entities in the map. Could not set up minimap." ); +#/ + return; + } + corner0 = ( corners[ 0 ].origin[ 0 ], corners[ 0 ].origin[ 1 ], 0 ); + corner1 = ( corners[ 1 ].origin[ 0 ], corners[ 1 ].origin[ 1 ], 0 ); + cornerdiff = corner1 - corner0; + north = ( cos( getnorthyaw() ), sin( getnorthyaw() ), 0 ); + west = ( 0 - north[ 1 ], north[ 0 ], 0 ); + if ( vectordot( cornerdiff, west ) > 0 ) + { + if ( vectordot( cornerdiff, north ) > 0 ) + { + northwest = corner1; + southeast = corner0; + } + else + { + side = vecscale( north, vectordot( cornerdiff, north ) ); + northwest = corner1 - side; + southeast = corner0 + side; + } + } + else if ( vectordot( cornerdiff, north ) > 0 ) + { + side = vecscale( north, vectordot( cornerdiff, north ) ); + northwest = corner0 + side; + southeast = corner1 - side; + } + else + { + northwest = corner0; + southeast = corner1; + } + if ( requiredmapaspectratio > 0 ) + { + northportion = vectordot( northwest - southeast, north ); + westportion = vectordot( northwest - southeast, west ); + mapaspectratio = westportion / northportion; + if ( mapaspectratio < requiredmapaspectratio ) + { + incr = requiredmapaspectratio / mapaspectratio; + addvec = vecscale( west, westportion * ( incr - 1 ) * 0,5 ); + } + else + { + incr = mapaspectratio / requiredmapaspectratio; + addvec = vecscale( north, northportion * ( incr - 1 ) * 0,5 ); + } + northwest += addvec; + southeast -= addvec; + } + setminimap( material, northwest[ 0 ], northwest[ 1 ], southeast[ 0 ], southeast[ 1 ] ); +} + +vecscale( vec, scalar ) +{ + return ( vec[ 0 ] * scalar, vec[ 1 ] * scalar, vec[ 2 ] * scalar ); +} diff --git a/zm_transit_dr_patch/maps/mp/_createfx.gsc b/zm_transit_dr_patch/maps/mp/_createfx.gsc new file mode 100644 index 0000000..8d142f8 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_createfx.gsc @@ -0,0 +1,3273 @@ +#include maps/mp/_script_gen; +#include maps/mp/_fx; +#include maps/mp/_createfxundo; +#include maps/mp/_createfxmenu; +#include maps/mp/_utility; +#include common_scripts/utility; + +createfx() +{ +/# + println( "^2Running CreateFX 2.0" ); +#/ + if ( ismp() ) + { + init_mp_paths(); + level.timelimitoverride = 1; + } + else + { + init_sp_paths(); + } + precachemodel( "fx_axis_createfx" ); + precacheshader( "black" ); + if ( getDvar( "createfx_scaleid" ) == "" ) + { + setdvar( "createfx_scaleid", "0.5" ); + } + if ( getDvar( "createfx_print_frames" ) == "" ) + { + setdvar( "createfx_print_frames", "3" ); + } + if ( getDvar( "createfx_drawaxis" ) == "" ) + { + setdvar( "createfx_drawaxis", "1" ); + } + if ( getDvar( "createfx_drawaxis_range" ) == "" ) + { + setdvar( "createfx_drawaxis_range", "2000" ); + } + if ( getDvar( "createfx_autosave_time" ) == "" ) + { + setdvar( "createfx_autosave_time", "300" ); + } + if ( getDvar( "createfx_oneshot_min_delay" ) == "" ) + { + setdvar( "createfx_oneshot_min_delay", "-100" ); + } + if ( getDvar( "createfx_oneshot_max_delay" ) == "" ) + { + setdvar( "createfx_oneshot_max_delay", "-15" ); + } + flag_init( "createfx_saving" ); + if ( !isDefined( level.createfx ) ) + { + level.createfx = []; + } + if ( !isDefined( level.cfx_uniqueid ) ) + { + level.cfx_uniqueid = 0; + } + level.cfx_last_action = "none"; + if ( !ismp() ) + { + level thread [[ level.cfx_func_run_gump_func ]](); + } + if ( isDefined( level.createfx_callback_thread ) ) + { + level thread [[ level.createfx_callback_thread ]](); + } + if ( ismp() ) + { + level.callbackplayerdisconnect = ::empty; + level.callbackplayerdamage = ::damage_void; + level.callbackplayerkilled = ::empty; + level.callbackplayerconnect = ::callback_playerconnect; + while ( !isDefined( level.player ) ) + { + wait 0,05; + } + thread createfxdelay(); + } + level.is_camera_on = 0; + thread createfxlogic(); + level waittill( "eternity" ); +} + +fx_init() +{ + if ( ismp() ) + { + init_client_mp_variables(); + } + else + { + init_client_sp_variables(); + } + level.exploderfunction = level.cfx_exploder_before; + waittillframeend; + waittillframeend; + level.exploderfunction = level.cfx_exploder_after; + level.non_fx_ents = 0; + if ( level.createfx_enabled ) + { + triggers = getentarray( "trigger_multiple", "classname" ); + i = 0; + while ( i < triggers.size ) + { + triggers[ i ] delete(); + i++; + } + triggers = getentarray( "trigger_once", "classname" ); + i = 0; + while ( i < triggers.size ) + { + triggers[ i ] delete(); + i++; + } + triggers = getentarray( "trigger_box", "classname" ); + i = 0; + while ( i < triggers.size ) + { + triggers[ i ] delete(); + i++; + } + triggers = getentarray( "trigger_radius", "classname" ); + i = 0; + while ( i < triggers.size ) + { + triggers[ i ] delete(); + i++; + } + triggers = getentarray( "trigger_lookat", "classname" ); + i = 0; + while ( i < triggers.size ) + { + triggers[ i ] delete(); + i++; + } + triggers = getentarray( "trigger_damage", "classname" ); + i = 0; + while ( i < triggers.size ) + { + triggers[ i ] delete(); + i++; + } + sm = getentarray( "spawn_manager", "classname" ); + i = 0; + while ( i < sm.size ) + { + sm[ i ] delete(); + i++; + } + delete_spawns(); + if ( !ismp() ) + { + delete_arrays_in_sp(); +/# + println( "We're not in MP!" ); +#/ + } + } + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + ent set_forward_and_up_vectors(); + if ( level.clientscripts ) + { + if ( !level.createfx_enabled ) + { + i++; + continue; + } + } + else + { + if ( isDefined( ent.model ) ) + { + level.non_fx_ents++; + } + if ( ent.v[ "type" ] == "loopfx" ) + { + ent thread [[ level.cfx_func_loopfx ]](); + } + if ( ent.v[ "type" ] == "oneshotfx" ) + { + ent thread [[ level.cfx_func_oneshotfx ]](); + } + if ( ent.v[ "type" ] == "soundfx" ) + { + ent thread [[ level.cfx_func_soundfx ]](); + } + } + i++; + } +} + +add_effect( name, effect ) +{ + if ( !isDefined( level._effect ) ) + { + level._effect = []; + } + level._effect[ name ] = loadfx( effect ); +} + +createeffect( type, fxid ) +{ + ent = undefined; + if ( !isDefined( level.createfx_enabled ) ) + { + level.createfx_enabled = getDvar( "createfx" ) != ""; + } + if ( !isDefined( level.createfxent ) ) + { + level.createfxent = []; + } + if ( level.createfx_enabled ) + { + if ( !isDefined( level.cfx_uniqueid ) ) + { + level.cfx_uniqueid = 0; + } + ent = spawnstruct(); + ent.uniqueid = level.cfx_uniqueid; + level.cfx_uniqueid++; + } + else if ( type == "exploder" ) + { + ent = spawnstruct(); + } + else + { + if ( !isDefined( level._fake_createfx_struct ) ) + { + level._fake_createfx_struct = spawnstruct(); + } + ent = level._fake_createfx_struct; + } + level.createfxent[ level.createfxent.size ] = ent; + ent.v = []; + ent.v[ "type" ] = type; + ent.v[ "fxid" ] = fxid; + ent.v[ "angles" ] = ( 1, 1, 1 ); + ent.v[ "origin" ] = ( 1, 1, 1 ); + ent.drawn = 1; + return ent; +} + +createloopsound() +{ + ent = spawnstruct(); + if ( !isDefined( level.createfxent ) ) + { + level.createfxent = []; + } + level.createfxent[ level.createfxent.size ] = ent; + ent.v = []; + ent.v[ "type" ] = "soundfx"; + ent.v[ "fxid" ] = "No FX"; + ent.v[ "soundalias" ] = "nil"; + ent.v[ "angles" ] = ( 1, 1, 1 ); + ent.v[ "origin" ] = ( 1, 1, 1 ); + ent.drawn = 1; + return ent; +} + +set_forward_and_up_vectors() +{ + self.v[ "up" ] = anglesToUp( self.v[ "angles" ] ); + self.v[ "forward" ] = anglesToForward( self.v[ "angles" ] ); +} + +createfxlogic() +{ + waittillframeend; + menu_init(); + if ( !ismp() ) + { + players = get_players(); + if ( !isDefined( players ) || players.size == 0 ) + { + level waittill( "first_player_ready" ); + } + } +/# + adddebugcommand( "noclip" ); +#/ + if ( !isDefined( level._effect ) ) + { + level._effect = []; + } + if ( getDvar( "createfx_map" ) == "" ) + { + setdvar( "createfx_map", level.script ); + } + else + { + if ( getDvar( "createfx_map" ) == level.script ) + { + if ( !ismp() ) + { + playerpos = []; + playerpos[ 0 ] = getDvarInt( #"274F266C" ); + playerpos[ 1 ] = getDvarInt( #"274F266D" ); + playerpos[ 2 ] = getDvarInt( #"274F266E" ); + player = get_players()[ 0 ]; + player setorigin( ( playerpos[ 0 ], playerpos[ 1 ], playerpos[ 2 ] ) ); + } + } + } +/# + filename = level.cfx_server_scriptdata + level.script + "_fx.gsc"; + file = openfile( filename, "append" ); + level.write_error = ""; + if ( file == -1 ) + { + level.write_error = filename; + } + else + { + closefile( file ); +#/ + } + level.createfxhudelements = []; + level.createfx_hudelements = 100; + stroffsetx = []; + stroffsety = []; + stroffsetx[ 0 ] = 0; + stroffsety[ 0 ] = 0; + stroffsetx[ 1 ] = 1; + stroffsety[ 1 ] = 1; + stroffsetx[ 2 ] = -2; + stroffsety[ 2 ] = 1; + setdvar( "fx", "nil" ); + crosshair = newdebughudelem(); + crosshair.location = 0; + crosshair.alignx = "center"; + crosshair.aligny = "middle"; + crosshair.foreground = 1; + crosshair.fontscale = 2; + crosshair.sort = 20; + crosshair.alpha = 1; + crosshair.x = 320; + crosshair.y = 233; + crosshair settext( "." ); + center_text_init(); + level.cleartextmarker = newdebughudelem(); + level.cleartextmarker.alpha = 0; + level.cleartextmarker settext( "marker" ); + i = 0; + while ( i < level.createfx_hudelements ) + { + newstrarray = []; + p = 0; + while ( p < 2 ) + { + newstr = newhudelem(); + newstr.alignx = "left"; + newstr.location = 0; + newstr.foreground = 1; + newstr.fontscale = 1,1; + newstr.sort = 20 - p; + newstr.alpha = 1; + newstr.x = 0 + stroffsetx[ p ]; + newstr.y = ( 60 + stroffsety[ p ] ) + ( i * 15 ); + if ( p > 0 ) + { + newstr.color = ( 1, 1, 1 ); + } + newstrarray[ newstrarray.size ] = newstr; + p++; + } + level.createfxhudelements[ i ] = newstrarray; + i++; + } + level.selectedmove_up = 0; + level.selectedmove_forward = 0; + level.selectedmove_right = 0; + level.selectedrotate_pitch = 0; + level.selectedrotate_roll = 0; + level.selectedrotate_yaw = 0; + level.selected_fx = []; + level.selected_fx_ents = []; + level.createfx_lockedlist = []; + level.createfx_lockedlist[ "escape" ] = 1; + level.createfx_lockedlist[ "BUTTON_LSHLDR" ] = 1; + level.createfx_lockedlist[ "BUTTON_RSHLDR" ] = 1; + level.createfx_lockedlist[ "mouse1" ] = 1; + level.createfx_lockedlist[ "ctrl" ] = 1; + level.createfx_draw_enabled = 1; + level.buttonisheld = []; + axismode = 0; + colors = []; + colors[ "loopfx" ][ "selected" ] = ( 1, 1, 0,2 ); + colors[ "loopfx" ][ "highlighted" ] = ( 0,4, 0,95, 1 ); + colors[ "loopfx" ][ "default" ] = ( 0,3, 0,5, 1 ); + colors[ "oneshotfx" ][ "selected" ] = ( 1, 1, 0,2 ); + colors[ "oneshotfx" ][ "highlighted" ] = ( 0,33, 0,97, 1 ); + colors[ "oneshotfx" ][ "default" ] = ( 0,1, 0,73, 0,73 ); + colors[ "exploder" ][ "selected" ] = ( 1, 1, 0,2 ); + colors[ "exploder" ][ "highlighted" ] = ( 1, 0,1, 0,1 ); + colors[ "exploder" ][ "default" ] = ( 1, 0,1, 0,1 ); + colors[ "rainfx" ][ "selected" ] = ( 1, 1, 0,2 ); + colors[ "rainfx" ][ "highlighted" ] = ( 0,95, 0,4, 0,95 ); + colors[ "rainfx" ][ "default" ] = ( 0,78, 0, 0,73 ); + colors[ "soundfx" ][ "selected" ] = ( 1, 1, 0,2 ); + colors[ "soundfx" ][ "highlighted" ] = ( 0,5, 1, 0,75 ); + colors[ "soundfx" ][ "default" ] = ( 0,2, 0,9, 0,2 ); + lasthighlightedent = undefined; + level.fx_rotating = 0; + setmenu( "none" ); + level.createfx_selecting = 0; + level.createfx_last_player_origin = ( 1, 1, 1 ); + level.createfx_last_player_forward = ( 1, 1, 1 ); + level.createfx_last_view_change_test = 0; + player = get_players()[ 0 ]; + black = newdebughudelem(); + black.x = -120; + black.y = 200; + black.foreground = 0; + black setshader( "black", 250, 160 ); + black.alpha = 0; + level.createfx_inputlocked = 0; + help_on_last_frame = 0; + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + ent post_entity_creation_function(); + i++; + } + thread draw_distance(); + lastselectentity = undefined; + thread createfx_autosave(); + if ( !ismp() ) + { + make_sp_player_invulnerable( player ); + } + for ( ;; ) + { + player = get_players()[ 0 ]; + changedselectedents = 0; + right = anglesToRight( player getplayerangles() ); + forward = anglesToForward( player getplayerangles() ); + up = anglesToUp( player getplayerangles() ); + dot = 0,85; + placeent_vector = vectorScale( forward, 750 ); + level.createfxcursor = bullettrace( player geteye(), player geteye() + placeent_vector, 0, undefined ); + highlightedent = undefined; + level.buttonclick = []; + level.button_is_kb = []; + process_button_held_and_clicked(); + ctrlheld = button_is_held( "ctrl", "BUTTON_LSHLDR" ); + shiftheld = button_is_held( "shift" ); + functionheld = button_is_held( "f" ); + leftclick = button_is_clicked( "mouse1", "BUTTON_A" ); + leftheld = button_is_held( "mouse1", "BUTTON_A" ); + create_fx_menu(); + if ( button_is_clicked( "BUTTON_X" ) || shiftheld && button_is_clicked( "x" ) ) + { + axismode = !axismode; + } + if ( button_is_clicked( "F2" ) || functionheld && button_is_clicked( "2" ) ) + { + toggle_createfx_drawing(); + } + if ( button_is_clicked( "F3" ) || functionheld && button_is_clicked( "3" ) ) + { + print_ambient_fx_inventory(); + } + if ( button_is_clicked( "F5" ) || functionheld && button_is_clicked( "5" ) ) + { + createfx_save(); + } + if ( button_is_clicked( "ins", "i" ) ) + { + insert_effect(); + } + if ( button_is_clicked( "c" ) ) + { + if ( level.is_camera_on == 0 ) + { +/# + adddebugcommand( "noclip" ); +#/ + level thread handle_camera(); + level.is_camera_on = 1; + break; + } + else + { + if ( level.is_camera_on == 1 ) + { +/# + adddebugcommand( "noclip" ); +#/ + level notify( "new_camera" ); + level.is_camera_on = 0; + axismode = 0; + } + } + } + if ( button_is_held( "BUTTON_RTRIG" ) && level.is_camera_on ) + { + axismode = 1; + } + else + { + if ( !button_is_held( "BUTTON_RTRIG" ) && level.is_camera_on ) + { + axismode = 0; + } + } + if ( button_is_clicked( "del" ) || !shiftheld && button_is_clicked( "d" ) ) + { + delete_pressed(); + } + if ( button_is_clicked( "end" ) || shiftheld && button_is_clicked( "d" ) ) + { + drop_selection_to_ground(); + changedselectedents = 1; + } + if ( button_is_clicked( "s" ) ) + { + setmenu( "select_by_property" ); + wait 0,05; + } + if ( isDefined( level.cfx_selected_prop ) ) + { + if ( ctrlheld ) + { + select_ents_by_property( level.cfx_selected_prop, 1 ); + } + else + { + select_ents_by_property( level.cfx_selected_prop ); + } + level.cfx_selected_prop = undefined; + } + if ( button_is_clicked( "j" ) ) + { + setmenu( "jump_to_effect" ); + draw_effects_list( "Select effect to jump to:" ); + } + if ( button_is_clicked( "escape" ) ) + { + clear_settable_fx(); + } + if ( button_is_clicked( "space" ) && !shiftheld ) + { + set_off_exploders(); + } + if ( button_is_clicked( "space" ) && shiftheld ) + { + turn_off_exploders(); + } + if ( button_is_clicked( "tab", "BUTTON_RSHLDR" ) ) + { + move_selection_to_cursor(); + changedselectedents = 1; + } + if ( button_is_clicked( "z" ) ) + { + if ( shiftheld ) + { + break; + } + else + { + undo(); + } + } + if ( button_is_held( "q", "F1" ) ) + { + help_on_last_frame = 1; + show_help(); + wait 0,05; + continue; + } + else if ( help_on_last_frame == 1 ) + { + clear_fx_hudelements(); + help_on_last_frame = 0; + } + if ( button_is_clicked( "BUTTON_LSTICK" ) && !ctrlheld ) + { + copy_ents(); + } + if ( button_is_clicked( "BUTTON_RSTICK" ) ) + { + if ( ctrlheld ) + { + paste_ents_onto_ents(); + break; + } + else + { + paste_ents(); + } + } + if ( isDefined( level.selected_fx_option_index ) ) + { + menu_fx_option_set(); + } + if ( button_is_held( "BUTTON_RTRIG" ) && button_is_held( "BUTTON_LTRIG" ) ) + { + move_player_around_map_fast(); + wait 0,25; + continue; + } + else + { + if ( menu( "none" ) ) + { + if ( button_is_clicked( "rightarrow" ) ) + { + move_player_to_next_same_effect( 1, lastselectentity ); + break; + } + else + { + if ( button_is_clicked( "leftarrow" ) ) + { + move_player_to_next_same_effect( 0, lastselectentity ); + } + } + } + if ( level.write_error != "" ) + { + level notify( "write_error" ); + thread write_error_msg( level.write_error ); + level.write_error = ""; + } + highlightedent = level.fx_highlightedent; + if ( leftclick || ( getTime() - level.createfx_last_view_change_test ) > 250 ) + { + if ( !leftclick || vector_changed( level.createfx_last_player_origin, player.origin ) && dot_changed( level.createfx_last_player_forward, forward ) ) + { + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( !ent.drawn ) + { + i++; + continue; + } + else difference = vectornormalize( ent.v[ "origin" ] - ( player.origin + vectorScale( ( 1, 1, 1 ), 55 ) ) ); + newdot = vectordot( forward, difference ); + if ( newdot < dot ) + { + i++; + continue; + } + else if ( newdot == dot ) + { + if ( ent_is_selected( ent ) ) + { + i++; + continue; + } + } + else + { + dot = newdot; + highlightedent = ent; + highlightedent.last_fx_index = i; + } + i++; + } + level.fx_highlightedent = highlightedent; + level.createfx_last_player_origin = player.origin; + level.createfx_last_player_forward = forward; + } + level.createfx_last_view_change_test = getTime(); + } + if ( isDefined( highlightedent ) ) + { + if ( isDefined( lasthighlightedent ) ) + { + if ( lasthighlightedent != highlightedent ) + { + if ( !ent_is_selected( lasthighlightedent ) ) + { + lasthighlightedent thread entity_highlight_disable(); + } + if ( !ent_is_selected( highlightedent ) ) + { + highlightedent thread entity_highlight_enable(); + } + } + break; + } + else + { + if ( !ent_is_selected( highlightedent ) ) + { + highlightedent thread entity_highlight_enable(); + } + } + } + manipulate_createfx_ents( highlightedent, leftclick, leftheld, ctrlheld, colors, right ); + if ( axismode && level.selected_fx_ents.size > 0 ) + { + thread process_fx_rotater(); + if ( button_is_clicked( "enter", "r" ) ) + { + reset_axis_of_selected_ents(); + } + if ( button_is_clicked( "v" ) ) + { + copy_angles_of_selected_ents(); + } + while ( getDvarInt( "createfx_drawaxis" ) == 1 ) + { + i = 0; + while ( i < level.selected_fx_ents.size ) + { + level.selected_fx_ents[ i ] draw_axis(); + i++; + } + } + if ( level.selectedrotate_pitch != 0 || level.selectedrotate_yaw != 0 && level.selectedrotate_roll != 0 ) + { + changedselectedents = 1; + } + wait 0,05; + } + else + { + stop_drawing_axis_models(); + selectedmove_vector = get_selected_move_vector(); + if ( distancesquared( ( 1, 1, 1 ), selectedmove_vector ) > 0 ) + { + changedselectedents = 1; + if ( level.cfx_last_action != "translate" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "translate"; + } + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( isDefined( ent.model ) ) + { + i++; + continue; + } + else + { + ent.v[ "origin" ] += selectedmove_vector; + } + i++; + } + wait 0,05; + } + if ( changedselectedents ) + { + update_selected_entities(); + } + lasthighlightedent = highlightedent; + if ( last_selected_entity_has_changed( lastselectentity ) ) + { + level.effect_list_offset = 0; + clear_settable_fx(); + setmenu( "none" ); + } + if ( level.selected_fx_ents.size ) + { + lastselectentity = level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; + break; + } + else + { + lastselectentity = undefined; + } + } + } +} + +toggle_createfx_drawing() +{ + level.createfx_draw_enabled = !level.createfx_draw_enabled; +} + +manipulate_createfx_ents( highlightedent, leftclick, leftheld, ctrlheld, colors, right ) +{ + if ( !level.createfx_draw_enabled ) + { + clear_fx_hudelements(); + return; + } + scale = getDvarFloat( "createfx_scaleid" ); + print_frames = getDvarInt( "createfx_print_frames" ); + if ( !isDefined( level.createfx_manipulate_offset ) ) + { + level.createfx_manipulate_offset = 0; + } + offset = level.createfx_manipulate_offset; + level.createfx_manipulate_offset = ( level.createfx_manipulate_offset + 1 ) % print_frames; + i = offset; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( !ent.drawn ) + { + } + else if ( isDefined( highlightedent ) && ent == highlightedent ) + { + } + else colorindex = "default"; + if ( index_is_selected( i ) ) + { + colorindex = "selected"; + } +/# + print3d( ent.v[ "origin" ], ".", colors[ ent.v[ "type" ] ][ colorindex ], 1, scale, print_frames ); +#/ + if ( ent.textalpha > 0 ) + { + printright = vectorScale( right, ( ent.v[ "fxid" ].size * -2,93 ) * scale ); + printup = ( 0, 0, 15 * scale ); +/# + print3d( ent.v[ "origin" ] + printright + printup, ent.v[ "fxid" ], colors[ ent.v[ "type" ] ][ colorindex ], ent.textalpha, scale, print_frames ); +#/ + } + i += print_frames; + } + if ( isDefined( highlightedent ) ) + { + if ( !entities_are_selected() ) + { + display_fx_info( highlightedent ); + } + if ( leftclick ) + { + entwasselected = index_is_selected( highlightedent.last_fx_index ); + level.createfx_selecting = !entwasselected; + if ( !ctrlheld ) + { + selectedsize = level.selected_fx_ents.size; + clear_entity_selection(); + if ( entwasselected && selectedsize == 1 ) + { + select_entity( highlightedent.last_fx_index, highlightedent ); + } + } + toggle_entity_selection( highlightedent.last_fx_index, highlightedent ); + } + else + { + if ( leftheld ) + { + if ( ctrlheld ) + { + if ( level.createfx_selecting ) + { + select_entity( highlightedent.last_fx_index, highlightedent ); + } + if ( !level.createfx_selecting ) + { + deselect_entity( highlightedent.last_fx_index, highlightedent ); + } + } + } + } + colorindex = "highlighted"; + if ( index_is_selected( highlightedent.last_fx_index ) ) + { + colorindex = "selected"; + } +/# + print3d( highlightedent.v[ "origin" ], ".", colors[ highlightedent.v[ "type" ] ][ colorindex ], 1, scale, 1 ); +#/ + if ( highlightedent.textalpha > 0 ) + { + printright = vectorScale( right, ( highlightedent.v[ "fxid" ].size * -2,93 ) * scale ); + printup = ( 0, 0, 15 * scale ); +/# + print3d( highlightedent.v[ "origin" ] + printright + printup, highlightedent.v[ "fxid" ], colors[ highlightedent.v[ "type" ] ][ colorindex ], highlightedent.textalpha, scale, 1 ); +#/ + } + } +} + +clear_settable_fx() +{ + level.createfx_inputlocked = 0; + setdvar( "fx", "nil" ); + level.selected_fx_option_index = undefined; + reset_fx_hud_colors(); +} + +reset_fx_hud_colors() +{ + i = 0; + while ( i < level.createfx_hudelements ) + { + level.createfxhudelements[ i ][ 0 ].color = ( 1, 1, 1 ); + i++; + } +} + +button_is_held( name, name2 ) +{ + if ( isDefined( name2 ) ) + { + if ( isDefined( level.buttonisheld[ name2 ] ) ) + { + return 1; + } + } + return isDefined( level.buttonisheld[ name ] ); +} + +button_is_clicked( name, name2 ) +{ + if ( isDefined( name2 ) ) + { + if ( isDefined( level.buttonclick[ name2 ] ) ) + { + return 1; + } + } + return isDefined( level.buttonclick[ name ] ); +} + +toggle_entity_selection( index, ent ) +{ + if ( isDefined( level.selected_fx[ index ] ) ) + { + deselect_entity( index, ent ); + } + else + { + select_entity( index, ent ); + } +} + +select_entity( index, ent, skip_undo ) +{ + if ( isDefined( level.selected_fx[ index ] ) ) + { + return; + } + ent.last_fx_index = index; + if ( !isDefined( skip_undo ) && level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "none"; + } + clear_settable_fx(); + level notify( "new_ent_selection" ); + ent thread entity_highlight_enable(); + level.selected_fx[ index ] = 1; + level.selected_fx_ents[ level.selected_fx_ents.size ] = ent; +} + +ent_is_highlighted( ent ) +{ + if ( !isDefined( level.fx_highlightedent ) ) + { + return 0; + } + return ent == level.fx_highlightedent; +} + +deselect_entity( index, ent ) +{ + if ( !isDefined( level.selected_fx[ index ] ) ) + { + return; + } + if ( level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "none"; + } + clear_settable_fx(); + level notify( "new_ent_selection" ); + if ( !ent_is_highlighted( ent ) ) + { + ent thread entity_highlight_disable(); + } + newarray = []; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + if ( level.selected_fx_ents[ i ] != ent ) + { + newarray[ newarray.size ] = level.selected_fx_ents[ i ]; + } + i++; + } + level.selected_fx_ents = newarray; +} + +index_is_selected( index ) +{ + return isDefined( level.selected_fx[ index ] ); +} + +ent_is_selected( ent ) +{ + i = 0; + while ( i < level.selected_fx_ents.size ) + { + if ( level.selected_fx_ents[ i ] == ent ) + { + return 1; + } + i++; + } + return 0; +} + +clear_entity_selection( skip_undo ) +{ + if ( !isDefined( skip_undo ) && level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "none"; + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + if ( !ent_is_highlighted( level.selected_fx_ents[ i ] ) ) + { + level.selected_fx_ents[ i ] thread entity_highlight_disable(); + } + i++; + } + level.selected_fx = []; + level.selected_fx_ents = []; +} + +draw_axis() +{ + if ( isDefined( self.draw_axis_model ) ) + { + return; + } + self.draw_axis_model = spawn_axis_model( self.v[ "origin" ], self.v[ "angles" ] ); + level thread draw_axis_think( self ); + if ( !isDefined( level.draw_axis_models ) ) + { + level.draw_axis_models = []; + } + level.draw_axis_models[ level.draw_axis_models.size ] = self.draw_axis_model; +} + +spawn_axis_model( origin, angles ) +{ + model = spawn( "script_model", origin ); + model setmodel( "fx_axis_createfx" ); + model.angles = angles; + return model; +} + +draw_axis_think( axis_parent ) +{ + axis_model = axis_parent.draw_axis_model; + axis_model endon( "death" ); + player = get_players()[ 0 ]; + range = getDvarInt( "createfx_drawaxis_range" ); + i = 0; + while ( 1 ) + { + if ( !isDefined( axis_parent ) ) + { + break; + } + else + { + if ( distancesquared( axis_model.origin, player.origin ) > ( range * range ) ) + { + if ( isDefined( axis_model ) ) + { + axis_model delete(); + arrayremovevalue( level.draw_axis_models, undefined ); + } + } + else + { + if ( !isDefined( axis_model ) ) + { + axis_model = spawn_axis_model( axis_parent.v[ "origin" ], axis_parent.v[ "angles" ] ); + axis_parent.draw_axis_model = axis_model; + level.draw_axis_models[ level.draw_axis_models.size ] = axis_model; + } + } + axis_model.origin = axis_parent.v[ "origin" ]; + axis_model.angles = axis_parent.v[ "angles" ]; + wait 0,1; + i++; + if ( i >= 10 ) + { + range = getDvarInt( "createfx_drawaxis_range" ); + i = 0; + } + } + } + if ( isDefined( axis_model ) ) + { + axis_model delete(); + } +} + +stop_drawing_axis_models() +{ + if ( isDefined( level.draw_axis_models ) ) + { + i = 0; + while ( i < level.draw_axis_models.size ) + { + if ( isDefined( level.draw_axis_models[ i ] ) ) + { + level.draw_axis_models[ i ] delete(); + } + i++; + } + arrayremovevalue( level.draw_axis_models, undefined ); + } +} + +clear_fx_hudelements() +{ + level.cfx_center_text[ level.cfx_center_text_max - 1 ] clearalltextafterhudelem(); + i = 0; + while ( i < level.createfx_hudelements ) + { + p = 0; + while ( p < 2 ) + { + level.createfxhudelements[ i ][ p ] settext( "" ); + p++; + } + i++; + } + level.fxhudelements = 0; +} + +set_fx_hudelement( text ) +{ + if ( ismp() && !isDefined( level.createfx_delay_done ) ) + { + return; + } + if ( level.fxhudelements < level.createfx_hudelements ) + { + p = 0; + while ( p < 2 ) + { + level.createfxhudelements[ level.fxhudelements ][ p ] settext( text ); + p++; + } + level.fxhudelements++; + } +} + +buttondown( button, button2 ) +{ + if ( !buttonpressed_internal( button ) ) + { + return buttonpressed_internal( button2 ); + } +} + +buttonpressed_internal( button ) +{ + if ( !isDefined( button ) ) + { + return 0; + } + if ( kb_locked( button ) ) + { + return 0; + } + player = get_players()[ 0 ]; + return player buttonpressed( button ); +} + +get_selected_move_vector() +{ + player = get_players()[ 0 ]; + yaw = player getplayerangles()[ 1 ]; + angles = ( 0, yaw, 0 ); + right = anglesToRight( angles ); + forward = anglesToForward( angles ); + up = anglesToUp( angles ); + ctrlheld = button_is_held( "ctrl", "BUTTON_LSHLDR" ); + if ( buttondown( "kp_uparrow", "DPAD_UP" ) ) + { + if ( level.selectedmove_forward < 0 ) + { + level.selectedmove_forward = 0; + } + if ( ctrlheld ) + { + level.selectedmove_forward = 0,1; + wait 0,05; + } + else + { + level.selectedmove_forward += 1; + } + } + else if ( buttondown( "kp_downarrow", "DPAD_DOWN" ) ) + { + if ( level.selectedmove_forward > 0 ) + { + level.selectedmove_forward = 0; + } + if ( ctrlheld ) + { + level.selectedmove_forward = -1 * 0,1; + wait 0,05; + } + else + { + level.selectedmove_forward -= 1; + } + } + else + { + level.selectedmove_forward = 0; + } + if ( buttondown( "kp_rightarrow", "DPAD_RIGHT" ) ) + { + if ( level.selectedmove_right < 0 ) + { + level.selectedmove_right = 0; + } + if ( ctrlheld ) + { + level.selectedmove_right = 0,1; + wait 0,05; + } + else + { + level.selectedmove_right += 1; + } + } + else if ( buttondown( "kp_leftarrow", "DPAD_LEFT" ) ) + { + if ( level.selectedmove_right > 0 ) + { + level.selectedmove_right = 0; + } + if ( ctrlheld ) + { + level.selectedmove_right = -1 * 0,1; + wait 0,05; + } + else + { + level.selectedmove_right -= 1; + } + } + else + { + level.selectedmove_right = 0; + } + if ( buttondown( "BUTTON_Y" ) ) + { + if ( level.selectedmove_up < 0 ) + { + level.selectedmove_up = 0; + } + if ( ctrlheld ) + { + level.selectedmove_up = 0,1; + wait 0,05; + } + else + { + level.selectedmove_up += 1; + } + } + else if ( buttondown( "BUTTON_B" ) ) + { + if ( level.selectedmove_up > 0 ) + { + level.selectedmove_up = 0; + } + if ( ctrlheld ) + { + level.selectedmove_up = -1 * 0,1; + wait 0,05; + } + else + { + level.selectedmove_up -= 1; + } + } + else + { + level.selectedmove_up = 0; + } + vector = ( 1, 1, 1 ); + vector += vectorScale( forward, level.selectedmove_forward ); + vector += vectorScale( right, level.selectedmove_right ); + vector += vectorScale( up, level.selectedmove_up ); + return vector; +} + +process_button_held_and_clicked() +{ + add_button( "mouse1" ); + add_kb_button( "shift" ); + add_kb_button( "ctrl" ); + add_button( "BUTTON_RSHLDR" ); + add_button( "BUTTON_LSHLDR" ); + add_button( "BUTTON_RSTICK" ); + add_button( "BUTTON_LSTICK" ); + add_button( "BUTTON_A" ); + add_button( "BUTTON_B" ); + add_button( "BUTTON_X" ); + add_button( "BUTTON_Y" ); + add_button( "DPAD_UP" ); + add_button( "DPAD_LEFT" ); + add_button( "DPAD_RIGHT" ); + add_button( "DPAD_DOWN" ); + add_kb_button( "escape" ); + add_button( "BUTTON_RTRIG" ); + add_button( "BUTTON_LTRIG" ); + add_kb_button( "a" ); + add_button( "F1" ); + add_button( "F5" ); + add_button( "F2" ); + add_kb_button( "c" ); + add_kb_button( "d" ); + add_kb_button( "f" ); + add_kb_button( "h" ); + add_kb_button( "i" ); + add_kb_button( "j" ); + add_kb_button( "k" ); + add_kb_button( "l" ); + add_kb_button( "m" ); + add_kb_button( "p" ); + add_kb_button( "q" ); + add_kb_button( "r" ); + add_kb_button( "s" ); + add_kb_button( "v" ); + add_kb_button( "x" ); + add_kb_button( "z" ); + add_button( "del" ); + add_kb_button( "end" ); + add_kb_button( "tab" ); + add_kb_button( "ins" ); + add_kb_button( "add" ); + add_kb_button( "space" ); + add_kb_button( "enter" ); + add_kb_button( "leftarrow" ); + add_kb_button( "rightarrow" ); + add_kb_button( "1" ); + add_kb_button( "2" ); + add_kb_button( "3" ); + add_kb_button( "4" ); + add_kb_button( "5" ); + add_kb_button( "6" ); + add_kb_button( "7" ); + add_kb_button( "8" ); + add_kb_button( "9" ); + add_kb_button( "0" ); + add_kb_button( "~" ); +} + +locked( name ) +{ + if ( isDefined( level.createfx_lockedlist[ name ] ) ) + { + return 0; + } + return kb_locked( name ); +} + +kb_locked( name ) +{ + if ( level.createfx_inputlocked ) + { + return isDefined( level.button_is_kb[ name ] ); + } +} + +add_button( name ) +{ + player = get_players()[ 0 ]; + if ( locked( name ) ) + { + return; + } + if ( !isDefined( level.buttonisheld[ name ] ) ) + { + if ( player buttonpressed( name ) ) + { + level.buttonisheld[ name ] = 1; + level.buttonclick[ name ] = 1; + } + } + else + { + if ( !player buttonpressed( name ) ) + { + } + } +} + +add_kb_button( name ) +{ + level.button_is_kb[ name ] = 1; + add_button( name ); +} + +set_anglemod_move_vector() +{ +/# + ctrlheld = button_is_held( "ctrl", "BUTTON_LSHLDR" ); + players = get_players(); + if ( level.is_camera_on == 1 ) + { + newmovement = players[ 0 ] getnormalizedmovement(); + dolly_movement = players[ 0 ] getnormalizedcameramovement(); + if ( newmovement[ 1 ] <= -0,3 ) + { + level.selectedrotate_yaw -= 1; + } + else if ( newmovement[ 1 ] >= 0,3 ) + { + level.selectedrotate_yaw += 1; + } + else if ( buttondown( "kp_leftarrow", "DPAD_LEFT" ) ) + { + if ( level.selectedrotate_yaw < 0 ) + { + level.selectedrotate_yaw = 0; + } + level.selectedrotate_yaw += 0,1; + } + else if ( buttondown( "kp_rightarrow", "DPAD_RIGHT" ) ) + { + if ( level.selectedrotate_yaw > 0 ) + { + level.selectedrotate_yaw = 0; + } + level.selectedrotate_yaw -= 0,1; + } + else + { + level.selectedrotate_yaw = 0; + } + if ( dolly_movement[ 0 ] <= -0,2 ) + { + level.selectedrotate_pitch += 1; + } + else if ( dolly_movement[ 0 ] >= 0,2 ) + { + level.selectedrotate_pitch -= 1; + } + else if ( buttondown( "kp_uparrow", "DPAD_UP" ) ) + { + if ( level.selectedrotate_pitch < 0 ) + { + level.selectedrotate_pitch = 0; + } + level.selectedrotate_pitch += 0,1; + } + else if ( buttondown( "kp_downarrow", "DPAD_DOWN" ) ) + { + if ( level.selectedrotate_pitch > 0 ) + { + level.selectedrotate_pitch = 0; + } + level.selectedrotate_pitch -= 0,1; + } + else + { + level.selectedrotate_pitch = 0; + } + if ( buttondown( "BUTTON_Y" ) ) + { + if ( level.selectedrotate_roll < 0 ) + { + level.selectedrotate_roll = 0; + } + level.selectedrotate_roll += 0,1; + } + else if ( buttondown( "BUTTON_B" ) ) + { + if ( level.selectedrotate_roll > 0 ) + { + level.selectedrotate_roll = 0; + } + level.selectedrotate_roll -= 0,1; + } + else + { + level.selectedrotate_roll = 0; + } + } + else if ( buttondown( "kp_uparrow", "DPAD_UP" ) ) + { + if ( level.selectedrotate_pitch < 0 ) + { + level.selectedrotate_pitch = 0; + } + if ( ctrlheld ) + { + level.selectedrotate_pitch = 0,1; + wait 0,05; + } + else + { + level.selectedrotate_pitch += 1; + } + } + else if ( buttondown( "kp_downarrow", "DPAD_DOWN" ) ) + { + if ( level.selectedrotate_pitch > 0 ) + { + level.selectedrotate_pitch = 0; + } + if ( ctrlheld ) + { + level.selectedrotate_pitch = -1 * 0,1; + wait 0,05; + } + else + { + level.selectedrotate_pitch -= 1; + } + } + else + { + level.selectedrotate_pitch = 0; + } + if ( buttondown( "kp_leftarrow", "DPAD_LEFT" ) ) + { + if ( level.selectedrotate_yaw < 0 ) + { + level.selectedrotate_yaw = 0; + } + if ( ctrlheld ) + { + level.selectedrotate_yaw = 0,1; + wait 0,05; + } + else + { + level.selectedrotate_yaw += 1; + } + } + else if ( buttondown( "kp_rightarrow", "DPAD_RIGHT" ) ) + { + if ( level.selectedrotate_yaw > 0 ) + { + level.selectedrotate_yaw = 0; + } + if ( ctrlheld ) + { + level.selectedrotate_yaw = -1 * 0,1; + wait 0,05; + } + else + { + level.selectedrotate_yaw -= 1; + } + } + else + { + level.selectedrotate_yaw = 0; + } + if ( buttondown( "BUTTON_Y" ) ) + { + if ( level.selectedrotate_roll < 0 ) + { + level.selectedrotate_roll = 0; + } + if ( ctrlheld ) + { + level.selectedrotate_roll = 0,1; + wait 0,05; + } + else + { + level.selectedrotate_roll += 1; + } + } + else if ( buttondown( "BUTTON_B" ) ) + { + if ( level.selectedrotate_roll > 0 ) + { + level.selectedrotate_roll = 0; + } + if ( ctrlheld ) + { + level.selectedrotate_roll = -1 * 0,1; + wait 0,05; + } + else + { + level.selectedrotate_roll -= 1; + } + } + else + { + level.selectedrotate_roll = 0; +#/ + } +} + +cfxprintln( file, string ) +{ +/# + if ( file == -1 ) + { + return; + } + fprintln( file, string ); +#/ +} + +update_save_bar( number ) +{ + level notify( "saving_start" ); + level endon( "saving_start" ); + level.current_saving_number = 0; + while ( level.current_saving_number < level.createfxent.size ) + { + center_text_clear(); + center_text_add( "Saving Createfx to File" ); + center_text_add( "Saving effect " + level.current_saving_number + "/" + level.createfxent.size ); + center_text_add( "Do not reset Xenon until saving is complete." ); + wait 0,05; + center_text_clear(); + } + center_text_add( "Saving Complete." ); + center_text_add( level.createfxent.size + " effects saved to files." ); +} + +generate_fx_log( type, autosave ) +{ +/# + autosave = isDefined( autosave ); + if ( type == "server" ) + { + if ( !autosave ) + { + filename = level.cfx_server_scriptdata + level.script + "_fx.gsc"; + } + else + { + filename = level.cfx_server_scriptdata + "backup.gsc"; + } + call_loop = level.cfx_server_loop; + call_oneshot = level.cfx_server_oneshot; + call_exploder = level.cfx_server_exploder; + call_loopsound = level.cfx_server_loopsound; + } + else if ( type == "client" ) + { + if ( !autosave ) + { + filename = level.cfx_client_scriptdata + level.script + "_fx.csc"; + } + else + { + filename = level.cfx_client_scriptdata + "backup.csc"; + } + call_loop = level.cfx_client_loop; + call_oneshot = level.cfx_client_oneshot; + call_exploder = level.cfx_client_exploder; + call_loopsound = level.cfx_client_loopsound; + } + else + { + println( "^1Error: Improper type in generate_fx_log()" ); + return; + } + file = openfile( filename, "write" ); + if ( file == -1 ) + { + level.write_error = filename; + if ( type == "server" ) + { + return 1; + } + else + { + if ( type == "client" ) + { + return 2; + } + else + { + return 3; + } + } + } + else + { + cfxprintln( file, "//_createfx generated. Do not touch!!" ); + cfxprintln( file, "main()" ); + cfxprintln( file, "{" ); + p = 0; + while ( p < level.createfxent.size ) + { + ent = level.createfxent[ p ]; + origin = []; + angles = []; + i = 0; + while ( i < 3 ) + { + origin[ i ] = ent.v[ "origin" ][ i ]; + angles[ i ] = ent.v[ "angles" ][ i ]; + if ( origin[ i ] < 0,1 && origin[ i ] > ( 0,1 * -1 ) ) + { + origin[ i ] = 0; + } + if ( angles[ i ] < 0,1 && angles[ i ] > ( 0,1 * -1 ) ) + { + angles[ i ] = 0; + } + i++; + } + ent.v[ "origin" ] = ( origin[ 0 ], origin[ 1 ], origin[ 2 ] ); + ent.v[ "angles" ] = ( angles[ 0 ], angles[ 1 ], angles[ 2 ] ); + p++; + } + if ( !autosave ) + { + println( " *** CREATING EFFECT, COPY THESE LINES TO ", level.script, "_fx.gsc *** " ); + } + cfxprintln( file, "// CreateFX entities placed: " + ( level.createfxent.size - level.non_fx_ents ) ); + breather = 0; + if ( autosave ) + { + breather_pause = 1; + } + else + { + breather_pause = 5; + } + i = 0; + while ( i < level.createfxent.size ) + { + e = level.createfxent[ i ]; + assert( isDefined( e.v[ "type" ] ), "effect at origin " + e.v[ "origin" ] + " has no type" ); + if ( isDefined( e.model ) ) + { + i++; + continue; + } + else if ( e.v[ "fxid" ] == "No FX" ) + { + i++; + continue; + } + else + { + output_name = "\t"; + output_props = "\t"; + ent_type = e.v[ "type" ]; + if ( ent_type == "loopfx" ) + { + output_name += "ent = " + call_loop + "( "" + e.v[ "fxid" ] + "" );"; + } + if ( ent_type == "oneshotfx" ) + { + output_name += "ent = " + call_oneshot + "( "" + e.v[ "fxid" ] + "" );"; + } + if ( ent_type == "exploder" ) + { + output_name += "ent = " + call_exploder + "( "" + e.v[ "fxid" ] + "" );"; + } + if ( ent_type == "soundfx" ) + { + output_name += "ent = " + call_loopsound + "();"; + } + output_props += get_fx_options( e ); + cfxprintln( file, output_name ); + cfxprintln( file, output_props ); + cfxprintln( file, "\t" ); + breather++; + if ( breather >= breather_pause ) + { + wait 0,05; + breather = 0; + } + } + i++; + } + if ( level.bscriptgened ) + { + script_gen_dump_addline( level.cfx_server_scriptgendump, level.script + "_fx" ); + [[ level.cfx_func_script_gen_dump ]](); + } + cfxprintln( file, "}" ); + saved = closefile( file ); + assert( saved == 1, "File not saved (see above message?): " + filename ); + println( "CreateFX entities placed: " + ( level.createfxent.size - level.non_fx_ents ) ); + return 0; +#/ + } +} + +get_fx_options( ent ) +{ + output_props = ""; + i = 0; + while ( i < level.createfx_options.size ) + { + option = level.createfx_options[ i ]; + if ( !isDefined( ent.v[ option[ "name" ] ] ) ) + { + i++; + continue; + } + else if ( !mask( option[ "mask" ], ent.v[ "type" ] ) ) + { + i++; + continue; + } + else if ( option[ "type" ] == "string" ) + { + if ( option[ "name" ] == "fxid" ) + { + i++; + continue; + } + else output_props += "ent.v[ "" + option[ "name" ] + "" ] = "" + ent.v[ option[ "name" ] ] + ""; "; + i++; + continue; + } + else + { + output_props += "ent.v[ "" + option[ "name" ] + "" ] = " + ent.v[ option[ "name" ] ] + "; "; + } + i++; + } + return output_props; +} + +entity_highlight_disable() +{ + self notify( "highlight change" ); + self endon( "highlight change" ); + for ( ;; ) + { + self.textalpha -= 0,05; + if ( self.textalpha < 0,4 ) + { + break; + } + else + { + wait 0,05; + } + } + self.textalpha = 0,4; +} + +entity_highlight_enable() +{ + self notify( "highlight change" ); + self endon( "highlight change" ); + for ( ;; ) + { + self.textalpha += 0,05; + if ( self.textalpha > 1 ) + { + break; + } + else + { + wait 0,05; + } + } + self.textalpha = 1; +} + +get_center_of_array( array ) +{ + center = ( 1, 1, 1 ); + i = 0; + while ( i < array.size ) + { + center = ( center[ 0 ] + array[ i ].v[ "origin" ][ 0 ], center[ 1 ] + array[ i ].v[ "origin" ][ 1 ], center[ 2 ] + array[ i ].v[ "origin" ][ 2 ] ); + i++; + } + return ( center[ 0 ] / array.size, center[ 1 ] / array.size, center[ 2 ] / array.size ); +} + +rotation_is_occuring() +{ + if ( level.selectedrotate_roll != 0 ) + { + return 1; + } + if ( level.selectedrotate_pitch != 0 ) + { + return 1; + } + return level.selectedrotate_yaw != 0; +} + +process_fx_rotater() +{ + if ( level.fx_rotating ) + { + return; + } + set_anglemod_move_vector(); + if ( !rotation_is_occuring() ) + { + return; + } + level.fx_rotating = 1; + if ( level.cfx_last_action != "rotate" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "rotate"; + } + if ( level.selected_fx_ents.size > 1 ) + { + center = get_center_of_array( level.selected_fx_ents ); + org = spawn( "script_origin", center ); + org.v[ "angles" ] = level.selected_fx_ents[ 0 ].v[ "angles" ]; + org.v[ "origin" ] = center; + rotater = []; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + rotater[ i ] = spawn( "script_origin", level.selected_fx_ents[ i ].v[ "origin" ] ); + rotater[ i ].angles = level.selected_fx_ents[ i ].v[ "angles" ]; + rotater[ i ] linkto( org ); + i++; + } + rotate_over_time( org, rotater ); + org delete(); + i = 0; + while ( i < rotater.size ) + { + rotater[ i ] delete(); + i++; + } + } + else if ( level.selected_fx_ents.size == 1 ) + { + ent = level.selected_fx_ents[ 0 ]; + rotater = spawn( "script_origin", ( 1, 1, 1 ) ); + rotater.angles = ent.v[ "angles" ]; + if ( level.selectedrotate_pitch != 0 ) + { + rotater devaddpitch( level.selectedrotate_pitch ); + } + else if ( level.selectedrotate_yaw != 0 ) + { + rotater devaddyaw( level.selectedrotate_yaw ); + } + else + { + rotater devaddroll( level.selectedrotate_roll ); + } + ent.v[ "angles" ] = rotater.angles; + rotater delete(); + wait 0,05; + } + level.fx_rotating = 0; +} + +rotate_over_time( org, rotater ) +{ + level endon( "new_ent_selection" ); + p = 0; + while ( p < 2 ) + { + if ( level.selectedrotate_pitch != 0 ) + { + org devaddpitch( level.selectedrotate_pitch ); + } + else if ( level.selectedrotate_yaw != 0 ) + { + org devaddyaw( level.selectedrotate_yaw ); + } + else + { + org devaddroll( level.selectedrotate_roll ); + } + wait 0,05; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( isDefined( ent.model ) ) + { + i++; + continue; + } + else + { + ent.v[ "origin" ] = rotater[ i ].origin; + ent.v[ "angles" ] = rotater[ i ].angles; + } + i++; + } + p++; + } +} + +delete_pressed() +{ + if ( level.createfx_inputlocked ) + { + remove_selected_option(); + return; + } + delete_selection(); +} + +remove_selected_option() +{ + if ( !isDefined( level.selected_fx_option_index ) ) + { + return; + } + name = level.createfx_options[ level.selected_fx_option_index ][ "name" ]; + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( !ent_is_selected( ent ) ) + { + i++; + continue; + } + else + { + ent remove_option( name ); + } + i++; + } + update_selected_entities(); + clear_settable_fx(); +} + +remove_option( name ) +{ +} + +delete_selection() +{ + newarray = []; + if ( level.selected_fx_ents.size < 1 ) + { + return; + } + store_undo_state( "delete", level.selected_fx_ents ); + level.cfx_last_action = "none"; + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( ent_is_selected( ent ) ) + { + if ( isDefined( ent.looper ) ) + { + ent.looper delete(); + } + level.fx_highlightedent = undefined; + ent notify( "stop_loop" ); + i++; + continue; + } + else + { + newarray[ newarray.size ] = ent; + } + i++; + } + level.createfxent = newarray; + level.selected_fx = []; + level.selected_fx_ents = []; + clear_fx_hudelements(); +} + +move_selection_to_cursor( skip_undo ) +{ + origin = level.createfxcursor[ "position" ]; + if ( level.selected_fx_ents.size <= 0 ) + { + return; + } + if ( !isDefined( skip_undo ) && level.cfx_last_action != "move_to_cursor" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "move_to_cursor"; + } + center = get_center_of_array( level.selected_fx_ents ); + difference = center - origin; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( isDefined( ent.model ) ) + { + i++; + continue; + } + else + { + ent.v[ "origin" ] -= difference; + } + i++; + } +} + +insert_effect() +{ + setmenu( "creation" ); + level.effect_list_offset = 0; + clear_fx_hudelements(); + set_fx_hudelement( "Pick effect type to create:" ); + set_fx_hudelement( "1. One Shot fx" ); + set_fx_hudelement( "2. Looping fx" ); + set_fx_hudelement( "3. Exploder" ); + set_fx_hudelement( "4. Looping sound" ); + set_fx_hudelement( "(c) Cancel" ); + set_fx_hudelement( "(x) Exit" ); +} + +show_help() +{ + clear_fx_hudelements(); + set_fx_hudelement( "Help:" ); + set_fx_hudelement( "I Insert effect" ); + set_fx_hudelement( "Shift + D Delete selected effects" ); + set_fx_hudelement( "F + 5 Save" ); + set_fx_hudelement( "A button Toggle the selection of the current effect" ); + set_fx_hudelement( "X button Toggle effect rotation mode" ); + set_fx_hudelement( "Y button Move selected effects up or rotate X axis" ); + set_fx_hudelement( "B button Move selected effects down or rotate X axis" ); + set_fx_hudelement( "D-pad Up/Down Move selected effects Forward/Backward or rotate Y axis" ); + set_fx_hudelement( "D-pad Left/Right Move selected effects Left/Right or rotate Z axis" ); + set_fx_hudelement( "R Shoulder Move selected effects to the cursor" ); + set_fx_hudelement( "L Shoulder Hold to select multiple effects" ); + set_fx_hudelement( "Right Arrow Next page in options menu" ); + set_fx_hudelement( "Left Arrow Previous page in options menu" ); + set_fx_hudelement( "A Add option to the selected effects" ); + set_fx_hudelement( "X Exit effect options menu" ); + set_fx_hudelement( "Shift + D Drop selected effects to the ground" ); + set_fx_hudelement( "R Reset the rotation of the selected effects" ); + set_fx_hudelement( "L Stick Copy effects" ); + set_fx_hudelement( "R Stick Paste effects" ); + set_fx_hudelement( "V Copy the angles from the most recently selected fx onto all selected fx." ); + set_fx_hudelement( "F + 2 Toggle CreateFX dot and menu drawing" ); + set_fx_hudelement( "U UFO" ); + set_fx_hudelement( "N Noclip" ); + set_fx_hudelement( "R Trig + L Trig Jump forward 8000 units" ); + set_fx_hudelement( "T Toggle Timescale FAST" ); + set_fx_hudelement( "Y Toggle Timescale SLOW" ); + set_fx_hudelement( "H Toggle FX Visibility" ); + set_fx_hudelement( "W Toggle effect wireframe" ); + set_fx_hudelement( "P Toggle FX Profile" ); +} + +center_text_init() +{ + level.cfx_center_text = []; + level.cfx_center_text_index = 0; + level.cfx_center_text_max = 3; + new_array = []; + p = 0; + while ( p < level.cfx_center_text_max ) + { + center_hud = newdebughudelem(); + center_hud settext( " " ); + center_hud.horzalign = "center"; + center_hud.vertalign = "middle"; + center_hud.alignx = "center"; + center_hud.aligny = "middle"; + center_hud.foreground = 1; + center_hud.fontscale = 1,1; + center_hud.sort = 21; + center_hud.alpha = 1; + center_hud.color = ( 1, 1, 1 ); + center_hud.y = p * 25; + new_array[ p ] = center_hud; + p++; + } + level.cfx_center_text = new_array; +} + +center_text_add( text ) +{ + if ( isDefined( text ) && isDefined( level.cfx_center_text ) ) + { + level.cfx_center_text[ level.cfx_center_text_index ] settext( text ); + level.cfx_center_text_index++; + if ( level.cfx_center_text_index >= level.cfx_center_text_max ) + { + level.cfx_center_text_index = level.cfx_center_text_max - 1; + } + } +} + +center_text_clear() +{ + p = 0; + while ( p < level.cfx_center_text_max ) + { + level.cfx_center_text[ p ] settext( " " ); + p++; + } + level.cfx_center_text_index = 0; +} + +write_error_msg( filename ) +{ + level notify( "write_error" ); + level endon( "write_error" ); + while ( isDefined( filename ) ) + { + center_text_clear(); + center_text_add( "File " + filename + " is not writeable." ); + center_text_add( "If it's checked out, restart your computer!" ); + center_text_add( "Hold the A Button to dismiss." ); + for ( ;; ) + { + player = get_players()[ 0 ]; + if ( player buttonpressed( "BUTTON_A" ) ) + { + center_text_clear(); + level.write_error = ""; + return; + } + else + { + wait 0,25; + } + } + } +} + +select_last_entity( skip_undo ) +{ + select_entity( level.createfxent.size - 1, level.createfxent[ level.createfxent.size - 1 ], skip_undo ); +} + +post_entity_creation_function() +{ + self.textalpha = 0; + self.drawn = 1; +} + +copy_ents() +{ + if ( level.selected_fx_ents.size <= 0 ) + { + return; + } + array = []; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + newent = spawnstruct(); + newent.v = ent.v; + newent post_entity_creation_function(); + array[ array.size ] = newent; + i++; + } + level.stored_ents = array; +} + +paste_ents() +{ + delay_min = getDvarInt( "createfx_oneshot_min_delay" ); + delay_max = getDvarInt( "createfx_oneshot_max_delay" ); + if ( delay_min > delay_max ) + { + temp = delay_min; + delay_min = delay_max; + delay_max = temp; + } + if ( !isDefined( level.stored_ents ) ) + { + return; + } + clear_entity_selection(); + if ( level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + } + level.cfx_last_action = "none"; + i = 0; + while ( i < level.stored_ents.size ) + { + level.stored_ents[ i ].uniqueid = level.cfx_uniqueid; + level.cfx_uniqueid++; + if ( level.stored_ents[ i ].v[ "type" ] == "oneshotfx" ) + { + level.stored_ents[ i ].v[ "delay" ] = randomintrange( delay_min, delay_max ); + } + add_and_select_entity( level.stored_ents[ i ], "skip_undo" ); + i++; + } + move_selection_to_cursor( "skip_undo" ); + update_selected_entities(); + store_undo_state( "add", level.stored_ents ); + level.stored_ents = []; + copy_ents(); +} + +paste_ents_onto_ents() +{ + if ( !isDefined( level.stored_ents ) || !isDefined( level.selected_fx_ents ) ) + { + return; + } + if ( level.stored_ents.size < 1 || level.selected_fx_ents.size < 1 ) + { + return; + } + if ( level.stored_ents.size != level.selected_fx_ents.size ) + { +/# + println( "^2CreateFX: Number of source ents must match the number of destination ents for Paste Into to work." ); +#/ + return; + } + if ( level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + } + level.cfx_last_action = "none"; + selected_ents_temp = level.selected_fx_ents; + i = 0; + while ( i < level.stored_ents.size ) + { + source_ent = level.stored_ents[ i ]; + target_ent = level.selected_fx_ents[ i ]; + source_ent.uniqueid = level.cfx_uniqueid; + level.cfx_uniqueid++; + source_ent.v[ "angles" ] = target_ent.v[ "angles" ]; + source_ent.v[ "origin" ] = target_ent.v[ "origin" ]; + add_and_select_entity( source_ent, "skip_undo" ); + i++; + } + i = 0; + while ( i < selected_ents_temp.size ) + { + deselect_entity( selected_ents_temp[ i ].last_fx_index, selected_ents_temp[ i ] ); + i++; + } + update_selected_entities(); + store_undo_state( "add", level.stored_ents ); + level.stored_ents = []; + copy_ents(); +} + +add_and_select_entity( ent, skip_undo ) +{ + level.createfxent[ level.createfxent.size ] = ent; + select_last_entity( skip_undo ); +} + +stop_fx_looper() +{ + if ( isDefined( self.looper ) ) + { + self.looper delete(); + } + self [[ level.cfx_func_stop_loopsound ]](); +} + +restart_fx_looper() +{ + stop_fx_looper(); + self set_forward_and_up_vectors(); + if ( self.v[ "type" ] == "loopfx" ) + { + self [[ level.cfx_func_create_looper ]](); + } + if ( self.v[ "type" ] == "oneshotfx" ) + { + self [[ level.cfx_func_create_triggerfx ]](); + } + if ( self.v[ "type" ] == "soundfx" ) + { + self [[ level.cfx_func_create_loopsound ]](); + } +} + +update_selected_entities() +{ + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + ent restart_fx_looper(); + i++; + } +} + +copy_angles_of_selected_ents() +{ + level notify( "new_ent_selection" ); + if ( level.cfx_last_action != "copy_angles" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "copy_angles"; + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + ent.v[ "angles" ] = level.selected_fx_ents[ level.selected_fx_ents.size - 1 ].v[ "angles" ]; + ent set_forward_and_up_vectors(); + i++; + } + update_selected_entities(); +} + +reset_axis_of_selected_ents() +{ + level notify( "new_ent_selection" ); + if ( level.cfx_last_action != "reset_axis" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "reset_axis"; + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + ent.v[ "angles" ] = ( 1, 1, 1 ); + ent set_forward_and_up_vectors(); + i++; + } + update_selected_entities(); +} + +last_selected_entity_has_changed( lastselectentity ) +{ + if ( isDefined( lastselectentity ) ) + { + if ( !entities_are_selected() ) + { + return 1; + } + } + else + { + return entities_are_selected(); + } + return lastselectentity != level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; +} + +createfx_showorigin( id, org, delay, org2, type, exploder, id2, firefx, firefxdelay, firefxsound, fxsound, fxquake, fxdamage, soundalias, repeat, delay_min, delay_max, damage_radius, firefxtimeout ) +{ +} + +drop_selection_to_ground() +{ + if ( level.cfx_last_action != "drop_to_ground" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "drop_to_ground"; + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + trace = bullettrace( ent.v[ "origin" ], ent.v[ "origin" ] + vectorScale( ( 1, 1, 1 ), 2048 ), 0, undefined ); + ent.v[ "origin" ] = trace[ "position" ]; + i++; + } +} + +set_off_exploders() +{ + level notify( "createfx_exploder_reset" ); + exploders = []; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( isDefined( ent.v[ "exploder" ] ) ) + { + exploders[ ent.v[ "exploder" ] ] = 1; + } + i++; + } + keys = getarraykeys( exploders ); + i = 0; + while ( i < keys.size ) + { + exploder( keys[ i ] ); + i++; + } +} + +turn_off_exploders() +{ + level notify( "createfx_exploder_reset" ); + exploders = []; + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( isDefined( ent.v[ "exploder" ] ) ) + { + exploders[ ent.v[ "exploder" ] ] = 1; + } + i++; + } + keys = getarraykeys( exploders ); + i = 0; + while ( i < keys.size ) + { + stop_exploder( keys[ i ] ); + i++; + } +} + +draw_distance() +{ + count = 0; + last_pos = ( 1, 1, 1 ); + if ( getDvarInt( "createfx_drawdist" ) == 0 ) + { + setdvar( "createfx_drawdist", "1500" ); + } + player = get_players()[ 0 ]; + for ( ;; ) + { + maxdist = getDvarInt( "createfx_drawdist" ); + maxdistsqr = maxdist * maxdist; +/# + if ( flag( "createfx_saving" ) ) + { + println( "Waiting for createfx to save..." ); +#/ + } + flag_waitopen( "createfx_saving" ); + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( ent_is_selected( ent ) ) + { + ent.drawn = 1; + count++; + continue; + } + else + { + ent.drawn = distancesquared( player.origin, ent.v[ "origin" ] ) <= maxdistsqr; + } + count++; + if ( count > 50 ) + { + count = 0; + wait 0,05; + } + i++; + } + wait 0,1; + while ( distancesquared( player.origin, last_pos ) < 2500 ) + { + wait 0,1; + } + last_pos = player.origin; + } +} + +createfx_save( autosave ) +{ + flag_waitopen( "createfx_saving" ); + flag_set( "createfx_saving" ); + resettimeout(); + if ( isDefined( autosave ) ) + { + savemode = "AUTOSAVE"; + } + else + { + savemode = "USER SAVE"; + } + type = "server"; + old_time = getTime(); +/# + println( "\n^3#### CREATEFX SERVER " + savemode + " BEGIN ####" ); +#/ + file_error = generate_fx_log( type, autosave ); +/# + println( ( "^3#### CREATEFX SERVER " + savemode + " END (Time: " ) + ( ( getTime() - old_time ) * 0,001 ) + " seconds)####" ); +#/ + if ( file_error ) + { +/# + println( "^3#### CREATEFX " + savemode + " CANCELLED ####" ); +#/ + createfx_emergency_backup(); + } + else + { + if ( level.clientscripts && !isDefined( autosave ) ) + { + old_time = getTime(); +/# + println( "\n^3#### CREATEFX CLIENT " + savemode + " BEGIN ####" ); +#/ + file_error = generate_fx_log( "client" ); +/# + println( ( "^3#### CREATEFX CLIENT " + savemode + " END (Time: " ) + ( ( getTime() - old_time ) * 0,001 ) + " seconds)####" ); +#/ + if ( file_error ) + { +/# + iprintln( "CreateFX clientscript file is not writeable! Aborting save." ); +#/ +/# + println( "^3#### CREATEFX " + savemode + " CANCELLED ####" ); +#/ + return; + } + } + flag_clear( "createfx_saving" ); + } +} + +createfx_autosave() +{ + for ( ;; ) + { + wait_time = getDvarInt( "createfx_autosave_time" ); + if ( wait_time < 120 || isstring( wait_time ) ) + { + wait_time = 120; + } + wait wait_time; + if ( !flag( "createfx_saving" ) ) + { + createfx_save( 1 ); + } + } +} + +createfx_emergency_backup() +{ +/# + println( "^5#### CREATEFX EMERGENCY BACKUP BEGIN ####" ); +#/ + file_error = generate_fx_log( "server", 1 ); + if ( file_error ) + { +/# + iprintln( "Error saving to backup.gsc. All is lost!" ); +#/ + } + else + { +/# + println( "^5#### CREATEFX EMERGENCY BACKUP END ####" ); +#/ + } + flag_clear( "createfx_saving" ); +} + +move_player_around_map_fast() +{ + player = get_players()[ 0 ]; + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + eye = player geteye(); + trace = bullettrace( eye, eye + vectorScale( direction_vec, 20000 ), 0, undefined ); + dist = distance( eye, trace[ "position" ] ); + position = eye + vectorScale( direction_vec, dist - 64 ); + player setorigin( position ); +} + +move_player_to_next_same_effect( forward_search, lastselectentity ) +{ + player = get_players()[ 0 ]; + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + if ( !isDefined( forward_search ) ) + { + forward_search = 1; + } + ent = level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; + start_index = 0; + if ( level.selected_fx_ents.size <= 0 ) + { + if ( forward_search ) + { + ent = level.cfx_next_ent; + } + else + { + ent = level.cfx_previous_ent; + } + if ( isDefined( ent ) ) + { + index = get_ent_index( ent ); + if ( index >= 0 ) + { + select_entity( index, ent ); + position = ent.v[ "origin" ] - vectorScale( direction_vec, 175 ); + player setorigin( position ); + level.cfx_previous_ent = ent; + level.cfx_next_ent = get_next_ent_with_same_id( index, ent.v[ "fxid" ] ); + } + else if ( forward_search ) + { + level.cfx_next_ent = undefined; + } + else + { + level.cfx_previous_ent = undefined; + } + } + return; + } + if ( level.selected_fx_ents.size == 1 ) + { + i = 0; + while ( i < level.createfxent.size ) + { + if ( isDefined( level.selected_fx[ i ] ) ) + { + start_index = i; + deselect_entity( i, ent ); + break; + } + else + { + i++; + } + } + if ( forward_search ) + { + level.cfx_previous_ent = ent; + ent = get_next_ent_with_same_id( i, ent.v[ "fxid" ] ); + select_entity( level.ent_found_index, ent ); + position = ent.v[ "origin" ] - vectorScale( direction_vec, 175 ); + player setorigin( position ); + level.cfx_next_ent = get_next_ent_with_same_id( level.ent_found_index, ent.v[ "fxid" ] ); + return; + } + else + { + level.cfx_next_ent = ent; + ent = get_previous_ent_with_same_id( i, ent.v[ "fxid" ] ); + select_entity( level.ent_found_index, ent ); + position = ent.v[ "origin" ] - vectorScale( direction_vec, 175 ); + player setorigin( position ); + level.cfx_previous_ent = get_previous_ent_with_same_id( level.ent_found_index, ent.v[ "fxid" ] ); + return; + } + } + else + { + if ( isDefined( level.last_ent_moved_to ) && !last_selected_entity_has_changed( lastselectentity ) ) + { + ent = level.last_ent_moved_to; + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + if ( ent == level.selected_fx_ents[ i ] ) + { + break; + } + else + { + i++; + } + } + if ( forward_search ) + { + if ( i < ( level.selected_fx_ents.size - 1 ) ) + { + i++; + ent = level.selected_fx_ents[ i ]; + } + else + { + ent = level.selected_fx_ents[ 0 ]; + } + } + else if ( i > 0 ) + { + ent = level.selected_fx_ents[ i - 1 ]; + } + else + { + ent = level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; + } + level.last_ent_moved_to = ent; + position = ent.v[ "origin" ] - vectorScale( direction_vec, 175 ); + player setorigin( position ); + } +} + +get_next_ent_with_same_id( index, ent_id ) +{ + i = index + 1; + while ( i < level.createfxent.size ) + { + if ( ent_id == level.createfxent[ i ].v[ "fxid" ] ) + { + level.ent_found_index = i; + return level.createfxent[ i ]; + } + i++; + } + i = 0; + while ( i < index ) + { + if ( ent_id == level.createfxent[ i ].v[ "fxid" ] ) + { + level.ent_found_index = i; + return level.createfxent[ i ]; + } + i++; + } + level.ent_found_index = index; + return level.createfxent[ index ]; +} + +get_previous_ent_with_same_id( index, ent_id ) +{ + i = index - 1; + while ( i > 0 ) + { + if ( ent_id == level.createfxent[ i ].v[ "fxid" ] ) + { + level.ent_found_index = i; + return level.createfxent[ i ]; + } + i--; + + } + i = level.createfxent.size - 1; + while ( i > index ) + { + if ( ent_id == level.createfxent[ i ].v[ "fxid" ] ) + { + level.ent_found_index = i; + return level.createfxent[ i ]; + } + i--; + + } + level.ent_found_index = index; + return level.createfxent[ index ]; +} + +get_ent_index( ent ) +{ + i = 0; + while ( i < level.createfxent.size ) + { + if ( ent == level.createfxent[ i ] ) + { + return i; + } + i++; + } + return -1; +} + +select_ents_by_property( property, add_to_selection ) +{ + ent = level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; + prop_to_match = ent.v[ property ]; + if ( !isDefined( add_to_selection ) ) + { + clear_entity_selection(); + } + i = 0; + while ( i < level.createfxent.size ) + { + if ( isDefined( level.createfxent[ i ].v[ property ] ) ) + { + if ( level.createfxent[ i ].v[ property ] == prop_to_match ) + { + select_entity( i, level.createfxent[ i ] ); + } + } + i++; + } +} + +print_ambient_fx_inventory() +{ +/# + fx_list = get_level_ambient_fx(); + ent_list = []; + fx_list_count = []; + println( "\n\n^2INVENTORY OF AMBIENT EFFECTS: " ); + i = 0; + while ( i < level.createfxent.size ) + { + ent_list[ i ] = level.createfxent[ i ].v[ "fxid" ]; + i++; + } + i = 0; + while ( i < fx_list.size ) + { + count = 0; + j = 0; + while ( j < ent_list.size ) + { + if ( fx_list[ i ] == ent_list[ j ] ) + { + count++; + ent_list[ j ] = ""; + } + j++; + } + fx_list_count[ i ] = count; + i++; + } + i = 0; + while ( i < ( fx_list_count.size - 1 ) ) + { + j = i + 1; + while ( j < fx_list_count.size ) + { + if ( fx_list_count[ j ] < fx_list_count[ i ] ) + { + temp_count = fx_list_count[ i ]; + temp_id = fx_list[ i ]; + fx_list_count[ i ] = fx_list_count[ j ]; + fx_list[ i ] = fx_list[ j ]; + fx_list_count[ j ] = temp_count; + fx_list[ j ] = temp_id; + } + j++; + } + i++; + } + i = 0; + while ( i < fx_list_count.size ) + { + switch( fx_list_count[ i ] ) + { + case 0: + print( "^1" ); + break; + case 1: + print( "^3" ); + break; + default: + } + print( fx_list_count[ i ] + "\t" + fx_list[ i ] + "\n" ); + i++; + } + print( "\n" ); +#/ + } +} + +vector_changed( old, new ) +{ + if ( distancesquared( old, new ) >= 1 ) + { + return 1; + } + return 0; +} + +dot_changed( old, new ) +{ + dot = vectordot( old, new ); + if ( dot < 1 ) + { + return 1; + } + return 0; +} + +damage_void( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ) +{ +} + +handle_camera() +{ +/# + level notify( "new_camera" ); + level endon( "new_camera" ); + movement = ( 1, 1, 1 ); + if ( !isDefined( level.camera ) ) + { + level.camera = spawn( "script_origin", ( 1, 1, 1 ) ); + level.camera setmodel( "tag_origin" ); + } + players = get_players(); + players[ 0 ] playerlinktodelta( level.camera, "tag_origin", 1, 0, 0, 0, 0, 1 ); + players[ 0 ] disableweapons(); + level.camera_snapto = 1; + level.stick_camera = 1; + level.camera_prev_snapto = 0; + level.cameravec = ( 90, 150, 20 ); + model = undefined; + n_y_vector = 0; + n_x_vector = 0; + zoom_level = 300; + b_changes_x = 0; + b_changes_z = 0; + b_changes_y = 0; + test_string = ""; + for ( ;; ) + { + while ( 1 ) + { + if ( level.camera_snapto > 0 ) + { + if ( level.stick_camera ) + { + originoffset = vectorScale( level.cameravec, -1 ); + temp_offset = originoffset + vectorScale( ( 1, 1, 1 ), 60 ); + anglesoffset = vectorToAngle( temp_offset ); + if ( level.camera_prev_snapto == level.camera_snapto ) + { + players = get_players(); + newmovement = players[ 0 ] getnormalizedmovement(); + dolly_movement = players[ 0 ] getnormalizedcameramovement(); + if ( button_is_held( "BUTTON_LTRIG" ) || button_is_held( "BUTTON_RTRIG" ) ) + { + } + else + { + if ( newmovement[ 1 ] <= -0,4 ) + { + n_y_vector += -0,2; + b_changes_y = 1; + } + else if ( newmovement[ 1 ] >= 0,4 ) + { + n_y_vector += 0,2; + b_changes_y = 1; + } + else + { + b_changes_y = 0; + } + if ( newmovement[ 0 ] <= -0,4 ) + { + n_x_vector += -0,4; + b_changes_x = 1; + } + else if ( newmovement[ 0 ] >= 0,4 ) + { + n_x_vector += 0,4; + b_changes_x = 1; + } + else + { + b_changes_x = 0; + } + if ( dolly_movement[ 0 ] <= -0,4 ) + { + zoom_level += 30; + b_changes_z = 1; + } + else if ( dolly_movement[ 0 ] >= 0,4 ) + { + zoom_level += -30; + b_changes_z = 1; + } + else + { + b_changes_z = 0; + } + if ( !b_changes_z || b_changes_x && b_changes_y ) + { + newmovement = ( n_x_vector, n_y_vector, newmovement[ 2 ] ); + movement = ( 1, 1, 1 ); + movement = vectorScale( movement, 0,8 ) + vectorScale( newmovement, 1 - 0,8 ); + tilt = max( 0, 10 + ( movement[ 0 ] * 160 ) ); + level.cameravec = ( cos( movement[ 1 ] * 180 ) * zoom_level, sin( movement[ 1 ] * 180 ) * zoom_level, tilt ); + iprintln( level.cameravec[ 0 ] + " " + level.cameravec[ 1 ] + " " + level.cameravec[ 2 ] ); + } + } + } + else + { + level.camera_prev_snapto = level.camera_snapto; + } + if ( isDefined( level.current_select_ent ) ) + { + originoffset = vectorScale( level.cameravec, -1 ); + temp_offset = originoffset + vectorScale( ( 1, 1, 1 ), 60 ); + anglesoffset = vectorToAngle( temp_offset ); + if ( !isDefined( model ) ) + { + model = spawn( "script_origin", level.current_select_ent.v[ "origin" ] ); + model setmodel( "tag_origin" ); + } + if ( model.origin != level.current_select_ent.v[ "origin" ] ) + { + model.origin = level.current_select_ent.v[ "origin" ]; + } + level.camera linkto( model, "tag_origin", level.cameravec, anglesoffset ); + break; + } + else + { + wait 0,05; + } + } + } + else level.camera unlink(); + } + wait 0,05; +#/ + } +} + +camera_hud_toggle( text ) +{ + if ( isDefined( level.camera_hud ) ) + { + level.camera_hud destroy(); + } + level.camera_hud = newdebughudelem(); + level.camera_hud settext( text ); + level.camera_hud.horzalign = "left"; + level.camera_hud.vertalign = "bottom"; + level.camera_hud.alignx = "left"; + level.camera_hud.aligny = "bottom"; + level.camera_hud.foreground = 1; + level.camera_hud.fontscale = 1,1; + level.camera_hud.sort = 21; + level.camera_hud.alpha = 1; + level.camera_hud.color = ( 1, 1, 1 ); +} + +init_sp_paths() +{ +} + +make_sp_player_invulnerable( player ) +{ +} + +delete_arrays_in_sp() +{ +} + +used_in_animation( sp ) +{ +} + +init_client_sp_variables() +{ +} + +init_mp_paths() +{ + level.cfx_server_scriptdata = "mpcreatefx/"; + level.cfx_client_scriptdata = "mpclientcreatefx/"; + level.cfx_server_loop = "maps\\mp\\_utility::createLoopEffect"; + level.cfx_server_oneshot = "maps\\mp\\_utility::createOneshotEffect"; + level.cfx_server_exploder = "maps\\mp\\_utility::createExploder"; + level.cfx_server_loopsound = "maps\\mp\\_createfx::createLoopSound"; + level.cfx_server_scriptgendump = "maps\\mp\\createfx\\" + level.script + "_fx::main();"; + level.cfx_client_loop = "clientscripts\\mp\\_fx::createLoopEffect"; + level.cfx_client_oneshot = "clientscripts\\mp\\_fx::createOneshotEffect"; + level.cfx_client_exploder = "clientscripts\\mp\\_fx::createExploder"; + level.cfx_client_loopsound = "clientscripts\\mp\\_fx::createLoopSound"; + level.cfx_client_scriptgendump = "clientscripts\\mp\\_createfx\\" + level.script + "_fx::main();"; + level.cfx_func_run_gump_func = ::empty; + level.cfx_func_loopfx = ::maps/mp/_fx::loopfxthread; + level.cfx_func_oneshotfx = ::maps/mp/_fx::oneshotfxthread; + level.cfx_func_soundfx = ::maps/mp/_fx::create_loopsound; + level.cfx_func_script_gen_dump = ::maps/mp/_script_gen::script_gen_dump; + level.cfx_func_stop_loopsound = ::maps/mp/_fx::stop_loopsound; + level.cfx_func_create_looper = ::maps/mp/_fx::create_looper; + level.cfx_func_create_triggerfx = ::maps/mp/_fx::create_triggerfx; + level.cfx_func_create_loopsound = ::maps/mp/_fx::create_loopsound; +} + +callback_playerconnect() +{ + self waittill( "begin" ); + if ( !isDefined( level.hasspawned ) ) + { + spawnpoints = getentarray( "mp_global_intermission", "classname" ); + if ( !spawnpoints.size ) + { + spawnpoints = getentarray( "info_player_start", "classname" ); + } +/# + assert( spawnpoints.size ); +#/ + spawnpoint = spawnpoints[ 0 ]; + self.sessionteam = "none"; + self.sessionstate = "playing"; + if ( !level.teambased ) + { + self.ffateam = "none"; + } + self spawn( spawnpoint.origin, spawnpoint.angles ); + level.player = self; + level.hasspawned = 1; + } + else + { + kick( self.name ); + } +} + +delete_spawns() +{ + spawn_classes = []; + spawn_classes[ spawn_classes.size ] = "mp_dm_spawn"; + spawn_classes[ spawn_classes.size ] = "mp_tdm_spawn"; + spawn_classes[ spawn_classes.size ] = "mp_dom_spawn"; + spawn_classes[ spawn_classes.size ] = "mp_dom_spawn_axis_start"; + spawn_classes[ spawn_classes.size ] = "mp_dom_spawn_allies_start"; + spawn_classes[ spawn_classes.size ] = "mp_res_spawn_allies"; + spawn_classes[ spawn_classes.size ] = "mp_res_spawn_axis"; + spawn_classes[ spawn_classes.size ] = "mp_res_spawn_axis_start"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_attacker"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_attacker_a"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_attacker_b"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_attacker_c"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_attacker_start"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_attackerOT_start"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_defender"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_defender_a"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_defender_b"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_defender_c"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_defender_start"; + spawn_classes[ spawn_classes.size ] = "mp_dem_spawn_defenderOT_start"; + _a4256 = spawn_classes; + _k4256 = getFirstArrayKey( _a4256 ); + while ( isDefined( _k4256 ) ) + { + class = _a4256[ _k4256 ]; + spawns = getentarray( class, "classname" ); + _a4260 = spawns; + _k4260 = getFirstArrayKey( _a4260 ); + while ( isDefined( _k4260 ) ) + { + spawn = _a4260[ _k4260 ]; + spawn delete(); + _k4260 = getNextArrayKey( _a4260, _k4260 ); + } + _k4256 = getNextArrayKey( _a4256, _k4256 ); + } +} + +createfxdelay() +{ + wait 10; + level.createfx_delay_done = 1; +} + +init_client_mp_variables() +{ + level.cfx_exploder_before = ::maps/mp/_utility::exploder_before_load; + level.cfx_exploder_after = ::maps/mp/_utility::exploder_after_load; +} diff --git a/zm_transit_dr_patch/maps/mp/_createfxmenu.gsc b/zm_transit_dr_patch/maps/mp/_createfxmenu.gsc new file mode 100644 index 0000000..163c53f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_createfxmenu.gsc @@ -0,0 +1,1019 @@ +#include maps/mp/_createfxundo; +#include maps/mp/_createfx; +#include maps/mp/_utility; +#include common_scripts/utility; + +menu( name ) +{ +/# + return level.create_fx_menu == name; +#/ +} + +setmenu( name ) +{ +/# + level.create_fx_menu = name; +#/ +} + +create_fx_menu() +{ +/# + if ( button_is_clicked( "escape", "x" ) ) + { + exit_menu(); + return; + } + if ( menu( "creation" ) ) + { + if ( button_is_clicked( "1" ) ) + { + setmenu( "create_oneshot" ); + draw_effects_list(); + return; + } + if ( button_is_clicked( "2" ) ) + { + setmenu( "create_loopfx" ); + draw_effects_list(); + return; + } + if ( button_is_clicked( "3" ) ) + { + setmenu( "create_exploder" ); + draw_effects_list(); + return; + } + if ( button_is_clicked( "4" ) ) + { + setmenu( "create_loopsound" ); + ent = createloopsound(); + finish_creating_entity( ent ); + setmenu( "none" ); + return; + } + } + if ( !menu( "create_oneshot" ) && !menu( "create_loopfx" ) || menu( "create_exploder" ) && menu( "change_fxid" ) ) + { + if ( button_is_clicked( "rightarrow" ) ) + { + increment_list_offset(); + draw_effects_list(); + } + if ( button_is_clicked( "leftarrow" ) ) + { + decrement_list_offset(); + draw_effects_list(); + } + menu_fx_creation(); + } + else + { + if ( menu( "none" ) ) + { + menu_change_selected_fx(); + if ( entities_are_selected() ) + { + display_fx_info( get_last_selected_entity() ); + if ( button_is_clicked( "a" ) ) + { + clear_settable_fx(); + setmenu( "add_options" ); + } + } + return; + } + else if ( menu( "add_options" ) ) + { + if ( !entities_are_selected() ) + { + clear_fx_hudelements(); + setmenu( "none" ); + return; + } + display_fx_add_options( get_last_selected_entity() ); + if ( button_is_clicked( "rightarrow" ) ) + { + increment_list_offset(); + } + if ( button_is_clicked( "leftarrow" ) ) + { + decrement_list_offset(); + } + return; + } + else if ( menu( "jump_to_effect" ) ) + { + if ( button_is_clicked( "rightarrow" ) ) + { + increment_list_offset(); + draw_effects_list( "Select effect to jump to:" ); + } + if ( button_is_clicked( "leftarrow" ) ) + { + decrement_list_offset(); + draw_effects_list( "Select effect to jump to:" ); + } + jump_to_effect(); + return; + } + else if ( menu( "select_by_property" ) ) + { + menu_selection(); + if ( button_is_clicked( "rightarrow" ) ) + { + increment_list_offset(); + } + if ( button_is_clicked( "leftarrow" ) ) + { + decrement_list_offset(); + } + return; + } + else if ( menu( "change_type" ) ) + { + if ( !entities_are_selected() ) + { + clear_fx_hudelements(); + setmenu( "none" ); + return; + return; + } + else + { + menu_fx_type(); +#/ + } + } + } +} + +exit_menu() +{ +/# + clear_fx_hudelements(); + clear_entity_selection(); + update_selected_entities(); + setmenu( "none" ); +#/ +} + +get_last_selected_entity() +{ +/# + return level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; +#/ +} + +menu_fx_creation() +{ +/# + count = 0; + picked_fx = undefined; + keys = get_level_ambient_fx(); + i = level.effect_list_offset; + while ( i < keys.size ) + { + count += 1; + button_to_check = count; + if ( button_to_check == 10 ) + { + button_to_check = 0; + } + if ( button_is_clicked( button_to_check + "" ) && !button_is_held( "f" ) ) + { + picked_fx = keys[ i ]; + break; + } + else + { + if ( count > level.effect_list_offset_max ) + { + break; + } + else + { + i++; + } + } + } + if ( !isDefined( picked_fx ) ) + { + return; + } + if ( menu( "change_fxid" ) ) + { + apply_option_to_selected_fx( get_option( "fxid" ), picked_fx ); + level.effect_list_offset = 0; + clear_fx_hudelements(); + setmenu( "none" ); + return; + } + ent = undefined; + if ( menu( "create_loopfx" ) ) + { + ent = createloopeffect( picked_fx ); + } + if ( menu( "create_oneshot" ) ) + { + ent = createoneshoteffect( picked_fx ); + delay_min = getDvarInt( "createfx_oneshot_min_delay" ); + delay_max = getDvarInt( "createfx_oneshot_max_delay" ); + if ( delay_min > delay_max ) + { + temp = delay_min; + delay_min = delay_max; + delay_max = temp; + } + ent.v[ "delay" ] = randomintrange( delay_min, delay_max ); + } + if ( menu( "create_exploder" ) ) + { + ent = createexploder( picked_fx ); + } + finish_creating_entity( ent ); + if ( level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + } + store_undo_state( "add", level.createfxent[ level.createfxent.size - 1 ] ); + level.cfx_last_action = "none"; + setmenu( "none" ); +#/ +} + +finish_creating_entity( ent ) +{ +/# + ent.v[ "angles" ] = vectorToAngle( ( ent.v[ "origin" ] + vectorScale( ( 1, 1, 0 ), 100 ) ) - ent.v[ "origin" ] ); + assert( isDefined( ent ) ); + ent post_entity_creation_function(); + clear_entity_selection(); + select_last_entity( "skip_undo" ); + move_selection_to_cursor( "skip_undo" ); + update_selected_entities(); +#/ +} + +change_effect_to_oneshot( ent ) +{ +/# + if ( ent.v[ "type" ] == "oneshotfx" ) + { + return; + } + if ( ent.v[ "type" ] == "exploder" ) + { + } + if ( !isDefined( ent.v[ "delay" ] ) || ent.v[ "delay" ] == 0 ) + { + delay_min = getDvarInt( "createfx_oneshot_min_delay" ); + delay_max = getDvarInt( "createfx_oneshot_max_delay" ); + if ( delay_min > delay_max ) + { + temp = delay_min; + delay_min = delay_max; + delay_max = temp; + } + ent.v[ "delay" ] = randomintrange( delay_min, delay_max ); + } + ent.v[ "type" ] = "oneshotfx"; +#/ +} + +change_effect_to_loop( ent ) +{ +/# + if ( ent.v[ "type" ] == "loopfx" ) + { + return; + } + if ( ent.v[ "type" ] == "exploder" ) + { + } + if ( !isDefined( ent.v[ "delay" ] ) || ent.v[ "delay" ] <= 0 ) + { + ent.v[ "delay" ] = 1; + } + ent.v[ "type" ] = "loopfx"; +#/ +} + +change_effect_to_exploder( ent ) +{ +/# + if ( ent.v[ "type" ] == "exploder" ) + { + return; + } + ent.v[ "type" ] = "exploder"; + if ( !isDefined( ent.v[ "delay" ] ) || ent.v[ "delay" ] < 0 ) + { + ent.v[ "delay" ] = 0; + } + ent.v[ "exploder" ] = 1; + ent.v[ "exploder_type" ] = "normal"; +#/ +} + +change_ent_type( newtype ) +{ +/# + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = "ent_type"; + if ( newtype == "oneshotfx" ) + { + i = 0; + while ( i < level.selected_fx_ents.size ) + { + change_effect_to_oneshot( level.selected_fx_ents[ i ] ); + i++; + } + } + else if ( newtype == "loopfx" ) + { + i = 0; + while ( i < level.selected_fx_ents.size ) + { + change_effect_to_loop( level.selected_fx_ents[ i ] ); + i++; + } + } + else while ( newtype == "exploder" ) + { + i = 0; + while ( i < level.selected_fx_ents.size ) + { + change_effect_to_exploder( level.selected_fx_ents[ i ] ); + i++; +#/ + } + } +} + +menu_init() +{ +/# + level.createfx_options = []; + addoption( "string", "type", "Type", "oneshotfx", "fx" ); + addoption( "string", "fxid", "Name", "nil", "fx" ); + addoption( "vector", "origin", "Origin", ( 1, 1, 0 ), "fx" ); + addoption( "vector", "angles", "Angles", ( 1, 1, 0 ), "fx" ); + addoption( "float", "delay", "Repeat rate/start delay", 0,5, "fx" ); + addoption( "int", "repeat", "Number of times to repeat", 5, "exploder" ); + addoption( "float", "primlightfrac", "Primary light fraction", 1, "fx" ); + addoption( "int", "lightoriginoffs", "Light origin offset", 64, "fx" ); + addoption( "float", "delay_min", "Minimum time between repeats", 1, "exploder" ); + addoption( "float", "delay_max", "Maximum time between repeats", 2, "exploder" ); + addoption( "float", "fire_range", "Fire damage range", 0, "fx" ); + addoption( "string", "firefx", "2nd FX id", "nil", "exploder" ); + addoption( "float", "firefxdelay", "2nd FX id repeat rate", 0,5, "exploder" ); + addoption( "float", "firefxtimeout", "2nd FX timeout", 5, "exploder" ); + addoption( "string", "firefxsound", "2nd FX soundalias", "nil", "exploder" ); + addoption( "string", "ender", "Level notify for ending 2nd FX", "nil", "exploder" ); + addoption( "string", "rumble", "Rumble", "nil", "exploder" ); + addoption( "float", "damage", "Radius damage", 150, "exploder" ); + addoption( "float", "damage_radius", "Radius of radius damage", 250, "exploder" ); + addoption( "int", "exploder", "Exploder", 1, "exploder" ); + addoption( "string", "earthquake", "Earthquake", "nil", "exploder" ); + addoption( "string", "soundalias", "Soundalias", "nil", "all" ); + addoption( "int", "stoppable", "Can be stopped from script", "1", "all" ); + level.effect_list_offset = 0; + level.effect_list_offset_max = 9; + level.createfxmasks = []; + level.createfxmasks[ "all" ] = []; + level.createfxmasks[ "all" ][ "exploder" ] = 1; + level.createfxmasks[ "all" ][ "oneshotfx" ] = 1; + level.createfxmasks[ "all" ][ "loopfx" ] = 1; + level.createfxmasks[ "all" ][ "soundfx" ] = 1; + level.createfxmasks[ "fx" ] = []; + level.createfxmasks[ "fx" ][ "exploder" ] = 1; + level.createfxmasks[ "fx" ][ "oneshotfx" ] = 1; + level.createfxmasks[ "fx" ][ "loopfx" ] = 1; + level.createfxmasks[ "exploder" ] = []; + level.createfxmasks[ "exploder" ][ "exploder" ] = 1; + level.createfxmasks[ "loopfx" ] = []; + level.createfxmasks[ "loopfx" ][ "loopfx" ] = 1; + level.createfxmasks[ "oneshotfx" ] = []; + level.createfxmasks[ "oneshotfx" ][ "oneshotfx" ] = 1; + level.createfxmasks[ "soundfx" ] = []; + level.createfxmasks[ "soundfx" ][ "soundalias" ] = 1; +#/ +} + +get_last_selected_ent() +{ +/# + return level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; +#/ +} + +entities_are_selected() +{ +/# + return level.selected_fx_ents.size > 0; +#/ +} + +menu_change_selected_fx() +{ +/# + if ( !level.selected_fx_ents.size ) + { + return; + } + count = 0; + drawncount = 0; + ent = get_last_selected_ent(); + i = 0; + while ( i < level.createfx_options.size ) + { + option = level.createfx_options[ i ]; + if ( !isDefined( ent.v[ option[ "name" ] ] ) ) + { + i++; + continue; + } + else count++; + if ( count < level.effect_list_offset ) + { + i++; + continue; + } + else + { + drawncount++; + button_to_check = drawncount; + if ( button_to_check == 10 ) + { + button_to_check = 0; + } + if ( button_is_clicked( button_to_check + "" ) && !button_is_held( "f" ) ) + { + prepare_option_for_change( option, drawncount ); + return; + } + else + { + if ( drawncount > level.effect_list_offset_max ) + { + return; + } + } + else + { + i++; +#/ + } + } + } +} + +prepare_option_for_change( option, drawncount ) +{ +/# + if ( option[ "name" ] == "fxid" ) + { + setmenu( "change_fxid" ); + draw_effects_list(); + return; + } + if ( option[ "name" ] == "type" ) + { + setmenu( "change_type" ); + return; + } + level.createfx_inputlocked = 1; + set_option_index( option[ "name" ] ); + setdvar( "fx", "nil" ); + level.createfxhudelements[ drawncount + 1 ][ 0 ].color = ( 1, 1, 0 ); +#/ +} + +menu_fx_option_set() +{ +/# + if ( getDvar( "fx" ) == "nil" ) + { + return; + } + option = get_selected_option(); + setting = undefined; + if ( option[ "type" ] == "string" ) + { + setting = getDvar( "fx" ); + } + if ( option[ "type" ] == "int" ) + { + setting = getDvarInt( "fx" ); + } + if ( option[ "type" ] == "float" ) + { + setting = getDvarFloat( "fx" ); + } + if ( option[ "type" ] == "vector" ) + { + setting = getDvar( "fx" ); + temparray = strtok( setting, " " ); + if ( temparray.size == 3 ) + { + setting = ( float( temparray[ 0 ] ), float( temparray[ 1 ] ), float( temparray[ 2 ] ) ); + } + else + { + clear_settable_fx(); + return; + } + } + apply_option_to_selected_fx( option, setting ); +#/ +} + +menu_fx_type() +{ +/# + clear_fx_hudelements(); + set_fx_hudelement( "Change effect type to:" ); + set_fx_hudelement( " (1) Oneshot" ); + set_fx_hudelement( " (2) Looped" ); + set_fx_hudelement( " (3) Exploder" ); + set_fx_hudelement( "(x) Exit >" ); + if ( button_is_clicked( "1" ) && !button_is_held( "f" ) ) + { + change_ent_type( "oneshotfx" ); + setmenu( "none" ); + } + else + { + if ( button_is_clicked( "2" ) && !button_is_held( "f" ) ) + { + change_ent_type( "loopfx" ); + setmenu( "none" ); + } + else + { + if ( button_is_clicked( "3" ) && !button_is_held( "f" ) ) + { + change_ent_type( "exploder" ); + setmenu( "none" ); + } + } + } + if ( menu( "none" ) ) + { + update_selected_entities(); +#/ + } +} + +menu_selection() +{ +/# + clear_fx_hudelements(); + set_fx_hudelement( "Select all by property:" ); + drawncount = 0; + option_number = 0; + ent = level.selected_fx_ents[ level.selected_fx_ents.size - 1 ]; + if ( level.selected_fx_ents.size < 1 ) + { + set_fx_hudelement( "No ent is selected." ); + } + else i = level.effect_list_offset; + while ( i < level.createfx_options.size ) + { + if ( drawncount > level.effect_list_offset_max ) + { + break; + } + else if ( drawncount > ent.v.size ) + { + break; + } + else + { + prop_name = level.createfx_options[ i ][ "name" ]; + option_number = drawncount + 1; + if ( isDefined( ent.v[ prop_name ] ) ) + { + if ( button_is_clicked( option_number + "" ) && !button_is_held( "f" ) ) + { + level.cfx_selected_prop = prop_name; + menunone(); + level.effect_list_offset = 0; + return; + } + prop_desc = level.createfx_options[ i ][ "description" ]; + set_fx_hudelement( ( option_number + ". " ) + prop_desc + ": " + ent.v[ prop_name ] ); + drawncount++; + i++; + continue; + } + i++; + } + } + if ( drawncount > level.effect_list_offset_max ) + { + pages = ceil( ent.v.size / level.effect_list_offset_max ); + current_page = ( level.effect_list_offset / level.effect_list_offset_max ) + 1; + set_fx_hudelement( "(<-) Page " + current_page + " of " + pages + " (->)" ); + } + set_fx_hudelement( "(x) Exit >" ); +#/ +} + +apply_option_to_selected_fx( option, setting ) +{ +/# + if ( level.cfx_last_action != option[ "name" ] ) + { + store_undo_state( "edit", level.selected_fx_ents ); + level.cfx_last_action = option[ "name" ]; + } + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( mask( option[ "mask" ], ent.v[ "type" ] ) ) + { + ent.v[ option[ "name" ] ] = setting; + } + i++; + } + update_selected_entities(); + clear_settable_fx(); +#/ +} + +set_option_index( name ) +{ +/# + i = 0; + while ( i < level.createfx_options.size ) + { + if ( level.createfx_options[ i ][ "name" ] != name ) + { + i++; + continue; + } + else + { + level.selected_fx_option_index = i; + return; + } + i++; +#/ + } +} + +get_selected_option() +{ +/# + return level.createfx_options[ level.selected_fx_option_index ]; +#/ +} + +mask( type, name ) +{ +/# + return isDefined( level.createfxmasks[ type ][ name ] ); +#/ +} + +addoption( type, name, description, defaultsetting, mask ) +{ +/# + option = []; + option[ "type" ] = type; + option[ "name" ] = name; + option[ "description" ] = description; + option[ "default" ] = defaultsetting; + option[ "mask" ] = mask; + level.createfx_options[ level.createfx_options.size ] = option; +#/ +} + +get_option( name ) +{ +/# + i = 0; + while ( i < level.createfx_options.size ) + { + if ( level.createfx_options[ i ][ "name" ] == name ) + { + return level.createfx_options[ i ]; + } + i++; +#/ + } +} + +display_fx_info( ent ) +{ +/# + if ( !menu( "none" ) ) + { + return; + } + clear_fx_hudelements(); + if ( !level.createfx_draw_enabled ) + { + return; + } + set_fx_hudelement( "Selected: " + level.selected_fx_ents.size + " Distance: " + get_distance_from_ent( ent ) ); + level.createfxhudelements[ 0 ][ 0 ].color = ( 1, 1, 0 ); + set_fx_hudelement( "Name: " + ent.v[ "fxid" ] ); + if ( entities_are_selected() ) + { + count = 0; + drawncount = 0; + i = 0; + while ( i < level.createfx_options.size ) + { + option = level.createfx_options[ i ]; + if ( !isDefined( ent.v[ option[ "name" ] ] ) ) + { + i++; + continue; + } + else count++; + if ( count < level.effect_list_offset ) + { + i++; + continue; + } + else + { + drawncount++; + set_fx_hudelement( ( drawncount + ". " ) + option[ "description" ] + ": " + ent.v[ option[ "name" ] ] ); + if ( drawncount > level.effect_list_offset_max ) + { + more = 1; + break; + } + } + else + { + i++; + } + } + if ( count > level.effect_list_offset_max ) + { + pages = ceil( level.createfx_options.size / level.effect_list_offset_max ); + current_page = ( level.effect_list_offset / level.effect_list_offset_max ) + 1; + set_fx_hudelement( "(<-) Page " + current_page + " of " + pages + " (->)" ); + } + set_fx_hudelement( "(a) Add >" ); + set_fx_hudelement( "(x) Exit >" ); + } + else + { + set_fx_hudelement( "Origin: " + ent.v[ "origin" ] ); + set_fx_hudelement( "Angles: " + ent.v[ "angles" ] ); +#/ + } +} + +display_fx_add_options( ent ) +{ +/# + assert( menu( "add_options" ) ); + assert( entities_are_selected() ); + clear_fx_hudelements(); + set_fx_hudelement( "Selected: " + level.selected_fx_ents.size + " Distance: " + get_distance_from_ent( ent ) ); + level.createfxhudelements[ 0 ][ 0 ].color = ( 1, 1, 0 ); + set_fx_hudelement( "Name: " + ent.v[ "fxid" ] ); + set_fx_hudelement( "Origin: " + ent.v[ "origin" ] ); + set_fx_hudelement( "Angles: " + ent.v[ "angles" ] ); + count = 0; + drawncount = 0; + if ( level.effect_list_offset >= level.createfx_options.size ) + { + level.effect_list_offset = 0; + } + i = 0; + while ( i < level.createfx_options.size ) + { + option = level.createfx_options[ i ]; + if ( isDefined( ent.v[ option[ "name" ] ] ) ) + { + i++; + continue; + } + else if ( !mask( option[ "mask" ], ent.v[ "type" ] ) ) + { + i++; + continue; + } + else count++; + if ( count < level.effect_list_offset ) + { + i++; + continue; + } + else if ( drawncount >= level.effect_list_offset_max ) + { + i++; + continue; + } + else + { + drawncount++; + button_to_check = drawncount; + if ( button_to_check == 10 ) + { + button_to_check = 0; + } + if ( button_is_clicked( button_to_check + "" ) && !button_is_held( "f" ) ) + { + add_option_to_selected_entities( option ); + menunone(); + return; + } + set_fx_hudelement( ( button_to_check + ". " ) + option[ "description" ] ); + } + i++; + } + if ( count > level.effect_list_offset_max ) + { + pages = ceil( level.createfx_options.size / level.effect_list_offset_max ); + current_page = ( level.effect_list_offset / level.effect_list_offset_max ) + 1; + set_fx_hudelement( "(<-) Page " + current_page + " of " + pages + " (->)" ); + } + set_fx_hudelement( "(x) Exit >" ); +#/ +} + +add_option_to_selected_entities( option ) +{ +/# + i = 0; + while ( i < level.selected_fx_ents.size ) + { + ent = level.selected_fx_ents[ i ]; + if ( mask( option[ "mask" ], ent.v[ "type" ] ) ) + { + ent.v[ option[ "name" ] ] = option[ "default" ]; + } + i++; +#/ + } +} + +menunone() +{ +/# + level.effect_list_offset = 0; + clear_fx_hudelements(); + setmenu( "none" ); +#/ +} + +draw_effects_list( title ) +{ +/# + clear_fx_hudelements(); + if ( !isDefined( title ) ) + { + title = "Pick an effect:"; + } + set_fx_hudelement( title ); + count = 0; + more = 0; + keys = get_level_ambient_fx(); + if ( level.effect_list_offset >= keys.size ) + { + level.effect_list_offset = 0; + } + else + { + if ( level.effect_list_offset < 0 ) + { + level.effect_list_offset = int( floor( keys.size / level.effect_list_offset_max ) * level.effect_list_offset_max ); + } + } + i = level.effect_list_offset; + while ( i < keys.size ) + { + count += 1; + set_fx_hudelement( ( count + ". " ) + keys[ i ] ); + if ( count >= level.effect_list_offset_max ) + { + more = 1; + break; + } + else + { + i++; + } + } + if ( keys.size > level.effect_list_offset_max ) + { + pages = ceil( keys.size / level.effect_list_offset_max ); + current_page = ( level.effect_list_offset / level.effect_list_offset_max ) + 1; + set_fx_hudelement( "(<-) Page " + current_page + " of " + pages + " (->)" ); +#/ + } +} + +increment_list_offset() +{ +/# + level.effect_list_offset += level.effect_list_offset_max; +#/ +} + +decrement_list_offset() +{ +/# + level.effect_list_offset -= level.effect_list_offset_max; +#/ +} + +jump_to_effect() +{ +/# + count = 0; + picked_fxid = undefined; + keys = get_level_ambient_fx(); + i = level.effect_list_offset; + while ( i < keys.size ) + { + count += 1; + button_to_check = count; + if ( button_to_check == 10 ) + { + button_to_check = 0; + } + if ( button_is_clicked( button_to_check + "" ) && !button_is_held( "f" ) ) + { + picked_fxid = keys[ i ]; + break; + } + else + { + if ( count > level.effect_list_offset_max ) + { + break; + } + else + { + i++; + } + } + } + if ( !isDefined( picked_fxid ) ) + { + return; + } + clear_entity_selection(); + ent = get_next_ent_with_same_id( -1, picked_fxid ); + if ( isDefined( ent ) ) + { + level.cfx_next_ent = ent; + move_player_to_next_same_effect( 1 ); + } + else + { + iprintln( "Effect " + picked_fxid + " has not been placed." ); + } + level.effect_list_offset = 0; + clear_fx_hudelements(); + setmenu( "none" ); +#/ +} + +get_level_ambient_fx() +{ +/# + if ( !isDefined( level._effect_keys ) ) + { + keys = getarraykeys( level._effect ); + level._effect_keys = []; + k = 0; + i = 0; + while ( i < keys.size ) + { + if ( issubstr( keys[ i ], "fx_" ) ) + { + level._effect_keys[ k ] = keys[ i ]; + k++; + } + i++; + } + if ( level._effect_keys.size == 0 ) + { + level._effect_keys = keys; + } + } + return level._effect_keys; +#/ +} + +get_distance_from_ent( ent ) +{ +/# + player = get_players()[ 0 ]; + return distance( player geteye(), ent.v[ "origin" ] ); +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/_createfxundo.gsc b/zm_transit_dr_patch/maps/mp/_createfxundo.gsc new file mode 100644 index 0000000..082e0ed --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_createfxundo.gsc @@ -0,0 +1,545 @@ +#include maps/mp/_createfxmenu; +#include maps/mp/_createfx; +#include maps/mp/_utility; +#include common_scripts/utility; + +store_undo_state( change_type, ents ) +{ + if ( !isDefined( level.cfx_undo_states ) ) + { + level.cfx_undo_states = []; + level.cfx_redo_states = []; + level.cfx_limbo_state = spawnstruct(); + level.cfx_max_states = 10; + } + if ( !isarray( ents ) ) + { + ents = array( ents ); + } + temp_array = []; + i = 0; + while ( i < ents.size ) + { + temp_array[ i ] = copy_fx_ent( ents[ i ] ); + i++; + } + state = spawnstruct(); + state.operation = change_type; + state.last_action = level.cfx_last_action; + state.ent_array = temp_array; + if ( level.cfx_undo_states.size >= level.cfx_max_states ) + { + level.cfx_undo_states = array_drop( level.cfx_undo_states ); + } + level.cfx_undo_states[ level.cfx_undo_states.size ] = state; + level.cfx_redo_states = []; + level.cfx_limbo_state = undefined; + debug_print_latest_state( "undo" ); +} + +undo() +{ + if ( isDefined( level.createfxent ) || !isDefined( level.cfx_undo_states ) && level.cfx_undo_states.size < 1 ) + { + return; + } + revert_state = level.cfx_undo_states[ level.cfx_undo_states.size - 1 ]; + if ( level.cfx_last_action != "none" ) + { + store_undo_state( "edit", level.selected_fx_ents ); + move_undo_state_to_redo(); + clear_entity_selection( "skip_undo" ); + apply_state_change( "undo", revert_state ); + move_undo_state_to_limbo(); + level.cfx_last_action = "none"; + } + else clear_entity_selection( "skip_undo" ); + if ( revert_state.operation != "edit" ) + { + apply_state_change( "undo", revert_state ); + move_undo_state_to_redo(); + level.cfx_last_action = "none"; + } + else if ( isDefined( level.cfx_limbo_state ) ) + { + move_limbo_state_to_redo(); + apply_state_change( "undo", revert_state ); + move_undo_state_to_limbo(); + level.cfx_last_action = "none"; + } + else + { + if ( level.cfx_undo_states.size > 1 ) + { + move_undo_state_to_redo(); + revert_state = level.cfx_undo_states[ level.cfx_undo_states.size - 1 ]; + } + apply_state_change( "undo", revert_state ); + move_undo_state_to_limbo(); + } +} + +apply_state_change( type, revert_state ) +{ + if ( type == "undo" ) + { +/# + println( "^2CreateFX: Undo operation" ); +#/ + if ( revert_state.operation == "edit" ) + { + undo_edit( revert_state.ent_array ); + } + else if ( revert_state.operation == "add" ) + { + undo_add( revert_state.ent_array ); + } + else + { + if ( revert_state.operation == "delete" ) + { + undo_delete( revert_state.ent_array ); + } + } + } + else /# + println( "^2CreateFX: Redo operation" ); +#/ + if ( revert_state.operation == "edit" ) + { + undo_edit( revert_state.ent_array ); + } + else if ( revert_state.operation == "add" ) + { + undo_delete( revert_state.ent_array ); + } + else + { + if ( revert_state.operation == "delete" ) + { + undo_add( revert_state.ent_array ); + } + } +} + +move_undo_state_to_redo() +{ + if ( level.cfx_redo_states.size >= level.cfx_max_states ) + { + level.cfx_redo_states = array_drop( level.cfx_redo_states ); + } + level.cfx_redo_states[ level.cfx_redo_states.size ] = level.cfx_undo_states[ level.cfx_undo_states.size - 1 ]; + level.cfx_undo_states = array_pop( level.cfx_undo_states ); + debug_print_latest_state( "undo" ); + debug_print_latest_state( "redo" ); +} + +move_redo_state_to_undo() +{ + if ( level.cfx_undo_states.size >= level.cfx_max_states ) + { + level.cfx_undo_states = array_drop( level.cfx_undo_states ); + } + level.cfx_undo_states[ level.cfx_undo_states.size ] = level.cfx_redo_states[ level.cfx_redo_states.size - 1 ]; + level.cfx_redo_states = array_pop( level.cfx_redo_states ); + debug_print_latest_state( "undo" ); + debug_print_latest_state( "redo" ); +} + +move_undo_state_to_limbo() +{ + level.cfx_limbo_state = level.cfx_undo_states[ level.cfx_undo_states.size - 1 ]; + level.cfx_undo_states = array_pop( level.cfx_undo_states ); + debug_print_latest_state( "undo" ); + debug_print_latest_state( "limbo" ); +} + +move_redo_state_to_limbo() +{ + level.cfx_limbo_state = level.cfx_redo_states[ level.cfx_redo_states.size - 1 ]; + level.cfx_redo_states = array_pop( level.cfx_redo_states ); + debug_print_latest_state( "redo" ); + debug_print_latest_state( "limbo" ); +} + +move_limbo_state_to_undo() +{ + if ( level.cfx_undo_states.size >= level.cfx_max_states ) + { + level.cfx_undo_states = array_drop( level.cfx_undo_states ); + } + level.cfx_undo_states[ level.cfx_undo_states.size ] = level.cfx_limbo_state; + level.cfx_limbo_state = undefined; + debug_print_latest_state( "undo" ); + debug_print_latest_state( "limbo" ); +} + +move_limbo_state_to_redo() +{ + if ( level.cfx_redo_states.size >= level.cfx_max_states ) + { + level.cfx_redo_states = array_drop( level.cfx_redo_states ); + } + level.cfx_redo_states[ level.cfx_redo_states.size ] = level.cfx_limbo_state; + level.cfx_limbo_state = undefined; + debug_print_latest_state( "redo" ); +} + +undo_edit( ent_array ) +{ + ent_array = reorder_ent_array_by_uniqueid( ent_array ); +/# + println( "^3CreateFX: Undoing edit" ); + debug_print_ent_array( ent_array, "ent_array[]" ); + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); +#/ + last_id = ent_array[ ent_array.size - 1 ].uniqueid; + if ( last_id > ( level.createfxent.size - 1 ) ) + { + last_id = level.createfxent.size - 1; + } + j = ent_array.size - 1; + source_ent = ent_array[ j ]; + i = last_id; + while ( i >= 0 ) + { + target_ent = level.createfxent[ i ]; + if ( source_ent.uniqueid == target_ent.uniqueid ) + { + copy_values_between_fx_ents( source_ent, target_ent ); + select_entity( i, target_ent, "skip_undo" ); + j--; + + if ( j < 0 ) + { + break; + } + else + { + source_ent = ent_array[ j ]; + } + i--; + + } + } + update_selected_entities(); +/# + println( "^1CreateFX: Finished edit" ); + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); +#/ +} + +undo_add( ent_array ) +{ + ent_array = reorder_ent_array_by_uniqueid( ent_array ); +/# + println( "^3createfx: Undoing add." ); + debug_print_ent_array( ent_array, "ent_array[]" ); + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); +#/ + last_id = ent_array[ ent_array.size - 1 ].uniqueid; + if ( last_id > ( level.createfxent.size - 1 ) ) + { + last_id = level.createfxent.size - 1; + } + j = ent_array.size - 1; + source_ent = ent_array[ j ]; + i = last_id; + while ( i >= 0 ) + { + target_ent = level.createfxent[ i ]; + if ( source_ent.uniqueid == target_ent.uniqueid ) + { + if ( isDefined( target_ent.looper ) ) + { + target_ent.looper delete(); + } + target_ent notify( "stop_loop" ); + j--; + + if ( j < 0 ) + { + break; + } + else + { + source_ent = ent_array[ j ]; + } + i--; + + } + } +/# + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); + println( "createfx: Starting array_remove_undefined()" ); +#/ + arrayremovevalue( level.createfxent, undefined ); +/# + println( "^1CreateFX: Finished undo add." ); + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); +#/ + clear_fx_hudelements(); +} + +undo_delete( ent_array ) +{ +/# + println( "^3CreateFX: Undoing delete" ); + debug_print_ent_array( ent_array, "ent_array in undo_delete()" ); + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); +#/ + ent_array = reorder_ent_array_by_uniqueid( ent_array ); + if ( level.createfxent.size == 0 ) + { + i = 0; + while ( i < ent_array.size ) + { + level.createfxent[ i ] = copy_fx_ent( ent_array[ i ] ); + i++; + } + } + else temp_array = []; + i = 0; + j = 0; + while ( j < level.createfxent.size ) + { + target_ent = level.createfxent[ j ]; + if ( i >= ent_array.size ) + { + temp_array[ temp_array.size ] = target_ent; + j++; + continue; + } + else source_ent = ent_array[ i ]; + if ( target_ent.uniqueid < source_ent.uniqueid ) + { + temp_array[ temp_array.size ] = target_ent; + j++; + continue; + } + else + { + temp_array[ temp_array.size ] = copy_fx_ent( source_ent ); + j--; + + i++; + } + j++; + } + while ( i < ent_array.size ) + { + temp_array[ temp_array.size ] = ent_array[ i ]; + i++; + } + level.createfxent = temp_array; +/# + println( "^1Createfx: Finished undoing delete, pre-selection" ); + debug_print_ent_array( level.createfxent, "level.createFXent[]" ); +#/ + last_id = ent_array[ ent_array.size - 1 ].uniqueid; + if ( last_id > ( level.createfxent.size - 1 ) ) + { + last_id = level.createfxent.size - 1; + } + j = ent_array.size - 1; + source_ent = ent_array[ j ]; + i = last_id; + while ( i >= 0 ) + { + target_ent = level.createfxent[ i ]; + if ( source_ent.uniqueid == target_ent.uniqueid ) + { + target_ent post_entity_creation_function(); + select_entity( i, target_ent, "skip_undo" ); + j--; + + if ( j < 0 ) + { + break; + } + else + { + source_ent = ent_array[ j ]; + } + i--; + + } + } + update_selected_entities(); +} + +redo() +{ + if ( isDefined( level.createfxent ) || !isDefined( level.cfx_redo_states ) && level.cfx_redo_states.size < 1 ) + { + return; + } + clear_entity_selection( "skip_undo" ); + if ( isDefined( level.cfx_limbo_state ) ) + { + move_limbo_state_to_undo(); + move_redo_state_to_limbo(); + apply_state_change( "redo", level.cfx_limbo_state ); + } + else revert_state = level.cfx_redo_states[ level.cfx_redo_states.size - 1 ]; + apply_state_change( "redo", revert_state ); + if ( revert_state.operation == "edit" ) + { + move_redo_state_to_limbo(); + } + else + { + move_redo_state_to_undo(); + } + level.cfx_last_action = "none"; +} + +reorder_ent_array_by_uniqueid( ent_array ) +{ + if ( ent_array.size <= 1 ) + { + return ent_array; + } + array_size = ent_array.size; + i = 0; + while ( i < ( array_size - 1 ) ) + { + j = i + 1; + while ( j < array_size ) + { + if ( ent_array[ i ].uniqueid > ent_array[ j ].uniqueid ) + { + temp_ent = ent_array[ i ]; + ent_array[ i ] = ent_array[ j ]; + ent_array[ j ] = temp_ent; + } + j++; + } + i++; + } + return ent_array; +} + +copy_fx_ent( ent ) +{ + temp_ent = spawnstruct(); + temp_ent.drawn = ent.drawn; + temp_ent.drawn_axis_model = ent.drawn_axis_model; + temp_ent.last_fx_index = ent.last_fx_index; + temp_ent.textalpha = ent.textalpha; + temp_ent.uniqueid = ent.uniqueid; + temp_ent.v = ent.v; + return temp_ent; +} + +copy_values_between_fx_ents( source, dest ) +{ + dest.drawn = source.drawn; + dest.drawn_axis_model = source.drawn_axis_model; + dest.last_fx_index = source.last_fx_index; + dest.textalpha = source.textalpha; + dest.v = source.v; + return dest; +} + +array_pop( array ) +{ + array_size = array.size - 1; + temp_array = []; + if ( array_size <= 0 ) + { + return temp_array; + } + i = 0; + while ( i < array_size ) + { + temp_array[ i ] = array[ i ]; + i++; + } + array = temp_array; + return array; +} + +array_drop( array ) +{ + if ( array.size > 0 ) + { + temp_array = []; + i = 1; + while ( i < array.size ) + { + temp_array[ i - 1 ] = array[ i ]; + i++; + } + array = temp_array; + } + return array; +} + +debug_print_ent_array( array, name ) +{ +/# + if ( isDefined( name ) ) + { + println( "Printing out " + name ); + } + else + { + println( "Printing out some array" ); + } + i = 0; + while ( i < array.size ) + { + if ( !isDefined( array[ i ] ) ) + { + println( "" + i + ": deleted effect" ); + i++; + continue; + } + else + { + println( "" + i + ": uniqueid: " + array[ i ].uniqueid + " fxid: " + array[ i ].v[ "fxid" ] ); + } + i++; +#/ + } +} + +debug_print_latest_state( type ) +{ +/# + println( "^3Saving " + type + " state" ); + if ( type == "undo" ) + { + if ( !isDefined( level.cfx_undo_states[ level.cfx_undo_states.size - 1 ] ) ) + { + println( "There are no undo states." ); + return; + } + state = level.cfx_undo_states[ level.cfx_undo_states.size - 1 ]; + size = level.cfx_undo_states.size - 1; + } + else if ( type == "redo" ) + { + if ( !isDefined( level.cfx_redo_states[ level.cfx_redo_states.size - 1 ] ) ) + { + println( "There are no redo states." ); + return; + } + state = level.cfx_redo_states[ level.cfx_redo_states.size - 1 ]; + size = level.cfx_redo_states.size - 1; + } + else + { + if ( !isDefined( level.cfx_limbo_state ) ) + { + println( "There is no limbo state." ); + return; + } + state = level.cfx_limbo_state; + size = 0; + } + println( "State " + size + " - " + state.operation + ": " + state.last_action ); + debug_print_ent_array( state.ent_array, "save state ent_array" ); +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/_demo.gsc b/zm_transit_dr_patch/maps/mp/_demo.gsc new file mode 100644 index 0000000..72e387c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_demo.gsc @@ -0,0 +1,97 @@ + +init() +{ + level.bookmark[ "kill" ] = 0; + level.bookmark[ "event" ] = 1; + level.bookmark[ "zm_round_end" ] = 2; + level.bookmark[ "zm_player_downed" ] = 3; + level.bookmark[ "zm_player_revived" ] = 4; + level.bookmark[ "zm_player_bledout" ] = 5; + level.bookmark[ "zm_player_use_magicbox" ] = 6; + level.bookmark[ "score_event" ] = 7; + level.bookmark[ "medal" ] = 8; + level.bookmark[ "round_result" ] = 9; + level.bookmark[ "game_result" ] = 10; + level.bookmark[ "zm_powerup_dropped" ] = 11; + level.bookmark[ "zm_player_powerup_grabbed" ] = 12; + level.bookmark[ "zm_player_perk" ] = 13; + level.bookmark[ "zm_power" ] = 14; + level.bookmark[ "zm_player_door" ] = 15; + level.bookmark[ "zm_player_buildable_placed" ] = 16; + level.bookmark[ "zm_player_use_packapunch" ] = 17; + level.bookmark[ "zm_player_rampage" ] = 18; + level.bookmark[ "zm_player_grenade_special" ] = 19; + level.bookmark[ "zm_player_grenade_multiattack" ] = 20; + level.bookmark[ "zm_player_meat_stink" ] = 21; + level.bookmark[ "zm_player_grabbed_magicbox" ] = 22; + level.bookmark[ "zm_player_grabbed_packapunch" ] = 23; + level.bookmark[ "zm_player_grenade_special_long" ] = 24; +} + +bookmark( type, time, clientent1, clientent2, eventpriority, inflictorent, overrideentitycamera, actorent ) +{ +/# + assert( isDefined( level.bookmark[ type ] ), "Unable to find a bookmark type for type - " + type ); +#/ + client1 = 255; + client2 = 255; + inflictorentnum = -1; + inflictorenttype = 0; + inflictorbirthtime = 0; + actorentnum = undefined; + scoreeventpriority = 0; + if ( isDefined( clientent1 ) ) + { + client1 = clientent1 getentitynumber(); + } + if ( isDefined( clientent2 ) ) + { + client2 = clientent2 getentitynumber(); + } + if ( isDefined( eventpriority ) ) + { + scoreeventpriority = eventpriority; + } + if ( isDefined( inflictorent ) ) + { + inflictorentnum = inflictorent getentitynumber(); + inflictorenttype = inflictorent getentitytype(); + if ( isDefined( inflictorent.birthtime ) ) + { + inflictorbirthtime = inflictorent.birthtime; + } + } + if ( !isDefined( overrideentitycamera ) ) + { + overrideentitycamera = 0; + } + if ( isDefined( actorent ) ) + { + actorentnum = actorent getentitynumber(); + } + adddemobookmark( level.bookmark[ type ], time, client1, client2, scoreeventpriority, inflictorentnum, inflictorenttype, inflictorbirthtime, overrideentitycamera, actorentnum ); +} + +gameresultbookmark( type, winningteamindex, losingteamindex ) +{ +/# + assert( isDefined( level.bookmark[ type ] ), "Unable to find a bookmark type for type - " + type ); +#/ + client1 = 255; + client2 = 255; + scoreeventpriority = 0; + inflictorentnum = -1; + inflictorenttype = 0; + inflictorbirthtime = 0; + overrideentitycamera = 0; + actorentnum = undefined; + if ( isDefined( winningteamindex ) ) + { + client1 = winningteamindex; + } + if ( isDefined( losingteamindex ) ) + { + client2 = losingteamindex; + } + adddemobookmark( level.bookmark[ type ], getTime(), client1, client2, scoreeventpriority, inflictorentnum, inflictorenttype, inflictorbirthtime, overrideentitycamera, actorentnum ); +} diff --git a/zm_transit_dr_patch/maps/mp/_fx.gsc b/zm_transit_dr_patch/maps/mp/_fx.gsc new file mode 100644 index 0000000..568ef04 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_fx.gsc @@ -0,0 +1,458 @@ +#include maps/mp/_createfx; +#include maps/mp/_utility; +#include common_scripts/utility; + +print_org( fxcommand, fxid, fxpos, waittime ) +{ +/# + if ( getDvar( "debug" ) == "1" ) + { + println( "{" ); + println( ""origin" "" + fxpos[ 0 ] + " " + fxpos[ 1 ] + " " + fxpos[ 2 ] + """ ); + println( ""classname" "script_model"" ); + println( ""model" "fx"" ); + println( ""script_fxcommand" "" + fxcommand + """ ); + println( ""script_fxid" "" + fxid + """ ); + println( ""script_delay" "" + waittime + """ ); + println( "}" ); +#/ + } +} + +oneshotfx( fxid, fxpos, waittime, fxpos2 ) +{ +} + +oneshotfxthread() +{ + wait 0,05; + if ( self.v[ "delay" ] > 0 ) + { + wait self.v[ "delay" ]; + } + create_triggerfx(); +} + +create_triggerfx() +{ + self.looper = spawnfx_wrapper( self.v[ "fxid" ], self.v[ "origin" ], self.v[ "forward" ], self.v[ "up" ] ); + triggerfx( self.looper, self.v[ "delay" ] ); + create_loopsound(); +} + +exploderfx( num, fxid, fxpos, waittime, fxpos2, firefx, firefxdelay, firefxsound, fxsound, fxquake, fxdamage, soundalias, repeat, delay_min, delay_max, damage_radius, firefxtimeout, exploder_group ) +{ + if ( 1 ) + { + ent = createexploder( fxid ); + ent.v[ "origin" ] = fxpos; + ent.v[ "angles" ] = ( 0, 0, 0 ); + if ( isDefined( fxpos2 ) ) + { + ent.v[ "angles" ] = vectorToAngle( fxpos2 - fxpos ); + } + ent.v[ "delay" ] = waittime; + ent.v[ "exploder" ] = num; + return; + } + fx = spawn( "script_origin", ( 0, 0, 0 ) ); + fx.origin = fxpos; + fx.angles = vectorToAngle( fxpos2 - fxpos ); + fx.script_exploder = num; + fx.script_fxid = fxid; + fx.script_delay = waittime; + fx.script_firefx = firefx; + fx.script_firefxdelay = firefxdelay; + fx.script_firefxsound = firefxsound; + fx.script_sound = fxsound; + fx.script_earthquake = fxquake; + fx.script_damage = fxdamage; + fx.script_radius = damage_radius; + fx.script_soundalias = soundalias; + fx.script_firefxtimeout = firefxtimeout; + fx.script_repeat = repeat; + fx.script_delay_min = delay_min; + fx.script_delay_max = delay_max; + fx.script_exploder_group = exploder_group; + forward = anglesToForward( fx.angles ); + forward = vectorScale( forward, 150 ); + fx.targetpos = fxpos + forward; + if ( !isDefined( level._script_exploders ) ) + { + level._script_exploders = []; + } + level._script_exploders[ level._script_exploders.size ] = fx; + maps/mp/_createfx::createfx_showorigin( fxid, fxpos, waittime, fxpos2, "exploderfx", fx, undefined, firefx, firefxdelay, firefxsound, fxsound, fxquake, fxdamage, soundalias, repeat, delay_min, delay_max, damage_radius, firefxtimeout ); +} + +loopfx( fxid, fxpos, waittime, fxpos2, fxstart, fxstop, timeout ) +{ +/# + println( "Loopfx is deprecated!" ); +#/ + ent = createloopeffect( fxid ); + ent.v[ "origin" ] = fxpos; + ent.v[ "angles" ] = ( 0, 0, 0 ); + if ( isDefined( fxpos2 ) ) + { + ent.v[ "angles" ] = vectorToAngle( fxpos2 - fxpos ); + } + ent.v[ "delay" ] = waittime; +} + +create_looper() +{ + self.looper = playloopedfx( level._effect[ self.v[ "fxid" ] ], self.v[ "delay" ], self.v[ "origin" ], 0, self.v[ "forward" ], self.v[ "up" ] ); + create_loopsound(); +} + +create_loopsound() +{ + self notify( "stop_loop" ); + if ( isDefined( self.v[ "soundalias" ] ) && self.v[ "soundalias" ] != "nil" ) + { + if ( isDefined( self.looper ) ) + { + self.looper thread maps/mp/_utility::loop_fx_sound( self.v[ "soundalias" ], self.v[ "origin" ], "death" ); + return; + } + else + { + thread maps/mp/_utility::loop_fx_sound( self.v[ "soundalias" ], self.v[ "origin" ], "stop_loop" ); + } + } +} + +stop_loopsound() +{ + self notify( "stop_loop" ); +} + +loopfxthread() +{ + wait 0,05; + if ( isDefined( self.fxstart ) ) + { + level waittill( "start fx" + self.fxstart ); + } + while ( 1 ) + { + create_looper(); + if ( isDefined( self.timeout ) ) + { + thread loopfxstop( self.timeout ); + } + if ( isDefined( self.fxstop ) ) + { + level waittill( "stop fx" + self.fxstop ); + } + else + { + return; + } + if ( isDefined( self.looper ) ) + { + self.looper delete(); + } + if ( isDefined( self.fxstart ) ) + { + level waittill( "start fx" + self.fxstart ); + continue; + } + else + { + return; + } + } +} + +loopfxchangeid( ent ) +{ + self endon( "death" ); + ent waittill( "effect id changed", change ); +} + +loopfxchangeorg( ent ) +{ + self endon( "death" ); + for ( ;; ) + { + ent waittill( "effect org changed", change ); + self.origin = change; + } +} + +loopfxchangedelay( ent ) +{ + self endon( "death" ); + ent waittill( "effect delay changed", change ); +} + +loopfxdeletion( ent ) +{ + self endon( "death" ); + ent waittill( "effect deleted" ); + self delete(); +} + +loopfxstop( timeout ) +{ + self endon( "death" ); + wait timeout; + self.looper delete(); +} + +loopsound( sound, pos, waittime ) +{ + level thread loopsoundthread( sound, pos, waittime ); +} + +loopsoundthread( sound, pos, waittime ) +{ + org = spawn( "script_origin", pos ); + org.origin = pos; + org playloopsound( sound ); +} + +gunfireloopfx( fxid, fxpos, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax ) +{ + thread gunfireloopfxthread( fxid, fxpos, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax ); +} + +gunfireloopfxthread( fxid, fxpos, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax ) +{ + level endon( "stop all gunfireloopfx" ); + wait 0,05; + if ( betweensetsmax < betweensetsmin ) + { + temp = betweensetsmax; + betweensetsmax = betweensetsmin; + betweensetsmin = temp; + } + betweensetsbase = betweensetsmin; + betweensetsrange = betweensetsmax - betweensetsmin; + if ( shotdelaymax < shotdelaymin ) + { + temp = shotdelaymax; + shotdelaymax = shotdelaymin; + shotdelaymin = temp; + } + shotdelaybase = shotdelaymin; + shotdelayrange = shotdelaymax - shotdelaymin; + if ( shotsmax < shotsmin ) + { + temp = shotsmax; + shotsmax = shotsmin; + shotsmin = temp; + } + shotsbase = shotsmin; + shotsrange = shotsmax - shotsmin; + fxent = spawnfx( level._effect[ fxid ], fxpos ); + for ( ;; ) + { + shotnum = shotsbase + randomint( shotsrange ); + i = 0; + while ( i < shotnum ) + { + triggerfx( fxent ); + wait ( shotdelaybase + randomfloat( shotdelayrange ) ); + i++; + } + wait ( betweensetsbase + randomfloat( betweensetsrange ) ); + } +} + +gunfireloopfxvec( fxid, fxpos, fxpos2, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax ) +{ + thread gunfireloopfxvecthread( fxid, fxpos, fxpos2, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax ); +} + +gunfireloopfxvecthread( fxid, fxpos, fxpos2, shotsmin, shotsmax, shotdelaymin, shotdelaymax, betweensetsmin, betweensetsmax ) +{ + level endon( "stop all gunfireloopfx" ); + wait 0,05; + if ( betweensetsmax < betweensetsmin ) + { + temp = betweensetsmax; + betweensetsmax = betweensetsmin; + betweensetsmin = temp; + } + betweensetsbase = betweensetsmin; + betweensetsrange = betweensetsmax - betweensetsmin; + if ( shotdelaymax < shotdelaymin ) + { + temp = shotdelaymax; + shotdelaymax = shotdelaymin; + shotdelaymin = temp; + } + shotdelaybase = shotdelaymin; + shotdelayrange = shotdelaymax - shotdelaymin; + if ( shotsmax < shotsmin ) + { + temp = shotsmax; + shotsmax = shotsmin; + shotsmin = temp; + } + shotsbase = shotsmin; + shotsrange = shotsmax - shotsmin; + fxpos2 = vectornormalize( fxpos2 - fxpos ); + fxent = spawnfx( level._effect[ fxid ], fxpos, fxpos2 ); + for ( ;; ) + { + shotnum = shotsbase + randomint( shotsrange ); + i = 0; + while ( i < int( shotnum / level.fxfireloopmod ) ) + { + triggerfx( fxent ); + delay = ( shotdelaybase + randomfloat( shotdelayrange ) ) * level.fxfireloopmod; + if ( delay < 0,05 ) + { + delay = 0,05; + } + wait delay; + i++; + } + wait ( shotdelaybase + randomfloat( shotdelayrange ) ); + wait ( betweensetsbase + randomfloat( betweensetsrange ) ); + } +} + +setfireloopmod( value ) +{ + level.fxfireloopmod = 1 / value; +} + +setup_fx() +{ + if ( isDefined( self.script_fxid ) || !isDefined( self.script_fxcommand ) && !isDefined( self.script_delay ) ) + { + return; + } + org = undefined; + if ( isDefined( self.target ) ) + { + ent = getent( self.target, "targetname" ); + if ( isDefined( ent ) ) + { + org = ent.origin; + } + } + fxstart = undefined; + if ( isDefined( self.script_fxstart ) ) + { + fxstart = self.script_fxstart; + } + fxstop = undefined; + if ( isDefined( self.script_fxstop ) ) + { + fxstop = self.script_fxstop; + } + if ( self.script_fxcommand == "OneShotfx" ) + { + oneshotfx( self.script_fxid, self.origin, self.script_delay, org ); + } + if ( self.script_fxcommand == "loopfx" ) + { + loopfx( self.script_fxid, self.origin, self.script_delay, org, fxstart, fxstop ); + } + if ( self.script_fxcommand == "loopsound" ) + { + loopsound( self.script_fxid, self.origin, self.script_delay ); + } + self delete(); +} + +script_print_fx() +{ +/# + if ( isDefined( self.script_fxid ) || !isDefined( self.script_fxcommand ) && !isDefined( self.script_delay ) ) + { + println( "Effect at origin ", self.origin, " doesn't have script_fxid/script_fxcommand/script_delay" ); + self delete(); + return; + } + if ( isDefined( self.target ) ) + { + org = getent( self.target, "targetname" ).origin; + } + else + { + org = "undefined"; + } + if ( self.script_fxcommand == "OneShotfx" ) + { + println( "mapsmp_fx::OneShotfx("" + self.script_fxid + "", " + self.origin + ", " + self.script_delay + ", " + org + ");" ); + } + if ( self.script_fxcommand == "loopfx" ) + { + println( "mapsmp_fx::LoopFx("" + self.script_fxid + "", " + self.origin + ", " + self.script_delay + ", " + org + ");" ); + } + if ( self.script_fxcommand == "loopsound" ) + { + println( "mapsmp_fx::LoopSound("" + self.script_fxid + "", " + self.origin + ", " + self.script_delay + ", " + org + ");" ); +#/ + } +} + +script_playfx( id, pos, pos2 ) +{ + if ( !id ) + { + return; + } + if ( isDefined( pos2 ) ) + { + playfx( id, pos, pos2 ); + } + else + { + playfx( id, pos ); + } +} + +script_playfxontag( id, ent, tag ) +{ + if ( !id ) + { + return; + } + playfxontag( id, ent, tag ); +} + +grenadeexplosionfx( pos ) +{ + playfx( level._effect[ "mechanical explosion" ], pos ); + earthquake( 0,15, 0,5, pos, 250 ); +} + +soundfx( fxid, fxpos, endonnotify ) +{ + org = spawn( "script_origin", ( 0, 0, 0 ) ); + org.origin = fxpos; + org playloopsound( fxid ); + if ( isDefined( endonnotify ) ) + { + org thread soundfxdelete( endonnotify ); + } +} + +soundfxdelete( endonnotify ) +{ + level waittill( endonnotify ); + self delete(); +} + +blenddelete( blend ) +{ + self waittill( "death" ); + blend delete(); +} + +spawnfx_wrapper( fx_id, origin, forward, up ) +{ +/# + assert( isDefined( level._effect[ fx_id ] ), "Missing level._effect["" + fx_id + ""]. You did not setup the fx before calling it in createFx." ); +#/ + fx_object = spawnfx( level._effect[ fx_id ], origin, forward, up ); + return fx_object; +} diff --git a/zm_transit_dr_patch/maps/mp/_fxanim.gsc b/zm_transit_dr_patch/maps/mp/_fxanim.gsc new file mode 100644 index 0000000..2a40039 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_fxanim.gsc @@ -0,0 +1,6 @@ + +init() +{ + level.scr_anim = []; + level.scr_anim[ "fxanim_props" ] = []; +} diff --git a/zm_transit_dr_patch/maps/mp/_global_fx.gsc b/zm_transit_dr_patch/maps/mp/_global_fx.gsc new file mode 100644 index 0000000..8692423 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_global_fx.gsc @@ -0,0 +1,60 @@ +#include maps/mp/_utility; +#include common_scripts/utility; + +main() +{ + randomstartdelay = randomfloatrange( -20, -15 ); + global_fx( "barrel_fireFX_origin", "global_barrel_fire", "fire/firelp_barrel_pm", randomstartdelay, "fire_barrel_small" ); + global_fx( "ch_streetlight_02_FX_origin", "ch_streetlight_02_FX", "misc/lighthaze", randomstartdelay ); + global_fx( "me_streetlight_01_FX_origin", "me_streetlight_01_FX", "misc/lighthaze_bog_a", randomstartdelay ); + global_fx( "ch_street_light_01_on", "lamp_glow_FX", "misc/light_glow_white", randomstartdelay ); + global_fx( "highway_lamp_post", "ch_streetlight_02_FX", "misc/lighthaze_villassault", randomstartdelay ); + global_fx( "cs_cargoship_spotlight_on_FX_origin", "cs_cargoship_spotlight_on_FX", "misc/lighthaze", randomstartdelay ); + global_fx( "me_dumpster_fire_FX_origin", "me_dumpster_fire_FX", "fire/firelp_med_pm_nodistort", randomstartdelay, "fire_dumpster_medium" ); + global_fx( "com_tires_burning01_FX_origin", "com_tires_burning01_FX", "fire/tire_fire_med", randomstartdelay ); + global_fx( "icbm_powerlinetower_FX_origin", "icbm_powerlinetower_FX", "misc/power_tower_light_red_blink", randomstartdelay ); +} + +global_fx( targetname, fxname, fxfile, delay, soundalias ) +{ + ents = getstructarray( targetname, "targetname" ); + if ( !isDefined( ents ) ) + { + return; + } + if ( ents.size <= 0 ) + { + return; + } + i = 0; + while ( i < ents.size ) + { + ents[ i ] global_fx_create( fxname, fxfile, delay, soundalias ); + i++; + } +} + +global_fx_create( fxname, fxfile, delay, soundalias ) +{ + if ( !isDefined( level._effect ) ) + { + level._effect = []; + } + if ( !isDefined( level._effect[ fxname ] ) ) + { + level._effect[ fxname ] = loadfx( fxfile ); + } + if ( !isDefined( self.angles ) ) + { + self.angles = ( 0, 0, 0 ); + } + ent = createoneshoteffect( fxname ); + ent.v[ "origin" ] = self.origin; + ent.v[ "angles" ] = self.angles; + ent.v[ "fxid" ] = fxname; + ent.v[ "delay" ] = delay; + if ( isDefined( soundalias ) ) + { + ent.v[ "soundalias" ] = soundalias; + } +} diff --git a/zm_transit_dr_patch/maps/mp/_interactive_objects.gsc b/zm_transit_dr_patch/maps/mp/_interactive_objects.gsc new file mode 100644 index 0000000..62b8ba3 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_interactive_objects.gsc @@ -0,0 +1,407 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + level.barrelexplodingthisframe = 0; + qbarrels = 0; + all_barrels = []; + barrels = getentarray( "explodable_barrel", "targetname" ); + while ( isDefined( barrels ) && barrels.size > 0 ) + { + qbarrels = 1; + i = 0; + while ( i < barrels.size ) + { + all_barrels[ all_barrels.size ] = barrels[ i ]; + i++; + } + } + barrels = getentarray( "explodable_barrel", "script_noteworthy" ); + while ( isDefined( barrels ) && barrels.size > 0 ) + { + qbarrels = 1; + i = 0; + while ( i < barrels.size ) + { + all_barrels[ all_barrels.size ] = barrels[ i ]; + i++; + } + } + if ( qbarrels ) + { + precachemodel( "global_explosive_barrel" ); + level.barrelburn = 100; + level.barrelhealth = 250; + level.barrelingsound = "exp_redbarrel_ignition"; + level.barrelexpsound = "exp_redbarrel"; + level.breakables_fx[ "barrel" ][ "burn_start" ] = loadfx( "destructibles/fx_barrel_ignite" ); + level.breakables_fx[ "barrel" ][ "burn" ] = loadfx( "destructibles/fx_barrel_fire_top" ); + level.breakables_fx[ "barrel" ][ "explode" ] = loadfx( "destructibles/fx_barrelexp" ); + array_thread( all_barrels, ::explodable_barrel_think ); + } + qcrates = 0; + all_crates = []; + crates = getentarray( "flammable_crate", "targetname" ); + while ( isDefined( crates ) && crates.size > 0 ) + { + qcrates = 1; + i = 0; + while ( i < crates.size ) + { + all_crates[ all_crates.size ] = crates[ i ]; + i++; + } + } + crates = getentarray( "flammable_crate", "script_noteworthy" ); + while ( isDefined( crates ) && crates.size > 0 ) + { + qcrates = 1; + i = 0; + while ( i < crates.size ) + { + all_crates[ all_crates.size ] = crates[ i ]; + i++; + } + } + if ( qcrates ) + { + precachemodel( "global_flammable_crate_jap_piece01_d" ); + level.crateburn = 100; + level.cratehealth = 200; + level.breakables_fx[ "ammo_crate" ][ "burn_start" ] = loadfx( "destructibles/fx_ammobox_ignite" ); + level.breakables_fx[ "ammo_crate" ][ "burn" ] = loadfx( "destructibles/fx_ammobox_fire_top" ); + level.breakables_fx[ "ammo_crate" ][ "explode" ] = loadfx( "destructibles/fx_ammoboxExp" ); + level.crateignsound = "Ignition_ammocrate"; + level.crateexpsound = "Explo_ammocrate"; + array_thread( all_crates, ::flammable_crate_think ); + } + if ( !qbarrels && !qcrates ) + { + return; + } +} + +explodable_barrel_think() +{ + if ( self.classname != "script_model" ) + { + return; + } + self endon( "exploding" ); + self breakable_clip(); + self.health = level.barrelhealth; + self setcandamage( 1 ); + self.targetname = "explodable_barrel"; + if ( sessionmodeiszombiesgame() ) + { + self.removeexplodable = 1; + } + for ( ;; ) + { + self waittill( "damage", amount, attacker, direction_vec, p, type ); +/# + println( "BARRELDAMAGE: " + type ); +#/ + if ( type == "MOD_MELEE" || type == "MOD_IMPACT" ) + { + continue; + } + else + { + if ( isDefined( self.script_requires_player ) && self.script_requires_player && !isplayer( attacker ) ) + { + break; + } + else + { + if ( isDefined( self.script_selfisattacker ) && self.script_selfisattacker ) + { + self.damageowner = self; + } + else + { + self.damageowner = attacker; + } + self.health -= amount; + if ( self.health <= level.barrelburn ) + { + self thread explodable_barrel_burn(); + } + } + } + } +} + +explodable_barrel_burn() +{ + count = 0; + startedfx = 0; + up = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + worldup = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + dot = vectordot( up, worldup ); + offset1 = ( 0, 0, 1 ); + offset2 = up * vectorScale( ( 0, 0, 1 ), 44 ); + if ( dot < 0,5 ) + { + offset1 = ( up * vectorScale( ( 0, 0, 1 ), 22 ) ) - vectorScale( ( 0, 0, 1 ), 30 ); + offset2 = ( up * vectorScale( ( 0, 0, 1 ), 22 ) ) + vectorScale( ( 0, 0, 1 ), 14 ); + } + while ( self.health > 0 ) + { + if ( !startedfx ) + { + playfx( level.breakables_fx[ "barrel" ][ "burn_start" ], self.origin + offset1 ); + level thread play_sound_in_space( level.barrelingsound, self.origin ); + startedfx = 1; + } + if ( count > 20 ) + { + count = 0; + } + playfx( level.breakables_fx[ "barrel" ][ "burn" ], self.origin + offset2 ); + self playloopsound( "barrel_fuse" ); + if ( count == 0 ) + { + self.health -= 10 + randomint( 10 ); + } + count++; + wait 0,05; + } + level notify( "explosion_started" ); + self thread explodable_barrel_explode(); +} + +explodable_barrel_explode() +{ + self notify( "exploding" ); + self death_notify_wrapper(); + up = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + worldup = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + dot = vectordot( up, worldup ); + offset = ( 0, 0, 1 ); + if ( dot < 0,5 ) + { + start = self.origin + vectorScale( up, 22 ); + trace = physicstrace( start, start + vectorScale( ( 0, 0, 1 ), 64 ) ); + end = trace[ "position" ]; + offset = end - self.origin; + } + offset += vectorScale( ( 0, 0, 1 ), 4 ); + mindamage = 1; + maxdamage = 250; + blastradius = 250; + level thread play_sound_in_space( level.barrelexpsound, self.origin ); + playfx( level.breakables_fx[ "barrel" ][ "explode" ], self.origin + offset ); + physicsexplosionsphere( self.origin + offset, 100, 80, 1, maxdamage, mindamage ); + level.barrelexplodingthisframe = 1; + if ( isDefined( self.remove ) ) + { + self.remove delete(); + } + if ( isDefined( self.radius ) ) + { + blastradius = self.radius; + } + self radiusdamage( self.origin + vectorScale( ( 0, 0, 1 ), 56 ), blastradius, maxdamage, mindamage, self.damageowner ); + attacker = undefined; + if ( isDefined( self.damageowner ) ) + { + attacker = self.damageowner; + } + level.lastexplodingbarrel[ "time" ] = getTime(); + level.lastexplodingbarrel[ "origin" ] = self.origin + vectorScale( ( 0, 0, 1 ), 30 ); + if ( isDefined( self.removeexplodable ) ) + { + self hide(); + } + else + { + self setmodel( "global_explosive_barrel" ); + } + if ( dot < 0,5 ) + { + start = self.origin + vectorScale( up, 22 ); + trace = physicstrace( start, start + vectorScale( ( 0, 0, 1 ), 64 ) ); + pos = trace[ "position" ]; + self.origin = pos; + self.angles += vectorScale( ( 0, 0, 1 ), 90 ); + } + wait 0,05; + level.barrelexplodingthisframe = 0; +} + +flammable_crate_think() +{ + if ( self.classname != "script_model" ) + { + return; + } + self endon( "exploding" ); + self breakable_clip(); + self.health = level.cratehealth; + self setcandamage( 1 ); + for ( ;; ) + { + self waittill( "damage", amount, attacker, direction_vec, p, type ); + if ( isDefined( self.script_requires_player ) && self.script_requires_player && !isplayer( attacker ) ) + { + continue; + } + else + { + if ( isDefined( self.script_selfisattacker ) && self.script_selfisattacker ) + { + self.damageowner = self; + } + else + { + self.damageowner = attacker; + } + if ( level.barrelexplodingthisframe ) + { + wait randomfloat( 1 ); + } + self.health -= amount; + if ( self.health <= level.crateburn ) + { + self thread flammable_crate_burn(); + } + } + } +} + +flammable_crate_burn() +{ + count = 0; + startedfx = 0; + up = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + worldup = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + dot = vectordot( up, worldup ); + offset1 = ( 0, 0, 1 ); + offset2 = up * vectorScale( ( 0, 0, 1 ), 44 ); + if ( dot < 0,5 ) + { + offset1 = ( up * vectorScale( ( 0, 0, 1 ), 22 ) ) - vectorScale( ( 0, 0, 1 ), 30 ); + offset2 = ( up * vectorScale( ( 0, 0, 1 ), 22 ) ) + vectorScale( ( 0, 0, 1 ), 14 ); + } + while ( self.health > 0 ) + { + if ( !startedfx ) + { + playfx( level.breakables_fx[ "ammo_crate" ][ "burn_start" ], self.origin ); + level thread play_sound_in_space( level.crateignsound, self.origin ); + startedfx = 1; + } + if ( count > 20 ) + { + count = 0; + } + playfx( level.breakables_fx[ "ammo_crate" ][ "burn" ], self.origin ); + if ( count == 0 ) + { + self.health -= 10 + randomint( 10 ); + } + count++; + wait 0,05; + } + self thread flammable_crate_explode(); +} + +flammable_crate_explode() +{ + self notify( "exploding" ); + self death_notify_wrapper(); + up = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + worldup = anglesToUp( vectorScale( ( 0, 0, 1 ), 90 ) ); + dot = vectordot( up, worldup ); + offset = ( 0, 0, 1 ); + if ( dot < 0,5 ) + { + start = self.origin + vectorScale( up, 22 ); + trace = physicstrace( start, start + vectorScale( ( 0, 0, 1 ), 64 ) ); + end = trace[ "position" ]; + offset = end - self.origin; + } + offset += vectorScale( ( 0, 0, 1 ), 4 ); + mindamage = 1; + maxdamage = 250; + blastradius = 250; + level thread play_sound_in_space( level.crateexpsound, self.origin ); + playfx( level.breakables_fx[ "ammo_crate" ][ "explode" ], self.origin ); + physicsexplosionsphere( self.origin + offset, 100, 80, 1, maxdamage, mindamage ); + level.barrelexplodingthisframe = 1; + if ( isDefined( self.remove ) ) + { + self.remove delete(); + } + if ( isDefined( self.radius ) ) + { + blastradius = self.radius; + } + attacker = undefined; + if ( isDefined( self.damageowner ) ) + { + attacker = self.damageowner; + } + self radiusdamage( self.origin + vectorScale( ( 0, 0, 1 ), 30 ), blastradius, maxdamage, mindamage, attacker ); + self setmodel( "global_flammable_crate_jap_piece01_d" ); + if ( dot < 0,5 ) + { + start = self.origin + vectorScale( up, 22 ); + trace = physicstrace( start, start + vectorScale( ( 0, 0, 1 ), 64 ) ); + pos = trace[ "position" ]; + self.origin = pos; + self.angles += vectorScale( ( 0, 0, 1 ), 90 ); + } + wait 0,05; + level.barrelexplodingthisframe = 0; +} + +breakable_clip() +{ + if ( isDefined( self.target ) ) + { + targ = getent( self.target, "targetname" ); + if ( targ.classname == "script_brushmodel" ) + { + self.remove = targ; + return; + } + } + if ( isDefined( level.breakables_clip ) && level.breakables_clip.size > 0 ) + { + self.remove = getclosestent( self.origin, level.breakables_clip ); + } + if ( isDefined( self.remove ) ) + { + arrayremovevalue( level.breakables_clip, self.remove ); + } +} + +getclosestent( org, array ) +{ + if ( array.size < 1 ) + { + return; + } + dist = 256; + ent = undefined; + i = 0; + while ( i < array.size ) + { + newdist = distance( array[ i ] getorigin(), org ); + if ( newdist >= dist ) + { + i++; + continue; + } + else + { + dist = newdist; + ent = array[ i ]; + } + i++; + } + return ent; +} diff --git a/zm_transit_dr_patch/maps/mp/_music.gsc b/zm_transit_dr_patch/maps/mp/_music.gsc new file mode 100644 index 0000000..9faa900 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_music.gsc @@ -0,0 +1,30 @@ +#include maps/mp/_utility; + +music_init() +{ +/# + assert( level.clientscripts ); +#/ + level.musicstate = ""; + registerclientsys( "musicCmd" ); +} + +setmusicstate( state, player ) +{ + if ( isDefined( level.musicstate ) ) + { + if ( isDefined( player ) ) + { + setclientsysstate( "musicCmd", state, player ); + return; + } + else + { + if ( level.musicstate != state ) + { + setclientsysstate( "musicCmd", state ); + } + } + } + level.musicstate = state; +} diff --git a/zm_transit_dr_patch/maps/mp/_script_gen.gsc b/zm_transit_dr_patch/maps/mp/_script_gen.gsc new file mode 100644 index 0000000..f5dbda6 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_script_gen.gsc @@ -0,0 +1,342 @@ +#include maps/mp/_script_gen; +#include maps/mp/_utility; +#include common_scripts/utility; + +script_gen_dump_checksaved() +{ + signatures = getarraykeys( level.script_gen_dump ); + i = 0; + while ( i < signatures.size ) + { + if ( !isDefined( level.script_gen_dump2[ signatures[ i ] ] ) ) + { + level.script_gen_dump_reasons[ level.script_gen_dump_reasons.size ] = "Signature unmatched( removed feature ): " + signatures[ i ]; + } + i++; + } +} + +script_gen_dump() +{ +/# + script_gen_dump_checksaved(); + if ( !level.script_gen_dump_reasons.size ) + { + flag_set( "scriptgen_done" ); + return; + } + firstrun = 0; + if ( level.bscriptgened ) + { + println( " " ); + println( " " ); + println( " " ); + println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " ); + println( "^3Dumping scriptgen dump for these reasons" ); + println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " ); + i = 0; + while ( i < level.script_gen_dump_reasons.size ) + { + if ( issubstr( level.script_gen_dump_reasons[ i ], "nowrite" ) ) + { + substr = getsubstr( level.script_gen_dump_reasons[ i ], 15 ); + println( ( i + ". ) " ) + substr ); + } + else + { + println( ( i + ". ) " ) + level.script_gen_dump_reasons[ i ] ); + } + if ( level.script_gen_dump_reasons[ i ] == "First run" ) + { + firstrun = 1; + } + i++; + } + println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " ); + println( " " ); + if ( firstrun ) + { + println( "for First Run make sure you delete all of the vehicle precache script calls, createart calls, createfx calls( most commonly placed in maps\\" + level.script + "_fx.gsc ) " ); + println( " " ); + println( "replace:" ); + println( "maps\\_load::main( 1 );" ); + println( " " ); + println( "with( don't forget to add this file to P4 ):" ); + println( "maps\\scriptgen\\" + level.script + "_scriptgen::main();" ); + println( " " ); + } + println( "^2 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- " ); + println( " " ); + println( "^2 / \\ / \\ / \\" ); + println( "^2scroll up" ); + println( "^2 / \\ / \\ / \\" ); + println( " " ); + } + else + { + return; + } + filename = "scriptgen/" + level.script + "_scriptgen.gsc"; + csvfilename = "zone_source/" + level.script + ".csv"; + if ( level.bscriptgened ) + { + file = openfile( filename, "write" ); + } + else + { + file = 0; + } + assert( file != -1, "File not writeable( check it and and restart the map ): " + filename ); + script_gen_dumpprintln( file, "// script generated script do not write your own script here it will go away if you do." ); + script_gen_dumpprintln( file, "main()" ); + script_gen_dumpprintln( file, "{" ); + script_gen_dumpprintln( file, "" ); + script_gen_dumpprintln( file, "\tlevel.script_gen_dump = [];" ); + script_gen_dumpprintln( file, "" ); + signatures = getarraykeys( level.script_gen_dump ); + i = 0; + while ( i < signatures.size ) + { + if ( !issubstr( level.script_gen_dump[ signatures[ i ] ], "nowrite" ) ) + { + script_gen_dumpprintln( file, "\t" + level.script_gen_dump[ signatures[ i ] ] ); + } + i++; + } + i = 0; + while ( i < signatures.size ) + { + if ( !issubstr( level.script_gen_dump[ signatures[ i ] ], "nowrite" ) ) + { + script_gen_dumpprintln( file, "\tlevel.script_gen_dump[ " + """ + signatures[ i ] + """ + " ] = " + """ + signatures[ i ] + """ + ";" ); + i++; + continue; + } + else + { + script_gen_dumpprintln( file, "\tlevel.script_gen_dump[ " + """ + signatures[ i ] + """ + " ] = " + ""nowrite"" + ";" ); + } + i++; + } + script_gen_dumpprintln( file, "" ); + keys1 = undefined; + keys2 = undefined; + if ( isDefined( level.sg_precacheanims ) ) + { + keys1 = getarraykeys( level.sg_precacheanims ); + } + while ( isDefined( keys1 ) ) + { + i = 0; + while ( i < keys1.size ) + { + script_gen_dumpprintln( file, "\tanim_precach_" + keys1[ i ] + "();" ); + i++; + } + } + script_gen_dumpprintln( file, "\tmaps\\_load::main( 1, " + level.bcsvgened + ", 1 );" ); + script_gen_dumpprintln( file, "}" ); + script_gen_dumpprintln( file, "" ); + if ( isDefined( level.sg_precacheanims ) ) + { + keys1 = getarraykeys( level.sg_precacheanims ); + } + while ( isDefined( keys1 ) ) + { + i = 0; + while ( i < keys1.size ) + { + script_gen_dumpprintln( file, "#using_animtree( "" + keys1[ i ] + "" );" ); + script_gen_dumpprintln( file, "anim_precach_" + keys1[ i ] + "()" ); + script_gen_dumpprintln( file, "{" ); + script_gen_dumpprintln( file, "\tlevel.sg_animtree[ "" + keys1[ i ] + "" ] = #animtree;" ); + keys2 = getarraykeys( level.sg_precacheanims[ keys1[ i ] ] ); + while ( isDefined( keys2 ) ) + { + j = 0; + while ( j < keys2.size ) + { + script_gen_dumpprintln( file, "\tlevel.sg_anim[ "" + keys2[ j ] + "" ] = %" + keys2[ j ] + ";" ); + j++; + } + } + script_gen_dumpprintln( file, "}" ); + script_gen_dumpprintln( file, "" ); + i++; + } + } + if ( level.bscriptgened ) + { + saved = closefile( file ); + } + else + { + saved = 1; + } + if ( level.bcsvgened ) + { + csvfile = openfile( csvfilename, "write" ); + } + else + { + csvfile = 0; + } + assert( csvfile != -1, "File not writeable( check it and and restart the map ): " + csvfilename ); + signatures = getarraykeys( level.script_gen_dump ); + i = 0; + while ( i < signatures.size ) + { + script_gen_csvdumpprintln( csvfile, signatures[ i ] ); + i++; + } + if ( level.bcsvgened ) + { + csvfilesaved = closefile( csvfile ); + } + else + { + csvfilesaved = 1; + } + assert( csvfilesaved == 1, "csv not saved( see above message? ): " + csvfilename ); + assert( saved == 1, "map not saved( see above message? ): " + filename ); +#/ +/# + assert( !level.bscriptgened, "SCRIPTGEN generated: follow instructions listed above this error in the console" ); +#/ + if ( level.bscriptgened ) + { +/# + assertmsg( "SCRIPTGEN updated: Rebuild fast file and run map again" ); +#/ + } + flag_set( "scriptgen_done" ); +} + +script_gen_csvdumpprintln( file, signature ) +{ + prefix = undefined; + writtenprefix = undefined; + path = ""; + extension = ""; + if ( issubstr( signature, "ignore" ) ) + { + prefix = "ignore"; + } + else if ( issubstr( signature, "col_map_sp" ) ) + { + prefix = "col_map_sp"; + } + else if ( issubstr( signature, "gfx_map" ) ) + { + prefix = "gfx_map"; + } + else if ( issubstr( signature, "rawfile" ) ) + { + prefix = "rawfile"; + } + else if ( issubstr( signature, "sound" ) ) + { + prefix = "sound"; + } + else if ( issubstr( signature, "xmodel" ) ) + { + prefix = "xmodel"; + } + else if ( issubstr( signature, "xanim" ) ) + { + prefix = "xanim"; + } + else if ( issubstr( signature, "item" ) ) + { + prefix = "item"; + writtenprefix = "weapon"; + path = "sp/"; + } + else if ( issubstr( signature, "fx" ) ) + { + prefix = "fx"; + } + else if ( issubstr( signature, "menu" ) ) + { + prefix = "menu"; + writtenprefix = "menufile"; + path = "ui / scriptmenus/"; + extension = ".menu"; + } + else if ( issubstr( signature, "rumble" ) ) + { + prefix = "rumble"; + writtenprefix = "rawfile"; + path = "rumble/"; + } + else if ( issubstr( signature, "shader" ) ) + { + prefix = "shader"; + writtenprefix = "material"; + } + else if ( issubstr( signature, "shock" ) ) + { + prefix = "shock"; + writtenprefix = "rawfile"; + extension = ".shock"; + path = "shock/"; + } + else if ( issubstr( signature, "string" ) ) + { + prefix = "string"; +/# + assertmsg( "string not yet supported by scriptgen" ); +#/ + } + else if ( issubstr( signature, "turret" ) ) + { + prefix = "turret"; + writtenprefix = "weapon"; + path = "sp/"; + } + else + { + if ( issubstr( signature, "vehicle" ) ) + { + prefix = "vehicle"; + writtenprefix = "rawfile"; + path = "vehicles/"; + } + } + if ( !isDefined( prefix ) ) + { + return; + } + if ( !isDefined( writtenprefix ) ) + { + string = ( prefix + ", " ) + getsubstr( signature, prefix.size + 1, signature.size ); + } + else + { + string = ( writtenprefix + ", " ) + path + getsubstr( signature, prefix.size + 1, signature.size ) + extension; + } +/# + if ( file == -1 || !level.bcsvgened ) + { + println( string ); + } + else + { + fprintln( file, string ); +#/ + } +} + +script_gen_dumpprintln( file, string ) +{ +/# + if ( file == -1 || !level.bscriptgened ) + { + println( string ); + } + else + { + fprintln( file, string ); +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/_serverfaceanim_mp.gsc b/zm_transit_dr_patch/maps/mp/_serverfaceanim_mp.gsc new file mode 100644 index 0000000..bbd52a4 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_serverfaceanim_mp.gsc @@ -0,0 +1,56 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread init_serverfaceanim(); + } +} + +init_serverfaceanim() +{ + self.do_face_anims = 1; + if ( !isDefined( level.face_event_handler ) ) + { + level.face_event_handler = spawnstruct(); + level.face_event_handler.events = []; + level.face_event_handler.events[ "death" ] = "face_death"; + level.face_event_handler.events[ "grenade danger" ] = "face_alert"; + level.face_event_handler.events[ "bulletwhizby" ] = "face_alert"; + level.face_event_handler.events[ "projectile_impact" ] = "face_alert"; + level.face_event_handler.events[ "explode" ] = "face_alert"; + level.face_event_handler.events[ "alert" ] = "face_alert"; + level.face_event_handler.events[ "shoot" ] = "face_shoot_single"; + level.face_event_handler.events[ "melee" ] = "face_melee"; + level.face_event_handler.events[ "damage" ] = "face_pain"; + level thread wait_for_face_event(); + } +} + +wait_for_face_event() +{ + while ( 1 ) + { + level waittill( "face", face_notify, ent ); + if ( isDefined( ent ) && isDefined( ent.do_face_anims ) && ent.do_face_anims ) + { + if ( isDefined( level.face_event_handler.events[ face_notify ] ) ) + { + ent sendfaceevent( level.face_event_handler.events[ face_notify ] ); + } + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/_sticky_grenade.gsc b/zm_transit_dr_patch/maps/mp/_sticky_grenade.gsc new file mode 100644 index 0000000..eb8885c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_sticky_grenade.gsc @@ -0,0 +1,12 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + loadfx( "weapon/crossbow/fx_trail_crossbow_blink_grn_os" ); + loadfx( "weapon/crossbow/fx_trail_crossbow_blink_red_os" ); +} + +watch_bolt_detonation( owner ) +{ +} diff --git a/zm_transit_dr_patch/maps/mp/_utility.gsc b/zm_transit_dr_patch/maps/mp/_utility.gsc new file mode 100644 index 0000000..0157398 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_utility.gsc @@ -0,0 +1,3077 @@ +#include maps/mp/_utility; +#include maps/mp/_createfx; +#include maps/mp/gametypes/_hud_util; +#include common_scripts/utility; + +addcallback( event, func ) +{ +/# + assert( isDefined( event ), "Trying to set a callback on an undefined event." ); +#/ + if ( !isDefined( level._callbacks ) || !isDefined( level._callbacks[ event ] ) ) + { + level._callbacks[ event ] = []; + } + level._callbacks[ event ] = add_to_array( level._callbacks[ event ], func, 0 ); +} + +callback( event ) +{ + while ( isDefined( level._callbacks ) && isDefined( level._callbacks[ event ] ) ) + { + i = 0; + while ( i < level._callbacks[ event ].size ) + { + callback = level._callbacks[ event ][ i ]; + if ( isDefined( callback ) ) + { + self thread [[ callback ]](); + } + i++; + } + } +} + +onfinalizeinitialization_callback( func ) +{ + addcallback( "on_finalize_initialization", func ); +} + +triggeroff() +{ + if ( !isDefined( self.realorigin ) ) + { + self.realorigin = self.origin; + } + if ( self.origin == self.realorigin ) + { + self.origin += vectorScale( ( 0, 0, 1 ), 10000 ); + } +} + +triggeron() +{ + if ( isDefined( self.realorigin ) ) + { + self.origin = self.realorigin; + } +} + +error( msg ) +{ +/# + println( "^c*ERROR* ", msg ); + wait 0,05; + if ( getDvar( "debug" ) != "1" ) + { + assertmsg( "This is a forced error - attach the log file" ); +#/ + } +} + +warning( msg ) +{ +/# + println( "^1WARNING: " + msg ); +#/ +} + +spawn_array_struct() +{ + s = spawnstruct(); + s.a = []; + return s; +} + +within_fov( start_origin, start_angles, end_origin, fov ) +{ + normal = vectornormalize( end_origin - start_origin ); + forward = anglesToForward( start_angles ); + dot = vectordot( forward, normal ); + return dot >= fov; +} + +append_array_struct( dst_s, src_s ) +{ + i = 0; + while ( i < src_s.a.size ) + { + dst_s.a[ dst_s.a.size ] = src_s.a[ i ]; + i++; + } +} + +exploder( num ) +{ + [[ level.exploderfunction ]]( num ); +} + +exploder_stop( num ) +{ + stop_exploder( num ); +} + +exploder_sound() +{ + if ( isDefined( self.script_delay ) ) + { + wait self.script_delay; + } + self playsound( level.scr_sound[ self.script_sound ] ); +} + +cannon_effect() +{ + if ( isDefined( self.v[ "repeat" ] ) ) + { + i = 0; + while ( i < self.v[ "repeat" ] ) + { + playfx( level._effect[ self.v[ "fxid" ] ], self.v[ "origin" ], self.v[ "forward" ], self.v[ "up" ] ); + self exploder_delay(); + i++; + } + return; + } + self exploder_delay(); + if ( isDefined( self.looper ) ) + { + self.looper delete(); + } + self.looper = spawnfx( getfx( self.v[ "fxid" ] ), self.v[ "origin" ], self.v[ "forward" ], self.v[ "up" ] ); + triggerfx( self.looper ); + exploder_playsound(); +} + +exploder_delay() +{ + if ( !isDefined( self.v[ "delay" ] ) ) + { + self.v[ "delay" ] = 0; + } + min_delay = self.v[ "delay" ]; + max_delay = self.v[ "delay" ] + 0,001; + if ( isDefined( self.v[ "delay_min" ] ) ) + { + min_delay = self.v[ "delay_min" ]; + } + if ( isDefined( self.v[ "delay_max" ] ) ) + { + max_delay = self.v[ "delay_max" ]; + } + if ( min_delay > 0 ) + { + wait randomfloatrange( min_delay, max_delay ); + } +} + +exploder_playsound() +{ + if ( !isDefined( self.v[ "soundalias" ] ) || self.v[ "soundalias" ] == "nil" ) + { + return; + } + play_sound_in_space( self.v[ "soundalias" ], self.v[ "origin" ] ); +} + +brush_delete() +{ + num = self.v[ "exploder" ]; + if ( isDefined( self.v[ "delay" ] ) ) + { + wait self.v[ "delay" ]; + } + else + { + wait 0,05; + } + if ( !isDefined( self.model ) ) + { + return; + } +/# + assert( isDefined( self.model ) ); +#/ + if ( level.createfx_enabled ) + { + if ( isDefined( self.exploded ) ) + { + return; + } + self.exploded = 1; + self.model hide(); + self.model notsolid(); + wait 3; + self.exploded = undefined; + self.model show(); + self.model solid(); + return; + } + if ( !isDefined( self.v[ "fxid" ] ) || self.v[ "fxid" ] == "No FX" ) + { + } + waittillframeend; + self.model delete(); +} + +brush_show() +{ + if ( isDefined( self.v[ "delay" ] ) ) + { + wait self.v[ "delay" ]; + } +/# + assert( isDefined( self.model ) ); +#/ + self.model show(); + self.model solid(); + if ( level.createfx_enabled ) + { + if ( isDefined( self.exploded ) ) + { + return; + } + self.exploded = 1; + wait 3; + self.exploded = undefined; + self.model hide(); + self.model notsolid(); + } +} + +brush_throw() +{ + if ( isDefined( self.v[ "delay" ] ) ) + { + wait self.v[ "delay" ]; + } + ent = undefined; + if ( isDefined( self.v[ "target" ] ) ) + { + ent = getent( self.v[ "target" ], "targetname" ); + } + if ( !isDefined( ent ) ) + { + self.model delete(); + return; + } + self.model show(); + startorg = self.v[ "origin" ]; + startang = self.v[ "angles" ]; + org = ent.origin; + temp_vec = org - self.v[ "origin" ]; + x = temp_vec[ 0 ]; + y = temp_vec[ 1 ]; + z = temp_vec[ 2 ]; + self.model rotatevelocity( ( x, y, z ), 12 ); + self.model movegravity( ( x, y, z ), 12 ); + if ( level.createfx_enabled ) + { + if ( isDefined( self.exploded ) ) + { + return; + } + self.exploded = 1; + wait 3; + self.exploded = undefined; + self.v[ "origin" ] = startorg; + self.v[ "angles" ] = startang; + self.model hide(); + return; + } + wait 6; + self.model delete(); +} + +getplant() +{ + start = self.origin + vectorScale( ( 0, 0, 1 ), 10 ); + range = 11; + forward = anglesToForward( self.angles ); + forward = vectorScale( forward, range ); + traceorigins[ 0 ] = start + forward; + traceorigins[ 1 ] = start; + trace = bullettrace( traceorigins[ 0 ], traceorigins[ 0 ] + vectorScale( ( 0, 0, 1 ), 18 ), 0, undefined ); + if ( trace[ "fraction" ] < 1 ) + { + temp = spawnstruct(); + temp.origin = trace[ "position" ]; + temp.angles = orienttonormal( trace[ "normal" ] ); + return temp; + } + trace = bullettrace( traceorigins[ 1 ], traceorigins[ 1 ] + vectorScale( ( 0, 0, 1 ), 18 ), 0, undefined ); + if ( trace[ "fraction" ] < 1 ) + { + temp = spawnstruct(); + temp.origin = trace[ "position" ]; + temp.angles = orienttonormal( trace[ "normal" ] ); + return temp; + } + traceorigins[ 2 ] = start + vectorScale( ( 0, 0, 1 ), 16 ); + traceorigins[ 3 ] = start + vectorScale( ( 0, 0, 1 ), 16 ); + traceorigins[ 4 ] = start + vectorScale( ( 0, 0, 1 ), 16 ); + traceorigins[ 5 ] = start + vectorScale( ( 0, 0, 1 ), 16 ); + besttracefraction = undefined; + besttraceposition = undefined; + i = 0; + while ( i < traceorigins.size ) + { + trace = bullettrace( traceorigins[ i ], traceorigins[ i ] + vectorScale( ( 0, 0, 1 ), 1000 ), 0, undefined ); + if ( !isDefined( besttracefraction ) || trace[ "fraction" ] < besttracefraction ) + { + besttracefraction = trace[ "fraction" ]; + besttraceposition = trace[ "position" ]; + } + i++; + } + if ( besttracefraction == 1 ) + { + besttraceposition = self.origin; + } + temp = spawnstruct(); + temp.origin = besttraceposition; + temp.angles = orienttonormal( trace[ "normal" ] ); + return temp; +} + +orienttonormal( normal ) +{ + hor_normal = ( normal[ 0 ], normal[ 1 ], 0 ); + hor_length = length( hor_normal ); + if ( !hor_length ) + { + return ( 0, 0, 1 ); + } + hor_dir = vectornormalize( hor_normal ); + neg_height = normal[ 2 ] * -1; + tangent = ( hor_dir[ 0 ] * neg_height, hor_dir[ 1 ] * neg_height, hor_length ); + plant_angle = vectorToAngle( tangent ); + return plant_angle; +} + +array_levelthread( ents, process, var, excluders ) +{ + exclude = []; + i = 0; + while ( i < ents.size ) + { + exclude[ i ] = 0; + i++; + } + while ( isDefined( excluders ) ) + { + i = 0; + while ( i < ents.size ) + { + p = 0; + while ( p < excluders.size ) + { + if ( ents[ i ] == excluders[ p ] ) + { + exclude[ i ] = 1; + } + p++; + } + i++; + } + } + i = 0; + while ( i < ents.size ) + { + if ( !exclude[ i ] ) + { + if ( isDefined( var ) ) + { + level thread [[ process ]]( ents[ i ], var ); + i++; + continue; + } + else + { + level thread [[ process ]]( ents[ i ] ); + } + } + i++; + } +} + +deleteplacedentity( entity ) +{ + entities = getentarray( entity, "classname" ); + i = 0; + while ( i < entities.size ) + { + entities[ i ] delete(); + i++; + } +} + +playsoundonplayers( sound, team ) +{ +/# + assert( isDefined( level.players ) ); +#/ + if ( level.splitscreen ) + { + if ( isDefined( level.players[ 0 ] ) ) + { + level.players[ 0 ] playlocalsound( sound ); + } + } + else if ( isDefined( team ) ) + { + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player playlocalsound( sound ); + } + i++; + } + } + else i = 0; + while ( i < level.players.size ) + { + level.players[ i ] playlocalsound( sound ); + i++; + } +} + +get_player_height() +{ + return 70; +} + +isbulletimpactmod( smeansofdeath ) +{ + if ( !issubstr( smeansofdeath, "BULLET" ) ) + { + return smeansofdeath == "MOD_HEAD_SHOT"; + } +} + +get_team_alive_players_s( teamname ) +{ + teamplayers_s = spawn_array_struct(); + while ( isDefined( teamname ) && isDefined( level.aliveplayers ) && isDefined( level.aliveplayers[ teamname ] ) ) + { + i = 0; + while ( i < level.aliveplayers[ teamname ].size ) + { + teamplayers_s.a[ teamplayers_s.a.size ] = level.aliveplayers[ teamname ][ i ]; + i++; + } + } + return teamplayers_s; +} + +get_all_alive_players_s() +{ + allplayers_s = spawn_array_struct(); + while ( isDefined( level.aliveplayers ) ) + { + keys = getarraykeys( level.aliveplayers ); + i = 0; + while ( i < keys.size ) + { + team = keys[ i ]; + j = 0; + while ( j < level.aliveplayers[ team ].size ) + { + allplayers_s.a[ allplayers_s.a.size ] = level.aliveplayers[ team ][ j ]; + j++; + } + i++; + } + } + return allplayers_s; +} + +waitrespawnbutton() +{ + self endon( "disconnect" ); + self endon( "end_respawn" ); + while ( self usebuttonpressed() != 1 ) + { + wait 0,05; + } +} + +setlowermessage( text, time, combinemessageandtimer ) +{ + if ( !isDefined( self.lowermessage ) ) + { + return; + } + if ( isDefined( self.lowermessageoverride ) && text != &"" ) + { + text = self.lowermessageoverride; + time = undefined; + } + self notify( "lower_message_set" ); + self.lowermessage settext( text ); + if ( isDefined( time ) && time > 0 ) + { + if ( !isDefined( combinemessageandtimer ) || !combinemessageandtimer ) + { + self.lowertimer.label = &""; + } + else + { + self.lowermessage settext( "" ); + self.lowertimer.label = text; + } + self.lowertimer settimer( time ); + } + else + { + self.lowertimer settext( "" ); + self.lowertimer.label = &""; + } + if ( self issplitscreen() ) + { + self.lowermessage.fontscale = 1,4; + } + self.lowermessage fadeovertime( 0,05 ); + self.lowermessage.alpha = 1; + self.lowertimer fadeovertime( 0,05 ); + self.lowertimer.alpha = 1; +} + +setlowermessagevalue( text, value, combinemessage ) +{ + if ( !isDefined( self.lowermessage ) ) + { + return; + } + if ( isDefined( self.lowermessageoverride ) && text != &"" ) + { + text = self.lowermessageoverride; + time = undefined; + } + self notify( "lower_message_set" ); + if ( !isDefined( combinemessage ) || !combinemessage ) + { + self.lowermessage settext( text ); + } + else + { + self.lowermessage settext( "" ); + } + if ( isDefined( value ) && value > 0 ) + { + if ( !isDefined( combinemessage ) || !combinemessage ) + { + self.lowertimer.label = &""; + } + else + { + self.lowertimer.label = text; + } + self.lowertimer setvalue( value ); + } + else + { + self.lowertimer settext( "" ); + self.lowertimer.label = &""; + } + if ( self issplitscreen() ) + { + self.lowermessage.fontscale = 1,4; + } + self.lowermessage fadeovertime( 0,05 ); + self.lowermessage.alpha = 1; + self.lowertimer fadeovertime( 0,05 ); + self.lowertimer.alpha = 1; +} + +clearlowermessage( fadetime ) +{ + if ( !isDefined( self.lowermessage ) ) + { + return; + } + self notify( "lower_message_set" ); + if ( !isDefined( fadetime ) || fadetime == 0 ) + { + setlowermessage( &"" ); + } + else + { + self endon( "disconnect" ); + self endon( "lower_message_set" ); + self.lowermessage fadeovertime( fadetime ); + self.lowermessage.alpha = 0; + self.lowertimer fadeovertime( fadetime ); + self.lowertimer.alpha = 0; + wait fadetime; + self setlowermessage( "" ); + } +} + +printonteam( text, team ) +{ +/# + assert( isDefined( level.players ) ); +#/ + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player iprintln( text ); + } + i++; + } +} + +printboldonteam( text, team ) +{ +/# + assert( isDefined( level.players ) ); +#/ + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player iprintlnbold( text ); + } + i++; + } +} + +printboldonteamarg( text, team, arg ) +{ +/# + assert( isDefined( level.players ) ); +#/ + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player iprintlnbold( text, arg ); + } + i++; + } +} + +printonteamarg( text, team, arg ) +{ +} + +printonplayers( text, team ) +{ + players = level.players; + i = 0; + while ( i < players.size ) + { + if ( isDefined( team ) ) + { + if ( isDefined( players[ i ].pers[ "team" ] ) && players[ i ].pers[ "team" ] == team ) + { + players[ i ] iprintln( text ); + } + i++; + continue; + } + else + { + players[ i ] iprintln( text ); + } + i++; + } +} + +printandsoundoneveryone( team, enemyteam, printfriendly, printenemy, soundfriendly, soundenemy, printarg ) +{ + shoulddosounds = isDefined( soundfriendly ); + shoulddoenemysounds = 0; + if ( isDefined( soundenemy ) ) + { +/# + assert( shoulddosounds ); +#/ + shoulddoenemysounds = 1; + } + if ( !isDefined( printarg ) ) + { + printarg = ""; + } + if ( level.splitscreen || !shoulddosounds ) + { + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + playerteam = player.pers[ "team" ]; + if ( isDefined( playerteam ) ) + { + if ( playerteam == team && isDefined( printfriendly ) && printfriendly != &"" ) + { + player iprintln( printfriendly, printarg ); + i++; + continue; + } + else + { + if ( isDefined( printenemy ) && printenemy != &"" ) + { + if ( isDefined( enemyteam ) && playerteam == enemyteam ) + { + player iprintln( printenemy, printarg ); + i++; + continue; + } + else + { + if ( !isDefined( enemyteam ) && playerteam != team ) + { + player iprintln( printenemy, printarg ); + } + } + } + } + } + i++; + } + if ( shoulddosounds ) + { +/# + assert( level.splitscreen ); +#/ + level.players[ 0 ] playlocalsound( soundfriendly ); + } + } + else + { +/# + assert( shoulddosounds ); +#/ + if ( shoulddoenemysounds ) + { + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + playerteam = player.pers[ "team" ]; + if ( isDefined( playerteam ) ) + { + if ( playerteam == team ) + { + if ( isDefined( printfriendly ) && printfriendly != &"" ) + { + player iprintln( printfriendly, printarg ); + } + player playlocalsound( soundfriendly ); + i++; + continue; + } + else + { + if ( isDefined( enemyteam ) || playerteam == enemyteam && !isDefined( enemyteam ) && playerteam != team ) + { + if ( isDefined( printenemy ) && printenemy != &"" ) + { + player iprintln( printenemy, printarg ); + } + player playlocalsound( soundenemy ); + } + } + } + i++; + } + } + else i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + playerteam = player.pers[ "team" ]; + if ( isDefined( playerteam ) ) + { + if ( playerteam == team ) + { + if ( isDefined( printfriendly ) && printfriendly != &"" ) + { + player iprintln( printfriendly, printarg ); + } + player playlocalsound( soundfriendly ); + i++; + continue; + } + else if ( isDefined( printenemy ) && printenemy != &"" ) + { + if ( isDefined( enemyteam ) && playerteam == enemyteam ) + { + player iprintln( printenemy, printarg ); + i++; + continue; + } + else + { + if ( !isDefined( enemyteam ) && playerteam != team ) + { + player iprintln( printenemy, printarg ); + } + } + } + } + i++; + } + } +} + +_playlocalsound( soundalias ) +{ + if ( level.splitscreen && !self ishost() ) + { + return; + } + self playlocalsound( soundalias ); +} + +dvarintvalue( dvar, defval, minval, maxval ) +{ + dvar = "scr_" + level.gametype + "_" + dvar; + if ( getDvar( dvar ) == "" ) + { + setdvar( dvar, defval ); + return defval; + } + value = getDvarInt( dvar ); + if ( value > maxval ) + { + value = maxval; + } + else if ( value < minval ) + { + value = minval; + } + else + { + return value; + } + setdvar( dvar, value ); + return value; +} + +dvarfloatvalue( dvar, defval, minval, maxval ) +{ + dvar = "scr_" + level.gametype + "_" + dvar; + if ( getDvar( dvar ) == "" ) + { + setdvar( dvar, defval ); + return defval; + } + value = getDvarFloat( dvar ); + if ( value > maxval ) + { + value = maxval; + } + else if ( value < minval ) + { + value = minval; + } + else + { + return value; + } + setdvar( dvar, value ); + return value; +} + +play_sound_on_tag( alias, tag ) +{ + if ( isDefined( tag ) ) + { + org = spawn( "script_origin", self gettagorigin( tag ) ); + org linkto( self, tag, ( 0, 0, 1 ), ( 0, 0, 1 ) ); + } + else + { + org = spawn( "script_origin", ( 0, 0, 1 ) ); + org.origin = self.origin; + org.angles = self.angles; + org linkto( self ); + } + org playsound( alias ); + wait 5; + org delete(); +} + +createloopeffect( fxid ) +{ + ent = maps/mp/_createfx::createeffect( "loopfx", fxid ); + ent.v[ "delay" ] = 0,5; + return ent; +} + +createoneshoteffect( fxid ) +{ + ent = maps/mp/_createfx::createeffect( "oneshotfx", fxid ); + ent.v[ "delay" ] = -15; + return ent; +} + +loop_fx_sound( alias, origin, ender, timeout ) +{ + org = spawn( "script_origin", ( 0, 0, 1 ) ); + if ( isDefined( ender ) ) + { + thread loop_sound_delete( ender, org ); + self endon( ender ); + } + org.origin = origin; + org playloopsound( alias ); + if ( !isDefined( timeout ) ) + { + return; + } + wait timeout; +} + +exploder_damage() +{ + if ( isDefined( self.v[ "delay" ] ) ) + { + delay = self.v[ "delay" ]; + } + else + { + delay = 0; + } + if ( isDefined( self.v[ "damage_radius" ] ) ) + { + radius = self.v[ "damage_radius" ]; + } + else + { + radius = 128; + } + damage = self.v[ "damage" ]; + origin = self.v[ "origin" ]; + wait delay; + radiusdamage( origin, radius, damage, damage ); +} + +exploder_before_load( num ) +{ + waittillframeend; + waittillframeend; + activate_exploder( num ); +} + +exploder_after_load( num ) +{ + activate_exploder( num ); +} + +getexploderid( ent ) +{ + if ( !isDefined( level._exploder_ids ) ) + { + level._exploder_ids = []; + level._exploder_id = 1; + } + if ( !isDefined( level._exploder_ids[ ent.v[ "exploder" ] ] ) ) + { + level._exploder_ids[ ent.v[ "exploder" ] ] = level._exploder_id; + level._exploder_id++; + } + return level._exploder_ids[ ent.v[ "exploder" ] ]; +} + +activate_exploder_on_clients( num ) +{ + if ( !isDefined( level._exploder_ids[ num ] ) ) + { + return; + } + if ( !isDefined( level._client_exploders[ num ] ) ) + { + level._client_exploders[ num ] = 1; + } + if ( !isDefined( level._client_exploder_ids[ num ] ) ) + { + level._client_exploder_ids[ num ] = 1; + } + activateclientexploder( level._exploder_ids[ num ] ); +} + +delete_exploder_on_clients( num ) +{ + if ( !isDefined( level._exploder_ids[ num ] ) ) + { + return; + } + if ( !isDefined( level._client_exploders[ num ] ) ) + { + return; + } + deactivateclientexploder( level._exploder_ids[ num ] ); +} + +activate_individual_exploder() +{ + level notify( "exploder" + self.v[ "exploder" ] ); + if ( !level.createfx_enabled && level.clientscripts || !isDefined( level._exploder_ids[ int( self.v[ "exploder" ] ) ] ) && isDefined( self.v[ "exploder_server" ] ) ) + { +/# + println( "Exploder " + self.v[ "exploder" ] + " created on server." ); +#/ + if ( isDefined( self.v[ "firefx" ] ) ) + { + self thread fire_effect(); + } + if ( isDefined( self.v[ "fxid" ] ) && self.v[ "fxid" ] != "No FX" ) + { + self thread cannon_effect(); + } + else + { + if ( isDefined( self.v[ "soundalias" ] ) ) + { + self thread sound_effect(); + } + } + } + if ( isDefined( self.v[ "trailfx" ] ) ) + { + self thread trail_effect(); + } + if ( isDefined( self.v[ "damage" ] ) ) + { + self thread exploder_damage(); + } + if ( self.v[ "exploder_type" ] == "exploder" ) + { + self thread brush_show(); + } + else if ( self.v[ "exploder_type" ] == "exploderchunk" || self.v[ "exploder_type" ] == "exploderchunk visible" ) + { + self thread brush_throw(); + } + else + { + self thread brush_delete(); + } +} + +trail_effect() +{ + self exploder_delay(); + if ( !isDefined( self.v[ "trailfxtag" ] ) ) + { + self.v[ "trailfxtag" ] = "tag_origin"; + } + temp_ent = undefined; + if ( self.v[ "trailfxtag" ] == "tag_origin" ) + { + playfxontag( level._effect[ self.v[ "trailfx" ] ], self.model, self.v[ "trailfxtag" ] ); + } + else + { + temp_ent = spawn( "script_model", self.model.origin ); + temp_ent setmodel( "tag_origin" ); + temp_ent linkto( self.model, self.v[ "trailfxtag" ] ); + playfxontag( level._effect[ self.v[ "trailfx" ] ], temp_ent, "tag_origin" ); + } + if ( isDefined( self.v[ "trailfxsound" ] ) ) + { + if ( !isDefined( temp_ent ) ) + { + self.model playloopsound( self.v[ "trailfxsound" ] ); + } + else + { + temp_ent playloopsound( self.v[ "trailfxsound" ] ); + } + } + if ( isDefined( self.v[ "ender" ] ) && isDefined( temp_ent ) ) + { + level thread trail_effect_ender( temp_ent, self.v[ "ender" ] ); + } + if ( !isDefined( self.v[ "trailfxtimeout" ] ) ) + { + return; + } + wait self.v[ "trailfxtimeout" ]; + if ( isDefined( temp_ent ) ) + { + temp_ent delete(); + } +} + +trail_effect_ender( ent, ender ) +{ + ent endon( "death" ); + self waittill( ender ); + ent delete(); +} + +activate_exploder( num ) +{ + num = int( num ); +/# + if ( level.createfx_enabled ) + { + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( !isDefined( ent ) ) + { + i++; + continue; + } + else if ( ent.v[ "type" ] != "exploder" ) + { + i++; + continue; + } + else if ( !isDefined( ent.v[ "exploder" ] ) ) + { + i++; + continue; + } + else if ( ent.v[ "exploder" ] != num ) + { + i++; + continue; + } + else + { + if ( isDefined( ent.v[ "exploder_server" ] ) ) + { + client_send = 0; + } + ent activate_individual_exploder(); + } + i++; + } + return; +#/ + } + client_send = 1; + while ( isDefined( level.createfxexploders[ num ] ) ) + { + i = 0; + while ( i < level.createfxexploders[ num ].size ) + { + if ( client_send && isDefined( level.createfxexploders[ num ][ i ].v[ "exploder_server" ] ) ) + { + client_send = 0; + } + level.createfxexploders[ num ][ i ] activate_individual_exploder(); + i++; + } + } + if ( level.clientscripts ) + { + if ( !level.createfx_enabled && client_send == 1 ) + { + activate_exploder_on_clients( num ); + } + } +} + +stop_exploder( num ) +{ + num = int( num ); + if ( level.clientscripts ) + { + if ( !level.createfx_enabled ) + { + delete_exploder_on_clients( num ); + } + } + while ( isDefined( level.createfxexploders[ num ] ) ) + { + i = 0; + while ( i < level.createfxexploders[ num ].size ) + { + if ( !isDefined( level.createfxexploders[ num ][ i ].looper ) ) + { + i++; + continue; + } + else + { + level.createfxexploders[ num ][ i ].looper delete(); + } + i++; + } + } +} + +sound_effect() +{ + self effect_soundalias(); +} + +effect_soundalias() +{ + if ( !isDefined( self.v[ "delay" ] ) ) + { + self.v[ "delay" ] = 0; + } + origin = self.v[ "origin" ]; + alias = self.v[ "soundalias" ]; + wait self.v[ "delay" ]; + play_sound_in_space( alias, origin ); +} + +play_sound_in_space( alias, origin, master ) +{ + org = spawn( "script_origin", ( 0, 0, 1 ) ); + if ( !isDefined( origin ) ) + { + origin = self.origin; + } + org.origin = origin; + if ( isDefined( master ) && master ) + { + org playsoundasmaster( alias ); + } + else + { + org playsound( alias ); + } + wait 10; + org delete(); +} + +loop_sound_in_space( alias, origin, ender ) +{ + org = spawn( "script_origin", ( 0, 0, 1 ) ); + if ( !isDefined( origin ) ) + { + origin = self.origin; + } + org.origin = origin; + org playloopsound( alias ); + level waittill( ender ); + org stoploopsound(); + wait 0,1; + org delete(); +} + +fire_effect() +{ + if ( !isDefined( self.v[ "delay" ] ) ) + { + self.v[ "delay" ] = 0; + } + delay = self.v[ "delay" ]; + if ( isDefined( self.v[ "delay_min" ] ) && isDefined( self.v[ "delay_max" ] ) ) + { + delay = self.v[ "delay_min" ] + randomfloat( self.v[ "delay_max" ] - self.v[ "delay_min" ] ); + } + forward = self.v[ "forward" ]; + up = self.v[ "up" ]; + org = undefined; + firefxsound = self.v[ "firefxsound" ]; + origin = self.v[ "origin" ]; + firefx = self.v[ "firefx" ]; + ender = self.v[ "ender" ]; + if ( !isDefined( ender ) ) + { + ender = "createfx_effectStopper"; + } + timeout = self.v[ "firefxtimeout" ]; + firefxdelay = 0,5; + if ( isDefined( self.v[ "firefxdelay" ] ) ) + { + firefxdelay = self.v[ "firefxdelay" ]; + } + wait delay; + if ( isDefined( firefxsound ) ) + { + level thread loop_fx_sound( firefxsound, origin, ender, timeout ); + } + playfx( level._effect[ firefx ], self.v[ "origin" ], forward, up ); +} + +loop_sound_delete( ender, ent ) +{ + ent endon( "death" ); + self waittill( ender ); + ent delete(); +} + +createexploder( fxid ) +{ + ent = maps/mp/_createfx::createeffect( "exploder", fxid ); + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 1; + ent.v[ "exploder_type" ] = "normal"; + return ent; +} + +getotherteam( team ) +{ + if ( team == "allies" ) + { + return "axis"; + } + else + { + if ( team == "axis" ) + { + return "allies"; + } + else + { + return "allies"; + } + } +/# + assertmsg( "getOtherTeam: invalid team " + team ); +#/ +} + +getteammask( team ) +{ + if ( level.teambased || !isDefined( team ) && !isDefined( level.spawnsystem.ispawn_teammask[ team ] ) ) + { + return level.spawnsystem.ispawn_teammask_free; + } + return level.spawnsystem.ispawn_teammask[ team ]; +} + +getotherteamsmask( skip_team ) +{ + mask = 0; + _a1408 = level.teams; + _k1408 = getFirstArrayKey( _a1408 ); + while ( isDefined( _k1408 ) ) + { + team = _a1408[ _k1408 ]; + if ( team == skip_team ) + { + } + else + { + mask |= getteammask( team ); + } + _k1408 = getNextArrayKey( _a1408, _k1408 ); + } + return mask; +} + +wait_endon( waittime, endonstring, endonstring2, endonstring3, endonstring4 ) +{ + self endon( endonstring ); + if ( isDefined( endonstring2 ) ) + { + self endon( endonstring2 ); + } + if ( isDefined( endonstring3 ) ) + { + self endon( endonstring3 ); + } + if ( isDefined( endonstring4 ) ) + { + self endon( endonstring4 ); + } + wait waittime; + return 1; +} + +ismg( weapon ) +{ + return issubstr( weapon, "_bipod_" ); +} + +plot_points( plotpoints, r, g, b, timer ) +{ +/# + lastpoint = plotpoints[ 0 ]; + if ( !isDefined( r ) ) + { + r = 1; + } + if ( !isDefined( g ) ) + { + g = 1; + } + if ( !isDefined( b ) ) + { + b = 1; + } + if ( !isDefined( timer ) ) + { + timer = 0,05; + } + i = 1; + while ( i < plotpoints.size ) + { + line( lastpoint, plotpoints[ i ], ( r, g, b ), 1, timer ); + lastpoint = plotpoints[ i ]; + i++; +#/ + } +} + +player_flag_wait( msg ) +{ + while ( !self.flag[ msg ] ) + { + self waittill( msg ); + } +} + +player_flag_wait_either( flag1, flag2 ) +{ + for ( ;; ) + { + if ( flag( flag1 ) ) + { + return; + } + if ( flag( flag2 ) ) + { + return; + } + self waittill_either( flag1, flag2 ); + } +} + +player_flag_waitopen( msg ) +{ + while ( self.flag[ msg ] ) + { + self waittill( msg ); + } +} + +player_flag_init( message, trigger ) +{ + if ( !isDefined( self.flag ) ) + { + self.flag = []; + self.flags_lock = []; + } +/# + assert( !isDefined( self.flag[ message ] ), "Attempt to reinitialize existing message: " + message ); +#/ + self.flag[ message ] = 0; +/# + self.flags_lock[ message ] = 0; +#/ +} + +player_flag_set_delayed( message, delay ) +{ + wait delay; + player_flag_set( message ); +} + +player_flag_set( message ) +{ +/# + assert( isDefined( self.flag[ message ] ), "Attempt to set a flag before calling flag_init: " + message ); + assert( self.flag[ message ] == self.flags_lock[ message ] ); + self.flags_lock[ message ] = 1; +#/ + self.flag[ message ] = 1; + self notify( message ); +} + +player_flag_clear( message ) +{ +/# + assert( isDefined( self.flag[ message ] ), "Attempt to set a flag before calling flag_init: " + message ); + assert( self.flag[ message ] == self.flags_lock[ message ] ); + self.flags_lock[ message ] = 0; +#/ + self.flag[ message ] = 0; + self notify( message ); +} + +player_flag( message ) +{ +/# + assert( isDefined( message ), "Tried to check flag but the flag was not defined." ); +#/ + if ( !self.flag[ message ] ) + { + return 0; + } + return 1; +} + +registerclientsys( ssysname ) +{ + if ( !isDefined( level._clientsys ) ) + { + level._clientsys = []; + } + if ( level._clientsys.size >= 32 ) + { +/# + error( "Max num client systems exceeded." ); +#/ + return; + } + if ( isDefined( level._clientsys[ ssysname ] ) ) + { +/# + error( "Attempt to re-register client system : " + ssysname ); +#/ + return; + } + else + { + level._clientsys[ ssysname ] = spawnstruct(); + level._clientsys[ ssysname ].sysid = clientsysregister( ssysname ); + } +} + +setclientsysstate( ssysname, ssysstate, player ) +{ + if ( !isDefined( level._clientsys ) ) + { +/# + error( "setClientSysState called before registration of any systems." ); +#/ + return; + } + if ( !isDefined( level._clientsys[ ssysname ] ) ) + { +/# + error( "setClientSysState called on unregistered system " + ssysname ); +#/ + return; + } + if ( isDefined( player ) ) + { + player clientsyssetstate( level._clientsys[ ssysname ].sysid, ssysstate ); + } + else + { + clientsyssetstate( level._clientsys[ ssysname ].sysid, ssysstate ); + level._clientsys[ ssysname ].sysstate = ssysstate; + } +} + +getclientsysstate( ssysname ) +{ + if ( !isDefined( level._clientsys ) ) + { +/# + error( "Cannot getClientSysState before registering any client systems." ); +#/ + return ""; + } + if ( !isDefined( level._clientsys[ ssysname ] ) ) + { +/# + error( "Client system " + ssysname + " cannot return state, as it is unregistered." ); +#/ + return ""; + } + if ( isDefined( level._clientsys[ ssysname ].sysstate ) ) + { + return level._clientsys[ ssysname ].sysstate; + } + return ""; +} + +clientnotify( event ) +{ + if ( level.clientscripts ) + { + if ( isplayer( self ) ) + { + maps/mp/_utility::setclientsysstate( "levelNotify", event, self ); + return; + } + else + { + maps/mp/_utility::setclientsysstate( "levelNotify", event ); + } + } +} + +alphabet_compare( a, b ) +{ + list = []; + val = 1; + list[ "0" ] = val; + val++; + list[ "1" ] = val; + val++; + list[ "2" ] = val; + val++; + list[ "3" ] = val; + val++; + list[ "4" ] = val; + val++; + list[ "5" ] = val; + val++; + list[ "6" ] = val; + val++; + list[ "7" ] = val; + val++; + list[ "8" ] = val; + val++; + list[ "9" ] = val; + val++; + list[ "_" ] = val; + val++; + list[ "a" ] = val; + val++; + list[ "b" ] = val; + val++; + list[ "c" ] = val; + val++; + list[ "d" ] = val; + val++; + list[ "e" ] = val; + val++; + list[ "f" ] = val; + val++; + list[ "g" ] = val; + val++; + list[ "h" ] = val; + val++; + list[ "i" ] = val; + val++; + list[ "j" ] = val; + val++; + list[ "k" ] = val; + val++; + list[ "l" ] = val; + val++; + list[ "m" ] = val; + val++; + list[ "n" ] = val; + val++; + list[ "o" ] = val; + val++; + list[ "p" ] = val; + val++; + list[ "q" ] = val; + val++; + list[ "r" ] = val; + val++; + list[ "s" ] = val; + val++; + list[ "t" ] = val; + val++; + list[ "u" ] = val; + val++; + list[ "v" ] = val; + val++; + list[ "w" ] = val; + val++; + list[ "x" ] = val; + val++; + list[ "y" ] = val; + val++; + list[ "z" ] = val; + val++; + a = tolower( a ); + b = tolower( b ); + val1 = 0; + if ( isDefined( list[ a ] ) ) + { + val1 = list[ a ]; + } + val2 = 0; + if ( isDefined( list[ b ] ) ) + { + val2 = list[ b ]; + } + if ( val1 > val2 ) + { + return "1st"; + } + if ( val1 < val2 ) + { + return "2nd"; + } + return "same"; +} + +is_later_in_alphabet( string1, string2 ) +{ + count = string1.size; + if ( count >= string2.size ) + { + count = string2.size; + } + i = 0; + while ( i < count ) + { + val = alphabet_compare( string1[ i ], string2[ i ] ); + if ( val == "1st" ) + { + return 1; + } + if ( val == "2nd" ) + { + return 0; + } + i++; + } + return string1.size > string2.size; +} + +alphabetize( array ) +{ + if ( array.size <= 1 ) + { + return array; + } + count = 0; + for ( ;; ) + { + changed = 0; + i = 0; + while ( i < ( array.size - 1 ) ) + { + if ( is_later_in_alphabet( array[ i ], array[ i + 1 ] ) ) + { + val = array[ i ]; + array[ i ] = array[ i + 1 ]; + array[ i + 1 ] = val; + changed = 1; + count++; + if ( count >= 9 ) + { + count = 0; + wait 0,05; + } + } + i++; + } + if ( !changed ) + { + return array; + } + } + return array; +} + +get_players() +{ + players = getplayers(); + return players; +} + +getfx( fx ) +{ +/# + assert( isDefined( level._effect[ fx ] ), "Fx " + fx + " is not defined in level._effect." ); +#/ + return level._effect[ fx ]; +} + +struct_arrayspawn() +{ + struct = spawnstruct(); + struct.array = []; + struct.lastindex = 0; + return struct; +} + +structarray_add( struct, object ) +{ +/# + assert( !isDefined( object.struct_array_index ) ); +#/ + struct.array[ struct.lastindex ] = object; + object.struct_array_index = struct.lastindex; + struct.lastindex++; +} + +structarray_remove( struct, object ) +{ + structarray_swaptolast( struct, object ); + struct.lastindex--; + +} + +structarray_swaptolast( struct, object ) +{ + struct structarray_swap( struct.array[ struct.lastindex - 1 ], object ); +} + +structarray_shuffle( struct, shuffle ) +{ + i = 0; + while ( i < shuffle ) + { + struct structarray_swap( struct.array[ i ], struct.array[ randomint( struct.lastindex ) ] ); + i++; + } +} + +structarray_swap( object1, object2 ) +{ + index1 = object1.struct_array_index; + index2 = object2.struct_array_index; + self.array[ index2 ] = object1; + self.array[ index1 ] = object2; + self.array[ index1 ].struct_array_index = index1; + self.array[ index2 ].struct_array_index = index2; +} + +waittill_either( msg1, msg2 ) +{ + self endon( msg1 ); + self waittill( msg2 ); +} + +combinearrays( array1, array2 ) +{ +/# + if ( !isDefined( array1 ) ) + { + assert( isDefined( array2 ) ); + } +#/ + if ( !isDefined( array1 ) && isDefined( array2 ) ) + { + return array2; + } + if ( !isDefined( array2 ) && isDefined( array1 ) ) + { + return array1; + } + _a1822 = array2; + _k1822 = getFirstArrayKey( _a1822 ); + while ( isDefined( _k1822 ) ) + { + elem = _a1822[ _k1822 ]; + array1[ array1.size ] = elem; + _k1822 = getNextArrayKey( _a1822, _k1822 ); + } + return array1; +} + +getclosest( org, array, dist ) +{ + return comparesizes( org, array, dist, ::closerfunc ); +} + +getclosestfx( org, fxarray, dist ) +{ + return comparesizesfx( org, fxarray, dist, ::closerfunc ); +} + +getfarthest( org, array, dist ) +{ + return comparesizes( org, array, dist, ::fartherfunc ); +} + +comparesizesfx( org, array, dist, comparefunc ) +{ + if ( !array.size ) + { + return undefined; + } + if ( isDefined( dist ) ) + { + distsqr = dist * dist; + struct = undefined; + keys = getarraykeys( array ); + i = 0; + while ( i < keys.size ) + { + newdistsqr = distancesquared( array[ keys[ i ] ].v[ "origin" ], org ); + if ( [[ comparefunc ]]( newdistsqr, distsqr ) ) + { + i++; + continue; + } + else + { + distsqr = newdistsqr; + struct = array[ keys[ i ] ]; + } + i++; + } + return struct; + } + keys = getarraykeys( array ); + struct = array[ keys[ 0 ] ]; + distsqr = distancesquared( struct.v[ "origin" ], org ); + i = 1; + while ( i < keys.size ) + { + newdistsqr = distancesquared( array[ keys[ i ] ].v[ "origin" ], org ); + if ( [[ comparefunc ]]( newdistsqr, distsqr ) ) + { + i++; + continue; + } + else + { + distsqr = newdistsqr; + struct = array[ keys[ i ] ]; + } + i++; + } + return struct; +} + +comparesizes( org, array, dist, comparefunc ) +{ + if ( !array.size ) + { + return undefined; + } + if ( isDefined( dist ) ) + { + distsqr = dist * dist; + ent = undefined; + keys = getarraykeys( array ); + i = 0; + while ( i < keys.size ) + { + if ( !isDefined( array[ keys[ i ] ] ) ) + { + i++; + continue; + } + else newdistsqr = distancesquared( array[ keys[ i ] ].origin, org ); + if ( [[ comparefunc ]]( newdistsqr, distsqr ) ) + { + i++; + continue; + } + else + { + distsqr = newdistsqr; + ent = array[ keys[ i ] ]; + } + i++; + } + return ent; + } + keys = getarraykeys( array ); + ent = array[ keys[ 0 ] ]; + distsqr = distancesquared( ent.origin, org ); + i = 1; + while ( i < keys.size ) + { + if ( !isDefined( array[ keys[ i ] ] ) ) + { + i++; + continue; + } + else newdistsqr = distancesquared( array[ keys[ i ] ].origin, org ); + if ( [[ comparefunc ]]( newdistsqr, distsqr ) ) + { + i++; + continue; + } + else + { + distsqr = newdistsqr; + ent = array[ keys[ i ] ]; + } + i++; + } + return ent; +} + +closerfunc( dist1, dist2 ) +{ + return dist1 >= dist2; +} + +fartherfunc( dist1, dist2 ) +{ + return dist1 <= dist2; +} + +get_array_of_closest( org, array, excluders, max, maxdist ) +{ + if ( !isDefined( max ) ) + { + max = array.size; + } + if ( !isDefined( excluders ) ) + { + excluders = []; + } + maxdists2rd = undefined; + if ( isDefined( maxdist ) ) + { + maxdists2rd = maxdist * maxdist; + } + dist = []; + index = []; + i = 0; + while ( i < array.size ) + { + if ( !isDefined( array[ i ] ) ) + { + i++; + continue; + } + else excluded = 0; + p = 0; + while ( p < excluders.size ) + { + if ( array[ i ] != excluders[ p ] ) + { + p++; + continue; + } + else + { + excluded = 1; + break; + } + p++; + } + if ( excluded ) + { + i++; + continue; + } + else length = distancesquared( org, array[ i ].origin ); + if ( isDefined( maxdists2rd ) && maxdists2rd < length ) + { + i++; + continue; + } + else + { + dist[ dist.size ] = length; + index[ index.size ] = i; + } + i++; + } + for ( ;; ) + { + change = 0; + i = 0; + while ( i < ( dist.size - 1 ) ) + { + if ( dist[ i ] <= dist[ i + 1 ] ) + { + i++; + continue; + } + else + { + change = 1; + temp = dist[ i ]; + dist[ i ] = dist[ i + 1 ]; + dist[ i + 1 ] = temp; + temp = index[ i ]; + index[ i ] = index[ i + 1 ]; + index[ i + 1 ] = temp; + } + i++; + } + if ( !change ) + { + break; + } + else + { + } + } + newarray = []; + if ( max > dist.size ) + { + max = dist.size; + } + i = 0; + while ( i < max ) + { + newarray[ i ] = array[ index[ i ] ]; + i++; + } + return newarray; +} + +set_dvar_if_unset( dvar, value, reset ) +{ + if ( !isDefined( reset ) ) + { + reset = 0; + } + if ( reset || getDvar( dvar ) == "" ) + { + setdvar( dvar, value ); + return value; + } + return getDvar( dvar ); +} + +set_dvar_float_if_unset( dvar, value, reset ) +{ + if ( !isDefined( reset ) ) + { + reset = 0; + } + if ( reset || getDvar( dvar ) == "" ) + { + setdvar( dvar, value ); + } + return getDvarFloat( dvar ); +} + +set_dvar_int_if_unset( dvar, value, reset ) +{ + if ( !isDefined( reset ) ) + { + reset = 0; + } + if ( reset || getDvar( dvar ) == "" ) + { + setdvar( dvar, value ); + return int( value ); + } + return getDvarInt( dvar ); +} + +drawcylinder( pos, rad, height, duration, stop_notify ) +{ +/# + if ( !isDefined( duration ) ) + { + duration = 0; + } + level thread drawcylinder_think( pos, rad, height, duration, stop_notify ); +#/ +} + +drawcylinder_think( pos, rad, height, seconds, stop_notify ) +{ +/# + if ( isDefined( stop_notify ) ) + { + level endon( stop_notify ); + } + stop_time = getTime() + ( seconds * 1000 ); + currad = rad; + curheight = height; + for ( ;; ) + { + if ( seconds > 0 && stop_time <= getTime() ) + { + return; + } + r = 0; + while ( r < 20 ) + { + theta = ( r / 20 ) * 360; + theta2 = ( ( r + 1 ) / 20 ) * 360; + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, 0 ), pos + ( cos( theta2 ) * currad, sin( theta2 ) * currad, 0 ) ); + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, curheight ), pos + ( cos( theta2 ) * currad, sin( theta2 ) * currad, curheight ) ); + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, 0 ), pos + ( cos( theta ) * currad, sin( theta ) * currad, curheight ) ); + r++; + } + wait 0,05; +#/ + } +} + +is_bot() +{ + if ( isplayer( self ) && isDefined( self.pers[ "isBot" ] ) ) + { + return self.pers[ "isBot" ] != 0; + } +} + +add_trigger_to_ent( ent ) +{ + if ( !isDefined( ent._triggers ) ) + { + ent._triggers = []; + } + ent._triggers[ self getentitynumber() ] = 1; +} + +remove_trigger_from_ent( ent ) +{ + if ( !isDefined( ent ) ) + { + return; + } + if ( !isDefined( ent._triggers ) ) + { + return; + } + if ( !isDefined( ent._triggers[ self getentitynumber() ] ) ) + { + return; + } + ent._triggers[ self getentitynumber() ] = 0; +} + +ent_already_in_trigger( trig ) +{ + if ( !isDefined( self._triggers ) ) + { + return 0; + } + if ( !isDefined( self._triggers[ trig getentitynumber() ] ) ) + { + return 0; + } + if ( !self._triggers[ trig getentitynumber() ] ) + { + return 0; + } + return 1; +} + +trigger_thread_death_monitor( ent, ender ) +{ + ent waittill( "death" ); + self endon( ender ); + self remove_trigger_from_ent( ent ); +} + +trigger_thread( ent, on_enter_payload, on_exit_payload ) +{ + ent endon( "entityshutdown" ); + ent endon( "death" ); + if ( ent ent_already_in_trigger( self ) ) + { + return; + } + self add_trigger_to_ent( ent ); + ender = "end_trig_death_monitor" + self getentitynumber() + " " + ent getentitynumber(); + self thread trigger_thread_death_monitor( ent, ender ); + endon_condition = "leave_trigger_" + self getentitynumber(); + if ( isDefined( on_enter_payload ) ) + { + self thread [[ on_enter_payload ]]( ent, endon_condition ); + } + while ( isDefined( ent ) && ent istouching( self ) ) + { + wait 0,01; + } + ent notify( endon_condition ); + if ( isDefined( ent ) && isDefined( on_exit_payload ) ) + { + self thread [[ on_exit_payload ]]( ent ); + } + if ( isDefined( ent ) ) + { + self remove_trigger_from_ent( ent ); + } + self notify( ender ); +} + +isoneround() +{ + if ( level.roundlimit == 1 ) + { + return 1; + } + return 0; +} + +isfirstround() +{ + if ( level.roundlimit > 1 && game[ "roundsplayed" ] == 0 ) + { + return 1; + } + return 0; +} + +islastround() +{ + if ( level.roundlimit > 1 && game[ "roundsplayed" ] >= ( level.roundlimit - 1 ) ) + { + return 1; + } + return 0; +} + +waslastround() +{ + if ( level.forcedend ) + { + return 1; + } + if ( isDefined( level.shouldplayovertimeround ) ) + { + if ( [[ level.shouldplayovertimeround ]]() ) + { + level.nextroundisovertime = 1; + return 0; + } + else + { + if ( isDefined( game[ "overtime_round" ] ) ) + { + return 1; + } + } + } + if ( !hitroundlimit() || hitscorelimit() && hitroundwinlimit() ) + { + return 1; + } + return 0; +} + +hitroundlimit() +{ + if ( level.roundlimit <= 0 ) + { + return 0; + } + return getroundsplayed() >= level.roundlimit; +} + +anyteamhitroundwinlimit() +{ + _a2296 = level.teams; + _k2296 = getFirstArrayKey( _a2296 ); + while ( isDefined( _k2296 ) ) + { + team = _a2296[ _k2296 ]; + if ( getroundswon( team ) >= level.roundwinlimit ) + { + return 1; + } + _k2296 = getNextArrayKey( _a2296, _k2296 ); + } + return 0; +} + +anyteamhitroundlimitwithdraws() +{ + tie_wins = game[ "roundswon" ][ "tie" ]; + _a2309 = level.teams; + _k2309 = getFirstArrayKey( _a2309 ); + while ( isDefined( _k2309 ) ) + { + team = _a2309[ _k2309 ]; + if ( ( getroundswon( team ) + tie_wins ) >= level.roundwinlimit ) + { + return 1; + } + _k2309 = getNextArrayKey( _a2309, _k2309 ); + } + return 0; +} + +getroundwinlimitwinningteam() +{ + max_wins = 0; + winning_team = undefined; + _a2323 = level.teams; + _k2323 = getFirstArrayKey( _a2323 ); + while ( isDefined( _k2323 ) ) + { + team = _a2323[ _k2323 ]; + wins = getroundswon( team ); + if ( !isDefined( winning_team ) ) + { + max_wins = wins; + winning_team = team; + } + else if ( wins == max_wins ) + { + winning_team = "tie"; + } + else + { + if ( wins > max_wins ) + { + max_wins = wins; + winning_team = team; + } + } + _k2323 = getNextArrayKey( _a2323, _k2323 ); + } + return winning_team; +} + +hitroundwinlimit() +{ + if ( !isDefined( level.roundwinlimit ) || level.roundwinlimit <= 0 ) + { + return 0; + } + if ( anyteamhitroundwinlimit() ) + { + return 1; + } + if ( anyteamhitroundlimitwithdraws() ) + { + if ( getroundwinlimitwinningteam() != "tie" ) + { + return 1; + } + } + return 0; +} + +anyteamhitscorelimit() +{ + _a2379 = level.teams; + _k2379 = getFirstArrayKey( _a2379 ); + while ( isDefined( _k2379 ) ) + { + team = _a2379[ _k2379 ]; + if ( game[ "teamScores" ][ team ] >= level.scorelimit ) + { + return 1; + } + _k2379 = getNextArrayKey( _a2379, _k2379 ); + } + return 0; +} + +hitscorelimit() +{ + if ( isscoreroundbased() ) + { + return 0; + } + if ( level.scorelimit <= 0 ) + { + return 0; + } + if ( level.teambased ) + { + if ( anyteamhitscorelimit() ) + { + return 1; + } + } + else + { + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pointstowin ) && player.pointstowin >= level.scorelimit ) + { + return 1; + } + i++; + } + } + return 0; +} + +getroundswon( team ) +{ + return game[ "roundswon" ][ team ]; +} + +getotherteamsroundswon( skip_team ) +{ + roundswon = 0; + _a2423 = level.teams; + _k2423 = getFirstArrayKey( _a2423 ); + while ( isDefined( _k2423 ) ) + { + team = _a2423[ _k2423 ]; + if ( team == skip_team ) + { + } + else + { + roundswon += game[ "roundswon" ][ team ]; + } + _k2423 = getNextArrayKey( _a2423, _k2423 ); + } + return roundswon; +} + +getroundsplayed() +{ + return game[ "roundsplayed" ]; +} + +isscoreroundbased() +{ + return level.scoreroundbased; +} + +isroundbased() +{ + if ( level.roundlimit != 1 && level.roundwinlimit != 1 ) + { + return 1; + } + return 0; +} + +waittillnotmoving() +{ + if ( self ishacked() ) + { + wait 0,05; + return; + } + if ( self.classname == "grenade" ) + { + self waittill( "stationary" ); + } + else prevorigin = self.origin; + while ( 1 ) + { + wait 0,15; + if ( self.origin == prevorigin ) + { + return; + } + else + { + prevorigin = self.origin; + } + } +} + +mayapplyscreeneffect() +{ +/# + assert( isDefined( self ) ); +#/ +/# + assert( isplayer( self ) ); +#/ + return !isDefined( self.viewlockedentity ); +} + +getdvarfloatdefault( dvarname, defaultvalue ) +{ + value = getDvar( dvarname ); + if ( value != "" ) + { + return float( value ); + } + return defaultvalue; +} + +getdvarintdefault( dvarname, defaultvalue ) +{ + value = getDvar( dvarname ); + if ( value != "" ) + { + return int( value ); + } + return defaultvalue; +} + +closestpointonline( point, linestart, lineend ) +{ + linemagsqrd = lengthsquared( lineend - linestart ); + t = ( ( ( ( point[ 0 ] - linestart[ 0 ] ) * ( lineend[ 0 ] - linestart[ 0 ] ) ) + ( ( point[ 1 ] - linestart[ 1 ] ) * ( lineend[ 1 ] - linestart[ 1 ] ) ) ) + ( ( point[ 2 ] - linestart[ 2 ] ) * ( lineend[ 2 ] - linestart[ 2 ] ) ) ) / linemagsqrd; + if ( t < 0 ) + { + return linestart; + } + else + { + if ( t > 1 ) + { + return lineend; + } + } + start_x = linestart[ 0 ] + ( t * ( lineend[ 0 ] - linestart[ 0 ] ) ); + start_y = linestart[ 1 ] + ( t * ( lineend[ 1 ] - linestart[ 1 ] ) ); + start_z = linestart[ 2 ] + ( t * ( lineend[ 2 ] - linestart[ 2 ] ) ); + return ( start_x, start_y, start_z ); +} + +isstrstart( string1, substr ) +{ + return getsubstr( string1, 0, substr.size ) == substr; +} + +spread_array_thread( entities, process, var1, var2, var3 ) +{ + keys = getarraykeys( entities ); + if ( isDefined( var3 ) ) + { + i = 0; + while ( i < keys.size ) + { + entities[ keys[ i ] ] thread [[ process ]]( var1, var2, var3 ); + wait 0,1; + i++; + } + return; + } + if ( isDefined( var2 ) ) + { + i = 0; + while ( i < keys.size ) + { + entities[ keys[ i ] ] thread [[ process ]]( var1, var2 ); + wait 0,1; + i++; + } + return; + } + if ( isDefined( var1 ) ) + { + i = 0; + while ( i < keys.size ) + { + entities[ keys[ i ] ] thread [[ process ]]( var1 ); + wait 0,1; + i++; + } + return; + } + i = 0; + while ( i < keys.size ) + { + entities[ keys[ i ] ] thread [[ process ]](); + wait 0,1; + i++; + } +} + +freeze_player_controls( boolean ) +{ +/# + assert( isDefined( boolean ), "'freeze_player_controls()' has not been passed an argument properly." ); +#/ + if ( boolean && isDefined( self ) ) + { + self freezecontrols( boolean ); + } + else + { + if ( !boolean && isDefined( self ) && !level.gameended ) + { + self freezecontrols( boolean ); + } + } +} + +gethostplayer() +{ + players = get_players(); + index = 0; + while ( index < players.size ) + { + if ( players[ index ] ishost() ) + { + return players[ index ]; + } + index++; + } +} + +gethostplayerforbots() +{ + players = get_players(); + index = 0; + while ( index < players.size ) + { + if ( players[ index ] ishostforbots() ) + { + return players[ index ]; + } + index++; + } +} + +ispregame() +{ + if ( isDefined( level.pregame ) ) + { + return level.pregame; + } +} + +iskillstreaksenabled() +{ + if ( isDefined( level.killstreaksenabled ) ) + { + return level.killstreaksenabled; + } +} + +isrankenabled() +{ + if ( isDefined( level.rankenabled ) ) + { + return level.rankenabled; + } +} + +playsmokesound( position, duration, startsound, stopsound, loopsound ) +{ + smokesound = spawn( "script_origin", ( 0, 0, 1 ) ); + smokesound.origin = position; + smokesound playsound( startsound ); + smokesound playloopsound( loopsound ); + if ( duration > 0,5 ) + { + wait ( duration - 0,5 ); + } + thread playsoundinspace( stopsound, position ); + smokesound stoploopsound( 0,5 ); + wait 0,5; + smokesound delete(); +} + +playsoundinspace( alias, origin, master ) +{ + org = spawn( "script_origin", ( 0, 0, 1 ) ); + if ( !isDefined( origin ) ) + { + origin = self.origin; + } + org.origin = origin; + if ( isDefined( master ) && master ) + { + org playsoundasmaster( alias ); + } + else + { + org playsound( alias ); + } + wait 10; + org delete(); +} + +get2dyaw( start, end ) +{ + yaw = 0; + vector = ( end[ 0 ] - start[ 0 ], end[ 1 ] - start[ 1 ], 0 ); + return vectoangles( vector ); +} + +vectoangles( vector ) +{ + yaw = 0; + vecx = vector[ 0 ]; + vecy = vector[ 1 ]; + if ( vecx == 0 && vecy == 0 ) + { + return 0; + } + if ( vecy < 0,001 && vecy > -0,001 ) + { + vecy = 0,001; + } + yaw = atan( vecx / vecy ); + if ( vecy < 0 ) + { + yaw += 180; + } + return 90 - yaw; +} + +deleteaftertime( time ) +{ +/# + assert( isDefined( self ) ); +#/ +/# + assert( isDefined( time ) ); +#/ +/# + assert( time >= 0,05 ); +#/ + self thread deleteaftertimethread( time ); +} + +deleteaftertimethread( time ) +{ + self endon( "death" ); + wait time; + self delete(); +} + +setusingremote( remotename ) +{ + if ( isDefined( self.carryicon ) ) + { + self.carryicon.alpha = 0; + } +/# + assert( !self isusingremote() ); +#/ + self.usingremote = remotename; + self disableoffhandweapons(); + self notify( "using_remote" ); +} + +getremotename() +{ +/# + assert( self isusingremote() ); +#/ + return self.usingremote; +} + +isusingremote() +{ + return isDefined( self.usingremote ); +} + +getlastweapon() +{ + last_weapon = undefined; + if ( self hasweapon( self.lastnonkillstreakweapon ) ) + { + last_weapon = self.lastnonkillstreakweapon; + } + else + { + if ( self hasweapon( self.lastdroppableweapon ) ) + { + last_weapon = self.lastdroppableweapon; + } + } +/# + assert( isDefined( last_weapon ) ); +#/ + return last_weapon; +} + +freezecontrolswrapper( frozen ) +{ + if ( isDefined( level.hostmigrationtimer ) ) + { + self freeze_player_controls( 1 ); + return; + } + self freeze_player_controls( frozen ); +} + +setobjectivetext( team, text ) +{ + game[ "strings" ][ "objective_" + team ] = text; + precachestring( text ); +} + +setobjectivescoretext( team, text ) +{ + game[ "strings" ][ "objective_score_" + team ] = text; + precachestring( text ); +} + +setobjectivehinttext( team, text ) +{ + game[ "strings" ][ "objective_hint_" + team ] = text; + precachestring( text ); +} + +getobjectivetext( team ) +{ + return game[ "strings" ][ "objective_" + team ]; +} + +getobjectivescoretext( team ) +{ + return game[ "strings" ][ "objective_score_" + team ]; +} + +getobjectivehinttext( team ) +{ + return game[ "strings" ][ "objective_hint_" + team ]; +} + +registerroundswitch( minvalue, maxvalue ) +{ + level.roundswitch = clamp( getgametypesetting( "roundSwitch" ), minvalue, maxvalue ); + level.roundswitchmin = minvalue; + level.roundswitchmax = maxvalue; +} + +registerroundlimit( minvalue, maxvalue ) +{ + level.roundlimit = clamp( getgametypesetting( "roundLimit" ), minvalue, maxvalue ); + level.roundlimitmin = minvalue; + level.roundlimitmax = maxvalue; +} + +registerroundwinlimit( minvalue, maxvalue ) +{ + level.roundwinlimit = clamp( getgametypesetting( "roundWinLimit" ), minvalue, maxvalue ); + level.roundwinlimitmin = minvalue; + level.roundwinlimitmax = maxvalue; +} + +registerscorelimit( minvalue, maxvalue ) +{ + level.scorelimit = clamp( getgametypesetting( "scoreLimit" ), minvalue, maxvalue ); + level.scorelimitmin = minvalue; + level.scorelimitmax = maxvalue; + setdvar( "ui_scorelimit", level.scorelimit ); +} + +registertimelimit( minvalue, maxvalue ) +{ + level.timelimit = clamp( getgametypesetting( "timeLimit" ), minvalue, maxvalue ); + level.timelimitmin = minvalue; + level.timelimitmax = maxvalue; + setdvar( "ui_timelimit", level.timelimit ); +} + +registernumlives( minvalue, maxvalue ) +{ + level.numlives = clamp( getgametypesetting( "playerNumLives" ), minvalue, maxvalue ); + level.numlivesmin = minvalue; + level.numlivesmax = maxvalue; +} + +getplayerfromclientnum( clientnum ) +{ + if ( clientnum < 0 ) + { + return undefined; + } + i = 0; + while ( i < level.players.size ) + { + if ( level.players[ i ] getentitynumber() == clientnum ) + { + return level.players[ i ]; + } + i++; + } + return undefined; +} + +setclientfield( field_name, value ) +{ + if ( self == level ) + { + codesetworldclientfield( field_name, value ); + } + else + { + codesetclientfield( self, field_name, value ); + } +} + +setclientfieldtoplayer( field_name, value ) +{ + codesetplayerstateclientfield( self, field_name, value ); +} + +getclientfield( field_name ) +{ + if ( self == level ) + { + return codegetworldclientfield( field_name ); + } + else + { + return codegetclientfield( self, field_name ); + } +} + +getclientfieldtoplayer( field_name ) +{ + return codegetplayerstateclientfield( self, field_name ); +} + +isenemyplayer( player ) +{ +/# + assert( isDefined( player ) ); +#/ + if ( !isplayer( player ) ) + { + return 0; + } + if ( level.teambased ) + { + if ( player.team == self.team ) + { + return 0; + } + } + else + { + if ( player == self ) + { + return 0; + } + } + return 1; +} + +getweaponclass( weapon ) +{ +/# + assert( isDefined( weapon ) ); +#/ + if ( !isDefined( weapon ) ) + { + return undefined; + } + if ( !isDefined( level.weaponclassarray ) ) + { + level.weaponclassarray = []; + } + if ( isDefined( level.weaponclassarray[ weapon ] ) ) + { + return level.weaponclassarray[ weapon ]; + } + baseweaponindex = getbaseweaponitemindex( weapon ) + 1; + weaponclass = tablelookupcolumnforrow( "mp/statstable.csv", baseweaponindex, 2 ); + level.weaponclassarray[ weapon ] = weaponclass; + return weaponclass; +} + +ispressbuild() +{ + buildtype = getDvar( #"19B966D7" ); + if ( isDefined( buildtype ) && buildtype == "press" ) + { + return 1; + } + return 0; +} + +isflashbanged() +{ + if ( isDefined( self.flashendtime ) ) + { + return getTime() < self.flashendtime; + } +} + +ishacked() +{ + if ( isDefined( self.hacked ) ) + { + return self.hacked; + } +} + +domaxdamage( origin, attacker, inflictor, headshot, mod ) +{ + if ( isDefined( self.damagedtodeath ) && self.damagedtodeath ) + { + return; + } + if ( isDefined( self.maxhealth ) ) + { + damage = self.maxhealth + 1; + } + else + { + damage = self.health + 1; + } + self.damagedtodeath = 1; + self dodamage( damage, origin, attacker, inflictor, headshot, mod ); +} diff --git a/zm_transit_dr_patch/maps/mp/_visionset_mgr.gsc b/zm_transit_dr_patch/maps/mp/_visionset_mgr.gsc new file mode 100644 index 0000000..cbf89e8 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/_visionset_mgr.gsc @@ -0,0 +1,507 @@ +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( level.createfx_enabled ) + { + return; + } + level.vsmgr_initializing = 1; + level.vsmgr_default_info_name = "none"; + level.vsmgr = []; + level thread register_type( "visionset" ); + level thread register_type( "overlay" ); + onfinalizeinitialization_callback( ::finalize_clientfields ); + level thread monitor(); + level thread onplayerconnect(); +} + +vsmgr_register_info( type, name, version, priority, lerp_step_count, activate_per_player, lerp_thread, ref_count_lerp_thread ) +{ + if ( level.createfx_enabled ) + { + return; + } +/# + assert( level.vsmgr_initializing, "All info registration in the visionset_mgr system must occur during the first frame while the system is initializing" ); +#/ + lower_name = tolower( name ); + validate_info( type, lower_name, priority ); + add_sorted_name_key( type, lower_name ); + add_sorted_priority_key( type, lower_name, priority ); + level.vsmgr[ type ].info[ lower_name ] = spawnstruct(); + level.vsmgr[ type ].info[ lower_name ] add_info( type, lower_name, version, priority, lerp_step_count, activate_per_player, lerp_thread, ref_count_lerp_thread ); + if ( level.vsmgr[ type ].highest_version < version ) + { + level.vsmgr[ type ].highest_version = version; + } +} + +vsmgr_activate( type, name, player, opt_param_1, opt_param_2 ) +{ + if ( level.vsmgr[ type ].info[ name ].state.activate_per_player ) + { + activate_per_player( type, name, player, opt_param_1, opt_param_2 ); + return; + } + state = level.vsmgr[ type ].info[ name ].state; + if ( state.ref_count_lerp_thread ) + { + state.ref_count++; + if ( state.ref_count >= 1 ) + { + return; + } + } + if ( isDefined( state.lerp_thread ) ) + { + state thread lerp_thread_wrapper( state.lerp_thread, opt_param_1, opt_param_2 ); + } + else + { + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + state vsmgr_set_state_active( players[ player_index ], 1 ); + player_index++; + } + } +} + +vsmgr_deactivate( type, name, player ) +{ + if ( level.vsmgr[ type ].info[ name ].state.activate_per_player ) + { + deactivate_per_player( type, name, player ); + return; + } + state = level.vsmgr[ type ].info[ name ].state; + if ( state.ref_count_lerp_thread ) + { + state.ref_count--; + + if ( state.ref_count >= 0 ) + { + return; + } + } + state notify( "deactivate" ); + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + state vsmgr_set_state_inactive( players[ player_index ] ); + player_index++; + } +} + +vsmgr_set_state_active( player, lerp ) +{ + player_entnum = player getentitynumber(); + self.players[ player_entnum ].active = 1; + self.players[ player_entnum ].lerp = lerp; +} + +vsmgr_set_state_inactive( player ) +{ + player_entnum = player getentitynumber(); + self.players[ player_entnum ].active = 0; + self.players[ player_entnum ].lerp = 0; +} + +vsmgr_timeout_lerp_thread( timeout, opt_param_2 ) +{ + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + self vsmgr_set_state_active( players[ player_index ], 1 ); + player_index++; + } + wait timeout; + vsmgr_deactivate( self.type, self.name ); +} + +vsmgr_timeout_lerp_thread_per_player( player, timeout, opt_param_2 ) +{ + self vsmgr_set_state_active( player, 1 ); + wait timeout; + deactivate_per_player( self.type, self.name, player ); +} + +vsmgr_duration_lerp_thread( duration, max_duration ) +{ + start_time = getTime(); + end_time = start_time + int( duration * 1000 ); + if ( isDefined( max_duration ) ) + { + start_time = end_time - int( max_duration * 1000 ); + } + while ( 1 ) + { + lerp = calc_remaining_duration_lerp( start_time, end_time ); + if ( lerp < 0 ) + { + break; + } + else + { + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + self vsmgr_set_state_active( players[ player_index ], lerp ); + player_index++; + } + wait 0,05; + } + } + vsmgr_deactivate( self.type, self.name ); +} + +vsmgr_duration_lerp_thread_per_player( player, duration, max_duration ) +{ + start_time = getTime(); + end_time = start_time + int( duration * 1000 ); + if ( isDefined( max_duration ) ) + { + start_time = end_time - int( max_duration * 1000 ); + } + while ( 1 ) + { + lerp = calc_remaining_duration_lerp( start_time, end_time ); + if ( lerp < 0 ) + { + break; + } + else + { + self vsmgr_set_state_active( player, lerp ); + wait 0,05; + } + } + deactivate_per_player( self.type, self.name, player ); +} + +register_type( type ) +{ + level.vsmgr[ type ] = spawnstruct(); + level.vsmgr[ type ].type = type; + level.vsmgr[ type ].in_use = 0; + level.vsmgr[ type ].highest_version = 0; + level.vsmgr[ type ].cf_slot_name = type + "_slot"; + level.vsmgr[ type ].cf_lerp_name = type + "_lerp"; + level.vsmgr[ type ].info = []; + level.vsmgr[ type ].sorted_name_keys = []; + level.vsmgr[ type ].sorted_prio_keys = []; + vsmgr_register_info( type, level.vsmgr_default_info_name, 1, 0, 1, 0, undefined ); +} + +finalize_clientfields() +{ + typekeys = getarraykeys( level.vsmgr ); + type_index = 0; + while ( type_index < typekeys.size ) + { + level.vsmgr[ typekeys[ type_index ] ] thread finalize_type_clientfields(); + type_index++; + } + level.vsmgr_initializing = 0; +} + +finalize_type_clientfields() +{ + if ( self.info.size < 1 ) + { + return; + } + self.in_use = 1; + self.cf_slot_bit_count = getminbitcountfornum( self.info.size - 1 ); + self.cf_lerp_bit_count = self.info[ self.sorted_name_keys[ 0 ] ].lerp_bit_count; + i = 0; + while ( i < self.sorted_name_keys.size ) + { + self.info[ self.sorted_name_keys[ i ] ].slot_index = i; + if ( self.info[ self.sorted_name_keys[ i ] ].lerp_bit_count > self.cf_lerp_bit_count ) + { + self.cf_lerp_bit_count = self.info[ self.sorted_name_keys[ i ] ].lerp_bit_count; + } + i++; + } + registerclientfield( "toplayer", self.cf_slot_name, self.highest_version, self.cf_slot_bit_count, "int" ); + if ( self.cf_lerp_bit_count >= 1 ) + { + registerclientfield( "toplayer", self.cf_lerp_name, self.highest_version, self.cf_lerp_bit_count, "float" ); + } +} + +validate_info( type, name, priority ) +{ + keys = getarraykeys( level.vsmgr ); + i = 0; + while ( i < keys.size ) + { + if ( type == keys[ i ] ) + { + break; + } + else + { + i++; + } + } +/# + assert( i < keys.size, "In visionset_mgr, type '" + type + "'is unknown" ); +#/ + keys = getarraykeys( level.vsmgr[ type ].info ); + i = 0; + while ( i < keys.size ) + { +/# + assert( level.vsmgr[ type ].info[ keys[ i ] ].name != name, "In visionset_mgr of type '" + type + "': name '" + name + "' has previously been registered" ); +#/ +/# + assert( level.vsmgr[ type ].info[ keys[ i ] ].priority != priority, "In visionset_mgr of type '" + type + "': priority '" + priority + "' requested for name '" + name + "' has previously been registered under name '" + level.vsmgr[ type ].info[ keys[ i ] ].name + "'" ); +#/ + i++; + } +} + +add_sorted_name_key( type, name ) +{ + i = 0; + while ( i < level.vsmgr[ type ].sorted_name_keys.size ) + { + if ( name < level.vsmgr[ type ].sorted_name_keys[ i ] ) + { + break; + } + else + { + i++; + } + } + arrayinsert( level.vsmgr[ type ].sorted_name_keys, name, i ); +} + +add_sorted_priority_key( type, name, priority ) +{ + i = 0; + while ( i < level.vsmgr[ type ].sorted_prio_keys.size ) + { + if ( priority > level.vsmgr[ type ].info[ level.vsmgr[ type ].sorted_prio_keys[ i ] ].priority ) + { + break; + } + else + { + i++; + } + } + arrayinsert( level.vsmgr[ type ].sorted_prio_keys, name, i ); +} + +add_info( type, name, version, priority, lerp_step_count, activate_per_player, lerp_thread, ref_count_lerp_thread ) +{ + self.type = type; + self.name = name; + self.version = version; + self.priority = priority; + self.lerp_step_count = lerp_step_count; + self.lerp_bit_count = getminbitcountfornum( lerp_step_count ); + if ( !isDefined( ref_count_lerp_thread ) ) + { + ref_count_lerp_thread = 0; + } + self.state = spawnstruct(); + self.state.type = type; + self.state.name = name; + self.state.activate_per_player = activate_per_player; + self.state.lerp_thread = lerp_thread; + self.state.ref_count_lerp_thread = ref_count_lerp_thread; + self.state.players = []; + if ( ref_count_lerp_thread && !activate_per_player ) + { + self.state.ref_count = 0; + } +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connected", player ); + player thread on_player_connect(); + } +} + +on_player_connect() +{ + self._player_entnum = self getentitynumber(); + typekeys = getarraykeys( level.vsmgr ); + type_index = 0; + while ( type_index < typekeys.size ) + { + type = typekeys[ type_index ]; + if ( !level.vsmgr[ type ].in_use ) + { + type_index++; + continue; + } + else + { + name_index = 0; + while ( name_index < level.vsmgr[ type ].sorted_name_keys.size ) + { + name_key = level.vsmgr[ type ].sorted_name_keys[ name_index ]; + level.vsmgr[ type ].info[ name_key ].state.players[ self._player_entnum ] = spawnstruct(); + level.vsmgr[ type ].info[ name_key ].state.players[ self._player_entnum ].active = 0; + level.vsmgr[ type ].info[ name_key ].state.players[ self._player_entnum ].lerp = 0; + if ( level.vsmgr[ type ].info[ name_key ].state.ref_count_lerp_thread && level.vsmgr[ type ].info[ name_key ].state.activate_per_player ) + { + level.vsmgr[ type ].info[ name_key ].state.players[ self._player_entnum ].ref_count = 0; + } + name_index++; + } + level.vsmgr[ type ].info[ level.vsmgr_default_info_name ].state vsmgr_set_state_active( self, 1 ); + } + type_index++; + } +} + +monitor() +{ + while ( level.vsmgr_initializing ) + { + wait 0,05; + } + typekeys = getarraykeys( level.vsmgr ); + while ( 1 ) + { + wait 0,05; + waittillframeend; + players = get_players(); + type_index = 0; + while ( type_index < typekeys.size ) + { + type = typekeys[ type_index ]; + if ( !level.vsmgr[ type ].in_use ) + { + type_index++; + continue; + } + else + { + player_index = 0; + while ( player_index < players.size ) + { +/# + if ( is_true( players[ player_index ].pers[ "isBot" ] ) ) + { + player_index++; + continue; +#/ + } + else + { + update_clientfields( players[ player_index ], level.vsmgr[ type ] ); + } + player_index++; + } + } + type_index++; + } + } +} + +get_first_active_name( type_struct ) +{ + size = type_struct.sorted_prio_keys.size; + prio_index = 0; + while ( prio_index < size ) + { + prio_key = type_struct.sorted_prio_keys[ prio_index ]; + if ( type_struct.info[ prio_key ].state.players[ self._player_entnum ].active ) + { + return prio_key; + } + prio_index++; + } + return level.vsmgr_default_info_name; +} + +update_clientfields( player, type_struct ) +{ + name = player get_first_active_name( type_struct ); + player setclientfieldtoplayer( type_struct.cf_slot_name, type_struct.info[ name ].slot_index ); + if ( type_struct.cf_lerp_bit_count >= 1 ) + { + player setclientfieldtoplayer( type_struct.cf_lerp_name, type_struct.info[ name ].state.players[ player._player_entnum ].lerp ); + } +} + +lerp_thread_wrapper( func, opt_param_1, opt_param_2 ) +{ + self notify( "deactivate" ); + self endon( "deactivate" ); + self [[ func ]]( opt_param_1, opt_param_2 ); +} + +lerp_thread_per_player_wrapper( func, player, opt_param_1, opt_param_2 ) +{ + player_entnum = player getentitynumber(); + self notify( "deactivate" ); + self endon( "deactivate" ); + self.players[ player_entnum ] notify( "deactivate" ); + self.players[ player_entnum ] endon( "deactivate" ); + player endon( "disconnect" ); + self [[ func ]]( player, opt_param_1, opt_param_2 ); +} + +activate_per_player( type, name, player, opt_param_1, opt_param_2 ) +{ + player_entnum = player getentitynumber(); + state = level.vsmgr[ type ].info[ name ].state; + if ( state.ref_count_lerp_thread ) + { + state.players[ player_entnum ].ref_count++; + if ( state.players[ player_entnum ].ref_count >= 1 ) + { + return; + } + } + if ( isDefined( state.lerp_thread ) ) + { + state thread lerp_thread_per_player_wrapper( state.lerp_thread, player, opt_param_1, opt_param_2 ); + } + else + { + state vsmgr_set_state_active( player, 1 ); + } +} + +deactivate_per_player( type, name, player ) +{ + player_entnum = player getentitynumber(); + state = level.vsmgr[ type ].info[ name ].state; + if ( state.ref_count_lerp_thread ) + { + state.players[ player_entnum ].ref_count--; + + if ( state.players[ player_entnum ].ref_count >= 0 ) + { + return; + } + } + state vsmgr_set_state_inactive( player ); + state notify( "deactivate" ); +} + +calc_remaining_duration_lerp( start_time, end_time ) +{ + now = getTime(); + frac = float( end_time - now ) / float( end_time - start_time ); + return clamp( frac, 0, 1 ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_climb_down_pothole.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_climb_down_pothole.gsc new file mode 100644 index 0000000..040e341 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_climb_down_pothole.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "climb_down_pothole" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_climb_up_pothole.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_climb_up_pothole.gsc new file mode 100644 index 0000000..ac83e22 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_climb_up_pothole.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "climb_up_pothole" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc new file mode 100644 index 0000000..0e8b6df --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_across_120" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc new file mode 100644 index 0000000..8bd9a0e --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_127" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc new file mode 100644 index 0000000..203cc96 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_190" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc new file mode 100644 index 0000000..ff54012 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_222" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc new file mode 100644 index 0000000..8269b0e --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_48" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc new file mode 100644 index 0000000..e32a251 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 96, 7 ); + } + else + { + dosimpletraverse( "jump_down_96" ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc new file mode 100644 index 0000000..06cec96 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_127" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc new file mode 100644 index 0000000..793683d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_222" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_mantle_over_40.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_mantle_over_40.gsc new file mode 100644 index 0000000..367e41b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_mantle_over_40.gsc @@ -0,0 +1,41 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + traversestate = "zm_traverse_barrier"; + traversealias = "barrier_walk"; + if ( self.has_legs ) + { + switch( self.zombie_move_speed ) + { + case "walk": + case "walk_slide": + traversealias = "barrier_walk"; + break; + case "run": + case "run_slide": + traversealias = "barrier_run"; + break; + case "sprint": + case "sprint_slide": + case "super_sprint": + traversealias = "barrier_sprint"; + break; + default: + if ( isDefined( level.zm_mantle_over_40_move_speed_override ) ) + { + traversealias = self [[ level.zm_mantle_over_40_move_speed_override ]](); + } + else /# + assertmsg( "Zombie move speed of '" + self.zombie_move_speed + "' is not supported for mantle_over_40." ); +#/ + } + } + else + { + traversestate = "zm_traverse_barrier_crawl"; + traversealias = "barrier_crawl"; + } + self dotraverse( traversestate, traversealias ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc new file mode 100644 index 0000000..e97cc4a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self dosimpletraverse( "mantle_over_40_hurdle" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_car.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_car.gsc new file mode 100644 index 0000000..218c2f0 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_car.gsc @@ -0,0 +1,29 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + speed = ""; + if ( !isDefined( self.isdog ) || !self.isdog ) + { + switch( self.zombie_move_speed ) + { + case "walk": + case "walk_slide": + speed = ""; + break; + case "run": + case "run_slide": + speed = "_run"; + break; + case "sprint": + case "sprint_slide": + case "super_sprint": + speed = "_sprint"; + break; + default: + } + } + dosimpletraverse( "traverse_car" + speed, 1 ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_car_reverse.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_car_reverse.gsc new file mode 100644 index 0000000..9a6ea5d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_car_reverse.gsc @@ -0,0 +1,21 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + speed = ""; + if ( !self.has_legs ) + { + switch( self.zombie_move_speed ) + { + case "sprint": + case "sprint_slide": + case "super_sprint": + speed = "_sprint"; + break; + default: + } + } + dosimpletraverse( "traverse_car_reverse" + speed, 1 ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter.gsc new file mode 100644 index 0000000..ea9b6f4 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_counter", 1 ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter_reverse.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter_reverse.gsc new file mode 100644 index 0000000..4f62d03 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter_reverse.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_counter_reverse", 1 ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof.gsc new file mode 100644 index 0000000..641946a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_roof" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_hatch_up.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_hatch_up.gsc new file mode 100644 index 0000000..0e256e6 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_hatch_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_roof_hatch_up" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_up.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_up.gsc new file mode 100644 index 0000000..0fb5a5a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_roof_up" ); +} diff --git a/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc new file mode 100644 index 0000000..ace7bd7 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_garage_door", 1 ); +} diff --git a/zm_transit_dr_patch/maps/mp/createart/zm_transit_art.gsc b/zm_transit_dr_patch/maps/mp/createart/zm_transit_art.gsc new file mode 100644 index 0000000..424f365 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/createart/zm_transit_art.gsc @@ -0,0 +1,44 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "639.219" ); + setdvar( "scr_fog_exp_halfheight", "18691.3" ); + setdvar( "scr_fog_nearplane", "138.679" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "1145.21" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 138,679; + half_dist = 1011,624; + half_height = 10834,5; + base_height = 1145,21; + fog_r = 0,501961; + fog_g = 0,501961; + fog_b = 0,501961; + fog_scale = 7,5834; + sun_col_r = 0,501961; + sun_col_g = 0,501961; + sun_col_b = 0,501961; + sun_dir_x = -0,99; + sun_dir_y = 0,06; + sun_dir_z = -0,11; + sun_start_ang = 0; + sun_stop_ang = 0; + time = 0; + max_fog_opacity = 0,8546; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); + visionsetnaked( "zm_transit", 0 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1,4 ); + setdvar( "r_lightGridContrast", 0,2 ); +} diff --git a/zm_transit_dr_patch/maps/mp/createfx/zm_transit_fx.gsc b/zm_transit_dr_patch/maps/mp/createfx/zm_transit_fx.gsc new file mode 100644 index 0000000..898866f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/createfx/zm_transit_fx.gsc @@ -0,0 +1,3930 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -5964,8, 5958,68, -56,5457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -7115,4, 6131,36, -52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -8140,71, 6172, -40,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -5614,79, -6468,82, -39,2142 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 264 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -4165,66, -6434,5, -21,0351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -6463,47, 4442,16, -54,2825 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -8085,35, 5126,36, -55,5562 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5441,89, 2910,1, 86,6898 ); + ent.v[ "angles" ] = ( 0, 181, 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5012,74, 4,19914, 92,9997 ); + ent.v[ "angles" ] = ( 360, 237, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( -5294,92, 1435,37, 193 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -8375,91, -6880,29, 169,426 ); + ent.v[ "angles" ] = ( 0, 62, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -693,86, -434,302, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1307,61, -433,515, -61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 3301,23, -433,48, -61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1443,74, -1912,92, -49,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1496,75, 951,473, -61,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 2317,07, 2920,76, -61,1957 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 326 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 4034,7, 4213,02, -121,687 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 291 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 5863,49, 4856,8, -90,6416 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 6425,89, 6793,82, -244,747 ); + ent.v[ "angles" ] = ( 0, 165, 6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7658,88, 8594,01, -462,611 ); + ent.v[ "angles" ] = ( 0,7299, 115,044, 6,96203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9492,26, 8859,12, -575,761 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 10248, 7411,77, -572,63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9370,34, 6265,97, -566,254 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9363,72, 5259,97, -561,195 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8247,62, 3780,29, -204,463 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 9 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8454,29, 1816,51, -91,9754 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( -9435,63, 3725,57, 129,632 ); + ent.v[ "angles" ] = ( 0, 328, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -6295,03, -6855,52, -43,3133 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5503,32, -5950,27, -33,7949 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -4278,1, -6853,2, -47,9013 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -2226,38, -6476,4, -111,832 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -430,571, -4777,94, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1354,92, -4343,55, 8,28402 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 154 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 2374,83, -5587,02, 2,17561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 6376,43, -6175,54, -33,8548 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8345,75, -6327,09, 106,432 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 10086,9, -6470,41, 118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7864,23, -7747,09, -22,7953 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 236 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7372,48, -4745,95, -16,153 ); + ent.v[ "angles" ] = ( 5, 177, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 6344,74, -4691,46, -51,8628 ); + ent.v[ "angles" ] = ( 360, 177, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7338,11, -2595,86, -111,322 ); + ent.v[ "angles" ] = ( 359,907, 136,037, 4,87958 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8825, -1201,03, -194,996 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9725,72, -1742,09, -32,561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8174,97, -105,473, -61,5243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 297 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7784,83, 6029,76, -345,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( 4116,25, 5645,36, -1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 98 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( -5802,88, 5634,9, 84,3632 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -5148,4, 4832,7, 0,312576 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -5934,56, 4918,4, -62,8867 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -6027,78, 5040,17, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 242 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -6079,08, 5289,99, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -7600,2, 4227,16, -56,4433 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 46 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -8537,89, 4162,49, -12,8317 ); + ent.v[ "angles" ] = ( 360, 140, 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -8467,74, 4197,83, -25,7767 ); + ent.v[ "angles" ] = ( 0, 88, 5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -8667,97, 4150,55, 4,24724 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 63 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5642,84, 5224,15, -46,4991 ); + ent.v[ "angles" ] = ( 4, 190, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5655,12, 5116,59, -45,489 ); + ent.v[ "angles" ] = ( 3,28795, 202,949, 2,74547 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -8029,04, 3834,02, -0,54985 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -7892,28, 3799,24, -3,22023 ); + ent.v[ "angles" ] = ( 0, 353, -6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 10156,4, 7081,81, -569,368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -7670,71, 4400,04, -52,4712 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -7632,2, 4335,27, -53,4487 ); + ent.v[ "angles" ] = ( 8,99508, 3,31666, 2,0246 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6662,13, 4291,07, -64 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6154,93, 4677,49, -57,6558 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -7509,32, 4764,04, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6443,25, 5252,53, -46,875 ); + ent.v[ "angles" ] = ( 4,46701, 145,564, -11,1489 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -7010,67, 5058,05, -46,875 ); + ent.v[ "angles" ] = ( 0, 30, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6236,39, 5096,6, -64,875 ); + ent.v[ "angles" ] = ( 337, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6263,69, 5186,76, -110,875 ); + ent.v[ "angles" ] = ( 337, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6935,05, 3992,15, -44,575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6387,72, 5200,47, -45,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6228,73, 5271,98, -138,875 ); + ent.v[ "angles" ] = ( 0, 320, 26 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -7025,25, 5020,08, -47,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6990,59, 3917,48, -35,575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 28 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -6482,02, -6922,66, -20,2632 ); + ent.v[ "angles" ] = ( 5,58951, 0,151229, -1,77637 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_right_border" ); + ent.v[ "origin" ] = ( -3783,49, -6804,15, -57,0054 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( -5772,58, 4495,25, -45,7761 ); + ent.v[ "angles" ] = ( 4,55882, 136,126, 0,230205 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -6664,46, 4282,63, -63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -6419,69, 5968, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -6794,75, 5895,12, -63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -7130,02, 5875,24, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -7035,44, 6092,55, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -7019,59, 4360,48, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -7984,94, 4200,7, -40,8316 ); + ent.v[ "angles" ] = ( 359,649, 23,5878, -7,38978 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6164,4, 6207,33, -62 ); + ent.v[ "angles" ] = ( 0, 265, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6611,77, 6255,7, -64,056 ); + ent.v[ "angles" ] = ( 355,996, 257,157, 2,98491 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5905,66, 6053,11, -62,1083 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 243 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -7777,88, 5432,39, -67,6399 ); + ent.v[ "angles" ] = ( 20,9872, 250,768, 2,14186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -8977,1, 4620,45, -7,94255 ); + ent.v[ "angles" ] = ( 0, 328, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -9194,46, 4472,11, 27,7692 ); + ent.v[ "angles" ] = ( 358,071, 314,131, -11,7653 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -9968,48, 3966,82, 141,149 ); + ent.v[ "angles" ] = ( 360, 320, -2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -9330,22, 3636,74, 143,33 ); + ent.v[ "angles" ] = ( 1,2114, 128,06, 6,8825 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( -7058,84, 5241,95, 114,025 ); + ent.v[ "angles" ] = ( 304, 90, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -6702,67, 4030,74, -21,2888 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -7174,47, 4179,63, 52 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 1543,09, 1046,91, -49 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 262 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -7823,94, 4726,57, -55,4636 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 349 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6255,49, 5934,51, -55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -7111,76, 5851,47, -42 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6651,29, 3918,42, -41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -6584,17, 3681,87, -4,99999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -7886,28, 3889,4, 82,5849 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_depot_map_flicker" ); + ent.v[ "origin" ] = ( -6713,64, 5321,71, -9,66086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_depot_map_flicker" ); + ent.v[ "origin" ] = ( -6723,23, 5313,91, -8,18646 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -6365,04, 4578,04, 109,9 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 100; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5517,59, 5241,44, -11 ); + ent.v[ "angles" ] = ( 28, 182, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -6758,41, 4766,59, -92,7686 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -6689,7, 4768,01, -92,7002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5980,96, 6261,54, -36,3953 ); + ent.v[ "angles" ] = ( 0, 175, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5845,6, 6191,34, -35,9 ); + ent.v[ "angles" ] = ( 358,005, 179,002, -0,139585 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -7810,49, 5420,54, -74,2103 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 154 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -7819,04, 4111,9, -37,6549 ); + ent.v[ "angles" ] = ( 12,9361, 13,2884, -8,13303 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( -7674,39, 5156,76, 166,697 ); + ent.v[ "angles" ] = ( 63, 269, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_dbl_glow" ); + ent.v[ "origin" ] = ( -6801,44, 5517,77, 76,125 ); + ent.v[ "angles" ] = ( 330, 180, -90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( -6583,75, 5403,93, -32,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -300; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( -6968,95, 5308,98, -32,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -360; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -6197,68, 3183,08, 15 ); + ent.v[ "angles" ] = ( 271, 187, -84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -4725,65, 4685,73, 338,88 ); + ent.v[ "angles" ] = ( 271, 97, 72 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -4793,84, 4708,26, 346,094 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -7246,23, 4589,33, 78,025 ); + ent.v[ "angles" ] = ( 90, 2, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6951,36, 4934,45, 91,0322 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6751,02, 4934,64, 85,425 ); + ent.v[ "angles" ] = ( 31,9413, 329,602, 91 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6847,37, 5022,5, 91 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -3946,86, -7250,19, 107 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 102; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -4418,11, -626,9, 192,003 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 114; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( 8133,65, 4787,75, -194,479 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 108; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( 10160,1, -1748,62, -45,9508 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 106; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -45,2307, -5452,06, 92,5112 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 104; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6724,03, 4589,1, 81,9 ); + ent.v[ "angles" ] = ( 87, 182, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 287,427, -453,374, -62 ); + ent.v[ "angles" ] = ( 1,9859, 356,008, -0,59234 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_right_border" ); + ent.v[ "origin" ] = ( 10191, 8408,74, -566,847 ); + ent.v[ "angles" ] = ( 3,6542, 275,052, 1,6294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 6127,06, -6034,52, -70,4416 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 6552,9, -4715,76, -58,9995 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( 7804,15, -4507,67, 76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 7466,6, -4570,16, 32,1187 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6879,38, 4404,41, -55,7499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6865,54, 4337,65, -56,7845 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 24 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6803,27, 4294,82, -59,5574 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 1397,35, -485,659, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 2955,11, -447,745, -129,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 2318,31, -669,672, 132,6 ); + ent.v[ "angles" ] = ( 82, 90, 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 2393,33, -669,067, 133,725 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 2475,69, -4,57658, 197,512 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( 591,712, -1224,22, 247,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( -385,805, -200,682, 110,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( 1232,59, -1724,85, 188,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 172 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( 1782,94, -2158,76, 109,262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_street_lamp" ); + ent.v[ "origin" ] = ( 2424, -200, 104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( 3264,9, -684,243, 110 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -7174,46, 4182,06, 86,8813 ); + ent.v[ "angles" ] = ( 87, 182, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 1916,05, -1534,34, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 150 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 742,165, -500,51, -61,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1584,48, 61,4287, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1643,6, 239,56, -62,0999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1956,58, -684,969, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -7162,7, 4430,93, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -5961,17, 4659,68, -56,1655 ); + ent.v[ "angles" ] = ( 0, 177, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1984,16, -477,682, -61,0387 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1529,72, -1378,9, -60 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 2076,71, -1639,77, 6,14304 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( 2284,66, 80,3072, 73,0331 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 2353,79, -515,486, -60,3616 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 2426,85, -478,694, -58,3936 ); + ent.v[ "angles" ] = ( 9, 139, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 702,614, -1449,61, 161,693 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 1721,63, -90,9005, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1476,19, -161,862, -58,502 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1601,25, 381,192, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 2249,23, -374,64, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1313,09, -749,727, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 2990,83, -473,678, -129,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 129 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -6365,25, 4577,86, 109,8 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 101; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -3946,92, -7250,32, 107,1 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 103; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -4418,04, -626,987, 191,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 115; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( 6300,89, 5078,98, 67,4032 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 111; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( 8133,62, 4787,71, -194,497 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 109; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( 10160, -1748,7, -45,9436 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 107; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -45,1183, -5452,09, 92,4005 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 105; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_bridge_dest" ); + ent.v[ "origin" ] = ( -2790,06, -446,644, 162,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 754,692, -1143,89, 212,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 72 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 969,776, -997,644, 97,8737 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 1037,18, -956,931, 110,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 303 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 920,384, -991,542, 115,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 988,555, -841,342, 117,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 787,978, -855,479, -51,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 355 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 808,764, -1044,17, -54,6895 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 917,617, -1052,28, 94,2635 ); + ent.v[ "angles" ] = ( 29, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 850,388, -949,561, 94 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 695,336, -1140,64, 174,388 ); + ent.v[ "angles" ] = ( 0, 358,745, 90,3158 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -397,618, -1279,07, 159,194 ); + ent.v[ "angles" ] = ( 271, 187, -84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 1144,58, -1476,87, 73,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 1075,85, -1008,77, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 855,703, -1077,52, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 978,234, -1004,41, 95,8515 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1026,46, -1141,13, 177,669 ); + ent.v[ "angles" ] = ( 24, 193, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 11566, 7369,17, -754,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 65 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( -7002,24, 4782,52, -63 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( -5071,79, -7163,23, -58,3008 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 8637,74, -6861,16, 100,781 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 10217, -809,125, -216,77 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 10777,6, 7700,74, -579,817 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 1256,2, -477,919, -61 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort" ); + ent.v[ "origin" ] = ( -5772,88, 5116,44, -43,0053 ); + ent.v[ "angles" ] = ( 270, 217,395, 178,605 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_detail" ); + ent.v[ "origin" ] = ( -6706,07, 4768,48, -92,5561 ); + ent.v[ "angles" ] = ( 270, 0, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_detail" ); + ent.v[ "origin" ] = ( -7616,51, 4365,68, -58 ); + ent.v[ "angles" ] = ( 270, 0,65106, -162,651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( -5185,59, -6893,63, -65 ); + ent.v[ "angles" ] = ( 270, 0, -3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( -5455,46, -6802,14, -65 ); + ent.v[ "angles" ] = ( 270, 356,906, -30,9059 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( 7051,84, -6104,46, -126 ); + ent.v[ "angles" ] = ( 270, 359,914, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( 7097,11, -6375,92, -126 ); + ent.v[ "angles" ] = ( 270, 359,914, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( 2790,44, -423,149, -80,455 ); + ent.v[ "angles" ] = ( 270, 0,692906, 178,307 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 6100,79, -5285,34, -32,8692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_right_border" ); + ent.v[ "origin" ] = ( 10382,8, 8961,99, -422,321 ); + ent.v[ "angles" ] = ( 358,271, 9,94811, 0,507869 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 10049,7, 8042,2, -572,673 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 10070,1, 7465,39, -576 ); + ent.v[ "angles" ] = ( 358,698, 359,957, 0,783675 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7062,86, -6152,26, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( -3843,32, -7122,23, 150,713 ); + ent.v[ "angles" ] = ( 63, 269, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( 8854,15, -5938,39, 310,653 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( 1293,97, -1569,38, 275,83 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -6837,05, 5106,9, 122,125 ); + ent.v[ "angles" ] = ( 288,982, 88,5178, 1,46959 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( 2038,82, 145,766, 43,9131 ); + ent.v[ "angles" ] = ( 284,035, 94,1266, -94,0038 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_bowling_sign_fog" ); + ent.v[ "origin" ] = ( 2357,64, -719,063, 369,31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( 2837,4, -435,051, 11,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1889,32, 763,731, -56,6942 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1791,17, 740,252, -55,0558 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 163 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1979,87, 761,433, -47,4833 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 7818,75, -5992,71, 60,2811 ); + ent.v[ "angles" ] = ( 20, 84, -6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 7988,32, -6044,29, 75,9195 ); + ent.v[ "angles" ] = ( 4, 35, -11 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8334,09, -6302,3, 93,7967 ); + ent.v[ "angles" ] = ( 359,913, 359,004, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8353,75, -6383, 98,6189 ); + ent.v[ "angles" ] = ( 354,382, 346,891, -3,27537 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 8404,03, -6366,25, 98,1088 ); + ent.v[ "angles" ] = ( 354,374, 344,526, -1,56396 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8393,64, -6460,92, 102,788 ); + ent.v[ "angles" ] = ( 1,29256, 14,9455, -2,83045 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8438,13, -6582,85, 105,293 ); + ent.v[ "angles" ] = ( 359,328, 191,965, -2,0986 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8363,87, -7077,4, 92,5037 ); + ent.v[ "angles" ] = ( 7,08973, 260,142, -1,31736 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 8398,26, -7131,53, 83,5329 ); + ent.v[ "angles" ] = ( 355,945, 6,61279, 7,42273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8406,2, -7050,16, 95,9016 ); + ent.v[ "angles" ] = ( 4,76812, 319,449, 5,4151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8418,49, -6955,4, 101,044 ); + ent.v[ "angles" ] = ( 1,65899, 333,337, -1,42441 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5503,15, 6388,21, -72,5321 ); + ent.v[ "angles" ] = ( 0,109414, 292,37, -8,15952 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5514,5, 6422,25, -73,5282 ); + ent.v[ "angles" ] = ( 356,025, 262,626, -7,13254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 5388,57, 6425,25, -64,7438 ); + ent.v[ "angles" ] = ( 356,766, 272,615, -3,7523 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5337,66, 6389,44, -64,8271 ); + ent.v[ "angles" ] = ( 358,904, 187,573, -0,430535 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5324,97, 6019,33, -64,9331 ); + ent.v[ "angles" ] = ( 359,844, 311,516, -4,94951 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5377,87, 6091,1, -67,7557 ); + ent.v[ "angles" ] = ( 0,239705, 148,415, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5359,91, 6133,77, -69 ); + ent.v[ "angles" ] = ( 0,243594, 80,4189, 1,7854 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5280,21, 6157,39, -65,9638 ); + ent.v[ "angles" ] = ( 2,09653, 38,445, 1,85192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5298,75, 6236,24, -67,6985 ); + ent.v[ "angles" ] = ( 0,512533, 76,4233, 0,749736 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5481, 6340,94, -69,9456 ); + ent.v[ "angles" ] = ( 354,217, 246,67, -5,76663 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5469,72, 6431,43, -71,8224 ); + ent.v[ "angles" ] = ( 356,025, 262,626, -5,13254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5313,89, 6374,04, -68,4139 ); + ent.v[ "angles" ] = ( 352,852, 230,625, -1,9477 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1744,42, 704,608, -57,139 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -5879,18, 5132,33, -54,9188 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -5679,99, 5029,36, -38,0459 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 191,569, 618,303, -38 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 53,7307, 538,679, -35,3064 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 250,113, 567,747, -34,6563 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 132,32, 591,904, 85,6072 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 318 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 234,855, 648,418, 85,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 141,005, 552,795, -33,0726 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_vault" ); + ent.v[ "origin" ] = ( 466,399, 540,849, 24,125 ); + ent.v[ "angles" ] = ( 2, 330, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_key_glint" ); + ent.v[ "origin" ] = ( 589,29, 440,722, 11,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_key_glint" ); + ent.v[ "origin" ] = ( 589,064, 449,555, 11,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 100,097, 339,198, -46,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 256,422, 349,21, -54,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 178,717, 413,692, -29,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_bar_glow" ); + ent.v[ "origin" ] = ( 1777,99, 156,13, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 2523,8, 374,808, 69,625 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 1114,07, 20,5454, 41,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 502,541, 765,832, 83,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 991,306, -95,3722, 40,5243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1970,15, 167,957, 163,938 ); + ent.v[ "angles" ] = ( 335, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_med" ); + ent.v[ "origin" ] = ( 2239,96, 185,098, 139,125 ); + ent.v[ "angles" ] = ( 336,247, 251,383, 8,33834 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_med" ); + ent.v[ "origin" ] = ( 1969,63, -25,7143, 91,125 ); + ent.v[ "angles" ] = ( 335,016, 245,207, -0,932351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1873,95, 168,875, 165,392 ); + ent.v[ "angles" ] = ( 332,003, 249,879, 0,387281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1941,61, 167,23, 198,192 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2003,46, 42,8896, 92,125 ); + ent.v[ "angles" ] = ( 337,004, 241,914, 0,424438 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2350,84, 34,2896, 88,125 ); + ent.v[ "angles" ] = ( 333,004, 244,121, -0,474286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1888,03, 168,875, 202,429 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_med" ); + ent.v[ "origin" ] = ( 2324,61, -20,7978, 88,125 ); + ent.v[ "angles" ] = ( 334, 243, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 2179,62, -1804,56, 249,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 2212,67, -1670,11, 208,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 1264,63, -3157,28, 28,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -627,572, -615,202, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 113; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -627,359, -615,075, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 112; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( 1927,64, -1060,33, 131,881 ); + ent.v[ "angles" ] = ( 67, 269,911, 87,9181 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1645,32, 694,99, -64,1414 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1602,48, 476,257, -68,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1535,94, 497,874, -64,9919 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1374,88, 782,003, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1603,51, -262,848, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 584,114, -459,174, -67 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 205 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 775,721, -690,862, -57,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1026,73, -502,666, -64,9585 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1165,88, -310,769, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1592,68, -972,327, -64,8077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 31 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1515,33, -822,148, -62,2515 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 20 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1533,38, -1139,12, -60,4293 ); + ent.v[ "angles" ] = ( 0,278291, 274,981, -5,99519 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1359,65, -1213,52, -63,1614 ); + ent.v[ "angles" ] = ( 356,345, 160,109, -1,41514 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1535,79, -1334,63, -63,8559 ); + ent.v[ "angles" ] = ( 0,73816, 38,0882, 3,84916 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1492,83, -1288,81, -50,9464 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1479,57, -1249,33, -55,1658 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 48 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1493,56, -1314,7, -54,8906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1386,95, 261,349, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 252 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1247,14, 178,805, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1431,34, 155,715, -66 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1540,99, -68,7187, -64,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 60 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1482,47, -63,7589, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 103 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1343,41, 77,0003, -68,1872 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1562,34, -1135,27, -60,6276 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 283 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 1452,5, -218,951, -70 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 1361,91, -551,798, -67 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 230 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 2441,27, -547,621, -59,6587 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 208 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1248,59, -1279,85, -58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1343,33, -1237,01, -55,7566 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 67 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6869,17, 5342,61, -62,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6869,78, 5464,68, -61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6835,64, 5264,04, -66,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 53 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6762,79, 5228,51, -63,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6720,24, 5171,85, -61,3532 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6896,93, 5375,32, -63,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 244 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_power_pulse" ); + ent.v[ "origin" ] = ( 12204,4, 7587,57, -641 ); + ent.v[ "angles" ] = ( 270, 0, -95 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_power_on" ); + ent.v[ "origin" ] = ( 12204,4, 7587,57, -640 ); + ent.v[ "angles" ] = ( 270, 0, -95 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0,25; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_power_rising" ); + ent.v[ "origin" ] = ( 12204,4, 7587,57, -639 ); + ent.v[ "angles" ] = ( 270, 0, -95 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 30,25; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6865,77, 5449,35, -63,7096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 18 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6865,9, 5353,17, -64,4128 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 352 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6821,72, 5257,82, -62,8765 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6752,63, 5222,43, -66,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( 6301,07, 5079,12, 67,4271 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 110; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10128,1, 3411,46, 196 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10497, 2685,14, 219,741 ); + ent.v[ "angles" ] = ( 0, 331, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10539,3, 1146,3, 311,719 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 316 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -9678,57, 2737,65, 192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -11488,2, 521,303, 192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 27 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10739,5, -2162,63, 240,948 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 150 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -9363,38, -6107,72, 196 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 230 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -10126,6, -6035,96, 192 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -10747,4, -3914,96, 192 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11077, -1101,23, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort" ); + ent.v[ "origin" ] = ( -11210, -1129,64, 180 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -11220,5, -1101,46, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11149,5, -1196,82, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11188,2, -1050,69, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11279,7, -1155,05, 180 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11278,8, -1268,24, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11296,1, -909,062, 185 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 78 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11309,7, -2014,81, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -11311, -2020,2, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11375, -1964,33, 185,879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 346 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11234,5, -2090,5, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -11220,4, -3193,42, 268,293 ); + ent.v[ "angles" ] = ( 333,018, 206,982, 2,24406 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -11104,8, -983,586, 194,026 ); + ent.v[ "angles" ] = ( 7, 190, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -10657,8, 889,003, 305,817 ); + ent.v[ "angles" ] = ( 0, 316, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_dbl_glow" ); + ent.v[ "origin" ] = ( -6247,77, 5197,74, 35,125 ); + ent.v[ "angles" ] = ( 297,939, 94,5663, -94,2372 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -9936,09, 2851,18, 441 ); + ent.v[ "angles" ] = ( 270, 0, -30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10224,1, 2342,43, 440 ); + ent.v[ "angles" ] = ( 270, 0, -30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10610,4, 1486,71, 430,812 ); + ent.v[ "angles" ] = ( 289, 249, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -11120, -312,414, 440,9 ); + ent.v[ "angles" ] = ( 270, 359,089, -12,0888 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -11249,9, -1465,12, 439,2 ); + ent.v[ "angles" ] = ( 270, 359,951, -1,95138 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -11173,1, -3034,18, 441,161 ); + ent.v[ "angles" ] = ( 270, 340,77, 26,2299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10797,9, -4638,33, 439,9 ); + ent.v[ "angles" ] = ( 270, 1,54295, 17,457 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10121,4, -5933,87, 433,345 ); + ent.v[ "angles" ] = ( 289,524, 274,491, 104,913 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -9680,11, -6367,1, 433 ); + ent.v[ "angles" ] = ( 289,455, 68,9812, -16,4659 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( -10003,3, 3224,71, 192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -11779,3, -1125,37, 375 ); + ent.v[ "angles" ] = ( 270, 0,906503, -1,90651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( -11778, -1677,58, 373,371 ); + ent.v[ "angles" ] = ( 270, 0,906503, -1,90651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -11778,4, -2244,37, 374,1 ); + ent.v[ "angles" ] = ( 270, 0,906503, -1,90651 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -10951,7, -5454,94, 374 ); + ent.v[ "angles" ] = ( 270, 358,512, 26,4878 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10710,7, -855,473, 370 ); + ent.v[ "angles" ] = ( 271, 264,002, 89,9978 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -6163,17, 3293,78, -13,9583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -11303,5, -3354,03, 302,04 ); + ent.v[ "angles" ] = ( 337,721, 5,86313, -15,1555 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -7381,73, 6748,78, -55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -7490,71, 6520,46, -71 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -7307,65, 6961,87, -79 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -7412,36, 7034,42, -45 ); + ent.v[ "angles" ] = ( 290,014, 195,476, -92,6171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -5794,23, 6978,67, -44 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -6355,24, 5714, 8,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -7184,36, 5600,22, 15,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 177,625, -530,665, -48,3973 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1295,93, 882,596, -25,875 ); + ent.v[ "angles" ] = ( 35, 342, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1284,46, 875,951, -32,7092 ); + ent.v[ "angles" ] = ( 327, 156, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5459,9, -6788, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5230,88, -6999,87, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5145,21, -6915,75, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5050,25, -6921,37, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5501,02, -6704,36, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5473,88, -7476,84, 127,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,98, -7531,46, 128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,21, -7664,66, 128,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,52, -7799,99, 127,814 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,63, -7933,89, 128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5644,89, -7549,17, 134,291 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6031,36, -7550,77, 136,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6314,79, -7549,68, 134,879 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6469,19, -7789,98, 136,641 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5938,95, -7417,7, 127,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5846,87, -7476,07, 126,967 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5656,66, -7476,06, 128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -5483,61, -7432,77, -34,6377 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 5435,05, 6878,72, -9,113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -5974,13, -7261,3, -48,2301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -5972,29, -7281,63, -66,268 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( -5851,29, -7067,3, -54,1333 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -4366,17, -7273,86, -52,8879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -5148,85, -7273,66, -63,5983 ); + ent.v[ "angles" ] = ( 357, 120,999, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -5090,66, -7323,27, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -4380,11, -7148,49, -58,148 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -5862,85, -7050,07, -52,8316 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( -5969,18, -7734,27, 10,025 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5698,49, -8378,1, -12,3228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( -4568,29, -7225,78, 151,693 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 117 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4737,35, -7412,11, 197,275 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4833,49, -7840,76, 125,125 ); + ent.v[ "angles" ] = ( 271, 359,999, -178,999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4625,94, -7868,51, 124,025 ); + ent.v[ "angles" ] = ( 295,505, 181,435, 177,976 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4410,87, -7797,71, 114,26 ); + ent.v[ "angles" ] = ( 283,337, 346,888, 12,8218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5409,75, -7279,42, 276,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5408,13, -7411,31, 275,423 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5409,11, -7211,45, 276,35 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5412,33, -7144,55, 274,523 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5412,82, -7113,89, 274,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5409,51, -7012,87, 276,361 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5408,54, -6967,22, 509,706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5408,04, -6942,82, 606,032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,28, -7378,8, 275,297 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5337,65, -7312,61, 275,796 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,82, -7245,57, 275,566 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,31, -7143,39, 276,066 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5337,79, -7013,92, 275,057 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,85, -6971,21, 475,647 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5337,16, -6957,33, 539,584 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -4834,79, -7458,79, 128,325 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -6306,31, -7943,28, 77,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5775,25, -7866,32, 54,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5729,95, -7877,56, 63,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5625,83, -7543,92, 61,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5268,45, -7968,52, 4,89243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5142,25, -7958,67, -20,1334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 7894,84, -6552,52, 202,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 7889,8, -6318,81, 315,925 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8013,75, -6642,93, 361,925 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8328,49, -5015,29, 161,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 7882,26, -5207,24, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8503,42, -4804,02, 162,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8059,34, -5204,01, 333,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8317,79, -6683,08, 180,206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8234,94, -6586,04, 178 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8137,48, -6959,37, 211,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8057,41, -4806,99, 161,725 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 7374,98, -5426,44, 49,3118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4220,64, -7799,22, -1,875 ); + ent.v[ "angles" ] = ( 316,689, 259,962, 13,0518 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4189,21, -7705,66, 7,66019 ); + ent.v[ "angles" ] = ( 317,814, 249,191, 10,3636 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4295,9, -7802,49, 21,125 ); + ent.v[ "angles" ] = ( 320,075, 258,325, 14,3308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4308,83, -7683,01, 32,8659 ); + ent.v[ "angles" ] = ( 325,068, 264,852, 10,8459 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5017,99, -7879,03, -56,875 ); + ent.v[ "angles" ] = ( 340,408, 259,106, 4,31522 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5003,87, -7838,04, -30,3927 ); + ent.v[ "angles" ] = ( 342,331, 260,31, 3,91311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5494,71, -7831,96, 3,125 ); + ent.v[ "angles" ] = ( 335,016, 248,207, -0,932351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5523,54, -7862,26, 0,125 ); + ent.v[ "angles" ] = ( 336, 246, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 9040,04, -6391,29, 273,2 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 8419,09, -5744,22, 249,051 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( 8242,84, -6849,96, 259,625 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 8240,02, -6532,87, 209,525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 6587,59, -5127,09, -55,2822 ); + ent.v[ "angles" ] = ( 353, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 6987,8, -5763,06, -51,5495 ); + ent.v[ "angles" ] = ( 2, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 7858,56, -5805,03, 8,45168 ); + ent.v[ "angles" ] = ( 2, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 7792,54, -5443,05, 36,5811 ); + ent.v[ "angles" ] = ( 359, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 7442,47, -5125,89, -4,7008 ); + ent.v[ "angles" ] = ( 359, 136, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 8739,61, -6983,54, 86,5683 ); + ent.v[ "angles" ] = ( 0,545573, 157,823, 1,29891 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8027,21, -6432,62, 165,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8225,35, -6613,31, 178,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8140,59, -6889,03, 168,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8033,01, -6470,27, 294,896 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 9029,53, -6393,49, 249,093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8416,65, -5742,4, 224,177 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8357,57, -6682,99, 183,255 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8100,48, -5243,8, 114,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7910,7, -5209,15, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8050,46, -5221,8, 334,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8484,12, -4806,32, 166,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8055,05, -4795,58, 161,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8328,53, -5033,75, 165,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7854,08, -5055,63, 126,147 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7803,41, -4567,1, 111,113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8591,82, -5402,47, 117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7135,13, -5638,24, 30,9983 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 9978,39, -1767,15, -212,32 ); + ent.v[ "angles" ] = ( 358, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10242, -133,225, -213,655 ); + ent.v[ "angles" ] = ( 2, 160, 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10185, -1131,84, -210,081 ); + ent.v[ "angles" ] = ( 2, 160, 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10419,3, 7366,19, -557,286 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10426,2, 7362,67, -556,087 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10576,4, 7867,03, -534,373 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10561,8, 7854,68, -546,776 ); + ent.v[ "angles" ] = ( 24, 21, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10543,1, 7838,16, -564,906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 287 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11244,2, 7598,05, -529,002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11273,6, 7566,38, -510,46 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11197,5, 7581,58, -554,377 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11102,1, 7582,38, -521,847 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 11534,9, 7043,33, -422,437 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( 11695,4, 6972,81, -417,525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10772,1, 7534,6, -579,322 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 134 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10293,5, 8161,56, -576,661 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 11284,2, 7782,37, -549,009 ); + ent.v[ "angles" ] = ( 8,89267, 132,773, -10,1167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10545,1, 7987,11, -542,084 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 213 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( -7274,63, 4216,52, -7,79429 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( -4655,73, -7718,2, -46,2181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 1772,67, -134,847, -26,9184 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10482,5, 8077,43, -551,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10779,7, 7998,21, -540,07 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 257 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 11134,3, 8093,66, -505,788 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 11518,6, 7313,49, -755,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 32 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11535,9, 7320,47, -712,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 12544,7, 8367,86, -747,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 217 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 12619,1, 8410,46, -751,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 11077,4, 8147,23, -472,382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 10627,8, 8984,05, -351,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 244 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 10671,7, 9056,4, -351,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 12185,1, 8300,09, -747,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10667,5, 8857,24, -566,312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 320 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 11829,2, 7033,91, -366,52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( 11000,5, 8592,98, -721,228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -3523,91, 4145,58, 1026 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 164 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -5822,61, 8161,55, 1665,98 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -10419,6, 2878,18, 1302,32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 33 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -10422,2, 5513,57, 1108,93 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 351 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -7579,71, 2412,15, 1076,04 ); + ent.v[ "angles" ] = ( 20,9875, 82,1415, 0,732403 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -8591,58, 7883,01, 1434,96 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 300 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -5183,81, 1971,44, 1380,88 ); + ent.v[ "angles" ] = ( 8,93236, 125,086, 1,10578 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -3907,73, 6244,31, 1277,76 ); + ent.v[ "angles" ] = ( 4,95198, 216,03, 0,697713 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -7994,63, -5467,26, 1488 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 338 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -6248,9, -4383,96, 1488,83 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 283 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -3637,03, -5318,07, 994,45 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 232 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -2982,77, -8985,62, 1217,37 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 142 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -4789,43, -10429,2, 1615,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -2144,48, -6671,63, 1097,34 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -7283,26, -9141,06, 1439,81 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -8253,71, -7187,61, 1204,71 ); + ent.v[ "angles" ] = ( 357, 7, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 11039,7, -5731,09, 1349,86 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4491,1, -6164,51, 1530,32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 5 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 9613,27, -3527,74, 1697,05 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 238 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4882,98, -3611,48, 1455,78 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 322 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 7145,47, -2628,27, 1418,72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10641, -8278,11, 1550,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 137 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 5867,88, -8161,48, 1505,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8045,36, -9511,34, 1941,18 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 6852,87, -2262,35, 1264,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 13859, -645,96, 1348,54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8118,81, 2009,01, 1412,57 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 303 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10501,1, 2270,69, 1535,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 6154,19, 223,038, 1606,08 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 349 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10606,6, -4038,92, 1467,82 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 13138,8, -3032,95, 1329,48 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 139 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 12600,4, 1246,54, 1347,77 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 231 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8452,68, -3056,77, 1074,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 14766,4, 6814,59, 1098,18 ); + ent.v[ "angles" ] = ( 12, 174, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10339,2, 3964,06, 1379,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 12754,5, 4793,53, 1107,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 132 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 14340,3, 9177,31, 663,407 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 197 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8179,63, 4723,92, 896,714 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 51 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8458,11, 10639,4, 1231,62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 307 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 7094,67, 8425,25, 1257 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 353 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 7202,75, 6339,84, 765,131 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 17 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10729,5, 11122,9, 1151,78 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 13325,6, 10557,6, 1366,97 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 235 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -207,347, 1856,37, 1500,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 302 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -1247,2, -2498,41, 1408 ); + ent.v[ "angles" ] = ( 360, 36, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 1625,45, 3225,11, 1105 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4274,06, -1538,84, 1177 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -1889,24, 66,6515, 1399 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4525,94, 665,024, 1126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 197 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 2974,66, -3206,25, 1577 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 111 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 694,038, -3737,93, 1409 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 3769,33, 2230,93, 904 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 232 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_truck_light" ); + ent.v[ "origin" ] = ( 1164,06, 310,847, -0,95 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( 2050,55, -1176,95, 92,625 ); + ent.v[ "angles" ] = ( 282, 270, 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( 888,034, -1532,84, 80,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( 888,055, -1424,17, 80,0051 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( 1058,12, -1424,92, 80,725 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6494,99, 5193,01, 55,225 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6004,73, 4178,79, -39,7161 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6007,56, 4183,18, -46,8613 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -7256,49, 5356,49, 76,625 ); + ent.v[ "angles" ] = ( 300,56, 56,1976, -63,4146 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11224,3, 7631,21, -757,475 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11166,9, 7525,87, -755,374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 1510,96, -426,276, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -5982,84, -6804,63, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5858,36, -7105,72, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5694,71, -6884,39, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5823,62, -6768,1, -65,2136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7178,46, 5386,18, -43,6839 ); + ent.v[ "angles" ] = ( 346, 41, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7176,71, 5393,31, -9,00734 ); + ent.v[ "angles" ] = ( 346, 41, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7177,88, 5334,54, 45,5397 ); + ent.v[ "angles" ] = ( 356, 55, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7061,11, 5401,32, -55,875 ); + ent.v[ "angles" ] = ( 341, 56, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7108,24, 5323,87, -55,875 ); + ent.v[ "angles" ] = ( 341, 55, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6364,25, 5404,07, -54,2979 ); + ent.v[ "angles" ] = ( 327,291, 180,677, 4,76528 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6450,47, 5366,94, -55,875 ); + ent.v[ "angles" ] = ( 317,576, 183,05, -3,56625 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6324,56, 5391,09, 23,3601 ); + ent.v[ "angles" ] = ( 339,99, 181,99, -0,275328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6526,78, 5027,04, -32,4411 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6536,44, 5005,17, -38,2548 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6550,6, 5011,6, -33,6877 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 10085,8, 7660,61, -580 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 10099,7, 7278,2, -583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 10029,6, 7897,85, -584 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 206 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10093,3, 7472,53, -583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 10199,8, 7421,3, -573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10161,9, 7815,92, -576 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2752,23, -202,843, -61,0126 ); + ent.v[ "angles" ] = ( 10,9441, 272,285, 67,3066 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2748,37, -203,92, -10,2652 ); + ent.v[ "angles" ] = ( 0, 273, 9 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( 1901,03, 564,856, 67,125 ); + ent.v[ "angles" ] = ( 311,502, 195,461, 157,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 9992,94, -1245,49, -217,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 130 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10052,3, -1175,39, -223,625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10168,1, -1213,8, -221,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10061,8, -1368,94, -222,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 11263,9, 8174,39, -337,162 ); + ent.v[ "angles" ] = ( 52, 12, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 11773,7, 8485,59, -469,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 11333,8, 8107,72, -378,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 74 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 10530,4, 8345,07, -413,424 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -4437,91, -7528,95, 99,8901 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4625,7, -7827,94, 124,725 ); + ent.v[ "angles" ] = ( 295,505, 181,435, 177,976 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6346,4, -7804,18, -13,2077 ); + ent.v[ "angles" ] = ( 338, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6346,4, -7804,18, -13,2077 ); + ent.v[ "angles" ] = ( 338, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -6144,54, -7824,85, 130,125 ); + ent.v[ "angles" ] = ( 282, 90, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -5761,02, -7822,95, 130,125 ); + ent.v[ "angles" ] = ( 270, 30,9987, -120,999 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( -3834,8, -7320,06, 61,125 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2224,68, 104,286, 155,125 ); + ent.v[ "angles" ] = ( 336,062, 255,377, -1,77889 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2202,63, 108,655, 148,125 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2182,71, 167,009, 152,125 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 7144,94, -5606,8, 70,4908 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13759,9, -1380,82, -92,9938 ); + ent.v[ "angles" ] = ( 314, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13870,7, -722,317, -222,776 ); + ent.v[ "angles" ] = ( 306, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13863,9, -341,626, -212,875 ); + ent.v[ "angles" ] = ( 306, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13808,1, -628,646, -252,875 ); + ent.v[ "angles" ] = ( 298, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13859,6, -974,169, -94 ); + ent.v[ "angles" ] = ( 326, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13805,1, -1449,76, -132,375 ); + ent.v[ "angles" ] = ( 317,174, 237,094, 15,7036 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 13558,1, -1418,66, -180,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 13987,6, -365,533, -152,199 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13795,6, -429,569, -188,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13819,1, -1026,6, -185,938 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13763,8, -1373,05, -181,438 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 14249,4, -1138,75, -195,847 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13147,5, -1608,93, -198,477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13355,5, -236,408, -194,069 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 14144,1, -1050,49, -192,334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13846,6, -1797,74, -179,776 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13715,6, -740,508, -188,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13280,2, -758,48, -202,824 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 33 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 11569,6, 7207,64, -627,375 ); + ent.v[ "angles" ] = ( 65, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11097,3, 8370,78, -472,312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11065,7, 8350,09, -480,76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_transformer_on" ); + ent.v[ "origin" ] = ( 11096,1, 8349,73, -498,022 ); + ent.v[ "angles" ] = ( 10,9932, 163,963, -8,38868 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_blue_sm_loop" ); + ent.v[ "origin" ] = ( 11062,9, 8351,89, -475,091 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11249,7, 904,058, 192 ); + ent.v[ "angles" ] = ( 299,251, 356,208, -7,17259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11060,9, 836,008, 327,885 ); + ent.v[ "angles" ] = ( 299,251, 356,208, -7,17259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -10848,1, 727,41, 262,305 ); + ent.v[ "angles" ] = ( 299,251, 356,208, -7,17259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -11453,1, -2704,04, 238 ); + ent.v[ "angles" ] = ( 312,147, 207,959, -4,21566 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -11447,1, -2717,45, 320 ); + ent.v[ "angles" ] = ( 316,137, 207,551, -3,92308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -11237,1, -2774,08, 205,693 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11065,4, -3093,87, 210,48 ); + ent.v[ "angles" ] = ( 313, 209, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11085,3, -3572,2, 238,785 ); + ent.v[ "angles" ] = ( 323, 209, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -10751,6, 548,387, 281,46 ); + ent.v[ "angles" ] = ( 298,016, 48,8707, 1,87996 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 11026,4, 8418,04, -452,626 ); + ent.v[ "angles" ] = ( 319, 238, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 11047,5, 8544,31, -407,409 ); + ent.v[ "angles" ] = ( 321,972, 238,53, -82,3373 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10965,8, 8541,46, -361,01 ); + ent.v[ "angles" ] = ( 319, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10784,7, 8598,1, -382,159 ); + ent.v[ "angles" ] = ( 312, 253, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 11284,5, 8803,95, -209,321 ); + ent.v[ "angles" ] = ( 71,1934, 180,803, -87,4102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10895,9, 8866,25, -196,195 ); + ent.v[ "angles" ] = ( 73, 258, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10781,7, 8702,04, -222,415 ); + ent.v[ "angles" ] = ( 88, 267, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10799,1, 8575,29, -500,938 ); + ent.v[ "angles" ] = ( 79, 87, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10979,3, 8831,12, -420,153 ); + ent.v[ "angles" ] = ( 73, 267, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 7976,72, -4577,1, 193,859 ); + ent.v[ "angles" ] = ( 18,9006, 87,1581, -14,8078 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8107,3, -4901,58, 390,125 ); + ent.v[ "angles" ] = ( 322,027, 247,537, -1,56188 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8254,05, -4975,36, 463,125 ); + ent.v[ "angles" ] = ( 322,434, 234,888, 6,2056 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8194,13, -4983,58, 441,125 ); + ent.v[ "angles" ] = ( 322,109, 239,929, 3,1195 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8249,4, -4832,61, 434,125 ); + ent.v[ "angles" ] = ( 322, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8226,89, -5241,31, 421,125 ); + ent.v[ "angles" ] = ( 322, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8046,06, -4860,87, 413,125 ); + ent.v[ "angles" ] = ( 322,677, 257,613, -7,72609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 635,54, 407,845, 91,125 ); + ent.v[ "angles" ] = ( 16, 71, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 628,125, 406,734, 43,7233 ); + ent.v[ "angles" ] = ( 3, 71, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 638,811, 426,54, -18,875 ); + ent.v[ "angles" ] = ( 349, 71, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 784,565, 726,997, -33,8978 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 811,849, 729,36, -35,0041 ); + ent.v[ "angles" ] = ( 0, 270, -2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 942,825, 799,82, -52,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -1148,16, -1138,11, -41,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2664,01, -1345,03, -346,451 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2674,54, 433,639, -359,784 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -1124,75, 259,523, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 69 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -863,312, -745,248, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1196,8, -787,911, -47,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1381,38, -46,0962, -47,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2645,12, 9,70624, -357,904 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2719,28, -285,725, -334,581 ); + ent.v[ "angles" ] = ( 1, 87, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2685,84, -997,132, -346,559 ); + ent.v[ "angles" ] = ( 358,157, 83,9017, 1,94423 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -2770,44, -707,874, -115,875 ); + ent.v[ "angles" ] = ( 12, 275, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -2778,19, -155,061, -94,875 ); + ent.v[ "angles" ] = ( 29, 80, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -2291,93, -758,164, -101,161 ); + ent.v[ "angles" ] = ( 11, 214, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -1255,13, -1277,79, -34,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2742,09, -665,677, -333,1 ); + ent.v[ "angles" ] = ( 1, 87, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1508,17, -320,626, -58,369 ); + ent.v[ "angles" ] = ( 355, 187, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1452,09, -720,211, -60,0286 ); + ent.v[ "angles" ] = ( 359,993, 186,739, -2,98858 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1415,76, -1177,25, -62,1707 ); + ent.v[ "angles" ] = ( 356,67, 156,949, -0,497783 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -704,822, -246,538, -58,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 22 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -779,445, -1098,9, -61,8023 ); + ent.v[ "angles" ] = ( 0,993918, 9,99335, -0,738612 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -699,587, -705,189, -57,1237 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1140,42, -15,2616, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1273,82, -1205,47, -42,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -2204,13, -5739,66, -80,9468 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1994,56, -5882,45, -95,6035 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1875,72, -6466,37, -98,9131 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1610,46, -6120,94, -92,074 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -2214,93, -6067,3, -102,865 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1708,85, -6610,85, -95,0234 ); + ent.v[ "angles" ] = ( 355,794, 73,794, -4,39947 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2318,27, -6315,39, -107,815 ); + ent.v[ "angles" ] = ( 353,394, 27,6107, 4,95295 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1948,05, -6554,84, -111,909 ); + ent.v[ "angles" ] = ( 356,111, 77,7913, -4,68174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1528,88, -5886,45, -91,5689 ); + ent.v[ "angles" ] = ( 356,621, 83,7816, -5,0618 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2024,68, -5586,57, -68,3597 ); + ent.v[ "angles" ] = ( 356,111, 77,7913, -4,68174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( 8336,11, -8461,36, -126,254 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( 7440,73, -8528,75, -124,913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7171,28, -6397,54, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7054,04, -6397,21, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7094,94, -6285,23, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8662,38, -5640,09, 124,292 ); + ent.v[ "angles" ] = ( 323, 318, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8599,65, -5634,21, 153,303 ); + ent.v[ "angles" ] = ( 321,616, 319,338, -39,0353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 5262,91, 7044,48, 43,9142 ); + ent.v[ "angles" ] = ( 316,21, 262,066, 4,81097 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 5174,93, 7053,13, 41,125 ); + ent.v[ "angles" ] = ( 316,411, 278,687, -6,71217 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_desklamp" ); + ent.v[ "origin" ] = ( -7101,92, 5147,13, -0,163522 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -4683,65, -7970,08, 52,9438 ); + ent.v[ "angles" ] = ( 68, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_desklamp" ); + ent.v[ "origin" ] = ( 12139,1, 8505,25, -696,157 ); + ent.v[ "angles" ] = ( 85,685, 136,004, 133,029 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_int_runner" ); + ent.v[ "origin" ] = ( 7967,02, -464,256, 1429,54 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 416; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_int_runner" ); + ent.v[ "origin" ] = ( 7264,27, -458,783, 1045,58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 305 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 416; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_int_runner" ); + ent.v[ "origin" ] = ( 7964,59, -462,798, 663,232 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 59 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 416; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -6365,04, 4578,04, 109,9 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 400; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -6365,1, 4578,04, 109,746 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 401; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -3946,92, -7250,32, 107,1 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 403; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -3946,86, -7250,19, 107 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 402; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -45,1183, -5452,09, 92,4005 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 405; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -45,2307, -5452,06, 92,5112 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 404; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( 10160, -1748,7, -45,9436 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 406; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( 10160,1, -1748,62, -45,9508 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 407; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( 8133,62, 4787,71, -194,497 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 409; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( 8133,65, 4787,75, -194,479 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 408; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( 6301,07, 5079,12, 67,4271 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 410; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( 6300,89, 5078,98, 67,4032 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 411; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -627,359, -615,075, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 412; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -627,572, -615,202, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 413; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -4418,11, -626,9, 192,003 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 415; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -4418,04, -626,987, 191,91 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 414; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -6917,44, 3891,27, 81,125 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -9032,52, 4222,59, 40,0809 ); + ent.v[ "angles" ] = ( 0,716713, 61,9889, -1,86754 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 11131,7, 8831,49, -894,668 ); + ent.v[ "angles" ] = ( 81,0228, 227,719, -27,4136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_pit" ); + ent.v[ "origin" ] = ( 10945,1, 8621,79, -1116,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 11178,6, 8859,45, -715,452 ); + ent.v[ "angles" ] = ( 63,6007, 216,198, -13,3547 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 10953,1, 8914,32, -688,637 ); + ent.v[ "angles" ] = ( 53,9874, 292,702, 1,41178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 10983, 8838,08, -841,275 ); + ent.v[ "angles" ] = ( 66,6739, 293,054, 17,3617 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 10999, 8819,35, -930,992 ); + ent.v[ "angles" ] = ( 74,6464, 318,518, 15,5448 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_pit" ); + ent.v[ "origin" ] = ( 11118,6, 8507,76, -1176,88 ); + ent.v[ "angles" ] = ( 340, 61, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 1417,38, -341,936, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( 1927,64, -1060,33, 131,881 ); + ent.v[ "angles" ] = ( 67, 269,911, 87,9181 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_callbacksetup.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_callbacksetup.gsc new file mode 100644 index 0000000..b96ee03 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_callbacksetup.gsc @@ -0,0 +1,207 @@ +#include maps/mp/gametypes_zm/_hostmigration; +#include maps/mp/gametypes_zm/_globallogic_actor; +#include maps/mp/gametypes_zm/_globallogic_player; +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/_audio; +#include maps/mp/_utility; + +codecallback_startgametype() +{ + if ( !isDefined( level.gametypestarted ) || !level.gametypestarted ) + { + [[ level.callbackstartgametype ]](); + level.gametypestarted = 1; + } +} + +codecallback_finalizeinitialization() +{ + maps/mp/_utility::callback( "on_finalize_initialization" ); +} + +codecallback_playerconnect() +{ + self endon( "disconnect" ); + self thread maps/mp/_audio::monitor_player_sprint(); + [[ level.callbackplayerconnect ]](); +} + +codecallback_playerdisconnect() +{ + self notify( "disconnect" ); + client_num = self getentitynumber(); + [[ level.callbackplayerdisconnect ]](); +} + +codecallback_hostmigration() +{ +/# + println( "****CodeCallback_HostMigration****" ); +#/ + [[ level.callbackhostmigration ]](); +} + +codecallback_hostmigrationsave() +{ +/# + println( "****CodeCallback_HostMigrationSave****" ); +#/ + [[ level.callbackhostmigrationsave ]](); +} + +codecallback_prehostmigrationsave() +{ +/# + println( "****CodeCallback_PreHostMigrationSave****" ); +#/ + [[ level.callbackprehostmigrationsave ]](); +} + +codecallback_playermigrated() +{ +/# + println( "****CodeCallback_PlayerMigrated****" ); +#/ + [[ level.callbackplayermigrated ]](); +} + +codecallback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ) +{ + self endon( "disconnect" ); + [[ level.callbackplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ); +} + +codecallback_playerkilled( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration ) +{ + self endon( "disconnect" ); + [[ level.callbackplayerkilled ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration ); +} + +codecallback_playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration ) +{ + self endon( "disconnect" ); + [[ level.callbackplayerlaststand ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset, deathanimduration ); +} + +codecallback_playermelee( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit ) +{ + self endon( "disconnect" ); + [[ level.callbackplayermelee ]]( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit ); +} + +codecallback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ) +{ + [[ level.callbackactordamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, boneindex ); +} + +codecallback_actorkilled( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset ) +{ + [[ level.callbackactorkilled ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, timeoffset ); +} + +codecallback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, damagefromunderneath, modelindex, partname ) +{ + [[ level.callbackvehicledamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, timeoffset, damagefromunderneath, modelindex, partname ); +} + +codecallback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, timeoffset ) +{ +} + +codecallback_faceeventnotify( notify_msg, ent ) +{ + if ( isDefined( ent ) && isDefined( ent.do_face_anims ) && ent.do_face_anims ) + { + if ( isDefined( level.face_event_handler ) && isDefined( level.face_event_handler.events[ notify_msg ] ) ) + { + ent sendfaceevent( level.face_event_handler.events[ notify_msg ] ); + } + } +} + +codecallback_menuresponse( action, arg ) +{ + if ( !isDefined( level.menuresponsequeue ) ) + { + level.menuresponsequeue = []; + level thread menuresponsequeuepump(); + } + index = level.menuresponsequeue.size; + level.menuresponsequeue[ index ] = spawnstruct(); + level.menuresponsequeue[ index ].action = action; + level.menuresponsequeue[ index ].arg = arg; + level.menuresponsequeue[ index ].ent = self; + level notify( "menuresponse_queue" ); +} + +menuresponsequeuepump() +{ + while ( 1 ) + { + level waittill( "menuresponse_queue" ); + level.menuresponsequeue[ 0 ].ent notify( "menuresponse" ); + arrayremoveindex( level.menuresponsequeue, 0, 0 ); + wait 0,05; + } +} + +setupcallbacks() +{ + setdefaultcallbacks(); + level.idflags_radius = 1; + level.idflags_no_armor = 2; + level.idflags_no_knockback = 4; + level.idflags_penetration = 8; + level.idflags_destructible_entity = 16; + level.idflags_shield_explosive_impact = 32; + level.idflags_shield_explosive_impact_huge = 64; + level.idflags_shield_explosive_splash = 128; + level.idflags_no_team_protection = 256; + level.idflags_no_protection = 512; + level.idflags_passthru = 1024; +} + +setdefaultcallbacks() +{ + level.callbackstartgametype = ::maps/mp/gametypes_zm/_globallogic::callback_startgametype; + level.callbackplayerconnect = ::maps/mp/gametypes_zm/_globallogic_player::callback_playerconnect; + level.callbackplayerdisconnect = ::maps/mp/gametypes_zm/_globallogic_player::callback_playerdisconnect; + level.callbackplayerdamage = ::maps/mp/gametypes_zm/_globallogic_player::callback_playerdamage; + level.callbackplayerkilled = ::maps/mp/gametypes_zm/_globallogic_player::callback_playerkilled; + level.callbackplayermelee = ::maps/mp/gametypes_zm/_globallogic_player::callback_playermelee; + level.callbackplayerlaststand = ::maps/mp/gametypes_zm/_globallogic_player::callback_playerlaststand; + level.callbackactordamage = ::maps/mp/gametypes_zm/_globallogic_actor::callback_actordamage; + level.callbackactorkilled = ::maps/mp/gametypes_zm/_globallogic_actor::callback_actorkilled; + level.callbackplayermigrated = ::maps/mp/gametypes_zm/_globallogic_player::callback_playermigrated; + level.callbackhostmigration = ::maps/mp/gametypes_zm/_hostmigration::callback_hostmigration; + level.callbackhostmigrationsave = ::maps/mp/gametypes_zm/_hostmigration::callback_hostmigrationsave; + level.callbackprehostmigrationsave = ::maps/mp/gametypes_zm/_hostmigration::callback_prehostmigrationsave; +} + +abortlevel() +{ +/# + println( "ERROR: Aborting level - gametype is not supported" ); +#/ + level.callbackstartgametype = ::callbackvoid; + level.callbackplayerconnect = ::callbackvoid; + level.callbackplayerdisconnect = ::callbackvoid; + level.callbackplayerdamage = ::callbackvoid; + level.callbackplayerkilled = ::callbackvoid; + level.callbackplayermelee = ::callbackvoid; + level.callbackplayerlaststand = ::callbackvoid; + level.callbackactordamage = ::callbackvoid; + level.callbackactorkilled = ::callbackvoid; + level.callbackvehicledamage = ::callbackvoid; + setdvar( "g_gametype", "dm" ); + exitlevel( 0 ); +} + +codecallback_glasssmash( pos, dir ) +{ + level notify( "glass_smash" ); +} + +callbackvoid() +{ +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_clientids.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_clientids.gsc new file mode 100644 index 0000000..b17e410 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_clientids.gsc @@ -0,0 +1,16 @@ + +init() +{ + level.clientid = 0; + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player.clientid = level.clientid; + level.clientid++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_damagefeedback.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_damagefeedback.gsc new file mode 100644 index 0000000..5bf5a09 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_damagefeedback.gsc @@ -0,0 +1,160 @@ + +init() +{ + precacheshader( "damage_feedback" ); + precacheshader( "damage_feedback_flak" ); + precacheshader( "damage_feedback_tac" ); + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player.hud_damagefeedback = newdamageindicatorhudelem( player ); + player.hud_damagefeedback.horzalign = "center"; + player.hud_damagefeedback.vertalign = "middle"; + player.hud_damagefeedback.x = -12; + player.hud_damagefeedback.y = -12; + player.hud_damagefeedback.alpha = 0; + player.hud_damagefeedback.archived = 1; + player.hud_damagefeedback setshader( "damage_feedback", 24, 48 ); + player.hitsoundtracker = 1; + } +} + +updatedamagefeedback( mod, inflictor, perkfeedback ) +{ + if ( !isplayer( self ) || sessionmodeiszombiesgame() ) + { + return; + } + if ( isDefined( mod ) && mod != "MOD_CRUSH" && mod != "MOD_GRENADE_SPLASH" && mod != "MOD_HIT_BY_OBJECT" ) + { + if ( isDefined( inflictor ) && isDefined( inflictor.soundmod ) ) + { + switch( inflictor.soundmod ) + { + case "player": + self thread playhitsound( mod, "mpl_hit_alert" ); + break; + case "heli": + self thread playhitsound( mod, "mpl_hit_alert_air" ); + break; + case "hpm": + self thread playhitsound( mod, "mpl_hit_alert_hpm" ); + break; + case "taser_spike": + self thread playhitsound( mod, "mpl_hit_alert_taser_spike" ); + break; + case "dog": + case "straferun": + case "default_loud": + self thread playhitsound( mod, "mpl_hit_heli_gunner" ); + break; + default: + self thread playhitsound( mod, "mpl_hit_alert_low" ); + break; + } + } + else self thread playhitsound( mod, "mpl_hit_alert_low" ); + } + if ( isDefined( perkfeedback ) ) + { + switch( perkfeedback ) + { + case "flakjacket": + self.hud_damagefeedback setshader( "damage_feedback_flak", 24, 48 ); + break; + case "tacticalMask": + self.hud_damagefeedback setshader( "damage_feedback_tac", 24, 48 ); + break; + } + } + else self.hud_damagefeedback setshader( "damage_feedback", 24, 48 ); + self.hud_damagefeedback.alpha = 1; + self.hud_damagefeedback fadeovertime( 1 ); + self.hud_damagefeedback.alpha = 0; + } +} + +playhitsound( mod, alert ) +{ + self endon( "disconnect" ); + if ( self.hitsoundtracker ) + { + self.hitsoundtracker = 0; + self playlocalsound( alert ); + wait 0,05; + self.hitsoundtracker = 1; + } +} + +updatespecialdamagefeedback( hitent ) +{ + if ( !isplayer( self ) ) + { + return; + } + if ( !isDefined( hitent ) ) + { + return; + } + if ( !isplayer( hitent ) ) + { + return; + } + wait 0,05; + if ( !isDefined( self.directionalhitarray ) ) + { + self.directionalhitarray = []; + hitentnum = hitent getentitynumber(); + self.directionalhitarray[ hitentnum ] = 1; + self thread sendhitspecialeventatframeend( hitent ); + } + else + { + hitentnum = hitent getentitynumber(); + self.directionalhitarray[ hitentnum ] = 1; + } +} + +sendhitspecialeventatframeend( hitent ) +{ + self endon( "disconnect" ); + waittillframeend; + enemyshit = 0; + value = 1; + entbitarray0 = 0; + i = 0; + while ( i < 32 ) + { + if ( isDefined( self.directionalhitarray[ i ] ) && self.directionalhitarray[ i ] != 0 ) + { + entbitarray0 += value; + enemyshit++; + } + value *= 2; + i++; + } + entbitarray1 = 0; + i = 33; + while ( i < 64 ) + { + if ( isDefined( self.directionalhitarray[ i ] ) && self.directionalhitarray[ i ] != 0 ) + { + entbitarray1 += value; + enemyshit++; + } + value *= 2; + i++; + } + if ( enemyshit ) + { + self directionalhitindicator( entbitarray0, entbitarray1 ); + } + self.directionalhitarray = undefined; + entbitarray0 = 0; + entbitarray1 = 0; +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_gameobjects.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_gameobjects.gsc new file mode 100644 index 0000000..37c6871 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_gameobjects.gsc @@ -0,0 +1,2630 @@ +#include maps/mp/gametypes_zm/_tweakables; +#include maps/mp/gametypes_zm/_hostmigration; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; +#include common_scripts/utility; + +main( allowed ) +{ + level.vehiclesenabled = getgametypesetting( "vehiclesEnabled" ); + level.vehiclestimed = getgametypesetting( "vehiclesTimed" ); + level.objectivepingdelay = getgametypesetting( "objectivePingTime" ); + level.nonteambasedteam = "allies"; +/# + if ( level.script == "mp_vehicle_test" ) + { + level.vehiclesenabled = 1; +#/ + } + if ( level.vehiclesenabled ) + { + allowed[ allowed.size ] = "vehicle"; + filter_script_vehicles_from_vehicle_descriptors( allowed ); + } + entities = getentarray(); + entity_index = entities.size - 1; + while ( entity_index >= 0 ) + { + entity = entities[ entity_index ]; + if ( !entity_is_allowed( entity, allowed ) ) + { + entity delete(); + } + entity_index--; + + } + return; +} + +entity_is_allowed( entity, allowed_game_modes ) +{ + if ( isDefined( level.createfx_enabled ) && level.createfx_enabled ) + { + return 1; + } + allowed = 1; + while ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" ) + { + allowed = 0; + gameobjectnames = strtok( entity.script_gameobjectname, " " ); + i = 0; + while ( i < allowed_game_modes.size && !allowed ) + { + j = 0; + while ( j < gameobjectnames.size && !allowed ) + { + allowed = gameobjectnames[ j ] == allowed_game_modes[ i ]; + j++; + } + i++; + } + } + return allowed; +} + +filter_script_vehicles_from_vehicle_descriptors( allowed_game_modes ) +{ + vehicle_descriptors = getentarray( "vehicle_descriptor", "targetname" ); + script_vehicles = getentarray( "script_vehicle", "classname" ); + vehicles_to_remove = []; + descriptor_index = 0; + while ( descriptor_index < vehicle_descriptors.size ) + { + descriptor = vehicle_descriptors[ descriptor_index ]; + closest_distance_sq = 1E+12; + closest_vehicle = undefined; + vehicle_index = 0; + while ( vehicle_index < script_vehicles.size ) + { + vehicle = script_vehicles[ vehicle_index ]; + dsquared = distancesquared( vehicle getorigin(), descriptor getorigin() ); + if ( dsquared < closest_distance_sq ) + { + closest_distance_sq = dsquared; + closest_vehicle = vehicle; + } + vehicle_index++; + } + if ( isDefined( closest_vehicle ) ) + { + if ( !entity_is_allowed( descriptor, allowed_game_modes ) ) + { + vehicles_to_remove[ vehicles_to_remove.size ] = closest_vehicle; + } + } + descriptor_index++; + } + vehicle_index = 0; + while ( vehicle_index < vehicles_to_remove.size ) + { + vehicles_to_remove[ vehicle_index ] delete(); + vehicle_index++; + } + return; +} + +init() +{ + level.numgametypereservedobjectives = 0; + level.releasedobjectives = []; + if ( !sessionmodeiszombiesgame() ) + { + precacheitem( "briefcase_bomb_mp" ); + precacheitem( "briefcase_bomb_defuse_mp" ); + } + level thread onplayerconnect(); +} + +onplayerconnect() +{ + level endon( "game_ended" ); + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + player thread ondisconnect(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + level endon( "game_ended" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread ondeath(); + self.touchtriggers = []; + self.carryobject = undefined; + self.claimtrigger = undefined; + self.canpickupobject = 1; + self.disabledweapon = 0; + self.killedinuse = undefined; + } +} + +ondeath() +{ + level endon( "game_ended" ); + self endon( "spawned_player" ); + self waittill( "death" ); + if ( isDefined( self.carryobject ) ) + { + self.carryobject thread setdropped(); + } +} + +ondisconnect() +{ + level endon( "game_ended" ); + self waittill( "disconnect" ); + if ( isDefined( self.carryobject ) ) + { + self.carryobject thread setdropped(); + } +} + +createcarryobject( ownerteam, trigger, visuals, offset, objectivename ) +{ + carryobject = spawnstruct(); + carryobject.type = "carryObject"; + carryobject.curorigin = trigger.origin; + carryobject.ownerteam = ownerteam; + carryobject.entnum = trigger getentitynumber(); + if ( issubstr( trigger.classname, "use" ) ) + { + carryobject.triggertype = "use"; + } + else + { + carryobject.triggertype = "proximity"; + } + trigger.baseorigin = trigger.origin; + carryobject.trigger = trigger; + carryobject.useweapon = undefined; + if ( !isDefined( offset ) ) + { + offset = ( 0, 0, 1 ); + } + carryobject.offset3d = offset; + carryobject.newstyle = 0; + if ( isDefined( objectivename ) ) + { + carryobject.newstyle = 1; + } + else + { + objectivename = &""; + } + index = 0; + while ( index < visuals.size ) + { + visuals[ index ].baseorigin = visuals[ index ].origin; + visuals[ index ].baseangles = visuals[ index ].angles; + index++; + } + carryobject.visuals = visuals; + carryobject.compassicons = []; + carryobject.objid = []; + while ( !carryobject.newstyle ) + { + _a272 = level.teams; + _k272 = getFirstArrayKey( _a272 ); + while ( isDefined( _k272 ) ) + { + team = _a272[ _k272 ]; + carryobject.objid[ team ] = getnextobjid(); + _k272 = getNextArrayKey( _a272, _k272 ); + } + } + carryobject.objidpingfriendly = 0; + carryobject.objidpingenemy = 0; + level.objidstart += 2; + carryobject.objectiveid = getnextobjid(); + objective_add( carryobject.objectiveid, "invisible", carryobject.curorigin, objectivename ); + carryobject.carrier = undefined; + carryobject.isresetting = 0; + carryobject.interactteam = "none"; + carryobject.allowweapons = 0; + carryobject.visiblecarriermodel = undefined; + carryobject.worldicons = []; + carryobject.carriervisible = 0; + carryobject.visibleteam = "none"; + carryobject.worldiswaypoint = []; + carryobject.carryicon = undefined; + carryobject.ondrop = undefined; + carryobject.onpickup = undefined; + carryobject.onreset = undefined; + if ( carryobject.triggertype == "use" ) + { + carryobject thread carryobjectusethink(); + } + else + { + carryobject thread carryobjectproxthink(); + } + carryobject thread updatecarryobjectorigin(); + carryobject thread updatecarryobjectobjectiveorigin(); + return carryobject; +} + +carryobjectusethink() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + while ( 1 ) + { + self.trigger waittill( "trigger", player ); + while ( self.isresetting ) + { + continue; + } + while ( !isalive( player ) ) + { + continue; + } + if ( isDefined( player.laststand ) && player.laststand ) + { + continue; + } + while ( !self caninteractwith( player ) ) + { + continue; + } + while ( !player.canpickupobject ) + { + continue; + } + while ( player.throwinggrenade ) + { + continue; + } + while ( isDefined( self.carrier ) ) + { + continue; + } + while ( player isinvehicle() ) + { + continue; + } + while ( player isweaponviewonlylinked() ) + { + continue; + } + while ( !player istouching( self.trigger ) ) + { + continue; + } + self setpickedup( player ); + } +} + +carryobjectproxthink() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + while ( 1 ) + { + self.trigger waittill( "trigger", player ); + while ( self.isresetting ) + { + continue; + } + while ( !isalive( player ) ) + { + continue; + } + if ( isDefined( player.laststand ) && player.laststand ) + { + continue; + } + while ( !self caninteractwith( player ) ) + { + continue; + } + while ( !player.canpickupobject ) + { + continue; + } + while ( player.throwinggrenade ) + { + continue; + } + while ( isDefined( self.carrier ) ) + { + continue; + } + while ( player isinvehicle() ) + { + continue; + } + while ( player isweaponviewonlylinked() ) + { + continue; + } + while ( !player istouching( self.trigger ) ) + { + continue; + } + self setpickedup( player ); + } +} + +pickupobjectdelay( origin ) +{ + level endon( "game_ended" ); + self endon( "death" ); + self endon( "disconnect" ); + self.canpickupobject = 0; + for ( ;; ) + { + if ( distancesquared( self.origin, origin ) > 4096 ) + { + break; + } + else + { + wait 0,2; + } + } + self.canpickupobject = 1; +} + +setpickedup( player ) +{ + if ( isDefined( player.carryobject ) ) + { + if ( isDefined( player.carryobject.swappable ) && player.carryobject.swappable ) + { + player.carryobject thread setdropped(); + } + else + { + if ( isDefined( self.onpickupfailed ) ) + { + self [[ self.onpickupfailed ]]( player ); + } + return; + } + } + player giveobject( self ); + self setcarrier( player ); + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ] thread hideobject(); + index++; + } + self.trigger.origin += vectorScale( ( 0, 0, 1 ), 10000 ); + self notify( "pickup_object" ); + if ( isDefined( self.onpickup ) ) + { + self [[ self.onpickup ]]( player ); + } + self updatecompassicons(); + self updateworldicons(); + self updateobjective(); +} + +hideobject() +{ + radius = 32; + origin = self.origin; + grenades = getentarray( "grenade", "classname" ); + radiussq = radius * radius; + linkedgrenades = []; + linkedgrenadesindex = 0; + self hide(); + i = 0; + while ( i < grenades.size ) + { + if ( distancesquared( origin, grenades[ i ].origin ) < radiussq ) + { + if ( grenades[ i ] islinkedto( self ) ) + { + linkedgrenades[ linkedgrenadesindex ] = grenades[ i ]; + linkedgrenades[ linkedgrenadesindex ] unlink(); + linkedgrenadesindex++; + } + } + i++; + } + self.origin += vectorScale( ( 0, 0, 1 ), 10000 ); + waittillframeend; + i = 0; + while ( i < linkedgrenadesindex ) + { + linkedgrenades[ i ] launch( vectorScale( ( 0, 0, 1 ), 5 ) ); + i++; + } +} + +updatecarryobjectorigin() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + if ( self.newstyle ) + { + return; + } + objpingdelay = level.objectivepingdelay; + for ( ;; ) + { + if ( isDefined( self.carrier ) && level.teambased ) + { + self.curorigin = self.carrier.origin + vectorScale( ( 0, 0, 1 ), 75 ); + while ( self.visibleteam != "friendly" && self.visibleteam == "any" && self.objidpingfriendly ) + { + _a579 = level.teams; + _k579 = getFirstArrayKey( _a579 ); + while ( isDefined( _k579 ) ) + { + team = _a579[ _k579 ]; + if ( self isfriendlyteam( team ) ) + { + if ( self.objpoints[ team ].isshown ) + { + self.objpoints[ team ].alpha = self.objpoints[ team ].basealpha; + self.objpoints[ team ] fadeovertime( objpingdelay + 1 ); + self.objpoints[ team ].alpha = 0; + } + objective_position( self.objid[ team ], self.curorigin ); + } + _k579 = getNextArrayKey( _a579, _k579 ); + } + } + if ( self.visibleteam != "enemy" && self.visibleteam == "any" && self.objidpingenemy ) + { + if ( !self isfriendlyteam( team ) ) + { + if ( self.objpoints[ team ].isshown ) + { + self.objpoints[ team ].alpha = self.objpoints[ team ].basealpha; + self.objpoints[ team ] fadeovertime( objpingdelay + 1 ); + self.objpoints[ team ].alpha = 0; + } + objective_position( self.objid[ team ], self.curorigin ); + } + } + self wait_endon( objpingdelay, "dropped", "reset" ); + continue; + } + else + { + if ( isDefined( self.carrier ) ) + { + self.curorigin = self.carrier.origin + vectorScale( ( 0, 0, 1 ), 75 ); + wait 0,05; + break; + } + else + { + wait 0,05; + } + } + } +} + +updatecarryobjectobjectiveorigin() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + if ( !self.newstyle ) + { + return; + } + objpingdelay = level.objectivepingdelay; + for ( ;; ) + { + if ( isDefined( self.carrier ) ) + { + self.curorigin = self.carrier.origin; + objective_position( self.objectiveid, self.curorigin ); + self wait_endon( objpingdelay, "dropped", "reset" ); + continue; + } + else + { + objective_position( self.objectiveid, self.curorigin ); + wait 0,05; + } + } +} + +giveobject( object ) +{ +/# + assert( !isDefined( self.carryobject ) ); +#/ + self.carryobject = object; + self thread trackcarrier(); + if ( !object.allowweapons ) + { + self _disableweapon(); + self thread manualdropthink(); + } + self.disallowvehicleusage = 1; + if ( isDefined( object.visiblecarriermodel ) ) + { + self maps/mp/gametypes_zm/_weapons::forcestowedweaponupdate(); + } + if ( !object.newstyle ) + { + if ( isDefined( object.carryicon ) ) + { + if ( self issplitscreen() ) + { + self.carryicon = createicon( object.carryicon, 35, 35 ); + self.carryicon.x = -130; + self.carryicon.y = -90; + self.carryicon.horzalign = "right"; + self.carryicon.vertalign = "bottom"; + } + else self.carryicon = createicon( object.carryicon, 50, 50 ); + if ( !object.allowweapons ) + { + self.carryicon setpoint( "CENTER", "CENTER", 0, 60 ); + } + else + { + self.carryicon.x = 130; + self.carryicon.y = -60; + self.carryicon.horzalign = "user_left"; + self.carryicon.vertalign = "user_bottom"; + } + self.carryicon.alpha = 0,75; + self.carryicon.hidewhileremotecontrolling = 1; + self.carryicon.hidewheninkillcam = 1; + } + } +} + +returnhome() +{ + self.isresetting = 1; + self notify( "reset" ); + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ].origin = self.visuals[ index ].baseorigin; + self.visuals[ index ].angles = self.visuals[ index ].baseangles; + self.visuals[ index ] show(); + index++; + } + self.trigger.origin = self.trigger.baseorigin; + self.curorigin = self.trigger.origin; + if ( isDefined( self.onreset ) ) + { + self [[ self.onreset ]](); + } + self clearcarrier(); + updateworldicons(); + updatecompassicons(); + updateobjective(); + self.isresetting = 0; +} + +isobjectawayfromhome() +{ + if ( isDefined( self.carrier ) ) + { + return 1; + } + if ( distancesquared( self.trigger.origin, self.trigger.baseorigin ) > 4 ) + { + return 1; + } + return 0; +} + +setposition( origin, angles ) +{ + self.isresetting = 1; + index = 0; + while ( index < self.visuals.size ) + { + visual = self.visuals[ index ]; + visual.origin = origin; + visual.angles = angles; + visual show(); + index++; + } + self.trigger.origin = origin; + self.curorigin = self.trigger.origin; + self clearcarrier(); + updateworldicons(); + updatecompassicons(); + updateobjective(); + self.isresetting = 0; +} + +onplayerlaststand() +{ + if ( isDefined( self.carryobject ) ) + { + self.carryobject thread setdropped(); + } +} + +setdropped() +{ + self.isresetting = 1; + self notify( "dropped" ); + startorigin = ( 0, 0, 1 ); + endorigin = ( 0, 0, 1 ); + body = undefined; + if ( isDefined( self.carrier ) && self.carrier.team != "spectator" ) + { + startorigin = self.carrier.origin + vectorScale( ( 0, 0, 1 ), 20 ); + endorigin = self.carrier.origin - vectorScale( ( 0, 0, 1 ), 2000 ); + body = self.carrier.body; + self.visuals[ 0 ].origin = self.carrier.origin; + } + else + { + startorigin = self.safeorigin + vectorScale( ( 0, 0, 1 ), 20 ); + endorigin = self.safeorigin - vectorScale( ( 0, 0, 1 ), 20 ); + } + trace = playerphysicstrace( startorigin, endorigin ); + angletrace = bullettrace( startorigin, endorigin, 0, body ); + droppingplayer = self.carrier; + if ( isDefined( trace ) ) + { + tempangle = randomfloat( 360 ); + droporigin = trace; + if ( angletrace[ "fraction" ] < 1 && distance( angletrace[ "position" ], trace ) < 10 ) + { + forward = ( cos( tempangle ), sin( tempangle ), 0 ); + forward = vectornormalize( forward - vectorScale( angletrace[ "normal" ], vectordot( forward, angletrace[ "normal" ] ) ) ); + dropangles = vectorToAngle( forward ); + } + else + { + dropangles = ( 0, tempangle, 0 ); + } + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ].origin = droporigin; + self.visuals[ index ].angles = dropangles; + self.visuals[ index ] show(); + index++; + } + self.trigger.origin = droporigin; + self.curorigin = self.trigger.origin; + self thread pickuptimeout( trace[ 2 ], startorigin[ 2 ] ); + } + else + { + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ].origin = self.visuals[ index ].baseorigin; + self.visuals[ index ].angles = self.visuals[ index ].baseangles; + self.visuals[ index ] show(); + index++; + } + self.trigger.origin = self.trigger.baseorigin; + self.curorigin = self.trigger.baseorigin; + } + if ( isDefined( self.ondrop ) ) + { + self [[ self.ondrop ]]( droppingplayer ); + } + self clearcarrier(); + self updatecompassicons(); + self updateworldicons(); + self updateobjective(); + self.isresetting = 0; +} + +setcarrier( carrier ) +{ + self.carrier = carrier; + objective_setplayerusing( self.objectiveid, carrier ); + self thread updatevisibilityaccordingtoradar(); +} + +clearcarrier() +{ + if ( !isDefined( self.carrier ) ) + { + return; + } + self.carrier takeobject( self ); + objective_clearplayerusing( self.objectiveid, self.carrier ); + self.carrier = undefined; + self notify( "carrier_cleared" ); +} + +shouldbereset( minz, maxz ) +{ + minetriggers = getentarray( "minefield", "targetname" ); + hurttriggers = getentarray( "trigger_hurt", "classname" ); + elevators = getentarray( "script_elevator", "targetname" ); + index = 0; + while ( index < minetriggers.size ) + { + if ( self.visuals[ 0 ] istouchingswept( minetriggers[ index ], minz, maxz ) ) + { + return 1; + } + index++; + } + index = 0; + while ( index < hurttriggers.size ) + { + if ( self.visuals[ 0 ] istouchingswept( hurttriggers[ index ], minz, maxz ) ) + { + return 1; + } + index++; + } + index = 0; + while ( index < elevators.size ) + { +/# + assert( isDefined( elevators[ index ].occupy_volume ) ); +#/ + if ( self.visuals[ 0 ] istouchingswept( elevators[ index ].occupy_volume, minz, maxz ) ) + { + return 1; + } + index++; + } + return 0; +} + +pickuptimeout( minz, maxz ) +{ + self endon( "pickup_object" ); + self endon( "stop_pickup_timeout" ); + wait 0,05; + if ( self shouldbereset( minz, maxz ) ) + { + self returnhome(); + return; + } + if ( isDefined( self.autoresettime ) ) + { + wait self.autoresettime; + if ( !isDefined( self.carrier ) ) + { + self returnhome(); + } + } +} + +takeobject( object ) +{ + if ( isDefined( self.carryicon ) ) + { + self.carryicon destroyelem(); + } + if ( isDefined( object.visiblecarriermodel ) ) + { + self maps/mp/gametypes_zm/_weapons::detach_all_weapons(); + } + self.carryobject = undefined; + if ( !isalive( self ) ) + { + return; + } + self notify( "drop_object" ); + self.disallowvehicleusage = 0; + if ( object.triggertype == "proximity" ) + { + self thread pickupobjectdelay( object.trigger.origin ); + } + if ( isDefined( object.visiblecarriermodel ) ) + { + self maps/mp/gametypes_zm/_weapons::forcestowedweaponupdate(); + } + if ( !object.allowweapons ) + { + self _enableweapon(); + } +} + +trackcarrier() +{ + level endon( "game_ended" ); + self endon( "disconnect" ); + self endon( "death" ); + self endon( "drop_object" ); + while ( isDefined( self.carryobject ) && isalive( self ) ) + { + if ( self isonground() ) + { + trace = bullettrace( self.origin + vectorScale( ( 0, 0, 1 ), 20 ), self.origin - vectorScale( ( 0, 0, 1 ), 20 ), 0, undefined ); + if ( trace[ "fraction" ] < 1 ) + { + self.carryobject.safeorigin = trace[ "position" ]; + } + } + wait 0,05; + } +} + +manualdropthink() +{ + level endon( "game_ended" ); + self endon( "disconnect" ); + self endon( "death" ); + self endon( "drop_object" ); + for ( ;; ) + { + while ( !self attackbuttonpressed() && !self fragbuttonpressed() || self secondaryoffhandbuttonpressed() && self meleebuttonpressed() ) + { + wait 0,05; + } + while ( !self attackbuttonpressed() && !self fragbuttonpressed() && !self secondaryoffhandbuttonpressed() && !self meleebuttonpressed() ) + { + wait 0,05; + } + if ( isDefined( self.carryobject ) && !self usebuttonpressed() ) + { + self.carryobject thread setdropped(); + } + } +} + +createuseobject( ownerteam, trigger, visuals, offset, objectivename ) +{ + useobject = spawnstruct(); + useobject.type = "useObject"; + useobject.curorigin = trigger.origin; + useobject.ownerteam = ownerteam; + useobject.entnum = trigger getentitynumber(); + useobject.keyobject = undefined; + if ( issubstr( trigger.classname, "use" ) ) + { + useobject.triggertype = "use"; + } + else + { + useobject.triggertype = "proximity"; + } + useobject.trigger = trigger; + index = 0; + while ( index < visuals.size ) + { + visuals[ index ].baseorigin = visuals[ index ].origin; + visuals[ index ].baseangles = visuals[ index ].angles; + index++; + } + useobject.visuals = visuals; + if ( !isDefined( offset ) ) + { + offset = ( 0, 0, 1 ); + } + useobject.offset3d = offset; + useobject.newstyle = 0; + if ( isDefined( objectivename ) ) + { + useobject.newstyle = 1; + } + else + { + objectivename = &""; + } + useobject.compassicons = []; + useobject.objid = []; + if ( !useobject.newstyle ) + { + _a1138 = level.teams; + _k1138 = getFirstArrayKey( _a1138 ); + while ( isDefined( _k1138 ) ) + { + team = _a1138[ _k1138 ]; + useobject.objid[ team ] = getnextobjid(); + _k1138 = getNextArrayKey( _a1138, _k1138 ); + } + if ( level.teambased ) + { + _a1145 = level.teams; + _k1145 = getFirstArrayKey( _a1145 ); + while ( isDefined( _k1145 ) ) + { + team = _a1145[ _k1145 ]; + objective_add( useobject.objid[ team ], "invisible", useobject.curorigin ); + objective_team( useobject.objid[ team ], team ); + _k1145 = getNextArrayKey( _a1145, _k1145 ); + } + } + else objective_add( useobject.objid[ level.nonteambasedteam ], "invisible", useobject.curorigin ); + } + useobject.objectiveid = getnextobjid(); + objective_add( useobject.objectiveid, "invisible", useobject.curorigin, objectivename ); + useobject.interactteam = "none"; + useobject.worldicons = []; + useobject.visibleteam = "none"; + useobject.worldiswaypoint = []; + useobject.onuse = undefined; + useobject.oncantuse = undefined; + useobject.usetext = "default"; + useobject.usetime = 10000; + useobject clearprogress(); + useobject.decayprogress = 0; + if ( useobject.triggertype == "proximity" ) + { + useobject.numtouching[ "neutral" ] = 0; + useobject.numtouching[ "none" ] = 0; + useobject.touchlist[ "neutral" ] = []; + useobject.touchlist[ "none" ] = []; + _a1208 = level.teams; + _k1208 = getFirstArrayKey( _a1208 ); + while ( isDefined( _k1208 ) ) + { + team = _a1208[ _k1208 ]; + useobject.numtouching[ team ] = 0; + useobject.touchlist[ team ] = []; + _k1208 = getNextArrayKey( _a1208, _k1208 ); + } + useobject.userate = 0; + useobject.claimteam = "none"; + useobject.claimplayer = undefined; + useobject.lastclaimteam = "none"; + useobject.lastclaimtime = 0; + useobject.claimgraceperiod = 1; + useobject.mustmaintainclaim = 0; + useobject.cancontestclaim = 0; + useobject thread useobjectproxthink(); + } + else + { + useobject.userate = 1; + useobject thread useobjectusethink(); + } + return useobject; +} + +setkeyobject( object ) +{ + if ( !isDefined( object ) ) + { + self.keyobject = undefined; + return; + } + if ( !isDefined( self.keyobject ) ) + { + self.keyobject = []; + } + self.keyobject[ self.keyobject.size ] = object; +} + +haskeyobject( use ) +{ + x = 0; + while ( x < use.keyobject.size ) + { + if ( isDefined( self.carryobject ) && isDefined( use.keyobject[ x ] ) && self.carryobject == use.keyobject[ x ] ) + { + return 1; + } + x++; + } + return 0; +} + +useobjectusethink() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + while ( 1 ) + { + self.trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !self caninteractwith( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + while ( player isinvehicle() ) + { + continue; + } + while ( isDefined( self.keyobject ) || !isDefined( player.carryobject ) && !player haskeyobject( self ) ) + { + if ( isDefined( self.oncantuse ) ) + { + self [[ self.oncantuse ]]( player ); + } + } + result = 1; + if ( self.usetime > 0 ) + { + if ( isDefined( self.onbeginuse ) ) + { + self [[ self.onbeginuse ]]( player ); + } + team = player.pers[ "team" ]; + result = self useholdthink( player ); + if ( isDefined( self.onenduse ) ) + { + self [[ self.onenduse ]]( team, player, result ); + } + } + while ( !result ) + { + continue; + } + if ( isDefined( self.onuse ) ) + { + self [[ self.onuse ]]( player ); + } + } +} + +getearliestclaimplayer() +{ +/# + assert( self.claimteam != "none" ); +#/ + team = self.claimteam; + earliestplayer = self.claimplayer; + while ( self.touchlist[ team ].size > 0 ) + { + earliesttime = undefined; + players = getarraykeys( self.touchlist[ team ] ); + index = 0; + while ( index < players.size ) + { + touchdata = self.touchlist[ team ][ players[ index ] ]; + if ( !isDefined( earliesttime ) || touchdata.starttime < earliesttime ) + { + earliestplayer = touchdata.player; + earliesttime = touchdata.starttime; + } + index++; + } + } + return earliestplayer; +} + +useobjectproxthink() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + self thread proxtriggerthink(); + while ( 1 ) + { + if ( self.usetime && self.curprogress >= self.usetime ) + { + self clearprogress(); + creditplayer = getearliestclaimplayer(); + if ( isDefined( self.onenduse ) ) + { + self [[ self.onenduse ]]( self getclaimteam(), creditplayer, isDefined( creditplayer ) ); + } + if ( isDefined( creditplayer ) && isDefined( self.onuse ) ) + { + self [[ self.onuse ]]( creditplayer ); + } + self setclaimteam( "none" ); + self.claimplayer = undefined; + } + if ( self.claimteam != "none" ) + { + if ( self useobjectlockedforteam( self.claimteam ) ) + { + if ( isDefined( self.onenduse ) ) + { + self [[ self.onenduse ]]( self getclaimteam(), self.claimplayer, 0 ); + } + self setclaimteam( "none" ); + self.claimplayer = undefined; + self clearprogress(); + } + else if ( self.usetime ) + { + if ( self.decayprogress && !self.numtouching[ self.claimteam ] ) + { + if ( isDefined( self.claimplayer ) ) + { + if ( isDefined( self.onenduse ) ) + { + self [[ self.onenduse ]]( self getclaimteam(), self.claimplayer, 0 ); + } + self.claimplayer = undefined; + } + decayscale = 0; + if ( self.decaytime ) + { + decayscale = self.usetime / self.decaytime; + } + self.curprogress -= 50 * self.userate * decayscale; + if ( self.curprogress <= 0 ) + { + self clearprogress(); + } + self updatecurrentprogress(); + if ( isDefined( self.onuseupdate ) ) + { + self [[ self.onuseupdate ]]( self getclaimteam(), self.curprogress / self.usetime, ( 50 * self.userate * decayscale ) / self.usetime ); + } + if ( self.curprogress == 0 ) + { + self setclaimteam( "none" ); + } + } + else + { + if ( !self.numtouching[ self.claimteam ] ) + { + if ( isDefined( self.onenduse ) ) + { + self [[ self.onenduse ]]( self getclaimteam(), self.claimplayer, 0 ); + } + self setclaimteam( "none" ); + self.claimplayer = undefined; + break; + } + else + { + self.curprogress += 50 * self.userate; + self updatecurrentprogress(); + if ( isDefined( self.onuseupdate ) ) + { + self [[ self.onuseupdate ]]( self getclaimteam(), self.curprogress / self.usetime, ( 50 * self.userate ) / self.usetime ); + } + } + } + } + else if ( !self.mustmaintainclaim ) + { + if ( isDefined( self.onuse ) ) + { + self [[ self.onuse ]]( self.claimplayer ); + } + if ( !self.mustmaintainclaim ) + { + self setclaimteam( "none" ); + self.claimplayer = undefined; + } + } + else if ( !self.numtouching[ self.claimteam ] ) + { + if ( isDefined( self.onunoccupied ) ) + { + self [[ self.onunoccupied ]](); + } + self setclaimteam( "none" ); + self.claimplayer = undefined; + } + else + { + if ( self.cancontestclaim ) + { + numother = getnumtouchingexceptteam( self.claimteam ); + if ( numother > 0 ) + { + if ( isDefined( self.oncontested ) ) + { + self [[ self.oncontested ]](); + } + self setclaimteam( "none" ); + self.claimplayer = undefined; + } + } + } + } + else + { + if ( self.curprogress > 0 && ( getTime() - self.lastclaimtime ) > ( self.claimgraceperiod * 1000 ) ) + { + self clearprogress(); + } + } + wait 0,05; + maps/mp/gametypes_zm/_hostmigration::waittillhostmigrationdone(); + } +} + +useobjectlockedforteam( team ) +{ + if ( isDefined( self.teamlock ) && isDefined( level.teams[ team ] ) ) + { + return self.teamlock[ team ]; + } + return 0; +} + +canclaim( player ) +{ + if ( self.cancontestclaim ) + { + numother = getnumtouchingexceptteam( player.pers[ "team" ] ); + if ( numother != 0 ) + { + return 0; + } + } + if ( !isDefined( self.keyobject ) || isDefined( player.carryobject ) && player haskeyobject( self ) ) + { + return 1; + } + return 0; +} + +proxtriggerthink() +{ + level endon( "game_ended" ); + self.trigger endon( "destroyed" ); + entitynumber = self.entnum; + while ( 1 ) + { + self.trigger waittill( "trigger", player ); + if ( !isalive( player ) || self useobjectlockedforteam( player.pers[ "team" ] ) ) + { + continue; + } + while ( player isinvehicle() ) + { + continue; + } + while ( player isweaponviewonlylinked() ) + { + continue; + } + if ( self caninteractwith( player ) && self.claimteam == "none" ) + { + if ( self canclaim( player ) ) + { + setclaimteam( player.pers[ "team" ] ); + self.claimplayer = player; + if ( self.usetime && isDefined( self.onbeginuse ) ) + { + self [[ self.onbeginuse ]]( self.claimplayer ); + } + break; + } + else + { + if ( isDefined( self.oncantuse ) ) + { + self [[ self.oncantuse ]]( player ); + } + } + } + if ( isalive( player ) && !isDefined( player.touchtriggers[ entitynumber ] ) ) + { + player thread triggertouchthink( self ); + } + } +} + +clearprogress() +{ + self.curprogress = 0; + self updatecurrentprogress(); + if ( isDefined( self.onuseclear ) ) + { + self [[ self.onuseclear ]](); + } +} + +setclaimteam( newteam ) +{ +/# + assert( newteam != self.claimteam ); +#/ + if ( self.claimteam == "none" && ( getTime() - self.lastclaimtime ) > ( self.claimgraceperiod * 1000 ) ) + { + self clearprogress(); + } + else + { + if ( newteam != "none" && newteam != self.lastclaimteam ) + { + self clearprogress(); + } + } + self.lastclaimteam = self.claimteam; + self.lastclaimtime = getTime(); + self.claimteam = newteam; + self updateuserate(); +} + +getclaimteam() +{ + return self.claimteam; +} + +continuetriggertouchthink( team, object ) +{ + if ( !isalive( self ) ) + { + return 0; + } + if ( self useobjectlockedforteam( team ) ) + { + return 0; + } + if ( self isinvehicle() ) + { + return 0; + } + if ( !self istouching( object.trigger ) ) + { + return 0; + } + return 1; +} + +triggertouchthink( object ) +{ + team = self.pers[ "team" ]; + score = 1; + object.numtouching[ team ] += score; + if ( object.usetime ) + { + object updateuserate(); + } + touchname = "player" + self.clientid; + struct = spawnstruct(); + struct.player = self; + struct.starttime = getTime(); + object.touchlist[ team ][ touchname ] = struct; + objective_setplayerusing( object.objectiveid, self ); + self.touchtriggers[ object.entnum ] = object.trigger; + if ( isDefined( object.ontouchuse ) ) + { + object [[ object.ontouchuse ]]( self ); + } + while ( self continuetriggertouchthink( team, object ) ) + { + if ( object.usetime ) + { + self updateproxbar( object, 0 ); + } + wait 0,05; + } + if ( isDefined( self ) ) + { + if ( object.usetime ) + { + self updateproxbar( object, 1 ); + } + objective_clearplayerusing( object.objectiveid, self ); + } + if ( level.gameended ) + { + return; + } + object.numtouching[ team ] -= score; + if ( object.numtouching[ team ] < 1 ) + { + object.numtouching[ team ] = 0; + } + if ( object.usetime ) + { + if ( object.numtouching[ team ] <= 0 && object.curprogress >= object.usetime ) + { + object.curprogress = object.usetime - 1; + object updatecurrentprogress(); + } + } + if ( isDefined( self ) && isDefined( object.onendtouchuse ) ) + { + object [[ object.onendtouchuse ]]( self ); + } + object updateuserate(); +} + +updateproxbar( object, forceremove ) +{ + if ( object.newstyle ) + { + return; + } + if ( !forceremove && object.decayprogress ) + { + if ( !object caninteractwith( self ) ) + { + if ( isDefined( self.proxbar ) ) + { + self.proxbar hideelem(); + } + if ( isDefined( self.proxbartext ) ) + { + self.proxbartext hideelem(); + } + return; + } + else if ( !isDefined( self.proxbar ) ) + { + self.proxbar = createprimaryprogressbar(); + self.proxbar.lastuserate = -1; + } + if ( self.pers[ "team" ] == object.claimteam ) + { + if ( self.proxbar.bar.color != ( 0, 0, 1 ) ) + { + self.proxbar.bar.color = ( 0, 0, 1 ); + self.proxbar.lastuserate = -1; + } + } + else + { + if ( self.proxbar.bar.color != ( 0, 0, 1 ) ) + { + self.proxbar.bar.color = ( 0, 0, 1 ); + self.proxbar.lastuserate = -1; + } + } + } + else + { + if ( !forceremove || !object caninteractwith( self ) && self.pers[ "team" ] != object.claimteam ) + { + if ( isDefined( self.proxbar ) ) + { + self.proxbar hideelem(); + } + if ( isDefined( self.proxbartext ) ) + { + self.proxbartext hideelem(); + } + return; + } + } + if ( !isDefined( self.proxbar ) ) + { + self.proxbar = self createprimaryprogressbar(); + self.proxbar.lastuserate = -1; + self.proxbar.lasthostmigrationstate = 0; + } + if ( self.proxbar.hidden ) + { + self.proxbar showelem(); + self.proxbar.lastuserate = -1; + self.proxbar.lasthostmigrationstate = 0; + } + if ( !isDefined( self.proxbartext ) ) + { + self.proxbartext = self createprimaryprogressbartext(); + self.proxbartext settext( object.usetext ); + } + if ( self.proxbartext.hidden ) + { + self.proxbartext showelem(); + self.proxbartext settext( object.usetext ); + } + if ( self.proxbar.lastuserate != object.userate || self.proxbar.lasthostmigrationstate != isDefined( level.hostmigrationtimer ) ) + { + if ( object.curprogress > object.usetime ) + { + object.curprogress = object.usetime; + } + if ( object.decayprogress && self.pers[ "team" ] != object.claimteam ) + { + if ( object.curprogress > 0 ) + { + progress = object.curprogress / object.usetime; + rate = ( 1000 / object.usetime ) * ( object.userate * -1 ); + if ( isDefined( level.hostmigrationtimer ) ) + { + rate = 0; + } + self.proxbar updatebar( progress, rate ); + } + } + else + { + progress = object.curprogress / object.usetime; + rate = ( 1000 / object.usetime ) * object.userate; + if ( isDefined( level.hostmigrationtimer ) ) + { + rate = 0; + } + self.proxbar updatebar( progress, rate ); + } + self.proxbar.lasthostmigrationstate = isDefined( level.hostmigrationtimer ); + self.proxbar.lastuserate = object.userate; + } +} + +getnumtouchingexceptteam( ignoreteam ) +{ + numtouching = 0; + _a1855 = level.teams; + _k1855 = getFirstArrayKey( _a1855 ); + while ( isDefined( _k1855 ) ) + { + team = _a1855[ _k1855 ]; + if ( ignoreteam == team ) + { + } + else + { + numtouching += self.numtouching[ team ]; + } + _k1855 = getNextArrayKey( _a1855, _k1855 ); + } + return numtouching; +} + +updateuserate() +{ + numclaimants = self.numtouching[ self.claimteam ]; + numother = 0; + numother = getnumtouchingexceptteam( self.claimteam ); + self.userate = 0; + if ( self.decayprogress ) + { + if ( numclaimants && !numother ) + { + self.userate = numclaimants; + } + else + { + if ( !numclaimants && numother ) + { + self.userate = numother; + } + else + { + if ( !numclaimants && !numother ) + { + self.userate = 0; + } + } + } + } + else + { + if ( numclaimants && !numother ) + { + self.userate = numclaimants; + } + } + if ( isDefined( self.onupdateuserate ) ) + { + self [[ self.onupdateuserate ]](); + } +} + +useholdthink( player ) +{ + player notify( "use_hold" ); + if ( isDefined( self.dontlinkplayertotrigger ) && !self.dontlinkplayertotrigger ) + { + player playerlinkto( self.trigger ); + player playerlinkedoffsetenable(); + } + player clientclaimtrigger( self.trigger ); + player.claimtrigger = self.trigger; + useweapon = self.useweapon; + lastweapon = player getcurrentweapon(); + if ( isDefined( useweapon ) ) + { +/# + assert( isDefined( lastweapon ) ); +#/ + if ( lastweapon == useweapon ) + { +/# + assert( isDefined( player.lastnonuseweapon ) ); +#/ + lastweapon = player.lastnonuseweapon; + } +/# + assert( lastweapon != useweapon ); +#/ + player.lastnonuseweapon = lastweapon; + player giveweapon( useweapon ); + player setweaponammostock( useweapon, 0 ); + player setweaponammoclip( useweapon, 0 ); + player switchtoweapon( useweapon ); + } + else + { + player _disableweapon(); + } + self clearprogress(); + self.inuse = 1; + self.userate = 0; + objective_setplayerusing( self.objectiveid, player ); + player thread personalusebar( self ); + result = useholdthinkloop( player, lastweapon ); + if ( isDefined( player ) ) + { + objective_clearplayerusing( self.objectiveid, player ); + self clearprogress(); + if ( isDefined( player.attachedusemodel ) ) + { + player detach( player.attachedusemodel, "tag_inhand" ); + player.attachedusemodel = undefined; + } + player notify( "done_using" ); + } + if ( isDefined( useweapon ) && isDefined( player ) ) + { + player thread takeuseweapon( useweapon ); + } + if ( isDefined( result ) && result ) + { + return 1; + } + if ( isDefined( player ) ) + { + player.claimtrigger = undefined; + if ( isDefined( useweapon ) ) + { + ammo = player getweaponammoclip( lastweapon ); + if ( lastweapon != "none" && isweaponequipment( lastweapon ) && player getweaponammoclip( lastweapon ) != 0 ) + { + player switchtoweapon( lastweapon ); + } + else + { + player takeweapon( useweapon ); + } + } + else + { + if ( isalive( player ) ) + { + player _enableweapon(); + } + } + if ( isDefined( self.dontlinkplayertotrigger ) && !self.dontlinkplayertotrigger ) + { + player unlink(); + } + if ( !isalive( player ) ) + { + player.killedinuse = 1; + } + } + self.inuse = 0; + if ( self.trigger.classname == "trigger_radius_use" ) + { + player clientreleasetrigger( self.trigger ); + } + else + { + self.trigger releaseclaimedtrigger(); + } + return 0; +} + +takeuseweapon( useweapon ) +{ + self endon( "use_hold" ); + self endon( "death" ); + self endon( "disconnect" ); + level endon( "game_ended" ); + while ( self getcurrentweapon() == useweapon && !self.throwinggrenade ) + { + wait 0,05; + } + self takeweapon( useweapon ); +} + +continueholdthinkloop( player, waitforweapon, timedout, usetime ) +{ + maxwaittime = 1,5; + if ( !isalive( player ) ) + { + return 0; + } + if ( isDefined( player.laststand ) && player.laststand ) + { + return 0; + } + if ( self.curprogress >= usetime ) + { + return 0; + } + if ( !player usebuttonpressed() ) + { + return 0; + } + if ( player.throwinggrenade ) + { + return 0; + } + if ( player meleebuttonpressed() ) + { + return 0; + } + if ( player isinvehicle() ) + { + return 0; + } + if ( player isremotecontrolling() ) + { + return 0; + } + if ( player isweaponviewonlylinked() ) + { + return 0; + } + if ( !player istouching( self.trigger ) ) + { + return 0; + } + if ( !self.userate && !waitforweapon ) + { + return 0; + } + if ( waitforweapon && timedout > maxwaittime ) + { + return 0; + } + return 1; +} + +updatecurrentprogress() +{ + if ( self.usetime ) + { + progress = float( self.curprogress ) / self.usetime; + objective_setprogress( self.objectiveid, clamp( progress, 0, 1 ) ); + } +} + +useholdthinkloop( player, lastweapon ) +{ + level endon( "game_ended" ); + self endon( "disabled" ); + useweapon = self.useweapon; + waitforweapon = 1; + timedout = 0; + usetime = self.usetime; + while ( self continueholdthinkloop( player, waitforweapon, timedout, usetime ) ) + { + timedout += 0,05; + if ( !isDefined( useweapon ) || player getcurrentweapon() == useweapon ) + { + self.curprogress += 50 * self.userate; + self updatecurrentprogress(); + self.userate = 1; + waitforweapon = 0; + } + else + { + self.userate = 0; + } + if ( self.curprogress >= usetime ) + { + self.inuse = 0; + player clientreleasetrigger( self.trigger ); + player.claimtrigger = undefined; + if ( isDefined( useweapon ) ) + { + player setweaponammostock( useweapon, 1 ); + player setweaponammoclip( useweapon, 1 ); + if ( lastweapon != "none" && isweaponequipment( lastweapon ) && player getweaponammoclip( lastweapon ) != 0 ) + { + player switchtoweapon( lastweapon ); + } + else + { + player takeweapon( useweapon ); + } + } + else + { + player _enableweapon(); + } + if ( isDefined( self.dontlinkplayertotrigger ) && !self.dontlinkplayertotrigger ) + { + player unlink(); + } + wait 0,05; + return isalive( player ); + } + wait 0,05; + maps/mp/gametypes_zm/_hostmigration::waittillhostmigrationdone(); + } + return 0; +} + +personalusebar( object ) +{ + self endon( "disconnect" ); + if ( object.newstyle ) + { + return; + } + if ( isDefined( self.usebar ) ) + { + return; + } + self.usebar = self createprimaryprogressbar(); + self.usebartext = self createprimaryprogressbartext(); + self.usebartext settext( object.usetext ); + usetime = object.usetime; + lastrate = -1; + lasthostmigrationstate = isDefined( level.hostmigrationtimer ); + while ( isalive( self ) && object.inuse && !level.gameended ) + { + if ( lastrate != object.userate || lasthostmigrationstate != isDefined( level.hostmigrationtimer ) ) + { + if ( object.curprogress > usetime ) + { + object.curprogress = usetime; + } + if ( object.decayprogress && self.pers[ "team" ] != object.claimteam ) + { + if ( object.curprogress > 0 ) + { + progress = object.curprogress / usetime; + rate = ( 1000 / usetime ) * ( object.userate * -1 ); + if ( isDefined( level.hostmigrationtimer ) ) + { + rate = 0; + } + self.proxbar updatebar( progress, rate ); + } + } + else + { + progress = object.curprogress / usetime; + rate = ( 1000 / usetime ) * object.userate; + if ( isDefined( level.hostmigrationtimer ) ) + { + rate = 0; + } + self.usebar updatebar( progress, rate ); + } + if ( !object.userate ) + { + self.usebar hideelem(); + self.usebartext hideelem(); + } + else + { + self.usebar showelem(); + self.usebartext showelem(); + } + } + lastrate = object.userate; + lasthostmigrationstate = isDefined( level.hostmigrationtimer ); + wait 0,05; + } + self.usebar destroyelem(); + self.usebartext destroyelem(); +} + +updatetrigger() +{ + if ( self.triggertype != "use" ) + { + return; + } + if ( self.interactteam == "none" ) + { + self.trigger.origin -= vectorScale( ( 0, 0, 1 ), 50000 ); + } + else if ( self.interactteam == "any" || !level.teambased ) + { + self.trigger.origin = self.curorigin; + self.trigger setteamfortrigger( "none" ); + } + else + { + if ( self.interactteam == "friendly" ) + { + self.trigger.origin = self.curorigin; + if ( isDefined( level.teams[ self.ownerteam ] ) ) + { + self.trigger setteamfortrigger( self.ownerteam ); + } + else + { + self.trigger.origin -= vectorScale( ( 0, 0, 1 ), 50000 ); + } + return; + } + else + { + if ( self.interactteam == "enemy" ) + { + self.trigger.origin = self.curorigin; + self.trigger setexcludeteamfortrigger( self.ownerteam ); + } + } + } +} + +updateobjective() +{ + if ( !self.newstyle ) + { + return; + } + objective_team( self.objectiveid, self.ownerteam ); + if ( self.visibleteam == "any" ) + { + objective_state( self.objectiveid, "active" ); + objective_visibleteams( self.objectiveid, level.spawnsystem.ispawn_teammask[ "all" ] ); + } + else if ( self.visibleteam == "friendly" ) + { + objective_state( self.objectiveid, "active" ); + objective_visibleteams( self.objectiveid, level.spawnsystem.ispawn_teammask[ self.ownerteam ] ); + } + else if ( self.visibleteam == "enemy" ) + { + objective_state( self.objectiveid, "active" ); + objective_visibleteams( self.objectiveid, level.spawnsystem.ispawn_teammask[ "all" ] & level.spawnsystem.ispawn_teammask[ self.ownerteam ] ); + } + else + { + objective_state( self.objectiveid, "invisible" ); + objective_visibleteams( self.objectiveid, 0 ); + } + if ( self.type == "carryObject" ) + { + if ( isalive( self.carrier ) ) + { + objective_onentity( self.objectiveid, self.carrier ); + return; + } + else + { + objective_clearentity( self.objectiveid ); + } + } +} + +updateworldicons() +{ + if ( self.visibleteam == "any" ) + { + updateworldicon( "friendly", 1 ); + updateworldicon( "enemy", 1 ); + } + else if ( self.visibleteam == "friendly" ) + { + updateworldicon( "friendly", 1 ); + updateworldicon( "enemy", 0 ); + } + else if ( self.visibleteam == "enemy" ) + { + updateworldicon( "friendly", 0 ); + updateworldicon( "enemy", 1 ); + } + else + { + updateworldicon( "friendly", 0 ); + updateworldicon( "enemy", 0 ); + } +} + +updateworldicon( relativeteam, showicon ) +{ +} + +updatecompassicons() +{ + if ( self.visibleteam == "any" ) + { + updatecompassicon( "friendly", 1 ); + updatecompassicon( "enemy", 1 ); + } + else if ( self.visibleteam == "friendly" ) + { + updatecompassicon( "friendly", 1 ); + updatecompassicon( "enemy", 0 ); + } + else if ( self.visibleteam == "enemy" ) + { + updatecompassicon( "friendly", 0 ); + updatecompassicon( "enemy", 1 ); + } + else + { + updatecompassicon( "friendly", 0 ); + updatecompassicon( "enemy", 0 ); + } +} + +updatecompassicon( relativeteam, showicon ) +{ + if ( self.newstyle ) + { + return; + } + updateteams = getupdateteams( relativeteam ); + index = 0; + while ( index < updateteams.size ) + { + showiconthisteam = showicon; + if ( !showiconthisteam && shouldshowcompassduetoradar( updateteams[ index ] ) ) + { + showiconthisteam = 1; + } + if ( level.teambased ) + { + objid = self.objid[ updateteams[ index ] ]; + } + else + { + objid = self.objid[ level.nonteambasedteam ]; + } + if ( !isDefined( self.compassicons[ relativeteam ] ) || !showiconthisteam ) + { + objective_state( objid, "invisible" ); + index++; + continue; + } + else + { + objective_icon( objid, self.compassicons[ relativeteam ] ); + objective_state( objid, "active" ); + if ( self.type == "carryObject" ) + { + if ( isalive( self.carrier ) && !shouldpingobject( relativeteam ) ) + { + objective_onentity( objid, self.carrier ); + index++; + continue; + } + else + { + objective_position( objid, self.curorigin ); + } + } + } + index++; + } +} + +shouldpingobject( relativeteam ) +{ + if ( relativeteam == "friendly" && self.objidpingfriendly ) + { + return 1; + } + else + { + if ( relativeteam == "enemy" && self.objidpingenemy ) + { + return 1; + } + } + return 0; +} + +getupdateteams( relativeteam ) +{ + updateteams = []; + if ( level.teambased ) + { + if ( relativeteam == "friendly" ) + { + _a2479 = level.teams; + _k2479 = getFirstArrayKey( _a2479 ); + while ( isDefined( _k2479 ) ) + { + team = _a2479[ _k2479 ]; + if ( self isfriendlyteam( team ) ) + { + updateteams[ updateteams.size ] = team; + } + _k2479 = getNextArrayKey( _a2479, _k2479 ); + } + } + else while ( relativeteam == "enemy" ) + { + _a2487 = level.teams; + _k2487 = getFirstArrayKey( _a2487 ); + while ( isDefined( _k2487 ) ) + { + team = _a2487[ _k2487 ]; + if ( !self isfriendlyteam( team ) ) + { + updateteams[ updateteams.size ] = team; + } + _k2487 = getNextArrayKey( _a2487, _k2487 ); + } + } + } + else if ( relativeteam == "friendly" ) + { + updateteams[ updateteams.size ] = level.nonteambasedteam; + } + else + { + updateteams[ updateteams.size ] = "axis"; + } + return updateteams; +} + +shouldshowcompassduetoradar( team ) +{ + showcompass = 0; + return showcompass; +} + +updatevisibilityaccordingtoradar() +{ + self endon( "death" ); + self endon( "carrier_cleared" ); + while ( 1 ) + { + level waittill( "radar_status_change" ); + self updatecompassicons(); + } +} + +setownerteam( team ) +{ + self.ownerteam = team; + self updatetrigger(); + self updatecompassicons(); + self updateworldicons(); + self updateobjective(); +} + +getownerteam() +{ + return self.ownerteam; +} + +setdecaytime( time ) +{ + self.decaytime = int( time * 1000 ); +} + +setusetime( time ) +{ + self.usetime = int( time * 1000 ); +} + +setusetext( text ) +{ + self.usetext = text; +} + +setusehinttext( text ) +{ + self.trigger sethintstring( text ); +} + +allowcarry( relativeteam ) +{ + self.interactteam = relativeteam; +} + +allowuse( relativeteam ) +{ + self.interactteam = relativeteam; + updatetrigger(); +} + +setvisibleteam( relativeteam ) +{ + self.visibleteam = relativeteam; + if ( !maps/mp/gametypes_zm/_tweakables::gettweakablevalue( "hud", "showobjicons" ) ) + { + self.visibleteam = "none"; + } + updatecompassicons(); + updateworldicons(); + updateobjective(); +} + +setmodelvisibility( visibility ) +{ + if ( visibility ) + { + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ] show(); + if ( self.visuals[ index ].classname == "script_brushmodel" || self.visuals[ index ].classname == "script_model" ) + { + self.visuals[ index ] thread makesolid(); + } + index++; + } + } + else index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ] hide(); + if ( self.visuals[ index ].classname == "script_brushmodel" || self.visuals[ index ].classname == "script_model" ) + { + self.visuals[ index ] notify( "changing_solidness" ); + self.visuals[ index ] notsolid(); + } + index++; + } +} + +makesolid() +{ + self endon( "death" ); + self notify( "changing_solidness" ); + self endon( "changing_solidness" ); + while ( 1 ) + { + i = 0; + while ( i < level.players.size ) + { + if ( level.players[ i ] istouching( self ) ) + { + break; + } + else + { + i++; + } + } + if ( i == level.players.size ) + { + self solid(); + return; + } + else + { + wait 0,05; + } + } +} + +setcarriervisible( relativeteam ) +{ + self.carriervisible = relativeteam; +} + +setcanuse( relativeteam ) +{ + self.useteam = relativeteam; +} + +set2dicon( relativeteam, shader ) +{ + self.compassicons[ relativeteam ] = shader; + updatecompassicons(); +} + +set3dicon( relativeteam, shader ) +{ + self.worldicons[ relativeteam ] = shader; + updateworldicons(); +} + +set3duseicon( relativeteam, shader ) +{ + self.worlduseicons[ relativeteam ] = shader; +} + +set3diswaypoint( relativeteam, waypoint ) +{ + self.worldiswaypoint[ relativeteam ] = waypoint; +} + +setcarryicon( shader ) +{ + self.carryicon = shader; +} + +setvisiblecarriermodel( visiblemodel ) +{ + self.visiblecarriermodel = visiblemodel; +} + +getvisiblecarriermodel() +{ + return self.visiblecarriermodel; +} + +destroyobject( deletetrigger, forcehide ) +{ + if ( !isDefined( forcehide ) ) + { + forcehide = 1; + } + self disableobject( forcehide ); + _a2695 = self.visuals; + _k2695 = getFirstArrayKey( _a2695 ); + while ( isDefined( _k2695 ) ) + { + visual = _a2695[ _k2695 ]; + visual hide(); + visual delete(); + _k2695 = getNextArrayKey( _a2695, _k2695 ); + } + self.trigger notify( "destroyed" ); + if ( isDefined( deletetrigger ) && deletetrigger ) + { + self.trigger delete(); + } + else + { + self.trigger triggeron(); + } +} + +disableobject( forcehide ) +{ + self notify( "disabled" ); + while ( self.type == "carryObject" || isDefined( forcehide ) && forcehide ) + { + if ( isDefined( self.carrier ) ) + { + self.carrier takeobject( self ); + } + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ] hide(); + index++; + } + } + self.trigger triggeroff(); + self setvisibleteam( "none" ); +} + +enableobject( forceshow ) +{ + while ( self.type == "carryObject" || isDefined( forceshow ) && forceshow ) + { + index = 0; + while ( index < self.visuals.size ) + { + self.visuals[ index ] show(); + index++; + } + } + self.trigger triggeron(); + self setvisibleteam( "any" ); +} + +getrelativeteam( team ) +{ + if ( self.ownerteam == "any" ) + { + return "friendly"; + } + if ( team == self.ownerteam ) + { + return "friendly"; + } + else + { + if ( team == getenemyteam( self.ownerteam ) ) + { + return "enemy"; + } + else + { + return "neutral"; + } + } +} + +isfriendlyteam( team ) +{ + if ( !level.teambased ) + { + return 1; + } + if ( self.ownerteam == "any" ) + { + return 1; + } + if ( self.ownerteam == team ) + { + return 1; + } + return 0; +} + +caninteractwith( player ) +{ + team = player.pers[ "team" ]; + switch( self.interactteam ) + { + case "none": + return 0; + case "any": + return 1; + case "friendly": + if ( level.teambased ) + { + if ( team == self.ownerteam ) + { + return 1; + } + else + { + return 0; + } + } + else + { + if ( player == self.ownerteam ) + { + return 1; + } + else + { + return 0; + } + } + case "enemy": + if ( level.teambased ) + { + if ( team != self.ownerteam ) + { + return 1; + } + else + { + if ( isDefined( self.decayprogress ) && self.decayprogress && self.curprogress > 0 ) + { + return 1; + } + else + { + return 0; + } + } + } + else + { + if ( player != self.ownerteam ) + { + return 1; + } + else + { + return 0; + } + } + default: +/# + assert( 0, "invalid interactTeam" ); +#/ + return 0; + } +} + +isteam( team ) +{ + if ( team == "neutral" ) + { + return 1; + } + if ( isDefined( level.teams[ team ] ) ) + { + return 1; + } + if ( team == "any" ) + { + return 1; + } + if ( team == "none" ) + { + return 1; + } + return 0; +} + +isrelativeteam( relativeteam ) +{ + if ( relativeteam == "friendly" ) + { + return 1; + } + if ( relativeteam == "enemy" ) + { + return 1; + } + if ( relativeteam == "any" ) + { + return 1; + } + if ( relativeteam == "none" ) + { + return 1; + } + return 0; +} + +getenemyteam( team ) +{ + if ( team == "neutral" ) + { + return "none"; + } + else + { + if ( team == "allies" ) + { + return "axis"; + } + else + { + return "allies"; + } + } +} + +getnextobjid() +{ + nextid = 0; + if ( level.releasedobjectives.size > 0 ) + { + nextid = level.releasedobjectives[ level.releasedobjectives.size - 1 ]; + } + else + { + nextid = level.numgametypereservedobjectives; + level.numgametypereservedobjectives++; + } +/# + assert( nextid < 32, "Ran out of objective IDs" ); +#/ + return nextid; +} + +releaseobjid( objid ) +{ +/# + assert( objid < level.numgametypereservedobjectives ); +#/ + i = 0; + while ( i < level.releasedobjectives.size ) + { + if ( objid == level.releasedobjectives[ i ] && objid == 31 ) + { + return; + } +/# + assert( objid != level.releasedobjectives[ i ] ); +#/ + i++; + } + level.releasedobjectives[ level.releasedobjectives.size ] = objid; +} + +getlabel() +{ + label = self.trigger.script_label; + if ( !isDefined( label ) ) + { + label = ""; + return label; + } + if ( label[ 0 ] != "_" ) + { + return "_" + label; + } + return label; +} + +mustmaintainclaim( enabled ) +{ + self.mustmaintainclaim = enabled; +} + +cancontestclaim( enabled ) +{ + self.cancontestclaim = enabled; +} + +setflags( flags ) +{ + objective_setgamemodeflags( self.objectiveid, flags ); +} + +getflags( flags ) +{ + return objective_getgamemodeflags( self.objectiveid ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globalentities.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globalentities.gsc new file mode 100644 index 0000000..e69de29 diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_actor.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_actor.gsc new file mode 100644 index 0000000..08518fb --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_actor.gsc @@ -0,0 +1,207 @@ +#include maps/mp/_challenges; +#include maps/mp/gametypes_zm/_damagefeedback; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/gametypes_zm/_globallogic_player; +#include maps/mp/_utility; + +callback_actordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( self.aiteam == "spectator" ) + { + return; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( eattacker.candocombat ) && !eattacker.candocombat ) + { + return; + } + self.idflags = idflags; + self.idflagstime = getTime(); + eattacker = maps/mp/gametypes_zm/_globallogic_player::figureoutattacker( eattacker ); + if ( !isDefined( vdir ) ) + { + idflags |= level.idflags_no_knockback; + } + friendly = 0; + if ( self.health == self.maxhealth || !isDefined( self.attackers ) ) + { + self.attackers = []; + self.attackerdata = []; + self.attackerdamage = []; + } + if ( maps/mp/gametypes_zm/_globallogic_utils::isheadshot( sweapon, shitloc, smeansofdeath, einflictor ) ) + { + smeansofdeath = "MOD_HEAD_SHOT"; + } + if ( level.onlyheadshots ) + { + if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" ) + { + return; + } + else + { + if ( smeansofdeath == "MOD_HEAD_SHOT" ) + { + idamage = 150; + } + } + } + if ( sweapon == "none" && isDefined( einflictor ) ) + { + if ( isDefined( einflictor.targetname ) && einflictor.targetname == "explodable_barrel" ) + { + sweapon = "explodable_barrel_mp"; + } + else + { + if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) + { + sweapon = "destructible_car_mp"; + } + } + } + if ( idflags & level.idflags_no_protection ) + { + if ( isplayer( eattacker ) ) + { + eattacker.pers[ "participation" ]++; + } + prevhealthratio = self.health / self.maxhealth; + if ( level.teambased && isplayer( eattacker ) && self != eattacker && self.aiteam == eattacker.pers[ "team" ] ) + { + if ( level.friendlyfire == 0 ) + { + return; + } + else if ( level.friendlyfire == 1 ) + { + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + } + else if ( level.friendlyfire == 2 ) + { + return; + } + else + { + if ( level.friendlyfire == 3 ) + { + idamage = int( idamage * 0,5 ); + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + } + } + friendly = 1; + } + else + { + if ( isDefined( eattacker ) && isDefined( self.script_owner ) && eattacker == self.script_owner && !level.hardcoremode ) + { + return; + } + if ( isDefined( eattacker ) && isDefined( self.script_owner ) && isDefined( eattacker.script_owner ) && eattacker.script_owner == self.script_owner ) + { + return; + } + if ( idamage < 1 ) + { + idamage = 1; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) && !issubstr( smeansofdeath, "MOD_MELEE" ) ) + { + eattacker thread maps/mp/gametypes_zm/_weapons::checkhit( sweapon ); + } + if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor ) && isDefined( einflictor.iscooked ) ) + { + self.wascooked = getTime(); + } + else + { + self.wascooked = undefined; + } + if ( isDefined( eattacker ) ) + { + self.lastdamagewasfromenemy = eattacker != self; + } + self finishactordamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + } + if ( isDefined( eattacker ) && eattacker != self ) + { + if ( sweapon != "artillery_mp" || !isDefined( einflictor ) && !isai( einflictor ) ) + { + if ( idamage > 0 ) + { + eattacker thread maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback( smeansofdeath, einflictor ); + } + } + } + } +/# + if ( getDvarInt( "g_debugDamage" ) ) + { + println( "actor:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + shitloc + ";" + boneindex + "\n" ); +#/ + } + if ( 1 ) + { + lpselfnum = self getentitynumber(); + lpselfteam = self.aiteam; + lpattackerteam = ""; + if ( isplayer( eattacker ) ) + { + lpattacknum = eattacker getentitynumber(); + lpattackguid = eattacker getguid(); + lpattackname = eattacker.name; + lpattackerteam = eattacker.pers[ "team" ]; + } + else + { + lpattacknum = -1; + lpattackguid = ""; + lpattackname = ""; + lpattackerteam = "world"; + } + logprint( "AD;" + lpselfnum + ";" + lpselfteam + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sweapon + ";" + idamage + ";" + smeansofdeath + ";" + shitloc + "\n" ); + } +} + +callback_actorkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) +{ + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( isai( attacker ) && isDefined( attacker.script_owner ) ) + { + if ( attacker.script_owner.team != self.aiteam ) + { + attacker = attacker.script_owner; + } + } + if ( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) + { + attacker = attacker.owner; + } + if ( isDefined( attacker ) && isplayer( attacker ) ) + { + if ( !level.teambased || self.aiteam != attacker.pers[ "team" ] ) + { + level.globalkillstreaksdestroyed++; + attacker addweaponstat( "dogs_mp", "destroyed", 1 ); + attacker maps/mp/_challenges::killeddog(); + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_audio.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_audio.gsc new file mode 100644 index 0000000..2618bd9 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_audio.gsc @@ -0,0 +1,1034 @@ +#include maps/mp/_music; +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/_utility; + +init() +{ + game[ "music" ][ "defeat" ] = "mus_defeat"; + game[ "music" ][ "victory_spectator" ] = "mus_defeat"; + game[ "music" ][ "winning" ] = "mus_time_running_out_winning"; + game[ "music" ][ "losing" ] = "mus_time_running_out_losing"; + game[ "music" ][ "match_end" ] = "mus_match_end"; + game[ "music" ][ "victory_tie" ] = "mus_defeat"; + game[ "music" ][ "suspense" ] = []; + game[ "music" ][ "suspense" ][ game[ "music" ][ "suspense" ].size ] = "mus_suspense_01"; + game[ "music" ][ "suspense" ][ game[ "music" ][ "suspense" ].size ] = "mus_suspense_02"; + game[ "music" ][ "suspense" ][ game[ "music" ][ "suspense" ].size ] = "mus_suspense_03"; + game[ "music" ][ "suspense" ][ game[ "music" ][ "suspense" ].size ] = "mus_suspense_04"; + game[ "music" ][ "suspense" ][ game[ "music" ][ "suspense" ].size ] = "mus_suspense_05"; + game[ "music" ][ "suspense" ][ game[ "music" ][ "suspense" ].size ] = "mus_suspense_06"; + game[ "dialog" ][ "mission_success" ] = "mission_success"; + game[ "dialog" ][ "mission_failure" ] = "mission_fail"; + game[ "dialog" ][ "mission_draw" ] = "draw"; + game[ "dialog" ][ "round_success" ] = "encourage_win"; + game[ "dialog" ][ "round_failure" ] = "encourage_lost"; + game[ "dialog" ][ "round_draw" ] = "draw"; + game[ "dialog" ][ "timesup" ] = "timesup"; + game[ "dialog" ][ "winning" ] = "winning"; + game[ "dialog" ][ "losing" ] = "losing"; + game[ "dialog" ][ "min_draw" ] = "min_draw"; + game[ "dialog" ][ "lead_lost" ] = "lead_lost"; + game[ "dialog" ][ "lead_tied" ] = "tied"; + game[ "dialog" ][ "lead_taken" ] = "lead_taken"; + game[ "dialog" ][ "last_alive" ] = "lastalive"; + game[ "dialog" ][ "boost" ] = "generic_boost"; + if ( !isDefined( game[ "dialog" ][ "offense_obj" ] ) ) + { + game[ "dialog" ][ "offense_obj" ] = "generic_boost"; + } + if ( !isDefined( game[ "dialog" ][ "defense_obj" ] ) ) + { + game[ "dialog" ][ "defense_obj" ] = "generic_boost"; + } + game[ "dialog" ][ "hardcore" ] = "hardcore"; + game[ "dialog" ][ "oldschool" ] = "oldschool"; + game[ "dialog" ][ "highspeed" ] = "highspeed"; + game[ "dialog" ][ "tactical" ] = "tactical"; + game[ "dialog" ][ "challenge" ] = "challengecomplete"; + game[ "dialog" ][ "promotion" ] = "promotion"; + game[ "dialog" ][ "bomb_acquired" ] = "sd_bomb_taken"; + game[ "dialog" ][ "bomb_taken" ] = "sd_bomb_taken_taken"; + game[ "dialog" ][ "bomb_lost" ] = "sd_bomb_drop"; + game[ "dialog" ][ "bomb_defused" ] = "sd_bomb_defused"; + game[ "dialog" ][ "bomb_planted" ] = "sd_bomb_planted"; + game[ "dialog" ][ "obj_taken" ] = "securedobj"; + game[ "dialog" ][ "obj_lost" ] = "lostobj"; + game[ "dialog" ][ "obj_defend" ] = "defend_start"; + game[ "dialog" ][ "obj_destroy" ] = "destroy_start"; + game[ "dialog" ][ "obj_capture" ] = "capture_obj"; + game[ "dialog" ][ "objs_capture" ] = "capture_objs"; + game[ "dialog" ][ "hq_located" ] = "hq_located"; + game[ "dialog" ][ "hq_enemy_captured" ] = "hq_capture"; + game[ "dialog" ][ "hq_enemy_destroyed" ] = "hq_defend"; + game[ "dialog" ][ "hq_secured" ] = "hq_secured"; + game[ "dialog" ][ "hq_offline" ] = "hq_offline"; + game[ "dialog" ][ "hq_online" ] = "hq_online"; + game[ "dialog" ][ "koth_located" ] = "koth_located"; + game[ "dialog" ][ "koth_captured" ] = "koth_captured"; + game[ "dialog" ][ "koth_lost" ] = "koth_lost"; + game[ "dialog" ][ "koth_secured" ] = "koth_secured"; + game[ "dialog" ][ "koth_contested" ] = "koth_contest"; + game[ "dialog" ][ "koth_offline" ] = "koth_offline"; + game[ "dialog" ][ "koth_online" ] = "koth_online"; + game[ "dialog" ][ "move_to_new" ] = "new_positions"; + game[ "dialog" ][ "attack" ] = "attack"; + game[ "dialog" ][ "defend" ] = "defend"; + game[ "dialog" ][ "offense" ] = "offense"; + game[ "dialog" ][ "defense" ] = "defense"; + game[ "dialog" ][ "halftime" ] = "halftime"; + game[ "dialog" ][ "overtime" ] = "overtime"; + game[ "dialog" ][ "side_switch" ] = "switchingsides"; + game[ "dialog" ][ "flag_taken" ] = "ourflag"; + game[ "dialog" ][ "flag_dropped" ] = "ourflag_drop"; + game[ "dialog" ][ "flag_returned" ] = "ourflag_return"; + game[ "dialog" ][ "flag_captured" ] = "ourflag_capt"; + game[ "dialog" ][ "enemy_flag_taken" ] = "enemyflag"; + game[ "dialog" ][ "enemy_flag_dropped" ] = "enemyflag_drop"; + game[ "dialog" ][ "enemy_flag_returned" ] = "enemyflag_return"; + game[ "dialog" ][ "enemy_flag_captured" ] = "enemyflag_capt"; + game[ "dialog" ][ "securing_a" ] = "dom_securing_a"; + game[ "dialog" ][ "securing_b" ] = "dom_securing_b"; + game[ "dialog" ][ "securing_c" ] = "dom_securing_c"; + game[ "dialog" ][ "securing_d" ] = "dom_securing_d"; + game[ "dialog" ][ "securing_e" ] = "dom_securing_e"; + game[ "dialog" ][ "securing_f" ] = "dom_securing_f"; + game[ "dialog" ][ "secured_a" ] = "dom_secured_a"; + game[ "dialog" ][ "secured_b" ] = "dom_secured_b"; + game[ "dialog" ][ "secured_c" ] = "dom_secured_c"; + game[ "dialog" ][ "secured_d" ] = "dom_secured_d"; + game[ "dialog" ][ "secured_e" ] = "dom_secured_e"; + game[ "dialog" ][ "secured_f" ] = "dom_secured_f"; + game[ "dialog" ][ "losing_a" ] = "dom_losing_a"; + game[ "dialog" ][ "losing_b" ] = "dom_losing_b"; + game[ "dialog" ][ "losing_c" ] = "dom_losing_c"; + game[ "dialog" ][ "losing_d" ] = "dom_losing_d"; + game[ "dialog" ][ "losing_e" ] = "dom_losing_e"; + game[ "dialog" ][ "losing_f" ] = "dom_losing_f"; + game[ "dialog" ][ "lost_a" ] = "dom_lost_a"; + game[ "dialog" ][ "lost_b" ] = "dom_lost_b"; + game[ "dialog" ][ "lost_c" ] = "dom_lost_c"; + game[ "dialog" ][ "lost_d" ] = "dom_lost_d"; + game[ "dialog" ][ "lost_e" ] = "dom_lost_e"; + game[ "dialog" ][ "lost_f" ] = "dom_lost_f"; + game[ "dialog" ][ "secure_flag" ] = "secure_flag"; + game[ "dialog" ][ "securing_flag" ] = "securing_flag"; + game[ "dialog" ][ "losing_flag" ] = "losing_flag"; + game[ "dialog" ][ "lost_flag" ] = "lost_flag"; + game[ "dialog" ][ "oneflag_enemy" ] = "oneflag_enemy"; + game[ "dialog" ][ "oneflag_friendly" ] = "oneflag_friendly"; + game[ "dialog" ][ "lost_all" ] = "dom_lock_theytake"; + game[ "dialog" ][ "secure_all" ] = "dom_lock_wetake"; + game[ "dialog" ][ "squad_move" ] = "squad_move"; + game[ "dialog" ][ "squad_30sec" ] = "squad_30sec"; + game[ "dialog" ][ "squad_winning" ] = "squad_onemin_vic"; + game[ "dialog" ][ "squad_losing" ] = "squad_onemin_loss"; + game[ "dialog" ][ "squad_down" ] = "squad_down"; + game[ "dialog" ][ "squad_bomb" ] = "squad_bomb"; + game[ "dialog" ][ "squad_plant" ] = "squad_plant"; + game[ "dialog" ][ "squad_take" ] = "squad_takeobj"; + game[ "dialog" ][ "kicked" ] = "player_kicked"; + game[ "dialog" ][ "sentry_destroyed" ] = "dest_sentry"; + game[ "dialog" ][ "sentry_hacked" ] = "kls_turret_hacked"; + game[ "dialog" ][ "microwave_destroyed" ] = "dest_microwave"; + game[ "dialog" ][ "microwave_hacked" ] = "kls_microwave_hacked"; + game[ "dialog" ][ "sam_destroyed" ] = "dest_sam"; + game[ "dialog" ][ "tact_destroyed" ] = "dest_tact"; + game[ "dialog" ][ "equipment_destroyed" ] = "dest_equip"; + game[ "dialog" ][ "hacked_equip" ] = "hacked_equip"; + game[ "dialog" ][ "uav_destroyed" ] = "kls_u2_destroyed"; + game[ "dialog" ][ "cuav_destroyed" ] = "kls_cu2_destroyed"; + level.dialoggroups = []; + level thread post_match_snapshot_watcher(); +} + +registerdialoggroup( group, skipifcurrentlyplayinggroup ) +{ + if ( !isDefined( level.dialoggroups ) ) + { + level.dialoggroups = []; + } + else + { + if ( isDefined( level.dialoggroup[ group ] ) ) + { + error( "registerDialogGroup: Dialog group " + group + " already registered." ); + return; + } + } + level.dialoggroup[ group ] = spawnstruct(); + level.dialoggroup[ group ].group = group; + level.dialoggroup[ group ].skipifcurrentlyplayinggroup = skipifcurrentlyplayinggroup; + level.dialoggroup[ group ].currentcount = 0; +} + +sndstartmusicsystem() +{ + self endon( "disconnect" ); + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( game[ "state" ] == "pregame" ) + { +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - music state is undefined Waiting 15 seconds to set music state" ); +#/ + } + wait 30; + if ( !isDefined( level.nextmusicstate ) ) + { + self.pers[ "music" ].currentstate = "UNDERSCORE"; + self thread suspensemusic(); + } + } + if ( !isDefined( level.nextmusicstate ) ) + { +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - music state is undefined Waiting 15 seconds to set music state" ); +#/ + } + self.pers[ "music" ].currentstate = "UNDERSCORE"; + self thread suspensemusic(); + } +} + +suspensemusicforplayer() +{ + self endon( "disconnect" ); + self thread set_music_on_player( "UNDERSCORE", 0 ); +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Setting Music State Random Underscore " + self.pers[ "music" ].returnstate + " On player " + self getentitynumber() ); +#/ + } +} + +suspensemusic( random ) +{ + level endon( "game_ended" ); + level endon( "match_ending_soon" ); + self endon( "disconnect" ); +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Starting random underscore" ); +#/ + } + while ( 1 ) + { + wait randomintrange( 25, 60 ); +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Checking for random underscore" ); +#/ + } + if ( !isDefined( self.pers[ "music" ].inque ) ) + { + self.pers[ "music" ].inque = 0; + } + while ( self.pers[ "music" ].inque ) + { +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Inque no random underscore" ); +#/ + } + } + if ( !isDefined( self.pers[ "music" ].currentstate ) ) + { + self.pers[ "music" ].currentstate = "SILENT"; + } + if ( randomint( 100 ) < self.underscorechance && self.pers[ "music" ].currentstate != "ACTION" && self.pers[ "music" ].currentstate != "TIME_OUT" ) + { + self thread suspensemusicforplayer(); + self.underscorechance -= 20; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Starting random underscore" ); +#/ + } + } + } +} + +leaderdialogforotherteams( dialog, skip_team, squad_dialog ) +{ + _a339 = level.teams; + _k339 = getFirstArrayKey( _a339 ); + while ( isDefined( _k339 ) ) + { + team = _a339[ _k339 ]; + if ( team != skip_team ) + { + leaderdialog( dialog, team, undefined, undefined, squad_dialog ); + } + _k339 = getNextArrayKey( _a339, _k339 ); + } +} + +announceroundwinner( winner, delay ) +{ + if ( delay > 0 ) + { + wait delay; + } + if ( !isDefined( winner ) || isplayer( winner ) ) + { + return; + } + if ( isDefined( level.teams[ winner ] ) ) + { + leaderdialog( "round_success", winner ); + leaderdialogforotherteams( "round_failure", winner ); + } + else + { + _a365 = level.teams; + _k365 = getFirstArrayKey( _a365 ); + while ( isDefined( _k365 ) ) + { + team = _a365[ _k365 ]; + thread playsoundonplayers( "mus_round_draw" + "_" + level.teampostfix[ team ] ); + _k365 = getNextArrayKey( _a365, _k365 ); + } + leaderdialog( "round_draw" ); + } +} + +announcegamewinner( winner, delay ) +{ + if ( delay > 0 ) + { + wait delay; + } + if ( !isDefined( winner ) || isplayer( winner ) ) + { + return; + } + if ( isDefined( level.teams[ winner ] ) ) + { + leaderdialog( "mission_success", winner ); + leaderdialogforotherteams( "mission_failure", winner ); + } + else + { + leaderdialog( "mission_draw" ); + } +} + +doflameaudio() +{ + self endon( "disconnect" ); + waittillframeend; + if ( !isDefined( self.lastflamehurtaudio ) ) + { + self.lastflamehurtaudio = 0; + } + currenttime = getTime(); + if ( ( self.lastflamehurtaudio + level.fire_audio_repeat_duration + randomint( level.fire_audio_random_max_duration ) ) < currenttime ) + { + self playlocalsound( "vox_pain_small" ); + self.lastflamehurtaudio = currenttime; + } +} + +leaderdialog( dialog, team, group, excludelist, squaddialog ) +{ +/# + assert( isDefined( level.players ) ); +#/ + if ( level.splitscreen ) + { + return; + } + if ( level.wagermatch ) + { + return; + } + if ( !isDefined( team ) ) + { + dialogs = []; + _a425 = level.teams; + _k425 = getFirstArrayKey( _a425 ); + while ( isDefined( _k425 ) ) + { + team = _a425[ _k425 ]; + dialogs[ team ] = dialog; + _k425 = getNextArrayKey( _a425, _k425 ); + } + leaderdialogallteams( dialogs, group, excludelist ); + return; + } + if ( level.splitscreen ) + { + if ( level.players.size ) + { + level.players[ 0 ] leaderdialogonplayer( dialog, group ); + } + return; + } + if ( isDefined( excludelist ) ) + { + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team && !maps/mp/gametypes_zm/_globallogic_utils::isexcluded( player, excludelist ) ) + { + player leaderdialogonplayer( dialog, group ); + } + i++; + } + } + else i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player leaderdialogonplayer( dialog, group ); + } + i++; + } +} + +leaderdialogallteams( dialogs, group, excludelist ) +{ +/# + assert( isDefined( level.players ) ); +#/ + if ( level.splitscreen ) + { + return; + } + if ( level.splitscreen ) + { + if ( level.players.size ) + { + level.players[ 0 ] leaderdialogonplayer( dialogs[ level.players[ 0 ].team ], group ); + } + return; + } + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + team = player.pers[ "team" ]; + if ( !isDefined( team ) ) + { + i++; + continue; + } + else if ( !isDefined( dialogs[ team ] ) ) + { + i++; + continue; + } + else if ( isDefined( excludelist ) && maps/mp/gametypes_zm/_globallogic_utils::isexcluded( player, excludelist ) ) + { + i++; + continue; + } + else + { + player leaderdialogonplayer( dialogs[ team ], group ); + } + i++; + } +} + +flushdialog() +{ + _a495 = level.players; + _k495 = getFirstArrayKey( _a495 ); + while ( isDefined( _k495 ) ) + { + player = _a495[ _k495 ]; + player flushdialogonplayer(); + _k495 = getNextArrayKey( _a495, _k495 ); + } +} + +flushdialogonplayer() +{ + self.leaderdialoggroups = []; + self.leaderdialogqueue = []; + self.leaderdialogactive = 0; + self.currentleaderdialoggroup = ""; +} + +flushgroupdialog( group ) +{ + _a512 = level.players; + _k512 = getFirstArrayKey( _a512 ); + while ( isDefined( _k512 ) ) + { + player = _a512[ _k512 ]; + player flushgroupdialogonplayer( group ); + _k512 = getNextArrayKey( _a512, _k512 ); + } +} + +flushgroupdialogonplayer( group ) +{ + _a522 = self.leaderdialogqueue; + key = getFirstArrayKey( _a522 ); + while ( isDefined( key ) ) + { + dialog = _a522[ key ]; + if ( dialog == group ) + { + } + key = getNextArrayKey( _a522, key ); + } +} + +addgroupdialogtoplayer( dialog, group ) +{ + if ( !isDefined( level.dialoggroup[ group ] ) ) + { + error( "leaderDialogOnPlayer: Dialog group " + group + " is not registered" ); + return 0; + } + addtoqueue = 0; + if ( !isDefined( self.leaderdialoggroups[ group ] ) ) + { + addtoqueue = 1; + } + if ( !level.dialoggroup[ group ].skipifcurrentlyplayinggroup ) + { + if ( self.currentleaderdialog == dialog && ( self.currentleaderdialogtime + 2000 ) > getTime() ) + { + _a552 = self.leaderdialogqueue; + key = getFirstArrayKey( _a552 ); + while ( isDefined( key ) ) + { + leader_dialog = _a552[ key ]; + if ( leader_dialog == group ) + { + i = key + 1; + while ( i < self.leaderdialogqueue.size ) + { + self.leaderdialogqueue[ i - 1 ] = self.leaderdialogqueue[ i ]; + i++; + } + break; + } + else + { + key = getNextArrayKey( _a552, key ); + } + } + return 0; + } + } + else + { + if ( self.currentleaderdialoggroup == group ) + { + return 0; + } + } + self.leaderdialoggroups[ group ] = dialog; + return addtoqueue; +} + +testdialogqueue( group ) +{ +/# + count = 0; + _a585 = self.leaderdialogqueue; + _k585 = getFirstArrayKey( _a585 ); + while ( isDefined( _k585 ) ) + { + temp = _a585[ _k585 ]; + if ( temp == group ) + { + count++; + } + _k585 = getNextArrayKey( _a585, _k585 ); + } + if ( count > 1 ) + { + shit = 0; +#/ + } +} + +leaderdialogonplayer( dialog, group ) +{ + team = self.pers[ "team" ]; + if ( level.splitscreen ) + { + return; + } + if ( !isDefined( team ) ) + { + return; + } + if ( !isDefined( level.teams[ team ] ) ) + { + return; + } + if ( isDefined( group ) ) + { + if ( !addgroupdialogtoplayer( dialog, group ) ) + { + self testdialogqueue( group ); + return; + } + dialog = group; + } + if ( !self.leaderdialogactive ) + { + self thread playleaderdialogonplayer( dialog ); + } + else + { + self.leaderdialogqueue[ self.leaderdialogqueue.size ] = dialog; + } +} + +waitforsound( sound, extratime ) +{ + if ( !isDefined( extratime ) ) + { + extratime = 0,1; + } + time = soundgetplaybacktime( sound ); + if ( time < 0 ) + { + wait ( 3 + extratime ); + } + else + { + wait ( ( time * 0,001 ) + extratime ); + } +} + +playleaderdialogonplayer( dialog ) +{ + if ( isDefined( level.allowannouncer ) && !level.allowannouncer ) + { + return; + } + team = self.pers[ "team" ]; + self endon( "disconnect" ); + self.leaderdialogactive = 1; + if ( isDefined( self.leaderdialoggroups[ dialog ] ) ) + { + group = dialog; + dialog = self.leaderdialoggroups[ group ]; + self.currentleaderdialoggroup = group; + self testdialogqueue( group ); + } + if ( level.wagermatch || !isDefined( game[ "voice" ] ) ) + { + faction = "vox_wm_"; + } + else + { + faction = game[ "voice" ][ team ]; + } + sound_name = faction + game[ "dialog" ][ dialog ]; + if ( level.allowannouncer ) + { + self playlocalsound( sound_name ); + self.currentleaderdialog = dialog; + self.currentleaderdialogtime = getTime(); + } + waitforsound( sound_name ); + self.leaderdialogactive = 0; + self.currentleaderdialoggroup = ""; + self.currentleaderdialog = ""; + if ( self.leaderdialogqueue.size > 0 ) + { + nextdialog = self.leaderdialogqueue[ 0 ]; + i = 1; + while ( i < self.leaderdialogqueue.size ) + { + self.leaderdialogqueue[ i - 1 ] = self.leaderdialogqueue[ i ]; + i++; + } + if ( isDefined( self.leaderdialoggroups[ dialog ] ) ) + { + self testdialogqueue( dialog ); + } + self thread playleaderdialogonplayer( nextdialog ); + } +} + +isteamwinning( checkteam ) +{ + score = game[ "teamScores" ][ checkteam ]; + _a702 = level.teams; + _k702 = getFirstArrayKey( _a702 ); + while ( isDefined( _k702 ) ) + { + team = _a702[ _k702 ]; + if ( team != checkteam ) + { + if ( game[ "teamScores" ][ team ] >= score ) + { + return 0; + } + } + _k702 = getNextArrayKey( _a702, _k702 ); + } + return 1; +} + +announceteamiswinning() +{ + _a716 = level.teams; + _k716 = getFirstArrayKey( _a716 ); + while ( isDefined( _k716 ) ) + { + team = _a716[ _k716 ]; + if ( isteamwinning( team ) ) + { + leaderdialog( "winning", team, undefined, undefined, "squad_winning" ); + leaderdialogforotherteams( "losing", team, "squad_losing" ); + return 1; + } + _k716 = getNextArrayKey( _a716, _k716 ); + } + return 0; +} + +musiccontroller() +{ + level endon( "game_ended" ); + level thread musictimesout(); + level waittill( "match_ending_soon" ); + if ( islastround() || isoneround() ) + { + while ( !level.splitscreen ) + { + if ( level.teambased ) + { + if ( !announceteamiswinning() ) + { + leaderdialog( "min_draw" ); + } + } + level waittill( "match_ending_very_soon" ); + _a751 = level.teams; + _k751 = getFirstArrayKey( _a751 ); + while ( isDefined( _k751 ) ) + { + team = _a751[ _k751 ]; + leaderdialog( "timesup", team, undefined, undefined, "squad_30sec" ); + _k751 = getNextArrayKey( _a751, _k751 ); + } + } + } + else level waittill( "match_ending_vox" ); + leaderdialog( "timesup" ); +} + +musictimesout() +{ + level endon( "game_ended" ); + level waittill( "match_ending_very_soon" ); + thread maps/mp/gametypes_zm/_globallogic_audio::set_music_on_team( "TIME_OUT", "both", 1, 0 ); +} + +actionmusicset() +{ + level endon( "game_ended" ); + level.playingactionmusic = 1; + wait 45; + level.playingactionmusic = 0; +} + +play_2d_on_team( alias, team ) +{ +/# + assert( isDefined( level.players ) ); +#/ + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player playlocalsound( alias ); + } + i++; + } +} + +set_music_on_team( state, team, save_state, return_state, wait_time ) +{ + if ( sessionmodeiszombiesgame() ) + { + return; + } +/# + assert( isDefined( level.players ) ); +#/ + if ( !isDefined( team ) ) + { + team = "both"; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - team undefined: Setting to both" ); +#/ + } + } + if ( !isDefined( save_state ) ) + { + save_sate = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - save_sate undefined: Setting to false" ); +#/ + } + } + if ( !isDefined( return_state ) ) + { + return_state = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Music System - return_state undefined: Setting to false" ); +#/ + } + } + if ( !isDefined( wait_time ) ) + { + wait_time = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - wait_time undefined: Setting to 0" ); +#/ + } + } + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( team == "both" ) + { + player thread set_music_on_player( state, save_state, return_state, wait_time ); + i++; + continue; + } + else + { + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player thread set_music_on_player( state, save_state, return_state, wait_time ); +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Setting Music State " + state + " On player " + player getentitynumber() ); +#/ + } + } + } + i++; + } +} + +set_music_on_player( state, save_state, return_state, wait_time ) +{ + self endon( "disconnect" ); + if ( sessionmodeiszombiesgame() ) + { + return; + } +/# + assert( isplayer( self ) ); +#/ + if ( !isDefined( save_state ) ) + { + save_state = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Music System - save_sate undefined: Setting to false" ); +#/ + } + } + if ( !isDefined( return_state ) ) + { + return_state = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Music System - return_state undefined: Setting to false" ); +#/ + } + } + if ( !isDefined( wait_time ) ) + { + wait_time = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - wait_time undefined: Setting to 0" ); +#/ + } + } + if ( !isDefined( state ) ) + { + state = "UNDERSCORE"; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - state undefined: Setting to UNDERSCORE" ); +#/ + } + } + maps/mp/_music::setmusicstate( state, self ); + if ( isDefined( self.pers[ "music" ].currentstate ) && save_state ) + { + self.pers[ "music" ].returnstate = state; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Saving Music State " + self.pers[ "music" ].returnstate + " On " + self getentitynumber() ); +#/ + } + } + self.pers[ "music" ].previousstate = self.pers[ "music" ].currentstate; + self.pers[ "music" ].currentstate = state; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Setting Music State " + state + " On player " + self getentitynumber() ); +#/ + } + if ( isDefined( self.pers[ "music" ].returnstate ) && return_state ) + { +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Starting Return State " + self.pers[ "music" ].returnstate + " On " + self getentitynumber() ); +#/ + } + self set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); + } +} + +return_music_state_player( wait_time ) +{ + if ( !isDefined( wait_time ) ) + { + wait_time = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - wait_time undefined: Setting to 0" ); +#/ + } + } + self set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); +} + +return_music_state_team( team, wait_time ) +{ + if ( !isDefined( wait_time ) ) + { + wait_time = 0; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - wait_time undefined: Setting to 0" ); +#/ + } + } + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( team == "both" ) + { + player thread set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); + i++; + continue; + } + else + { + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player thread set_next_music_state( self.pers[ "music" ].returnstate, wait_time ); +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Setting Music State " + self.pers[ "music" ].returnstate + " On player " + player getentitynumber() ); +#/ + } + } + } + i++; + } +} + +set_next_music_state( nextstate, wait_time ) +{ + self endon( "disconnect" ); + self.pers[ "music" ].nextstate = nextstate; +/# + if ( getDvarInt( #"0BC4784C" ) > 0 ) + { + println( "Music System - Setting next Music State " + self.pers[ "music" ].nextstate + " On " + self getentitynumber() ); +#/ + } + if ( !isDefined( self.pers[ "music" ].inque ) ) + { + self.pers[ "music" ].inque = 0; + } + if ( self.pers[ "music" ].inque ) + { + return; +/# + println( "Music System - Music state in que" ); +#/ + } + else + { + self.pers[ "music" ].inque = 1; + if ( wait_time ) + { + wait wait_time; + } + self set_music_on_player( self.pers[ "music" ].nextstate, 0 ); + self.pers[ "music" ].inque = 0; + } +} + +getroundswitchdialog( switchtype ) +{ + switch( switchtype ) + { + case "halftime": + return "halftime"; + case "overtime": + return "overtime"; + default: + return "side_switch"; + } +} + +post_match_snapshot_watcher() +{ + level waittill( "game_ended" ); + level clientnotify( "pm" ); + level waittill( "sfade" ); + level clientnotify( "pmf" ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_defaults.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_defaults.gsc new file mode 100644 index 0000000..059642d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_defaults.gsc @@ -0,0 +1,230 @@ +#include maps/mp/gametypes_zm/_spawnlogic; +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/_utility; +#include common_scripts/utility; + +getwinningteamfromloser( losing_team ) +{ + if ( level.multiteam ) + { + return "tie"; + } + else + { + if ( losing_team == "axis" ) + { + return "allies"; + } + } + return "axis"; +} + +default_onforfeit( team ) +{ + level.gameforfeited = 1; + level notify( "forfeit in progress" ); + level endon( "forfeit in progress" ); + level endon( "abort forfeit" ); + forfeit_delay = 20; + announcement( game[ "strings" ][ "opponent_forfeiting_in" ], forfeit_delay, 0 ); + wait 10; + announcement( game[ "strings" ][ "opponent_forfeiting_in" ], 10, 0 ); + wait 10; + endreason = &""; + if ( !isDefined( team ) ) + { + setdvar( "ui_text_endreason", game[ "strings" ][ "players_forfeited" ] ); + endreason = game[ "strings" ][ "players_forfeited" ]; + winner = level.players[ 0 ]; + } + else if ( isDefined( level.teams[ team ] ) ) + { + endreason = game[ "strings" ][ team + "_forfeited" ]; + setdvar( "ui_text_endreason", endreason ); + winner = getwinningteamfromloser( team ); + } + else + { +/# + assert( isDefined( team ), "Forfeited team is not defined" ); +#/ +/# + assert( 0, "Forfeited team " + team + " is not allies or axis" ); +#/ + winner = "tie"; + } + level.forcedend = 1; + if ( isplayer( winner ) ) + { + logstring( "forfeit, win: " + winner getxuid() + "(" + winner.name + ")" ); + } + else + { + maps/mp/gametypes_zm/_globallogic_utils::logteamwinstring( "forfeit", winner ); + } + thread maps/mp/gametypes_zm/_globallogic::endgame( winner, endreason ); +} + +default_ondeadevent( team ) +{ + if ( isDefined( level.teams[ team ] ) ) + { + eliminatedstring = game[ "strings" ][ team + "_eliminated" ]; + iprintln( eliminatedstring ); + makedvarserverinfo( "ui_text_endreason", eliminatedstring ); + setdvar( "ui_text_endreason", eliminatedstring ); + winner = getwinningteamfromloser( team ); + maps/mp/gametypes_zm/_globallogic_utils::logteamwinstring( "team eliminated", winner ); + thread maps/mp/gametypes_zm/_globallogic::endgame( winner, eliminatedstring ); + } + else makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "tie" ] ); + setdvar( "ui_text_endreason", game[ "strings" ][ "tie" ] ); + maps/mp/gametypes_zm/_globallogic_utils::logteamwinstring( "tie" ); + if ( level.teambased ) + { + thread maps/mp/gametypes_zm/_globallogic::endgame( "tie", game[ "strings" ][ "tie" ] ); + } + else + { + thread maps/mp/gametypes_zm/_globallogic::endgame( undefined, game[ "strings" ][ "tie" ] ); + } +} + +default_onalivecountchange( team ) +{ +} + +default_onroundendgame( winner ) +{ + return winner; +} + +default_ononeleftevent( team ) +{ + if ( !level.teambased ) + { + winner = maps/mp/gametypes_zm/_globallogic_score::gethighestscoringplayer(); + if ( isDefined( winner ) ) + { + logstring( "last one alive, win: " + winner.name ); + } + else + { + logstring( "last one alive, win: unknown" ); + } + thread maps/mp/gametypes_zm/_globallogic::endgame( winner, &"MP_ENEMIES_ELIMINATED" ); + } + else + { + index = 0; + while ( index < level.players.size ) + { + player = level.players[ index ]; + if ( !isalive( player ) ) + { + index++; + continue; + } + else if ( !isDefined( player.pers[ "team" ] ) || player.pers[ "team" ] != team ) + { + index++; + continue; + } + else + { + player maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "sudden_death" ); + } + index++; + } + } +} + +default_ontimelimit() +{ + winner = undefined; + if ( level.teambased ) + { + winner = maps/mp/gametypes_zm/_globallogic::determineteamwinnerbygamestat( "teamScores" ); + maps/mp/gametypes_zm/_globallogic_utils::logteamwinstring( "time limit", winner ); + } + else winner = maps/mp/gametypes_zm/_globallogic_score::gethighestscoringplayer(); + if ( isDefined( winner ) ) + { + logstring( "time limit, win: " + winner.name ); + } + else + { + logstring( "time limit, tie" ); + } + makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "time_limit_reached" ] ); + setdvar( "ui_text_endreason", game[ "strings" ][ "time_limit_reached" ] ); + thread maps/mp/gametypes_zm/_globallogic::endgame( winner, game[ "strings" ][ "time_limit_reached" ] ); +} + +default_onscorelimit() +{ + if ( !level.endgameonscorelimit ) + { + return 0; + } + winner = undefined; + if ( level.teambased ) + { + winner = maps/mp/gametypes_zm/_globallogic::determineteamwinnerbygamestat( "teamScores" ); + maps/mp/gametypes_zm/_globallogic_utils::logteamwinstring( "scorelimit", winner ); + } + else winner = maps/mp/gametypes_zm/_globallogic_score::gethighestscoringplayer(); + if ( isDefined( winner ) ) + { + logstring( "scorelimit, win: " + winner.name ); + } + else + { + logstring( "scorelimit, tie" ); + } + makedvarserverinfo( "ui_text_endreason", game[ "strings" ][ "score_limit_reached" ] ); + setdvar( "ui_text_endreason", game[ "strings" ][ "score_limit_reached" ] ); + thread maps/mp/gametypes_zm/_globallogic::endgame( winner, game[ "strings" ][ "score_limit_reached" ] ); + return 1; +} + +default_onspawnspectator( origin, angles ) +{ + if ( isDefined( origin ) && isDefined( angles ) ) + { + self spawn( origin, angles ); + return; + } + spawnpointname = "mp_global_intermission"; + spawnpoints = getentarray( spawnpointname, "classname" ); +/# + assert( spawnpoints.size, "There are no mp_global_intermission spawn points in the map. There must be at least one." ); +#/ + spawnpoint = maps/mp/gametypes_zm/_spawnlogic::getspawnpoint_random( spawnpoints ); + self spawn( spawnpoint.origin, spawnpoint.angles ); +} + +default_onspawnintermission() +{ + spawnpointname = "mp_global_intermission"; + spawnpoints = getentarray( spawnpointname, "classname" ); + spawnpoint = spawnpoints[ 0 ]; + if ( isDefined( spawnpoint ) ) + { + self spawn( spawnpoint.origin, spawnpoint.angles ); + } + else + { +/# + maps/mp/_utility::error( "NO " + spawnpointname + " SPAWNPOINTS IN MAP" ); +#/ + } +} + +default_gettimelimit() +{ + return clamp( getgametypesetting( "timeLimit" ), level.timelimitmin, level.timelimitmax ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_player.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_player.gsc new file mode 100644 index 0000000..7eb69c1 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_player.gsc @@ -0,0 +1,2235 @@ +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/gametypes_zm/_tweakables; +#include maps/mp/_challenges; +#include maps/mp/gametypes_zm/_spawnlogic; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/_demo; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/gametypes_zm/_hud_message; +#include maps/mp/gametypes_zm/_spawning; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/gametypes_zm/_spectating; +#include maps/mp/gametypes_zm/_globallogic_spawn; +#include maps/mp/gametypes_zm/_globallogic_ui; +#include maps/mp/gametypes_zm/_hostmigration; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/gametypes_zm/_globallogic; +#include common_scripts/utility; +#include maps/mp/_utility; + +freezeplayerforroundend() +{ + self clearlowermessage(); + self closemenu(); + self closeingamemenu(); + self freeze_player_controls( 1 ); + if ( !sessionmodeiszombiesgame() ) + { + currentweapon = self getcurrentweapon(); + } +} + +callback_playerconnect() +{ + thread notifyconnecting(); + self.statusicon = "hud_status_connecting"; + self waittill( "begin" ); + if ( isDefined( level.reset_clientdvars ) ) + { + self [[ level.reset_clientdvars ]](); + } + waittillframeend; + self.statusicon = ""; + self.guid = self getguid(); + profilelog_begintiming( 4, "ship" ); + level notify( "connected" ); + if ( self ishost() ) + { + self thread maps/mp/gametypes_zm/_globallogic::listenforgameend(); + } + if ( !level.splitscreen && !isDefined( self.pers[ "score" ] ) ) + { + iprintln( &"MP_CONNECTED", self ); + } + if ( !isDefined( self.pers[ "score" ] ) ) + { + self thread maps/mp/zombies/_zm_stats::adjustrecentstats(); + } + if ( gamemodeismode( level.gamemode_public_match ) && !isDefined( self.pers[ "matchesPlayedStatsTracked" ] ) ) + { + gamemode = maps/mp/gametypes_zm/_globallogic::getcurrentgamemode(); + self maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "played", "started" ); + if ( !isDefined( self.pers[ "matchesHostedStatsTracked" ] ) && self islocaltohost() ) + { + self maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "hosted", "started" ); + self.pers[ "matchesHostedStatsTracked" ] = 1; + } + self.pers[ "matchesPlayedStatsTracked" ] = 1; + self thread maps/mp/zombies/_zm_stats::uploadstatssoon(); + } + lpselfnum = self getentitynumber(); + lpguid = self getguid(); + logprint( "J;" + lpguid + ";" + lpselfnum + ";" + self.name + "\n" ); + bbprint( "mpjoins", "name %s client %s", self.name, lpselfnum ); + if ( !sessionmodeiszombiesgame() ) + { + self setclientuivisibilityflag( "hud_visible", 1 ); + } + if ( level.forceradar == 1 ) + { + self.pers[ "hasRadar" ] = 1; + self.hasspyplane = 1; + level.activeuavs[ self getentitynumber() ] = 1; + } + if ( level.forceradar == 2 ) + { + self setclientuivisibilityflag( "g_compassShowEnemies", level.forceradar ); + } + else + { + self setclientuivisibilityflag( "g_compassShowEnemies", 0 ); + } + self setclientplayersprinttime( level.playersprinttime ); + self setclientnumlives( level.numlives ); + makedvarserverinfo( "cg_drawTalk", 1 ); + if ( level.hardcoremode ) + { + self setclientdrawtalk( 3 ); + } + if ( sessionmodeiszombiesgame() ) + { + self [[ level.player_stats_init ]](); + } + else + { + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "score" ); + if ( level.resetplayerscoreeveryround ) + { + self.pers[ "score" ] = 0; + } + self.score = self.pers[ "score" ]; + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "momentum", 0 ); + self.momentum = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "momentum" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "suicides" ); + self.suicides = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "suicides" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "headshots" ); + self.headshots = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "headshots" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "challenges" ); + self.challenges = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "challenges" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "kills" ); + self.kills = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "kills" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "deaths" ); + self.deaths = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "deaths" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "assists" ); + self.assists = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "assists" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "defends", 0 ); + self.defends = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "defends" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "offends", 0 ); + self.offends = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "offends" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "plants", 0 ); + self.plants = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "plants" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "defuses", 0 ); + self.defuses = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "defuses" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "returns", 0 ); + self.returns = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "returns" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "captures", 0 ); + self.captures = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "captures" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "destructions", 0 ); + self.destructions = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "destructions" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "backstabs", 0 ); + self.backstabs = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "backstabs" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "longshots", 0 ); + self.longshots = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "longshots" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "survived", 0 ); + self.survived = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "survived" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "stabs", 0 ); + self.stabs = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "stabs" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "tomahawks", 0 ); + self.tomahawks = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "tomahawks" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "humiliated", 0 ); + self.humiliated = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "humiliated" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "x2score", 0 ); + self.x2score = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "x2score" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "agrkills", 0 ); + self.x2score = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "agrkills" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "hacks", 0 ); + self.x2score = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "hacks" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "sessionbans", 0 ); + self.sessionbans = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "sessionbans" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "gametypeban", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "time_played_total", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "time_played_alive", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "teamkills", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "teamkills_nostats", 0 ); + self.teamkillpunish = 0; + if ( level.minimumallowedteamkills >= 0 && self.pers[ "teamkills_nostats" ] > level.minimumallowedteamkills ) + { + self thread reduceteamkillsovertime(); + } + } + if ( getDvar( #"F7B30924" ) == "1" ) + { + level waittill( "eternity" ); + } + self.killedplayerscurrent = []; + if ( !isDefined( self.pers[ "best_kill_streak" ] ) ) + { + self.pers[ "killed_players" ] = []; + self.pers[ "killed_by" ] = []; + self.pers[ "nemesis_tracking" ] = []; + self.pers[ "artillery_kills" ] = 0; + self.pers[ "dog_kills" ] = 0; + self.pers[ "nemesis_name" ] = ""; + self.pers[ "nemesis_rank" ] = 0; + self.pers[ "nemesis_rankIcon" ] = 0; + self.pers[ "nemesis_xp" ] = 0; + self.pers[ "nemesis_xuid" ] = ""; + self.pers[ "best_kill_streak" ] = 0; + } + if ( !isDefined( self.pers[ "music" ] ) ) + { + self.pers[ "music" ] = spawnstruct(); + self.pers[ "music" ].spawn = 0; + self.pers[ "music" ].inque = 0; + self.pers[ "music" ].currentstate = "SILENT"; + self.pers[ "music" ].previousstate = "SILENT"; + self.pers[ "music" ].nextstate = "UNDERSCORE"; + self.pers[ "music" ].returnstate = "UNDERSCORE"; + } + self.leaderdialogqueue = []; + self.leaderdialogactive = 0; + self.leaderdialoggroups = []; + self.currentleaderdialoggroup = ""; + self.currentleaderdialog = ""; + self.currentleaderdialogtime = 0; + if ( !isDefined( self.pers[ "cur_kill_streak" ] ) ) + { + self.pers[ "cur_kill_streak" ] = 0; + } + if ( !isDefined( self.pers[ "cur_total_kill_streak" ] ) ) + { + self.pers[ "cur_total_kill_streak" ] = 0; + self setplayercurrentstreak( 0 ); + } + if ( !isDefined( self.pers[ "totalKillstreakCount" ] ) ) + { + self.pers[ "totalKillstreakCount" ] = 0; + } + if ( !isDefined( self.pers[ "killstreaksEarnedThisKillstreak" ] ) ) + { + self.pers[ "killstreaksEarnedThisKillstreak" ] = 0; + } + if ( isDefined( level.usingscorestreaks ) && level.usingscorestreaks && !isDefined( self.pers[ "killstreak_quantity" ] ) ) + { + self.pers[ "killstreak_quantity" ] = []; + } + if ( isDefined( level.usingscorestreaks ) && level.usingscorestreaks && !isDefined( self.pers[ "held_killstreak_ammo_count" ] ) ) + { + self.pers[ "held_killstreak_ammo_count" ] = []; + } + self.lastkilltime = 0; + self.cur_death_streak = 0; + self disabledeathstreak(); + self.death_streak = 0; + self.kill_streak = 0; + self.gametype_kill_streak = 0; + self.spawnqueueindex = -1; + self.deathtime = 0; + self.lastgrenadesuicidetime = -1; + self.teamkillsthisround = 0; + if ( isDefined( level.livesdonotreset ) || !level.livesdonotreset && !isDefined( self.pers[ "lives" ] ) ) + { + self.pers[ "lives" ] = level.numlives; + } + if ( !level.teambased ) + { + } + self.hasspawned = 0; + self.waitingtospawn = 0; + self.wantsafespawn = 0; + self.deathcount = 0; + self.wasaliveatmatchstart = 0; + level.players[ level.players.size ] = self; + if ( level.splitscreen ) + { + setdvar( "splitscreen_playerNum", level.players.size ); + } + if ( game[ "state" ] == "postgame" ) + { + self.pers[ "needteam" ] = 1; + self.pers[ "team" ] = "spectator"; + self.team = "spectator"; + self setclientuivisibilityflag( "hud_visible", 0 ); + self [[ level.spawnintermission ]](); + self closemenu(); + self closeingamemenu(); + profilelog_endtiming( 4, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); + return; + } + if ( level.scr_zm_ui_gametype_group == "zencounter" ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "losses" ); + self updatestatratio( "wlratio", "wins", "losses" ); + self maps/mp/zombies/_zm_stats::add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "losses", 1 ); + } + else + { + if ( level.scr_zm_ui_gametype_group == "zsurvival" ) + { + if ( is_true( level.should_use_cia ) ) + { + self luinotifyevent( &"hud_update_survival_team", 1, 2 ); + } + } + } + level endon( "game_ended" ); + if ( isDefined( level.hostmigrationtimer ) ) + { + self thread maps/mp/gametypes_zm/_hostmigration::hostmigrationtimerthink(); + } + if ( level.oldschool ) + { + self.class = self.pers[ "class" ]; + } + if ( isDefined( self.pers[ "team" ] ) ) + { + self.team = self.pers[ "team" ]; + } + if ( isDefined( self.pers[ "class" ] ) ) + { + self.class = self.pers[ "class" ]; + } + if ( !isDefined( self.pers[ "team" ] ) || isDefined( self.pers[ "needteam" ] ) ) + { + self.pers[ "team" ] = "spectator"; + self.team = "spectator"; + self.sessionstate = "dead"; + self maps/mp/gametypes_zm/_globallogic_ui::updateobjectivetext(); + [[ level.spawnspectator ]](); + if ( level.rankedmatch ) + { + [[ level.autoassign ]]( 0 ); + self thread maps/mp/gametypes_zm/_globallogic_spawn::kickifdontspawn(); + } + else + { + [[ level.autoassign ]]( 0 ); + } + if ( self.pers[ "team" ] == "spectator" ) + { + self.sessionteam = "spectator"; + if ( !level.teambased ) + { + self.ffateam = "spectator"; + } + self thread spectate_player_watcher(); + } + if ( level.teambased ) + { + self.sessionteam = self.pers[ "team" ]; + if ( !isalive( self ) ) + { + self.statusicon = "hud_status_dead"; + } + self thread maps/mp/gametypes_zm/_spectating::setspectatepermissions(); + } + } + else + { + if ( self.pers[ "team" ] == "spectator" ) + { + self setclientscriptmainmenu( game[ "menu_class" ] ); + [[ level.spawnspectator ]](); + self.sessionteam = "spectator"; + self.sessionstate = "spectator"; + if ( !level.teambased ) + { + self.ffateam = "spectator"; + } + self thread spectate_player_watcher(); + } + else + { + self.sessionteam = self.pers[ "team" ]; + self.sessionstate = "dead"; + if ( !level.teambased ) + { + self.ffateam = self.pers[ "team" ]; + } + self maps/mp/gametypes_zm/_globallogic_ui::updateobjectivetext(); + [[ level.spawnspectator ]](); + if ( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.pers[ "class" ] ) ) + { + self thread [[ level.spawnclient ]](); + } + else + { + self maps/mp/gametypes_zm/_globallogic_ui::showmainmenuforteam(); + } + self thread maps/mp/gametypes_zm/_spectating::setspectatepermissions(); + } + } + if ( self.sessionteam != "spectator" ) + { + self thread maps/mp/gametypes_zm/_spawning::onspawnplayer_unified( 1 ); + } + profilelog_endtiming( 4, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); + if ( isDefined( self.pers[ "isBot" ] ) ) + { + return; + } +} + +spectate_player_watcher() +{ + self endon( "disconnect" ); + self.watchingactiveclient = 1; + self.waitingforplayerstext = undefined; + while ( 1 ) + { + if ( self.pers[ "team" ] != "spectator" || level.gameended ) + { + self maps/mp/gametypes_zm/_hud_message::clearshoutcasterwaitingmessage(); +/# + println( " Unfreeze controls 1" ); +#/ + self freezecontrols( 0 ); + self.watchingactiveclient = 0; + return; + } + else if ( !level.splitscreen && !level.hardcoremode && getDvarInt( "scr_showperksonspawn" ) == 1 && game[ "state" ] != "postgame" && !isDefined( self.perkhudelem ) ) + { + if ( level.perksenabled == 1 ) + { + self maps/mp/gametypes_zm/_hud_util::showperks(); + } + self thread maps/mp/gametypes_zm/_globallogic_ui::hideloadoutaftertime( 0 ); + } + count = 0; + i = 0; + while ( i < level.players.size ) + { + if ( level.players[ i ].team != "spectator" ) + { + count++; + break; + } + else + { + i++; + } + } + if ( count > 0 ) + { + if ( !self.watchingactiveclient ) + { + self maps/mp/gametypes_zm/_hud_message::clearshoutcasterwaitingmessage(); + self freezecontrols( 0 ); +/# + println( " Unfreeze controls 2" ); +#/ + } + self.watchingactiveclient = 1; + } + else + { + if ( self.watchingactiveclient ) + { + [[ level.onspawnspectator ]](); + self freezecontrols( 1 ); + self maps/mp/gametypes_zm/_hud_message::setshoutcasterwaitingmessage(); + } + self.watchingactiveclient = 0; + } + wait 0,5; + } +} + +callback_playermigrated() +{ +/# + println( "Player " + self.name + " finished migrating at time " + getTime() ); +#/ + if ( isDefined( self.connected ) && self.connected ) + { + self maps/mp/gametypes_zm/_globallogic_ui::updateobjectivetext(); + } + self thread inform_clientvm_of_migration(); + level.hostmigrationreturnedplayercount++; + if ( level.hostmigrationreturnedplayercount >= ( ( level.players.size * 2 ) / 3 ) ) + { +/# + println( "2/3 of players have finished migrating" ); +#/ + level notify( "hostmigration_enoughplayers" ); + } +} + +inform_clientvm_of_migration() +{ + self endon( "disconnect" ); + wait 1; + self clientnotify( "hmo" ); +/# + println( "SERVER : Sent HMO to client " + self getentitynumber() ); +#/ +} + +callback_playerdisconnect() +{ + profilelog_begintiming( 5, "ship" ); + if ( game[ "state" ] != "postgame" && !level.gameended ) + { + gamelength = maps/mp/gametypes_zm/_globallogic::getgamelength(); + self maps/mp/gametypes_zm/_globallogic::bbplayermatchend( gamelength, "MP_PLAYER_DISCONNECT", 0 ); + } + self removeplayerondisconnect(); + if ( level.splitscreen ) + { + players = level.players; + if ( players.size <= 1 ) + { + level thread maps/mp/gametypes_zm/_globallogic::forceend(); + } + setdvar( "splitscreen_playerNum", players.size ); + } + if ( isDefined( self.score ) && isDefined( self.pers[ "team" ] ) ) + { + self logstring( "team: score " + self.pers[ "team" ] + ":" + self.score ); + level.dropteam += 1; + } + [[ level.onplayerdisconnect ]](); + lpselfnum = self getentitynumber(); + lpguid = self getguid(); + logprint( "Q;" + lpguid + ";" + lpselfnum + ";" + self.name + "\n" ); + entry = 0; + while ( entry < level.players.size ) + { + if ( level.players[ entry ] == self ) + { + while ( entry < ( level.players.size - 1 ) ) + { + level.players[ entry ] = level.players[ entry + 1 ]; + entry++; + } + break; + } + else + { + entry++; + } + } + entry = 0; + while ( entry < level.players.size ) + { + if ( isDefined( level.players[ entry ].pers[ "killed_players" ][ self.name ] ) ) + { + } + if ( isDefined( level.players[ entry ].killedplayerscurrent[ self.name ] ) ) + { + } + if ( isDefined( level.players[ entry ].pers[ "killed_by" ][ self.name ] ) ) + { + } + if ( isDefined( level.players[ entry ].pers[ "nemesis_tracking" ][ self.name ] ) ) + { + } + if ( level.players[ entry ].pers[ "nemesis_name" ] == self.name ) + { + level.players[ entry ] choosenextbestnemesis(); + } + entry++; + } + if ( level.gameended ) + { + self maps/mp/gametypes_zm/_globallogic::removedisconnectedplayerfromplacement(); + } + level thread maps/mp/gametypes_zm/_globallogic::updateteamstatus(); + profilelog_endtiming( 5, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); +} + +callback_playermelee( eattacker, idamage, sweapon, vorigin, vdir, boneindex, shieldhit ) +{ + hit = 1; + if ( level.teambased && self.team == eattacker.team ) + { + if ( level.friendlyfire == 0 ) + { + hit = 0; + } + } + self finishmeleehit( eattacker, sweapon, vorigin, vdir, boneindex, shieldhit, hit ); +} + +choosenextbestnemesis() +{ + nemesisarray = self.pers[ "nemesis_tracking" ]; + nemesisarraykeys = getarraykeys( nemesisarray ); + nemesisamount = 0; + nemesisname = ""; + while ( nemesisarraykeys.size > 0 ) + { + i = 0; + while ( i < nemesisarraykeys.size ) + { + nemesisarraykey = nemesisarraykeys[ i ]; + if ( nemesisarray[ nemesisarraykey ] > nemesisamount ) + { + nemesisname = nemesisarraykey; + nemesisamount = nemesisarray[ nemesisarraykey ]; + } + i++; + } + } + self.pers[ "nemesis_name" ] = nemesisname; + if ( nemesisname != "" ) + { + playerindex = 0; + while ( playerindex < level.players.size ) + { + if ( level.players[ playerindex ].name == nemesisname ) + { + nemesisplayer = level.players[ playerindex ]; + self.pers[ "nemesis_rank" ] = nemesisplayer.pers[ "rank" ]; + self.pers[ "nemesis_rankIcon" ] = nemesisplayer.pers[ "rankxp" ]; + self.pers[ "nemesis_xp" ] = nemesisplayer.pers[ "prestige" ]; + self.pers[ "nemesis_xuid" ] = nemesisplayer getxuid( 1 ); + break; + } + else + { + playerindex++; + } + } + } + else self.pers[ "nemesis_xuid" ] = ""; +} + +removeplayerondisconnect() +{ + entry = 0; + while ( entry < level.players.size ) + { + if ( level.players[ entry ] == self ) + { + while ( entry < ( level.players.size - 1 ) ) + { + level.players[ entry ] = level.players[ entry + 1 ]; + entry++; + } + return; + } + else + { + entry++; + } + } +} + +custom_gamemodes_modified_damage( victim, eattacker, idamage, smeansofdeath, sweapon, einflictor, shitloc ) +{ + if ( level.onlinegame && !sessionmodeisprivate() ) + { + return idamage; + } + if ( isDefined( eattacker ) && isDefined( eattacker.damagemodifier ) ) + { + idamage *= eattacker.damagemodifier; + } + if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" ) + { + idamage = int( idamage * level.bulletdamagescalar ); + } + return idamage; +} + +figureoutattacker( eattacker ) +{ + if ( isDefined( eattacker ) ) + { + if ( isai( eattacker ) && isDefined( eattacker.script_owner ) ) + { + team = self.team; + if ( isai( self ) && isDefined( self.aiteam ) ) + { + team = self.aiteam; + } + if ( eattacker.script_owner.team != team ) + { + eattacker = eattacker.script_owner; + } + } + if ( eattacker.classname == "script_vehicle" && isDefined( eattacker.owner ) ) + { + eattacker = eattacker.owner; + } + else + { + if ( eattacker.classname == "auto_turret" && isDefined( eattacker.owner ) ) + { + eattacker = eattacker.owner; + } + } + } + return eattacker; +} + +figureoutweapon( sweapon, einflictor ) +{ + if ( sweapon == "none" && isDefined( einflictor ) ) + { + if ( isDefined( einflictor.targetname ) && einflictor.targetname == "explodable_barrel" ) + { + sweapon = "explodable_barrel_mp"; + } + else + { + if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) + { + sweapon = "destructible_car_mp"; + } + } + } + return sweapon; +} + +isplayerimmunetokillstreak( eattacker, sweapon ) +{ + if ( level.hardcoremode ) + { + return 0; + } + if ( !isDefined( eattacker ) ) + { + return 0; + } + if ( self != eattacker ) + { + return 0; + } + if ( sweapon != "straferun_gun_mp" && sweapon != "straferun_rockets_mp" ) + { + return 0; + } + return 1; +} + +callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + profilelog_begintiming( 6, "ship" ); + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( self.sessionteam == "spectator" ) + { + return; + } + if ( isDefined( self.candocombat ) && !self.candocombat ) + { + return; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( eattacker.candocombat ) && !eattacker.candocombat ) + { + return; + } + if ( isDefined( level.hostmigrationtimer ) ) + { + return; + } + if ( sweapon != "ai_tank_drone_gun_mp" && sweapon == "ai_tank_drone_rocket_mp" && !level.hardcoremode ) + { + if ( isDefined( eattacker ) && eattacker == self ) + { + if ( isDefined( einflictor ) && isDefined( einflictor.from_ai ) ) + { + return; + } + } + if ( isDefined( eattacker ) && isDefined( eattacker.owner ) && eattacker.owner == self ) + { + return; + } + } + if ( sweapon == "emp_grenade_mp" ) + { + self notify( "emp_grenaded" ); + } + idamage = custom_gamemodes_modified_damage( self, eattacker, idamage, smeansofdeath, sweapon, einflictor, shitloc ); + idamage = int( idamage ); + self.idflags = idflags; + self.idflagstime = getTime(); + eattacker = figureoutattacker( eattacker ); + pixbeginevent( "PlayerDamage flags/tweaks" ); + if ( !isDefined( vdir ) ) + { + idflags |= level.idflags_no_knockback; + } + friendly = 0; + if ( self.health != self.maxhealth ) + { + self notify( "snd_pain_player" ); + } + if ( isDefined( einflictor ) && isDefined( einflictor.script_noteworthy ) && einflictor.script_noteworthy == "ragdoll_now" ) + { + smeansofdeath = "MOD_FALLING"; + } + if ( maps/mp/gametypes_zm/_globallogic_utils::isheadshot( sweapon, shitloc, smeansofdeath, einflictor ) && isplayer( eattacker ) ) + { + smeansofdeath = "MOD_HEAD_SHOT"; + } + if ( level.onplayerdamage != ::maps/mp/gametypes_zm/_globallogic::blank ) + { + modifieddamage = [[ level.onplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + if ( isDefined( modifieddamage ) ) + { + if ( modifieddamage <= 0 ) + { + return; + } + idamage = modifieddamage; + } + } + if ( level.onlyheadshots ) + { + if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" ) + { + return; + } + else + { + if ( smeansofdeath == "MOD_HEAD_SHOT" ) + { + idamage = 150; + } + } + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && self.team != eattacker.team ) + { + self.lastattackweapon = sweapon; + } + sweapon = figureoutweapon( sweapon, einflictor ); + pixendevent(); + if ( isplayer( eattacker ) ) + { + attackerishittingteammate = self isenemyplayer( eattacker ) == 0; + } + if ( shitloc == "riotshield" ) + { + if ( attackerishittingteammate && level.friendlyfire == 0 ) + { + return; + } + if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" && !attackerishittingteammate ) + { + previous_shield_damage = self.shielddamageblocked; + self.shielddamageblocked += idamage; + if ( isplayer( eattacker ) ) + { + eattacker.lastattackedshieldplayer = self; + eattacker.lastattackedshieldtime = getTime(); + } + if ( ( self.shielddamageblocked % 400 ) < ( previous_shield_damage % 400 ) ) + { + score_event = "shield_blocked_damage"; + if ( self.shielddamageblocked > 2000 ) + { + score_event = "shield_blocked_damage_reduced"; + } + } + } + if ( idflags & level.idflags_shield_explosive_impact ) + { + shitloc = "none"; + if ( idflags & level.idflags_shield_explosive_impact_huge ) + { + idamage *= 0; + } + } + else if ( idflags & level.idflags_shield_explosive_splash ) + { + if ( isDefined( einflictor ) && isDefined( einflictor.stucktoplayer ) && einflictor.stucktoplayer == self ) + { + idamage = 101; + } + shitloc = "none"; + } + else + { + return; + } + } + if ( isDefined( eattacker ) && eattacker != self && !friendly ) + { + level.usestartspawns = 0; + } + pixbeginevent( "PlayerDamage log" ); +/# + if ( getDvarInt( "g_debugDamage" ) ) + { + println( "client:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc ); +#/ + } + if ( self.sessionstate != "dead" ) + { + lpselfnum = self getentitynumber(); + lpselfname = self.name; + lpselfteam = self.team; + lpselfguid = self getguid(); + lpattackerteam = ""; + lpattackerorigin = ( 0, 0, 0 ); + if ( isplayer( eattacker ) ) + { + lpattacknum = eattacker getentitynumber(); + lpattackguid = eattacker getguid(); + lpattackname = eattacker.name; + lpattackerteam = eattacker.team; + lpattackerorigin = eattacker.origin; + bbprint( "mpattacks", "gametime %d attackerspawnid %d attackerweapon %s attackerx %d attackery %d attackerz %d victimspawnid %d victimx %d victimy %d victimz %d damage %d damagetype %s damagelocation %s death %d", getTime(), getplayerspawnid( eattacker ), sweapon, lpattackerorigin, getplayerspawnid( self ), self.origin, idamage, smeansofdeath, shitloc, 0 ); + } + else + { + lpattacknum = -1; + lpattackguid = ""; + lpattackname = ""; + lpattackerteam = "world"; + bbprint( "mpattacks", "gametime %d attackerweapon %s victimspawnid %d victimx %d victimy %d victimz %d damage %d damagetype %s damagelocation %s death %d", getTime(), sweapon, getplayerspawnid( self ), self.origin, idamage, smeansofdeath, shitloc, 0 ); + } + logprint( "D;" + lpselfguid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sweapon + ";" + idamage + ";" + smeansofdeath + ";" + shitloc + "\n" ); + } + pixendevent(); + profilelog_endtiming( 6, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); +} + +resetattackerlist() +{ + self.attackers = []; + self.attackerdata = []; + self.attackerdamage = []; + self.firsttimedamaged = 0; +} + +dodamagefeedback( sweapon, einflictor, idamage, smeansofdeath ) +{ + if ( !isDefined( sweapon ) ) + { + return 0; + } + if ( level.allowhitmarkers == 0 ) + { + return 0; + } + if ( level.allowhitmarkers == 1 ) + { + if ( isDefined( smeansofdeath ) && isDefined( idamage ) ) + { + if ( istacticalhitmarker( sweapon, smeansofdeath, idamage ) ) + { + return 0; + } + } + } + return 1; +} + +istacticalhitmarker( sweapon, smeansofdeath, idamage ) +{ + if ( isgrenade( sweapon ) ) + { + if ( sweapon == "willy_pete_mp" ) + { + if ( smeansofdeath == "MOD_GRENADE_SPLASH" ) + { + return 1; + } + } + else + { + if ( idamage == 1 ) + { + return 1; + } + } + } + return 0; +} + +doperkfeedback( player, sweapon, smeansofdeath, einflictor ) +{ + perkfeedback = undefined; + return perkfeedback; +} + +isaikillstreakdamage( sweapon, einflictor ) +{ + switch( sweapon ) + { + case "ai_tank_drone_rocket_mp": + return isDefined( einflictor.firedbyai ); + case "missile_swarm_projectile_mp": + return 1; + case "planemortar_mp": + return 1; + case "chopper_minigun_mp": + return 1; + case "straferun_rockets_mp": + return 1; + case "littlebird_guard_minigun_mp": + return 1; + case "cobra_20mm_comlink_mp": + return 1; + } + return 0; +} + +finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + pixbeginevent( "finishPlayerDamageWrapper" ); + if ( !level.console && idflags & level.idflags_penetration && isplayer( eattacker ) ) + { +/# + println( "penetrated:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc ); +#/ + eattacker addplayerstat( "penetration_shots", 1 ); + } + self finishplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + if ( getDvar( #"C8077F47" ) != "" ) + { + self shellshock( "damage_mp", 0,2 ); + } + self damageshellshockandrumble( eattacker, einflictor, sweapon, smeansofdeath, idamage ); + pixendevent(); +} + +allowedassistweapon( weapon ) +{ + return 1; +} + +callback_playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + profilelog_begintiming( 7, "ship" ); + self endon( "spawned" ); + self notify( "killed_player" ); + if ( self.sessionteam == "spectator" ) + { + return; + } + if ( game[ "state" ] == "postgame" ) + { + return; + } + self needsrevive( 0 ); + if ( isDefined( self.burning ) && self.burning == 1 ) + { + self setburn( 0 ); + } + self.suicide = 0; + if ( isDefined( level.takelivesondeath ) && level.takelivesondeath == 1 ) + { + if ( self.pers[ "lives" ] ) + { + self.pers[ "lives" ]--; + + if ( self.pers[ "lives" ] == 0 ) + { + level notify( "player_eliminated" ); + self notify( "player_eliminated" ); + } + } + } + self thread flushgroupdialogonplayer( "item_destroyed" ); + sweapon = updateweapon( einflictor, sweapon ); + pixbeginevent( "PlayerKilled pre constants" ); + wasinlaststand = 0; + deathtimeoffset = 0; + lastweaponbeforedroppingintolaststand = undefined; + attackerstance = undefined; + self.laststandthislife = undefined; + self.vattackerorigin = undefined; + if ( isDefined( self.uselaststandparams ) ) + { + self.uselaststandparams = undefined; +/# + assert( isDefined( self.laststandparams ) ); +#/ + if ( !level.teambased || isDefined( attacker ) && isplayer( attacker ) || attacker.team != self.team && attacker == self ) + { + einflictor = self.laststandparams.einflictor; + attacker = self.laststandparams.attacker; + attackerstance = self.laststandparams.attackerstance; + idamage = self.laststandparams.idamage; + smeansofdeath = self.laststandparams.smeansofdeath; + sweapon = self.laststandparams.sweapon; + vdir = self.laststandparams.vdir; + shitloc = self.laststandparams.shitloc; + self.vattackerorigin = self.laststandparams.vattackerorigin; + deathtimeoffset = ( getTime() - self.laststandparams.laststandstarttime ) / 1000; + if ( isDefined( self.previousprimary ) ) + { + wasinlaststand = 1; + lastweaponbeforedroppingintolaststand = self.previousprimary; + } + } + self.laststandparams = undefined; + } + bestplayer = undefined; + bestplayermeansofdeath = undefined; + obituarymeansofdeath = undefined; + bestplayerweapon = undefined; + obituaryweapon = undefined; + if ( isDefined( attacker ) && attacker.classname != "trigger_hurt" && attacker.classname != "worldspawn" && isDefined( attacker.ismagicbullet ) && attacker.ismagicbullet != 1 && attacker == self && isDefined( self.attackers ) ) + { + while ( !isDefined( bestplayer ) ) + { + i = 0; + while ( i < self.attackers.size ) + { + player = self.attackers[ i ]; + if ( !isDefined( player ) ) + { + i++; + continue; + } + else if ( !isDefined( self.attackerdamage[ player.clientid ] ) || !isDefined( self.attackerdamage[ player.clientid ].damage ) ) + { + i++; + continue; + } + else + { + if ( player == self || level.teambased && player.team == self.team ) + { + i++; + continue; + } + else + { + if ( ( self.attackerdamage[ player.clientid ].lasttimedamaged + 2500 ) < getTime() ) + { + i++; + continue; + } + else if ( !allowedassistweapon( self.attackerdamage[ player.clientid ].weapon ) ) + { + i++; + continue; + } + else if ( self.attackerdamage[ player.clientid ].damage > 1 && !isDefined( bestplayer ) ) + { + bestplayer = player; + bestplayermeansofdeath = self.attackerdamage[ player.clientid ].meansofdeath; + bestplayerweapon = self.attackerdamage[ player.clientid ].weapon; + i++; + continue; + } + else + { + if ( isDefined( bestplayer ) && self.attackerdamage[ player.clientid ].damage > self.attackerdamage[ bestplayer.clientid ].damage ) + { + bestplayer = player; + bestplayermeansofdeath = self.attackerdamage[ player.clientid ].meansofdeath; + bestplayerweapon = self.attackerdamage[ player.clientid ].weapon; + } + } + } + } + i++; + } + } + if ( isDefined( bestplayer ) ) + { + self recordkillmodifier( "assistedsuicide" ); + } + } + if ( isDefined( bestplayer ) ) + { + attacker = bestplayer; + obituarymeansofdeath = bestplayermeansofdeath; + obituaryweapon = bestplayerweapon; + } + if ( isplayer( attacker ) ) + { + } + if ( maps/mp/gametypes_zm/_globallogic_utils::isheadshot( sweapon, shitloc, smeansofdeath, einflictor ) && isplayer( attacker ) ) + { + attacker playlocalsound( "prj_bullet_impact_headshot_helmet_nodie_2d" ); + smeansofdeath = "MOD_HEAD_SHOT"; + } + self.deathtime = getTime(); + attacker = updateattacker( attacker, sweapon ); + einflictor = updateinflictor( einflictor ); + smeansofdeath = updatemeansofdeath( sweapon, smeansofdeath ); + if ( isDefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped == 1 ) + { + self detachshieldmodel( level.carriedshieldmodel, "tag_weapon_left" ); + self.hasriotshield = 0; + self.hasriotshieldequipped = 0; + } + self thread updateglobalbotkilledcounter(); + if ( isplayer( attacker ) && attacker != self || !level.teambased && level.teambased && self.team != attacker.team ) + { + self addweaponstat( sweapon, "deaths", 1 ); + if ( wasinlaststand && isDefined( lastweaponbeforedroppingintolaststand ) ) + { + weaponname = lastweaponbeforedroppingintolaststand; + } + else + { + weaponname = self.lastdroppableweapon; + } + if ( isDefined( weaponname ) && !issubstr( weaponname, "gl_" ) || issubstr( weaponname, "mk_" ) && issubstr( weaponname, "ft_" ) ) + { + weaponname = self.currentweapon; + } + if ( isDefined( weaponname ) ) + { + self addweaponstat( weaponname, "deathsDuringUse", 1 ); + } + if ( smeansofdeath != "MOD_FALLING" ) + { + attacker addweaponstat( sweapon, "kills", 1 ); + } + if ( smeansofdeath == "MOD_HEAD_SHOT" ) + { + attacker addweaponstat( sweapon, "headshots", 1 ); + } + } + if ( !isDefined( obituarymeansofdeath ) ) + { + obituarymeansofdeath = smeansofdeath; + } + if ( !isDefined( obituaryweapon ) ) + { + obituaryweapon = sweapon; + } + if ( !isplayer( attacker ) || self isenemyplayer( attacker ) == 0 ) + { + level notify( "reset_obituary_count" ); + level.lastobituaryplayercount = 0; + level.lastobituaryplayer = undefined; + } + else + { + if ( isDefined( level.lastobituaryplayer ) && level.lastobituaryplayer == attacker ) + { + level.lastobituaryplayercount++; + } + else + { + level notify( "reset_obituary_count" ); + level.lastobituaryplayer = attacker; + level.lastobituaryplayercount = 1; + } + if ( level.lastobituaryplayercount >= 4 ) + { + level notify( "reset_obituary_count" ); + level.lastobituaryplayercount = 0; + level.lastobituaryplayer = undefined; + } + } + overrideentitycamera = 0; + if ( level.teambased && isDefined( attacker.pers ) && self.team == attacker.team && obituarymeansofdeath == "MOD_GRENADE" && level.friendlyfire == 0 ) + { + obituary( self, self, obituaryweapon, obituarymeansofdeath ); + maps/mp/_demo::bookmark( "kill", getTime(), self, self, 0, einflictor, overrideentitycamera ); + } + else + { + obituary( self, attacker, obituaryweapon, obituarymeansofdeath ); + maps/mp/_demo::bookmark( "kill", getTime(), self, attacker, 0, einflictor, overrideentitycamera ); + } + if ( !level.ingraceperiod ) + { + self maps/mp/gametypes_zm/_weapons::dropscavengerfordeath( attacker ); + self maps/mp/gametypes_zm/_weapons::dropweaponfordeath( attacker ); + self maps/mp/gametypes_zm/_weapons::dropoffhand(); + } + maps/mp/gametypes_zm/_spawnlogic::deathoccured( self, attacker ); + self.sessionstate = "dead"; + self.statusicon = "hud_status_dead"; + self.killedplayerscurrent = []; + self.deathcount++; +/# + println( "players(" + self.clientid + ") death count ++: " + self.deathcount ); +#/ + if ( !isDefined( self.switching_teams ) ) + { + if ( isplayer( attacker ) && level.teambased && attacker != self && self.team == attacker.team ) + { + self.pers[ "cur_kill_streak" ] = 0; + self.pers[ "cur_total_kill_streak" ] = 0; + self.pers[ "totalKillstreakCount" ] = 0; + self.pers[ "killstreaksEarnedThisKillstreak" ] = 0; + self setplayercurrentstreak( 0 ); + } + else + { + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "deaths", 1, 1, 1 ); + self.deaths = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "deaths" ); + self updatestatratio( "kdratio", "kills", "deaths" ); + if ( self.pers[ "cur_kill_streak" ] > self.pers[ "best_kill_streak" ] ) + { + self.pers[ "best_kill_streak" ] = self.pers[ "cur_kill_streak" ]; + } + self.pers[ "kill_streak_before_death" ] = self.pers[ "cur_kill_streak" ]; + self.pers[ "cur_kill_streak" ] = 0; + self.pers[ "cur_total_kill_streak" ] = 0; + self.pers[ "totalKillstreakCount" ] = 0; + self.pers[ "killstreaksEarnedThisKillstreak" ] = 0; + self setplayercurrentstreak( 0 ); + self.cur_death_streak++; + if ( self.cur_death_streak > self.death_streak ) + { + if ( level.rankedmatch ) + { + self setdstat( "HighestStats", "death_streak", self.cur_death_streak ); + } + self.death_streak = self.cur_death_streak; + } + if ( self.cur_death_streak >= getDvarInt( "perk_deathStreakCountRequired" ) ) + { + self enabledeathstreak(); + } + } + } + else + { + self.pers[ "totalKillstreakCount" ] = 0; + self.pers[ "killstreaksEarnedThisKillstreak" ] = 0; + } + lpselfnum = self getentitynumber(); + lpselfname = self.name; + lpattackguid = ""; + lpattackname = ""; + lpselfteam = self.team; + lpselfguid = self getguid(); + lpattackteam = ""; + lpattackorigin = ( 0, 0, 0 ); + lpattacknum = -1; + awardassists = 0; + pixendevent(); + self resetplayermomentumondeath(); + if ( isplayer( attacker ) ) + { + lpattackguid = attacker getguid(); + lpattackname = attacker.name; + lpattackteam = attacker.team; + lpattackorigin = attacker.origin; + if ( attacker == self ) + { + dokillcam = 0; + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "suicides", 1 ); + self.suicides = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "suicides" ); + if ( smeansofdeath == "MOD_SUICIDE" && shitloc == "none" && self.throwinggrenade ) + { + self.lastgrenadesuicidetime = getTime(); + } + awardassists = 1; + self.suicide = 1; + if ( isDefined( self.friendlydamage ) ) + { + self iprintln( &"MP_FRIENDLY_FIRE_WILL_NOT" ); + if ( level.teamkillpointloss ) + { + scoresub = self [[ level.getteamkillscore ]]( einflictor, attacker, smeansofdeath, sweapon ); + maps/mp/gametypes_zm/_globallogic_score::_setplayerscore( attacker, maps/mp/gametypes_zm/_globallogic_score::_getplayerscore( attacker ) - scoresub ); + } + } + } + else + { + pixbeginevent( "PlayerKilled attacker" ); + lpattacknum = attacker getentitynumber(); + dokillcam = 1; + if ( level.teambased && self.team == attacker.team && smeansofdeath == "MOD_GRENADE" && level.friendlyfire == 0 ) + { + } + else + { + if ( level.teambased && self.team == attacker.team ) + { + if ( !ignoreteamkills( sweapon, smeansofdeath ) ) + { + teamkill_penalty = self [[ level.getteamkillpenalty ]]( einflictor, attacker, smeansofdeath, sweapon ); + attacker maps/mp/gametypes_zm/_globallogic_score::incpersstat( "teamkills_nostats", teamkill_penalty, 0 ); + attacker maps/mp/gametypes_zm/_globallogic_score::incpersstat( "teamkills", 1 ); + attacker.teamkillsthisround++; + if ( level.teamkillpointloss ) + { + scoresub = self [[ level.getteamkillscore ]]( einflictor, attacker, smeansofdeath, sweapon ); + maps/mp/gametypes_zm/_globallogic_score::_setplayerscore( attacker, maps/mp/gametypes_zm/_globallogic_score::_getplayerscore( attacker ) - scoresub ); + } + if ( maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() < 5000 ) + { + teamkilldelay = 1; + } + else if ( attacker.pers[ "teamkills_nostats" ] > 1 && maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() < ( 8000 + ( attacker.pers[ "teamkills_nostats" ] * 1000 ) ) ) + { + teamkilldelay = 1; + } + else + { + teamkilldelay = attacker teamkilldelay(); + } + if ( teamkilldelay > 0 ) + { + attacker.teamkillpunish = 1; + attacker suicide(); + if ( attacker shouldteamkillkick( teamkilldelay ) ) + { + attacker teamkillkick(); + } + attacker thread reduceteamkillsovertime(); + } + } + } + else + { + maps/mp/gametypes_zm/_globallogic_score::inctotalkills( attacker.team ); + attacker thread maps/mp/gametypes_zm/_globallogic_score::givekillstats( smeansofdeath, sweapon, self ); + if ( isalive( attacker ) ) + { + pixbeginevent( "killstreak" ); + if ( isDefined( einflictor ) || !isDefined( einflictor.requireddeathcount ) && attacker.deathcount == einflictor.requireddeathcount ) + { + shouldgivekillstreak = 0; + attacker.pers[ "cur_total_kill_streak" ]++; + attacker setplayercurrentstreak( attacker.pers[ "cur_total_kill_streak" ] ); + if ( isDefined( level.killstreaks ) && shouldgivekillstreak ) + { + attacker.pers[ "cur_kill_streak" ]++; + if ( attacker.pers[ "cur_kill_streak" ] >= 3 ) + { + if ( attacker.pers[ "cur_kill_streak" ] <= 30 ) + { + } + } + } + } + pixendevent(); + } + if ( attacker.pers[ "cur_kill_streak" ] > attacker.kill_streak ) + { + if ( level.rankedmatch ) + { + attacker setdstat( "HighestStats", "kill_streak", attacker.pers[ "totalKillstreakCount" ] ); + } + attacker.kill_streak = attacker.pers[ "cur_kill_streak" ]; + } + killstreak = undefined; + if ( isDefined( killstreak ) ) + { + } + else if ( smeansofdeath == "MOD_HEAD_SHOT" ) + { + } + else if ( smeansofdeath == "MOD_MELEE" ) + { + if ( sweapon == "riotshield_mp" ) + { + } + } + attacker thread maps/mp/gametypes_zm/_globallogic_score::trackattackerkill( self.name, self.pers[ "rank" ], self.pers[ "rankxp" ], self.pers[ "prestige" ], self getxuid( 1 ) ); + attackername = attacker.name; + self thread maps/mp/gametypes_zm/_globallogic_score::trackattackeedeath( attackername, attacker.pers[ "rank" ], attacker.pers[ "rankxp" ], attacker.pers[ "prestige" ], attacker getxuid( 1 ) ); + attacker thread maps/mp/gametypes_zm/_globallogic_score::inckillstreaktracker( sweapon ); + if ( level.teambased && attacker.team != "spectator" ) + { + if ( isai( attacker ) ) + { + maps/mp/gametypes_zm/_globallogic_score::giveteamscore( "kill", attacker.aiteam, attacker, self ); + } + else + { + maps/mp/gametypes_zm/_globallogic_score::giveteamscore( "kill", attacker.team, attacker, self ); + } + } + scoresub = level.deathpointloss; + if ( scoresub != 0 ) + { + maps/mp/gametypes_zm/_globallogic_score::_setplayerscore( self, maps/mp/gametypes_zm/_globallogic_score::_getplayerscore( self ) - scoresub ); + } + level thread playkillbattlechatter( attacker, sweapon, self ); + if ( level.teambased ) + { + awardassists = 1; + } + } + } + pixendevent(); + } + } + else if ( isDefined( attacker ) || attacker.classname == "trigger_hurt" && attacker.classname == "worldspawn" ) + { + dokillcam = 0; + lpattacknum = -1; + lpattackguid = ""; + lpattackname = ""; + lpattackteam = "world"; + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "suicides", 1 ); + self.suicides = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "suicides" ); + awardassists = 1; + } + else + { + dokillcam = 0; + lpattacknum = -1; + lpattackguid = ""; + lpattackname = ""; + lpattackteam = "world"; + if ( isDefined( einflictor ) && isDefined( einflictor.killcament ) ) + { + dokillcam = 1; + lpattacknum = self getentitynumber(); + } + if ( isDefined( attacker ) && isDefined( attacker.team ) && isDefined( level.teams[ attacker.team ] ) ) + { + if ( attacker.team != self.team ) + { + if ( level.teambased ) + { + maps/mp/gametypes_zm/_globallogic_score::giveteamscore( "kill", attacker.team, attacker, self ); + } + } + } + awardassists = 1; + } + if ( sessionmodeiszombiesgame() ) + { + awardassists = 0; + } + if ( awardassists ) + { + pixbeginevent( "PlayerKilled assists" ); + while ( isDefined( self.attackers ) ) + { + j = 0; + while ( j < self.attackers.size ) + { + player = self.attackers[ j ]; + if ( !isDefined( player ) ) + { + j++; + continue; + } + else if ( player == attacker ) + { + j++; + continue; + } + else if ( player.team != lpattackteam ) + { + j++; + continue; + } + else + { + damage_done = self.attackerdamage[ player.clientid ].damage; + player thread maps/mp/gametypes_zm/_globallogic_score::processassist( self, damage_done, self.attackerdamage[ player.clientid ].weapon ); + } + j++; + } + } + if ( isDefined( self.lastattackedshieldplayer ) && isDefined( self.lastattackedshieldtime ) && self.lastattackedshieldplayer != attacker ) + { + if ( ( getTime() - self.lastattackedshieldtime ) < 4000 ) + { + self.lastattackedshieldplayer thread maps/mp/gametypes_zm/_globallogic_score::processshieldassist( self ); + } + } + pixendevent(); + } + pixbeginevent( "PlayerKilled post constants" ); + self.lastattacker = attacker; + self.lastdeathpos = self.origin; + if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self || !level.teambased && attacker.team != self.team ) + { + self thread maps/mp/_challenges::playerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, shitloc, attackerstance ); + } + else + { + self notify( "playerKilledChallengesProcessed" ); + } + if ( isDefined( self.attackers ) ) + { + self.attackers = []; + } + if ( isplayer( attacker ) ) + { + bbprint( "mpattacks", "gametime %d attackerspawnid %d attackerweapon %s attackerx %d attackery %d attackerz %d victimspawnid %d victimx %d victimy %d victimz %d damage %d damagetype %s damagelocation %s death %d", getTime(), getplayerspawnid( attacker ), sweapon, lpattackorigin, getplayerspawnid( self ), self.origin, idamage, smeansofdeath, shitloc, 1 ); + } + else + { + bbprint( "mpattacks", "gametime %d attackerweapon %s victimspawnid %d victimx %d victimy %d victimz %d damage %d damagetype %s damagelocation %s death %d", getTime(), sweapon, getplayerspawnid( self ), self.origin, idamage, smeansofdeath, shitloc, 1 ); + } + logprint( "K;" + lpselfguid + ";" + lpselfnum + ";" + lpselfteam + ";" + lpselfname + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackteam + ";" + lpattackname + ";" + sweapon + ";" + idamage + ";" + smeansofdeath + ";" + shitloc + "\n" ); + attackerstring = "none"; + if ( isplayer( attacker ) ) + { + attackerstring = attacker getxuid() + "(" + lpattackname + ")"; + } + self logstring( "d " + smeansofdeath + "(" + sweapon + ") a:" + attackerstring + " d:" + idamage + " l:" + shitloc + " @ " + int( self.origin[ 0 ] ) + " " + int( self.origin[ 1 ] ) + " " + int( self.origin[ 2 ] ) ); + level thread maps/mp/gametypes_zm/_globallogic::updateteamstatus(); + killcamentity = self getkillcamentity( attacker, einflictor, sweapon ); + killcamentityindex = -1; + killcamentitystarttime = 0; + if ( isDefined( killcamentity ) ) + { + killcamentityindex = killcamentity getentitynumber(); + if ( isDefined( killcamentity.starttime ) ) + { + killcamentitystarttime = killcamentity.starttime; + } + else + { + killcamentitystarttime = killcamentity.birthtime; + } + if ( !isDefined( killcamentitystarttime ) ) + { + killcamentitystarttime = 0; + } + } + if ( isDefined( self.killstreak_waitamount ) && self.killstreak_waitamount > 0 ) + { + dokillcam = 0; + } + self maps/mp/gametypes_zm/_weapons::detachcarryobjectmodel(); + died_in_vehicle = 0; + if ( isDefined( self.diedonvehicle ) ) + { + died_in_vehicle = self.diedonvehicle; + } + pixendevent(); + pixbeginevent( "PlayerKilled body and gibbing" ); + if ( !died_in_vehicle ) + { + vattackerorigin = undefined; + if ( isDefined( attacker ) ) + { + vattackerorigin = attacker.origin; + } + ragdoll_now = 0; + if ( isDefined( self.usingvehicle ) && self.usingvehicle && isDefined( self.vehicleposition ) && self.vehicleposition == 1 ) + { + ragdoll_now = 1; + } + body = self cloneplayer( deathanimduration ); + self createdeadbody( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, deathanimduration, einflictor, ragdoll_now, body ); + } + pixendevent(); + thread maps/mp/gametypes_zm/_globallogic_spawn::spawnqueuedclient( self.team, attacker ); + self.switching_teams = undefined; + self.joining_team = undefined; + self.leaving_team = undefined; + self thread [[ level.onplayerkilled ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + icb = 0; + while ( icb < level.onplayerkilledextraunthreadedcbs.size ) + { + self [[ level.onplayerkilledextraunthreadedcbs[ icb ] ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + icb++; + } + self.wantsafespawn = 0; + perks = []; + killstreaks = maps/mp/gametypes_zm/_globallogic::getkillstreaks( attacker ); + if ( !isDefined( self.killstreak_waitamount ) ) + { + self thread [[ level.spawnplayerprediction ]](); + } + profilelog_endtiming( 7, "gs=" + game[ "state" ] + " zom=" + sessionmodeiszombiesgame() ); + wait 0,25; + weaponclass = getweaponclass( sweapon ); + self.cancelkillcam = 0; + defaultplayerdeathwatchtime = 1,75; + if ( isDefined( level.overrideplayerdeathwatchtimer ) ) + { + defaultplayerdeathwatchtime = [[ level.overrideplayerdeathwatchtimer ]]( defaultplayerdeathwatchtime ); + } + maps/mp/gametypes_zm/_globallogic_utils::waitfortimeornotifies( defaultplayerdeathwatchtime ); + self notify( "death_delay_finished" ); +/# + if ( getDvarInt( #"C1849218" ) != 0 ) + { + dokillcam = 1; + if ( lpattacknum < 0 ) + { + lpattacknum = self getentitynumber(); +#/ + } + } + if ( game[ "state" ] != "playing" ) + { + return; + } + self.respawntimerstarttime = getTime(); + if ( !self.cancelkillcam && dokillcam && level.killcam ) + { + if ( level.numliveslivesleft = self.pers[ "lives" ]; + timeuntilspawn = maps/mp/gametypes_zm/_globallogic_spawn::timeuntilspawn( 1 ); + && livesleft && timeuntilspawn <= 0 ) + { + willrespawnimmediately = !level.playerqueuedrespawn; + } + } + if ( game[ "state" ] != "playing" ) + { + self.sessionstate = "dead"; + self.spectatorclient = -1; + self.killcamtargetentity = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + return; + } + waittillkillstreakdone(); + if ( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) ) + { + timepassed = undefined; + if ( isDefined( self.respawntimerstarttime ) ) + { + timepassed = ( getTime() - self.respawntimerstarttime ) / 1000; + } + self thread [[ level.spawnclient ]]( timepassed ); + self.respawntimerstarttime = undefined; + } +} + +updateglobalbotkilledcounter() +{ + if ( isDefined( self.pers[ "isBot" ] ) ) + { + level.globallarryskilled++; + } +} + +waittillkillstreakdone() +{ + if ( isDefined( self.killstreak_waitamount ) ) + { + starttime = getTime(); + waittime = self.killstreak_waitamount * 1000; + while ( getTime() < ( starttime + waittime ) && isDefined( self.killstreak_waitamount ) ) + { + wait 0,1; + } + wait 2; + self.killstreak_waitamount = undefined; + } +} + +teamkillkick() +{ + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "sessionbans", 1 ); + self endon( "disconnect" ); + waittillframeend; + playlistbanquantum = maps/mp/gametypes_zm/_tweakables::gettweakablevalue( "team", "teamkillerplaylistbanquantum" ); + playlistbanpenalty = maps/mp/gametypes_zm/_tweakables::gettweakablevalue( "team", "teamkillerplaylistbanpenalty" ); + if ( playlistbanquantum > 0 && playlistbanpenalty > 0 ) + { + timeplayedtotal = self getdstat( "playerstatslist", "time_played_total", "StatValue" ); + minutesplayed = timeplayedtotal / 60; + freebees = 2; + banallowance = int( floor( minutesplayed / playlistbanquantum ) ) + freebees; + if ( self.sessionbans > banallowance ) + { + self setdstat( "playerstatslist", "gametypeban", "StatValue", timeplayedtotal + ( playlistbanpenalty * 60 ) ); + } + } + if ( self is_bot() ) + { + level notify( "bot_kicked" ); + } + ban( self getentitynumber() ); + maps/mp/gametypes_zm/_globallogic_audio::leaderdialog( "kicked" ); +} + +teamkilldelay() +{ + teamkills = self.pers[ "teamkills_nostats" ]; + if ( level.minimumallowedteamkills < 0 || teamkills <= level.minimumallowedteamkills ) + { + return 0; + } + exceeded = teamkills - level.minimumallowedteamkills; + return level.teamkillspawndelay * exceeded; +} + +shouldteamkillkick( teamkilldelay ) +{ + if ( teamkilldelay && level.minimumallowedteamkills >= 0 ) + { + if ( maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() >= 5000 ) + { + return 1; + } + if ( self.pers[ "teamkills_nostats" ] > 1 ) + { + return 1; + } + } + return 0; +} + +reduceteamkillsovertime() +{ + timeperoneteamkillreduction = 20; + reductionpersecond = 1 / timeperoneteamkillreduction; + while ( 1 ) + { + if ( isalive( self ) ) + { + self.pers[ "teamkills_nostats" ] -= reductionpersecond; + if ( self.pers[ "teamkills_nostats" ] < level.minimumallowedteamkills ) + { + self.pers[ "teamkills_nostats" ] = level.minimumallowedteamkills; + return; + } + } + else + { + wait 1; + } + } +} + +ignoreteamkills( sweapon, smeansofdeath ) +{ + if ( sessionmodeiszombiesgame() ) + { + return 1; + } + if ( smeansofdeath == "MOD_MELEE" ) + { + return 0; + } + if ( sweapon == "briefcase_bomb_mp" ) + { + return 1; + } + if ( sweapon == "supplydrop_mp" ) + { + return 1; + } + return 0; +} + +callback_playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ +} + +damageshellshockandrumble( eattacker, einflictor, sweapon, smeansofdeath, idamage ) +{ + self thread maps/mp/gametypes_zm/_weapons::onweapondamage( eattacker, einflictor, sweapon, smeansofdeath, idamage ); + self playrumbleonentity( "damage_heavy" ); +} + +createdeadbody( idamage, smeansofdeath, sweapon, shitloc, vdir, vattackerorigin, deathanimduration, einflictor, ragdoll_jib, body ) +{ + if ( smeansofdeath == "MOD_HIT_BY_OBJECT" && self getstance() == "prone" ) + { + self.body = body; + return; + } + if ( isDefined( level.ragdoll_override ) && self [[ level.ragdoll_override ]]() ) + { + return; + } + if ( !ragdoll_jib && !self isonladder() && !self ismantling() || smeansofdeath == "MOD_CRUSH" && smeansofdeath == "MOD_HIT_BY_OBJECT" ) + { + body startragdoll(); + } + if ( !self isonground() ) + { + if ( getDvarInt( "scr_disable_air_death_ragdoll" ) == 0 ) + { + body startragdoll(); + } + } + if ( self is_explosive_ragdoll( sweapon, einflictor ) ) + { + body start_explosive_ragdoll( vdir, sweapon ); + } + thread delaystartragdoll( body, shitloc, vdir, sweapon, einflictor, smeansofdeath ); + self.body = body; +} + +is_explosive_ragdoll( weapon, inflictor ) +{ + if ( !isDefined( weapon ) ) + { + return 0; + } + if ( weapon == "destructible_car_mp" || weapon == "explodable_barrel_mp" ) + { + return 1; + } + if ( weapon == "sticky_grenade_mp" || weapon == "explosive_bolt_mp" ) + { + if ( isDefined( inflictor ) && isDefined( inflictor.stucktoplayer ) ) + { + if ( inflictor.stucktoplayer == self ) + { + return 1; + } + } + } + return 0; +} + +start_explosive_ragdoll( dir, weapon ) +{ + if ( !isDefined( self ) ) + { + return; + } + x = randomintrange( 50, 100 ); + y = randomintrange( 50, 100 ); + z = randomintrange( 10, 20 ); + if ( isDefined( weapon ) || weapon == "sticky_grenade_mp" && weapon == "explosive_bolt_mp" ) + { + if ( isDefined( dir ) && lengthsquared( dir ) > 0 ) + { + x = dir[ 0 ] * x; + y = dir[ 1 ] * y; + } + } + else + { + if ( cointoss() ) + { + x *= -1; + } + if ( cointoss() ) + { + y *= -1; + } + } + self startragdoll(); + self launchragdoll( ( x, y, z ) ); +} + +notifyconnecting() +{ + waittillframeend; + if ( isDefined( self ) ) + { + level notify( "connecting" ); + } +} + +delaystartragdoll( ent, shitloc, vdir, sweapon, einflictor, smeansofdeath ) +{ + if ( isDefined( ent ) ) + { + deathanim = ent getcorpseanim(); + if ( animhasnotetrack( deathanim, "ignore_ragdoll" ) ) + { + return; + } + } + if ( level.oldschool ) + { + if ( !isDefined( vdir ) ) + { + vdir = ( 0, 0, 0 ); + } + explosionpos = ent.origin + ( 0, 0, maps/mp/gametypes_zm/_globallogic_utils::gethitlocheight( shitloc ) ); + explosionpos -= vdir * 20; + explosionradius = 40; + explosionforce = 0,75; + if ( smeansofdeath != "MOD_IMPACT" && smeansofdeath != "MOD_EXPLOSIVE" && !issubstr( smeansofdeath, "MOD_GRENADE" ) && !issubstr( smeansofdeath, "MOD_PROJECTILE" ) || shitloc == "head" && shitloc == "helmet" ) + { + explosionforce = 2,5; + } + ent startragdoll( 1 ); + wait 0,05; + if ( !isDefined( ent ) ) + { + return; + } + physicsexplosionsphere( explosionpos, explosionradius, explosionradius / 2, explosionforce ); + return; + } + wait 0,2; + if ( !isDefined( ent ) ) + { + return; + } + if ( ent isragdoll() ) + { + return; + } + deathanim = ent getcorpseanim(); + startfrac = 0,35; + if ( animhasnotetrack( deathanim, "start_ragdoll" ) ) + { + times = getnotetracktimes( deathanim, "start_ragdoll" ); + if ( isDefined( times ) ) + { + startfrac = times[ 0 ]; + } + } + waittime = startfrac * getanimlength( deathanim ); + wait waittime; + if ( isDefined( ent ) ) + { + ent startragdoll( 1 ); + } +} + +trackattackerdamage( eattacker, idamage, smeansofdeath, sweapon ) +{ +/# + assert( isplayer( eattacker ) ); +#/ + if ( self.attackerdata.size == 0 ) + { + self.firsttimedamaged = getTime(); + } + if ( !isDefined( self.attackerdata[ eattacker.clientid ] ) ) + { + self.attackerdamage[ eattacker.clientid ] = spawnstruct(); + self.attackerdamage[ eattacker.clientid ].damage = idamage; + self.attackerdamage[ eattacker.clientid ].meansofdeath = smeansofdeath; + self.attackerdamage[ eattacker.clientid ].weapon = sweapon; + self.attackerdamage[ eattacker.clientid ].time = getTime(); + self.attackers[ self.attackers.size ] = eattacker; + self.attackerdata[ eattacker.clientid ] = 0; + } + else + { + self.attackerdamage[ eattacker.clientid ].damage += idamage; + self.attackerdamage[ eattacker.clientid ].meansofdeath = smeansofdeath; + self.attackerdamage[ eattacker.clientid ].weapon = sweapon; + if ( !isDefined( self.attackerdamage[ eattacker.clientid ].time ) ) + { + self.attackerdamage[ eattacker.clientid ].time = getTime(); + } + } + self.attackerdamage[ eattacker.clientid ].lasttimedamaged = getTime(); + if ( maps/mp/gametypes_zm/_weapons::isprimaryweapon( sweapon ) ) + { + self.attackerdata[ eattacker.clientid ] = 1; + } +} + +giveinflictorownerassist( eattacker, einflictor, idamage, smeansofdeath, sweapon ) +{ + if ( !isDefined( einflictor ) ) + { + return; + } + if ( !isDefined( einflictor.owner ) ) + { + return; + } + if ( !isDefined( einflictor.ownergetsassist ) ) + { + return; + } + if ( !einflictor.ownergetsassist ) + { + return; + } +/# + assert( isplayer( einflictor.owner ) ); +#/ + self trackattackerdamage( einflictor.owner, idamage, smeansofdeath, sweapon ); +} + +updatemeansofdeath( sweapon, smeansofdeath ) +{ + switch( sweapon ) + { + case "crossbow_mp": + case "knife_ballistic_mp": + if ( smeansofdeath != "MOD_HEAD_SHOT" && smeansofdeath != "MOD_MELEE" ) + { + smeansofdeath = "MOD_PISTOL_BULLET"; + } + break; + case "dog_bite_mp": + smeansofdeath = "MOD_PISTOL_BULLET"; + break; + case "destructible_car_mp": + smeansofdeath = "MOD_EXPLOSIVE"; + break; + case "explodable_barrel_mp": + smeansofdeath = "MOD_EXPLOSIVE"; + break; + } + return smeansofdeath; +} + +updateattacker( attacker, weapon ) +{ + if ( isai( attacker ) && isDefined( attacker.script_owner ) ) + { + if ( !level.teambased || attacker.script_owner.team != self.team ) + { + attacker = attacker.script_owner; + } + } + if ( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) + { + attacker notify( "killed" ); + attacker = attacker.owner; + } + if ( isai( attacker ) ) + { + attacker notify( "killed" ); + } + if ( isDefined( self.capturinglastflag ) && self.capturinglastflag == 1 ) + { + attacker.lastcapkiller = 1; + } + if ( isDefined( attacker ) && isDefined( weapon ) && weapon == "planemortar_mp" ) + { + if ( !isDefined( attacker.planemortarbda ) ) + { + attacker.planemortarbda = 0; + } + attacker.planemortarbda++; + } + return attacker; +} + +updateinflictor( einflictor ) +{ + if ( isDefined( einflictor ) && einflictor.classname == "script_vehicle" ) + { + einflictor notify( "killed" ); + if ( isDefined( einflictor.bda ) ) + { + einflictor.bda++; + } + } + return einflictor; +} + +updateweapon( einflictor, sweapon ) +{ + if ( sweapon == "none" && isDefined( einflictor ) ) + { + if ( isDefined( einflictor.targetname ) && einflictor.targetname == "explodable_barrel" ) + { + sweapon = "explodable_barrel_mp"; + } + else + { + if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) + { + sweapon = "destructible_car_mp"; + } + } + } + return sweapon; +} + +getclosestkillcamentity( attacker, killcamentities, depth ) +{ + if ( !isDefined( depth ) ) + { + depth = 0; + } + closestkillcament = undefined; + closestkillcamentindex = undefined; + closestkillcamentdist = undefined; + origin = undefined; + _a2792 = killcamentities; + killcamentindex = getFirstArrayKey( _a2792 ); + while ( isDefined( killcamentindex ) ) + { + killcament = _a2792[ killcamentindex ]; + if ( killcament == attacker ) + { + } + else + { + origin = killcament.origin; + if ( isDefined( killcament.offsetpoint ) ) + { + origin += killcament.offsetpoint; + } + dist = distancesquared( self.origin, origin ); + if ( !isDefined( closestkillcament ) || dist < closestkillcamentdist ) + { + closestkillcament = killcament; + closestkillcamentdist = dist; + closestkillcamentindex = killcamentindex; + } + } + killcamentindex = getNextArrayKey( _a2792, killcamentindex ); + } + if ( depth < 3 && isDefined( closestkillcament ) ) + { + if ( !bullettracepassed( closestkillcament.origin, self.origin, 0, self ) ) + { + betterkillcament = getclosestkillcamentity( attacker, killcamentities, depth + 1 ); + if ( isDefined( betterkillcament ) ) + { + closestkillcament = betterkillcament; + } + } + } + return closestkillcament; +} + +getkillcamentity( attacker, einflictor, sweapon ) +{ + if ( !isDefined( einflictor ) ) + { + return undefined; + } + if ( einflictor == attacker ) + { + if ( !isDefined( einflictor.ismagicbullet ) ) + { + return undefined; + } + if ( isDefined( einflictor.ismagicbullet ) && !einflictor.ismagicbullet ) + { + return undefined; + } + } + else + { + if ( isDefined( level.levelspecifickillcam ) ) + { + levelspecifickillcament = self [[ level.levelspecifickillcam ]](); + if ( isDefined( levelspecifickillcament ) ) + { + return levelspecifickillcament; + } + } + } + if ( sweapon == "m220_tow_mp" ) + { + return undefined; + } + if ( isDefined( einflictor.killcament ) ) + { + if ( einflictor.killcament == attacker ) + { + return undefined; + } + return einflictor.killcament; + } + else + { + if ( isDefined( einflictor.killcamentities ) ) + { + return getclosestkillcamentity( attacker, einflictor.killcamentities ); + } + } + if ( isDefined( einflictor.script_gameobjectname ) && einflictor.script_gameobjectname == "bombzone" ) + { + return einflictor.killcament; + } + return einflictor; +} + +playkillbattlechatter( attacker, sweapon, victim ) +{ +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_score.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_score.gsc new file mode 100644 index 0000000..a5610a2 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_score.gsc @@ -0,0 +1,873 @@ +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/_challenges; +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/_bb; +#include maps/mp/_utility; +#include common_scripts/utility; + +updatematchbonusscores( winner ) +{ +} + +givematchbonus( scoretype, score ) +{ +} + +doskillupdate( winner ) +{ + skillupdate( winner, level.teambased ); +} + +gethighestscoringplayer() +{ + players = level.players; + winner = undefined; + tie = 0; + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ].score ) ) + { + i++; + continue; + } + else if ( players[ i ].score < 1 ) + { + i++; + continue; + } + else if ( !isDefined( winner ) || players[ i ].score > winner.score ) + { + winner = players[ i ]; + tie = 0; + i++; + continue; + } + else + { + if ( players[ i ].score == winner.score ) + { + tie = 1; + } + } + i++; + } + if ( tie || !isDefined( winner ) ) + { + return undefined; + } + else + { + return winner; + } +} + +resetscorechain() +{ + self notify( "reset_score_chain" ); + self.scorechain = 0; + self.rankupdatetotal = 0; +} + +scorechaintimer() +{ + self notify( "score_chain_timer" ); + self endon( "reset_score_chain" ); + self endon( "score_chain_timer" ); + self endon( "death" ); + self endon( "disconnect" ); + wait 20; + self thread resetscorechain(); +} + +roundtonearestfive( score ) +{ + rounding = score % 5; + if ( rounding <= 2 ) + { + return score - rounding; + } + else + { + return score + ( 5 - rounding ); + } +} + +giveplayermomentumnotification( score, label, descvalue, countstowardrampage ) +{ + rampagebonus = 0; + if ( isDefined( level.usingrampage ) && level.usingrampage ) + { + if ( countstowardrampage ) + { + if ( !isDefined( self.scorechain ) ) + { + self.scorechain = 0; + } + self.scorechain++; + self thread scorechaintimer(); + } + if ( isDefined( self.scorechain ) && self.scorechain >= 999 ) + { + rampagebonus = roundtonearestfive( int( ( score * level.rampagebonusscale ) + 0,5 ) ); + } + } + if ( score != 0 ) + { + self luinotifyevent( &"score_event", 3, label, score, rampagebonus ); + } + score += rampagebonus; + if ( score > 0 && self hasperk( "specialty_earnmoremomentum" ) ) + { + score = roundtonearestfive( int( ( score * getDvarFloat( "perk_killstreakMomentumMultiplier" ) ) + 0,5 ) ); + } + _setplayermomentum( self, self.pers[ "momentum" ] + score ); +} + +resetplayermomentumondeath() +{ + if ( isDefined( level.usingscorestreaks ) && level.usingscorestreaks ) + { + _setplayermomentum( self, 0 ); + self thread resetscorechain(); + } +} + +giveplayermomentum( event, player, victim, weapon, descvalue ) +{ +} + +giveplayerscore( event, player, victim, weapon, descvalue ) +{ + scorediff = 0; + momentum = player.pers[ "momentum" ]; + giveplayermomentum( event, player, victim, weapon, descvalue ); + newmomentum = player.pers[ "momentum" ]; + if ( level.overrideplayerscore ) + { + return 0; + } + pixbeginevent( "level.onPlayerScore" ); + score = player.pers[ "score" ]; + [[ level.onplayerscore ]]( event, player, victim ); + newscore = player.pers[ "score" ]; + pixendevent(); + bbprint( "mpplayerscore", "spawnid %d gametime %d type %s player %s delta %d deltamomentum %d team %s", getplayerspawnid( player ), getTime(), event, player.name, newscore - score, newmomentum - momentum, player.team ); + player maps/mp/_bb::bbaddtostat( "score", newscore - score ); + if ( score == newscore ) + { + return 0; + } + pixbeginevent( "givePlayerScore" ); + recordplayerstats( player, "score", newscore ); + scorediff = newscore - score; + player addplayerstatwithgametype( "score", scorediff ); + if ( isDefined( player.pers[ "lastHighestScore" ] ) && newscore > player.pers[ "lastHighestScore" ] ) + { + player setdstat( "HighestStats", "highest_score", newscore ); + } + pixendevent(); + return scorediff; +} + +default_onplayerscore( event, player, victim ) +{ +} + +_setplayerscore( player, score ) +{ +} + +_getplayerscore( player ) +{ + return player.pers[ "score" ]; +} + +_setplayermomentum( player, momentum ) +{ + momentum = clamp( momentum, 0, 2000 ); + oldmomentum = player.pers[ "momentum" ]; + if ( momentum == oldmomentum ) + { + return; + } + player maps/mp/_bb::bbaddtostat( "momentum", momentum - oldmomentum ); + if ( momentum > oldmomentum ) + { + highestmomentumcost = 0; + numkillstreaks = player.killstreak.size; + killstreaktypearray = []; + } + player.pers[ "momentum" ] = momentum; + player.momentum = player.pers[ "momentum" ]; +} + +_giveplayerkillstreakinternal( player, momentum, oldmomentum, killstreaktypearray ) +{ +} + +setplayermomentumdebug() +{ +/# + setdvar( "sv_momentumPercent", 0 ); + while ( 1 ) + { + wait 1; + momentumpercent = getdvarfloatdefault( "sv_momentumPercent", 0 ); + if ( momentumpercent != 0 ) + { + player = gethostplayer(); + if ( !isDefined( player ) ) + { + return; + } + if ( isDefined( player.killstreak ) ) + { + _setplayermomentum( player, int( 2000 * ( momentumpercent / 100 ) ) ); + } + } +#/ + } +} + +giveteamscore( event, team, player, victim ) +{ + if ( level.overrideteamscore ) + { + return; + } + pixbeginevent( "level.onTeamScore" ); + teamscore = game[ "teamScores" ][ team ]; + [[ level.onteamscore ]]( event, team ); + pixendevent(); + newscore = game[ "teamScores" ][ team ]; + bbprint( "mpteamscores", "gametime %d event %s team %d diff %d score %d", getTime(), event, team, newscore - teamscore, newscore ); + if ( teamscore == newscore ) + { + return; + } + updateteamscores( team ); + thread maps/mp/gametypes_zm/_globallogic::checkscorelimit(); +} + +giveteamscoreforobjective( team, score ) +{ + teamscore = game[ "teamScores" ][ team ]; + onteamscore( score, team ); + newscore = game[ "teamScores" ][ team ]; + bbprint( "mpteamobjscores", "gametime %d team %d diff %d score %d", getTime(), team, newscore - teamscore, newscore ); + if ( teamscore == newscore ) + { + return; + } + updateteamscores( team ); + thread maps/mp/gametypes_zm/_globallogic::checkscorelimit(); +} + +_setteamscore( team, teamscore ) +{ + if ( teamscore == game[ "teamScores" ][ team ] ) + { + return; + } + game[ "teamScores" ][ team ] = teamscore; + updateteamscores( team ); + thread maps/mp/gametypes_zm/_globallogic::checkscorelimit(); +} + +resetteamscores() +{ + while ( isDefined( level.roundscorecarry ) || level.roundscorecarry == 0 && maps/mp/_utility::isfirstround() ) + { + _a591 = level.teams; + _k591 = getFirstArrayKey( _a591 ); + while ( isDefined( _k591 ) ) + { + team = _a591[ _k591 ]; + game[ "teamScores" ][ team ] = 0; + _k591 = getNextArrayKey( _a591, _k591 ); + } + } + maps/mp/gametypes_zm/_globallogic_score::updateallteamscores(); +} + +resetallscores() +{ + resetteamscores(); + resetplayerscores(); +} + +resetplayerscores() +{ + players = level.players; + winner = undefined; + tie = 0; + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].pers[ "score" ] ) ) + { + _setplayerscore( players[ i ], 0 ); + } + i++; + } +} + +updateteamscores( team ) +{ + setteamscore( team, game[ "teamScores" ][ team ] ); + level thread maps/mp/gametypes_zm/_globallogic::checkteamscorelimitsoon( team ); +} + +updateallteamscores() +{ + _a629 = level.teams; + _k629 = getFirstArrayKey( _a629 ); + while ( isDefined( _k629 ) ) + { + team = _a629[ _k629 ]; + updateteamscores( team ); + _k629 = getNextArrayKey( _a629, _k629 ); + } +} + +_getteamscore( team ) +{ + return game[ "teamScores" ][ team ]; +} + +gethighestteamscoreteam() +{ + score = 0; + winning_teams = []; + _a645 = level.teams; + _k645 = getFirstArrayKey( _a645 ); + while ( isDefined( _k645 ) ) + { + team = _a645[ _k645 ]; + team_score = game[ "teamScores" ][ team ]; + if ( team_score > score ) + { + score = team_score; + winning_teams = []; + } + if ( team_score == score ) + { + winning_teams[ team ] = team; + } + _k645 = getNextArrayKey( _a645, _k645 ); + } + return winning_teams; +} + +areteamarraysequal( teamsa, teamsb ) +{ + if ( teamsa.size != teamsb.size ) + { + return 0; + } + _a668 = teamsa; + _k668 = getFirstArrayKey( _a668 ); + while ( isDefined( _k668 ) ) + { + team = _a668[ _k668 ]; + if ( !isDefined( teamsb[ team ] ) ) + { + return 0; + } + _k668 = getNextArrayKey( _a668, _k668 ); + } + return 1; +} + +onteamscore( score, team ) +{ + game[ "teamScores" ][ team ] += score; + if ( level.scorelimit && game[ "teamScores" ][ team ] > level.scorelimit ) + { + game[ "teamScores" ][ team ] = level.scorelimit; + } + if ( level.splitscreen ) + { + return; + } + if ( level.scorelimit == 1 ) + { + return; + } + iswinning = gethighestteamscoreteam(); + if ( iswinning.size == 0 ) + { + return; + } + if ( ( getTime() - level.laststatustime ) < 5000 ) + { + return; + } + if ( areteamarraysequal( iswinning, level.waswinning ) ) + { + return; + } + level.laststatustime = getTime(); + while ( iswinning.size == 1 ) + { + _a707 = iswinning; + _k707 = getFirstArrayKey( _a707 ); + while ( isDefined( _k707 ) ) + { + team = _a707[ _k707 ]; + if ( isDefined( level.waswinning[ team ] ) ) + { + if ( level.waswinning.size == 1 ) + { + } + } + else + { + maps/mp/gametypes_zm/_globallogic_audio::leaderdialog( "lead_taken", team, "status" ); + } + _k707 = getNextArrayKey( _a707, _k707 ); + } + } + while ( level.waswinning.size == 1 ) + { + _a726 = level.waswinning; + _k726 = getFirstArrayKey( _a726 ); + while ( isDefined( _k726 ) ) + { + team = _a726[ _k726 ]; + if ( isDefined( iswinning[ team ] ) ) + { + if ( iswinning.size == 1 ) + { + } + else if ( level.waswinning.size > 1 ) + { + } + } + else + { + maps/mp/gametypes_zm/_globallogic_audio::leaderdialog( "lead_lost", team, "status" ); + } + _k726 = getNextArrayKey( _a726, _k726 ); + } + } + level.waswinning = iswinning; +} + +default_onteamscore( event, team ) +{ +} + +initpersstat( dataname, record_stats, init_to_stat_value ) +{ + if ( !isDefined( self.pers[ dataname ] ) ) + { + self.pers[ dataname ] = 0; + } + if ( !isDefined( record_stats ) || record_stats == 1 ) + { + recordplayerstats( self, dataname, int( self.pers[ dataname ] ) ); + } + if ( isDefined( init_to_stat_value ) && init_to_stat_value == 1 ) + { + self.pers[ dataname ] = self getdstat( "PlayerStatsList", dataname, "StatValue" ); + } +} + +getpersstat( dataname ) +{ + return self.pers[ dataname ]; +} + +incpersstat( dataname, increment, record_stats, includegametype ) +{ + pixbeginevent( "incPersStat" ); + self.pers[ dataname ] += increment; + if ( isDefined( includegametype ) && includegametype ) + { + self addplayerstatwithgametype( dataname, increment ); + } + else + { + self addplayerstat( dataname, increment ); + } + if ( !isDefined( record_stats ) || record_stats == 1 ) + { + self thread threadedrecordplayerstats( dataname ); + } + pixendevent(); +} + +threadedrecordplayerstats( dataname ) +{ + self endon( "disconnect" ); + waittillframeend; + recordplayerstats( self, dataname, self.pers[ dataname ] ); +} + +updatewinstats( winner ) +{ +} + +updatelossstats( loser ) +{ + loser addplayerstatwithgametype( "losses", 1 ); + loser updatestatratio( "wlratio", "wins", "losses" ); + loser notify( "loss" ); +} + +updatetiestats( loser ) +{ + loser addplayerstatwithgametype( "losses", -1 ); + loser addplayerstatwithgametype( "ties", 1 ); + loser updatestatratio( "wlratio", "wins", "losses" ); + loser setdstat( "playerstatslist", "cur_win_streak", "StatValue", 0 ); + loser notify( "tie" ); +} + +updatewinlossstats( winner ) +{ + if ( !waslastround() && !level.hostforcedend ) + { + return; + } + players = level.players; + if ( !isDefined( winner ) || isDefined( winner ) && !isplayer( winner ) && winner == "tie" ) + { + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ].pers[ "team" ] ) ) + { + i++; + continue; + } + else if ( level.hostforcedend && players[ i ] ishost() ) + { + i++; + continue; + } + else + { + updatetiestats( players[ i ] ); + } + i++; + } + } + else if ( isplayer( winner ) ) + { + if ( level.hostforcedend && winner ishost() ) + { + return; + } + updatewinstats( winner ); + } + else + { + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ].pers[ "team" ] ) ) + { + i++; + continue; + } + else if ( level.hostforcedend && players[ i ] ishost() ) + { + i++; + continue; + } + else + { + if ( winner == "tie" ) + { + updatetiestats( players[ i ] ); + i++; + continue; + } + else if ( players[ i ].pers[ "team" ] == winner ) + { + updatewinstats( players[ i ] ); + i++; + continue; + } + else + { + players[ i ] setdstat( "playerstatslist", "cur_win_streak", "StatValue", 0 ); + } + } + i++; + } + } +} + +backupandclearwinstreaks() +{ +} + +restorewinstreaks( winner ) +{ +} + +inckillstreaktracker( sweapon ) +{ + self endon( "disconnect" ); + waittillframeend; + if ( sweapon == "artillery_mp" ) + { + self.pers[ "artillery_kills" ]++; + } + if ( sweapon == "dog_bite_mp" ) + { + self.pers[ "dog_kills" ]++; + } +} + +trackattackerkill( name, rank, xp, prestige, xuid ) +{ + self endon( "disconnect" ); + attacker = self; + waittillframeend; + pixbeginevent( "trackAttackerKill" ); + if ( !isDefined( attacker.pers[ "killed_players" ][ name ] ) ) + { + attacker.pers[ "killed_players" ][ name ] = 0; + } + if ( !isDefined( attacker.killedplayerscurrent[ name ] ) ) + { + attacker.killedplayerscurrent[ name ] = 0; + } + if ( !isDefined( attacker.pers[ "nemesis_tracking" ][ name ] ) ) + { + attacker.pers[ "nemesis_tracking" ][ name ] = 0; + } + attacker.pers[ "killed_players" ][ name ]++; + attacker.killedplayerscurrent[ name ]++; + attacker.pers[ "nemesis_tracking" ][ name ] += 1; + if ( attacker.pers[ "nemesis_name" ] == name ) + { + attacker maps/mp/_challenges::killednemesis(); + } + if ( attacker.pers[ "nemesis_name" ] == "" || attacker.pers[ "nemesis_tracking" ][ name ] > attacker.pers[ "nemesis_tracking" ][ attacker.pers[ "nemesis_name" ] ] ) + { + attacker.pers[ "nemesis_name" ] = name; + attacker.pers[ "nemesis_rank" ] = rank; + attacker.pers[ "nemesis_rankIcon" ] = prestige; + attacker.pers[ "nemesis_xp" ] = xp; + attacker.pers[ "nemesis_xuid" ] = xuid; + } + else + { + if ( isDefined( attacker.pers[ "nemesis_name" ] ) && attacker.pers[ "nemesis_name" ] == name ) + { + attacker.pers[ "nemesis_rank" ] = rank; + attacker.pers[ "nemesis_xp" ] = xp; + } + } + pixendevent(); +} + +trackattackeedeath( attackername, rank, xp, prestige, xuid ) +{ + self endon( "disconnect" ); + waittillframeend; + pixbeginevent( "trackAttackeeDeath" ); + if ( !isDefined( self.pers[ "killed_by" ][ attackername ] ) ) + { + self.pers[ "killed_by" ][ attackername ] = 0; + } + self.pers[ "killed_by" ][ attackername ]++; + if ( !isDefined( self.pers[ "nemesis_tracking" ][ attackername ] ) ) + { + self.pers[ "nemesis_tracking" ][ attackername ] = 0; + } + self.pers[ "nemesis_tracking" ][ attackername ] += 1,5; + if ( self.pers[ "nemesis_name" ] == "" || self.pers[ "nemesis_tracking" ][ attackername ] > self.pers[ "nemesis_tracking" ][ self.pers[ "nemesis_name" ] ] ) + { + self.pers[ "nemesis_name" ] = attackername; + self.pers[ "nemesis_rank" ] = rank; + self.pers[ "nemesis_rankIcon" ] = prestige; + self.pers[ "nemesis_xp" ] = xp; + self.pers[ "nemesis_xuid" ] = xuid; + } + else + { + if ( isDefined( self.pers[ "nemesis_name" ] ) && self.pers[ "nemesis_name" ] == attackername ) + { + self.pers[ "nemesis_rank" ] = rank; + self.pers[ "nemesis_xp" ] = xp; + } + } + if ( self.pers[ "nemesis_name" ] == attackername && self.pers[ "nemesis_tracking" ][ attackername ] >= 2 ) + { + self setclientuivisibilityflag( "killcam_nemesis", 1 ); + } + else + { + self setclientuivisibilityflag( "killcam_nemesis", 0 ); + } + pixendevent(); +} + +default_iskillboosting() +{ + return 0; +} + +givekillstats( smeansofdeath, sweapon, evictim ) +{ + self endon( "disconnect" ); + waittillframeend; + if ( level.rankedmatch && self [[ level.iskillboosting ]]() ) + { +/# + self iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU OFFENSIVE CREDIT AS BOOSTING PREVENTION" ); +#/ + return; + } + pixbeginevent( "giveKillStats" ); + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "kills", 1, 1, 1 ); + self.kills = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "kills" ); + self updatestatratio( "kdratio", "kills", "deaths" ); + attacker = self; + if ( smeansofdeath == "MOD_HEAD_SHOT" ) + { + attacker thread incpersstat( "headshots", 1, 1, 0 ); + attacker.headshots = attacker.pers[ "headshots" ]; + evictim recordkillmodifier( "headshot" ); + } + pixendevent(); +} + +inctotalkills( team ) +{ + if ( level.teambased && isDefined( level.teams[ team ] ) ) + { + game[ "totalKillsTeam" ][ team ]++; + } + game[ "totalKills" ]++; +} + +setinflictorstat( einflictor, eattacker, sweapon ) +{ + if ( !isDefined( eattacker ) ) + { + return; + } + if ( !isDefined( einflictor ) ) + { + eattacker addweaponstat( sweapon, "hits", 1 ); + return; + } + if ( !isDefined( einflictor.playeraffectedarray ) ) + { + einflictor.playeraffectedarray = []; + } + foundnewplayer = 1; + i = 0; + while ( i < einflictor.playeraffectedarray.size ) + { + if ( einflictor.playeraffectedarray[ i ] == self ) + { + foundnewplayer = 0; + break; + } + else + { + i++; + } + } + if ( foundnewplayer ) + { + einflictor.playeraffectedarray[ einflictor.playeraffectedarray.size ] = self; + if ( sweapon == "concussion_grenade_mp" || sweapon == "tabun_gas_mp" ) + { + eattacker addweaponstat( sweapon, "used", 1 ); + } + eattacker addweaponstat( sweapon, "hits", 1 ); + } +} + +processshieldassist( killedplayer ) +{ + self endon( "disconnect" ); + killedplayer endon( "disconnect" ); + wait 0,05; + maps/mp/gametypes_zm/_globallogic_utils::waittillslowprocessallowed(); + if ( !isDefined( level.teams[ self.pers[ "team" ] ] ) ) + { + return; + } + if ( self.pers[ "team" ] == killedplayer.pers[ "team" ] ) + { + return; + } + if ( !level.teambased ) + { + return; + } + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "assists", 1, 1, 1 ); + self.assists = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "assists" ); +} + +processassist( killedplayer, damagedone, weapon ) +{ + self endon( "disconnect" ); + killedplayer endon( "disconnect" ); + wait 0,05; + maps/mp/gametypes_zm/_globallogic_utils::waittillslowprocessallowed(); + if ( !isDefined( level.teams[ self.pers[ "team" ] ] ) ) + { + return; + } + if ( self.pers[ "team" ] == killedplayer.pers[ "team" ] ) + { + return; + } + if ( !level.teambased ) + { + return; + } + assist_level = "assist"; + assist_level_value = int( ceil( damagedone / 25 ) ); + if ( assist_level_value < 1 ) + { + assist_level_value = 1; + } + else + { + if ( assist_level_value > 3 ) + { + assist_level_value = 3; + } + } + assist_level = ( assist_level + "_" ) + ( assist_level_value * 25 ); + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( "assists", 1, 1, 1 ); + self.assists = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "assists" ); + switch( weapon ) + { + case "concussion_grenade_mp": + assist_level = "assist_concussion"; + break; + case "flash_grenade_mp": + assist_level = "assist_flash"; + break; + case "emp_grenade_mp": + assist_level = "assist_emp"; + break; + case "proximity_grenade_aoe_mp": + case "proximity_grenade_mp": + assist_level = "assist_proximity"; + break; + } + self maps/mp/_challenges::assisted(); +} + +xpratethread() +{ +/# +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_spawn.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_spawn.gsc new file mode 100644 index 0000000..fd882a8 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_spawn.gsc @@ -0,0 +1,959 @@ +#include maps/mp/gametypes_zm/_spawnlogic; +#include maps/mp/gametypes_zm/_globallogic_defaults; +#include maps/mp/gametypes_zm/_hostmigration; +#include maps/mp/gametypes_zm/_spectating; +#include maps/mp/zombies/_zm_perks; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/gametypes_zm/_globallogic_ui; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/gametypes_zm/_hud_message; +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/gametypes_zm/_spawning; +#include maps/mp/gametypes_zm/_globallogic_player; +#include maps/mp/_utility; +#include common_scripts/utility; + +timeuntilspawn( includeteamkilldelay ) +{ + if ( level.ingraceperiod && !self.hasspawned ) + { + return 0; + } + respawndelay = 0; + if ( self.hasspawned ) + { + result = self [[ level.onrespawndelay ]](); + if ( isDefined( result ) ) + { + respawndelay = result; + } + else + { + respawndelay = level.playerrespawndelay; + } + if ( includeteamkilldelay && isDefined( self.teamkillpunish ) && self.teamkillpunish ) + { + respawndelay += maps/mp/gametypes_zm/_globallogic_player::teamkilldelay(); + } + } + wavebased = level.waverespawndelay > 0; + if ( wavebased ) + { + return self timeuntilwavespawn( respawndelay ); + } + return respawndelay; +} + +allteamshaveexisted() +{ + _a34 = level.teams; + _k34 = getFirstArrayKey( _a34 ); + while ( isDefined( _k34 ) ) + { + team = _a34[ _k34 ]; + if ( !level.everexisted[ team ] ) + { + return 0; + } + _k34 = getNextArrayKey( _a34, _k34 ); + } + return 1; +} + +mayspawn() +{ + if ( isDefined( level.mayspawn ) && !( self [[ level.mayspawn ]]() ) ) + { + return 0; + } + if ( level.inovertime ) + { + return 0; + } + if ( level.playerqueuedrespawn && !isDefined( self.allowqueuespawn ) && !level.ingraceperiod && !level.usestartspawns ) + { + return 0; + } + if ( level.numlives ) + { + if ( level.teambased ) + { + gamehasstarted = allteamshaveexisted(); + } + else + { + if ( level.maxplayercount > 1 ) + { + if ( !isoneround() ) + { + gamehasstarted = !isfirstround(); + } + } + } + if ( !self.pers[ "lives" ] && gamehasstarted ) + { + return 0; + } + else + { + if ( gamehasstarted ) + { + if ( !level.ingraceperiod && !self.hasspawned && !level.wagermatch ) + { + return 0; + } + } + } + } + return 1; +} + +timeuntilwavespawn( minimumwait ) +{ + earliestspawntime = getTime() + ( minimumwait * 1000 ); + lastwavetime = level.lastwave[ self.pers[ "team" ] ]; + wavedelay = level.wavedelay[ self.pers[ "team" ] ] * 1000; + if ( wavedelay == 0 ) + { + return 0; + } + numwavespassedearliestspawntime = ( earliestspawntime - lastwavetime ) / wavedelay; + numwaves = ceil( numwavespassedearliestspawntime ); + timeofspawn = lastwavetime + ( numwaves * wavedelay ); + if ( isDefined( self.wavespawnindex ) ) + { + timeofspawn += 50 * self.wavespawnindex; + } + return ( timeofspawn - getTime() ) / 1000; +} + +stoppoisoningandflareonspawn() +{ + self endon( "disconnect" ); + self.inpoisonarea = 0; + self.inburnarea = 0; + self.inflarevisionarea = 0; + self.ingroundnapalm = 0; +} + +spawnplayerprediction() +{ + self endon( "disconnect" ); + self endon( "end_respawn" ); + self endon( "game_ended" ); + self endon( "joined_spectators" ); + self endon( "spawned" ); + while ( 1 ) + { + wait 0,5; + if ( isDefined( level.onspawnplayerunified ) && getDvarInt( #"CF6EEB8B" ) == 0 ) + { + maps/mp/gametypes_zm/_spawning::onspawnplayer_unified( 1 ); + continue; + } + else + { + self [[ level.onspawnplayer ]]( 1 ); + } + } +} + +giveloadoutlevelspecific( team, class ) +{ + pixbeginevent( "giveLoadoutLevelSpecific" ); + if ( isDefined( level.givecustomcharacters ) ) + { + self [[ level.givecustomcharacters ]](); + } + if ( isDefined( level.givecustomloadout ) ) + { + self [[ level.givecustomloadout ]](); + } + pixendevent(); +} + +spawnplayer() +{ + pixbeginevent( "spawnPlayer_preUTS" ); + self endon( "disconnect" ); + self endon( "joined_spectators" ); + self notify( "spawned" ); + level notify( "player_spawned" ); + self notify( "end_respawn" ); + self setspawnvariables(); + if ( !self.hasspawned ) + { + self.underscorechance = 70; + self thread maps/mp/gametypes_zm/_globallogic_audio::sndstartmusicsystem(); + } + if ( level.teambased ) + { + self.sessionteam = self.team; + } + else + { + self.sessionteam = "none"; + self.ffateam = self.team; + } + hadspawned = self.hasspawned; + self.sessionstate = "playing"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.statusicon = ""; + self.damagedplayers = []; + if ( getDvarInt( #"C8077F47" ) > 0 ) + { + self.maxhealth = getDvarInt( #"C8077F47" ); + } + else + { + self.maxhealth = level.playermaxhealth; + } + self.health = self.maxhealth; + self.friendlydamage = undefined; + self.hasspawned = 1; + self.spawntime = getTime(); + self.afk = 0; + if ( self.pers[ "lives" ] || !isDefined( level.takelivesondeath ) && level.takelivesondeath == 0 ) + { + self.pers[ "lives" ]--; + + if ( self.pers[ "lives" ] == 0 ) + { + level notify( "player_eliminated" ); + self notify( "player_eliminated" ); + } + } + self.laststand = undefined; + self.revivingteammate = 0; + self.burning = undefined; + self.nextkillstreakfree = undefined; + self.activeuavs = 0; + self.activecounteruavs = 0; + self.activesatellites = 0; + self.deathmachinekills = 0; + self.disabledweapon = 0; + self resetusability(); + self maps/mp/gametypes_zm/_globallogic_player::resetattackerlist(); + self.diedonvehicle = undefined; + if ( !self.wasaliveatmatchstart ) + { + if ( level.ingraceperiod || maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() < 20000 ) + { + self.wasaliveatmatchstart = 1; + } + } + self setdepthoffield( 0, 0, 512, 512, 4, 0 ); + self resetfov(); + pixbeginevent( "onSpawnPlayer" ); + if ( isDefined( level.onspawnplayerunified ) && getDvarInt( #"CF6EEB8B" ) == 0 ) + { + self [[ level.onspawnplayerunified ]](); + } + else + { + self [[ level.onspawnplayer ]]( 0 ); + } + if ( isDefined( level.playerspawnedcb ) ) + { + self [[ level.playerspawnedcb ]](); + } + pixendevent(); + pixendevent(); + level thread maps/mp/gametypes_zm/_globallogic::updateteamstatus(); + pixbeginevent( "spawnPlayer_postUTS" ); + self thread stoppoisoningandflareonspawn(); + self stopburning(); +/# + assert( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) ); +#/ + self giveloadoutlevelspecific( self.team, self.class ); + if ( level.inprematchperiod ) + { + self freeze_player_controls( 1 ); + team = self.pers[ "team" ]; + if ( isDefined( self.pers[ "music" ].spawn ) && self.pers[ "music" ].spawn == 0 ) + { + if ( level.wagermatch ) + { + music = "SPAWN_WAGER"; + } + else + { + music = game[ "music" ][ "spawn_" + team ]; + } + self thread maps/mp/gametypes_zm/_globallogic_audio::set_music_on_player( music, 0, 0 ); + self.pers[ "music" ].spawn = 1; + } + if ( level.splitscreen ) + { + if ( isDefined( level.playedstartingmusic ) ) + { + music = undefined; + } + else + { + level.playedstartingmusic = 1; + } + } + if ( !isDefined( level.disableprematchmessages ) || level.disableprematchmessages == 0 ) + { + thread maps/mp/gametypes_zm/_hud_message::showinitialfactionpopup( team ); + hintmessage = getobjectivehinttext( self.pers[ "team" ] ); + if ( isDefined( hintmessage ) ) + { + self thread maps/mp/gametypes_zm/_hud_message::hintmessage( hintmessage ); + } + if ( isDefined( game[ "dialog" ][ "gametype" ] ) || !level.splitscreen && self == level.players[ 0 ] ) + { + if ( !isDefined( level.infinalfight ) || !level.infinalfight ) + { + if ( level.hardcoremode ) + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "gametype_hardcore" ); + } + else + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "gametype" ); + } + } + } + if ( team == game[ "attackers" ] ) + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "offense_obj", "introboost" ); + } + else + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "defense_obj", "introboost" ); + } + } + } + else + { + self freeze_player_controls( 0 ); + self enableweapons(); + if ( !hadspawned && game[ "state" ] == "playing" ) + { + pixbeginevent( "sound" ); + team = self.team; + if ( isDefined( self.pers[ "music" ].spawn ) && self.pers[ "music" ].spawn == 0 ) + { + self thread maps/mp/gametypes_zm/_globallogic_audio::set_music_on_player( "SPAWN_SHORT", 0, 0 ); + self.pers[ "music" ].spawn = 1; + } + if ( level.splitscreen ) + { + if ( isDefined( level.playedstartingmusic ) ) + { + music = undefined; + } + else + { + level.playedstartingmusic = 1; + } + } + if ( !isDefined( level.disableprematchmessages ) || level.disableprematchmessages == 0 ) + { + thread maps/mp/gametypes_zm/_hud_message::showinitialfactionpopup( team ); + hintmessage = getobjectivehinttext( self.pers[ "team" ] ); + if ( isDefined( hintmessage ) ) + { + self thread maps/mp/gametypes_zm/_hud_message::hintmessage( hintmessage ); + } + if ( isDefined( game[ "dialog" ][ "gametype" ] ) || !level.splitscreen && self == level.players[ 0 ] ) + { + if ( !isDefined( level.infinalfight ) || !level.infinalfight ) + { + if ( level.hardcoremode ) + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "gametype_hardcore" ); + } + else + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "gametype" ); + } + } + } + if ( team == game[ "attackers" ] ) + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "offense_obj", "introboost" ); + } + else + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "defense_obj", "introboost" ); + } + } + pixendevent(); + } + } + if ( getDvar( "scr_showperksonspawn" ) == "" ) + { + setdvar( "scr_showperksonspawn", "0" ); + } + if ( level.hardcoremode ) + { + setdvar( "scr_showperksonspawn", "0" ); + } + if ( !level.splitscreen && getDvarInt( "scr_showperksonspawn" ) == 1 && game[ "state" ] != "postgame" ) + { + pixbeginevent( "showperksonspawn" ); + if ( level.perksenabled == 1 ) + { + self maps/mp/gametypes_zm/_hud_util::showperks(); + } + self thread maps/mp/gametypes_zm/_globallogic_ui::hideloadoutaftertime( 3 ); + self thread maps/mp/gametypes_zm/_globallogic_ui::hideloadoutondeath(); + pixendevent(); + } + if ( isDefined( self.pers[ "momentum" ] ) ) + { + self.momentum = self.pers[ "momentum" ]; + } + pixendevent(); + waittillframeend; + self notify( "spawned_player" ); + self logstring( "S " + self.origin[ 0 ] + " " + self.origin[ 1 ] + " " + self.origin[ 2 ] ); + setdvar( "scr_selecting_location", "" ); +/# + if ( getDvarInt( #"F8D00F60" ) > 0 ) + { + self thread maps/mp/gametypes_zm/_globallogic_score::xpratethread(); +#/ + } + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + if ( game[ "state" ] == "postgame" ) + { +/# + assert( !level.intermission ); +#/ + self maps/mp/gametypes_zm/_globallogic_player::freezeplayerforroundend(); + } +} + +spawnspectator( origin, angles ) +{ + self notify( "spawned" ); + self notify( "end_respawn" ); + in_spawnspectator( origin, angles ); +} + +respawn_asspectator( origin, angles ) +{ + in_spawnspectator( origin, angles ); +} + +in_spawnspectator( origin, angles ) +{ + pixmarker( "BEGIN: in_spawnSpectator" ); + self setspawnvariables(); + if ( self.pers[ "team" ] == "spectator" ) + { + self clearlowermessage(); + } + self.sessionstate = "spectator"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + if ( self.pers[ "team" ] == "spectator" ) + { + self.statusicon = ""; + } + else + { + self.statusicon = "hud_status_dead"; + } + maps/mp/gametypes_zm/_spectating::setspectatepermissionsformachine(); + [[ level.onspawnspectator ]]( origin, angles ); + if ( level.teambased && !level.splitscreen ) + { + self thread spectatorthirdpersonness(); + } + level thread maps/mp/gametypes_zm/_globallogic::updateteamstatus(); + pixmarker( "END: in_spawnSpectator" ); +} + +spectatorthirdpersonness() +{ + self endon( "disconnect" ); + self endon( "spawned" ); + self notify( "spectator_thirdperson_thread" ); + self endon( "spectator_thirdperson_thread" ); + self.spectatingthirdperson = 0; +} + +forcespawn( time ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "spawned" ); + if ( !isDefined( time ) ) + { + time = 60; + } + wait time; + if ( self.hasspawned ) + { + return; + } + if ( self.pers[ "team" ] == "spectator" ) + { + return; + } + if ( !maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.pers[ "class" ] ) ) + { + self.pers[ "class" ] = "CLASS_CUSTOM1"; + self.class = self.pers[ "class" ]; + } + self maps/mp/gametypes_zm/_globallogic_ui::closemenus(); + self thread [[ level.spawnclient ]](); +} + +kickifdontspawn() +{ +/# + if ( getDvarInt( "scr_hostmigrationtest" ) == 1 ) + { + return; +#/ + } + if ( self ishost() ) + { + return; + } + self kickifidontspawninternal(); +} + +kickifidontspawninternal() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "spawned" ); + waittime = 90; + if ( getDvar( #"4257CF5C" ) != "" ) + { + waittime = getDvarFloat( #"4257CF5C" ); + } + mintime = 45; + if ( getDvar( #"0DF057E0" ) != "" ) + { + mintime = getDvarFloat( #"0DF057E0" ); + } + starttime = getTime(); + kickwait( waittime ); + timepassed = ( getTime() - starttime ) / 1000; + if ( timepassed < ( waittime - 0,1 ) && timepassed < mintime ) + { + return; + } + if ( self.hasspawned ) + { + return; + } + if ( sessionmodeisprivate() ) + { + return; + } + if ( self.pers[ "team" ] == "spectator" ) + { + return; + } + kick( self getentitynumber() ); +} + +kickwait( waittime ) +{ + level endon( "game_ended" ); + maps/mp/gametypes_zm/_hostmigration::waitlongdurationwithhostmigrationpause( waittime ); +} + +spawninterroundintermission() +{ + self notify( "spawned" ); + self notify( "end_respawn" ); + self setspawnvariables(); + self clearlowermessage(); + self freeze_player_controls( 0 ); + self.sessionstate = "spectator"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + self maps/mp/gametypes_zm/_globallogic_defaults::default_onspawnintermission(); + self setorigin( self.origin ); + self setplayerangles( self.angles ); + self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); +} + +spawnintermission( usedefaultcallback ) +{ + self notify( "spawned" ); + self notify( "end_respawn" ); + self endon( "disconnect" ); + self setspawnvariables(); + self clearlowermessage(); + self freeze_player_controls( 0 ); + if ( level.rankedmatch && waslastround() ) + { + if ( !self.postgamemilestones || self.postgamecontracts && self.postgamepromotion ) + { + if ( self.postgamepromotion ) + { + self playlocalsound( "mus_level_up" ); + } + else if ( self.postgamecontracts ) + { + self playlocalsound( "mus_challenge_complete" ); + } + else + { + if ( self.postgamemilestones ) + { + self playlocalsound( "mus_contract_complete" ); + } + } + self closeingamemenu(); + self openmenu( game[ "menu_endgameupdate" ] ); + waittime = 4; + while ( waittime ) + { + wait 0,25; + waittime -= 0,25; + self openmenu( game[ "menu_endgameupdate" ] ); + } + self closemenu(); + } + } + self.sessionstate = "intermission"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + if ( isDefined( usedefaultcallback ) && usedefaultcallback ) + { + maps/mp/gametypes_zm/_globallogic_defaults::default_onspawnintermission(); + } + else + { + [[ level.onspawnintermission ]](); + } + self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); +} + +spawnqueuedclientonteam( team ) +{ + player_to_spawn = undefined; + i = 0; + while ( i < level.deadplayers[ team ].size ) + { + player = level.deadplayers[ team ][ i ]; + if ( player.waitingtospawn ) + { + i++; + continue; + } + else + { + player_to_spawn = player; + break; + } + i++; + } + if ( isDefined( player_to_spawn ) ) + { + player_to_spawn.allowqueuespawn = 1; + player_to_spawn maps/mp/gametypes_zm/_globallogic_ui::closemenus(); + player_to_spawn thread [[ level.spawnclient ]](); + } +} + +spawnqueuedclient( dead_player_team, killer ) +{ + if ( !level.playerqueuedrespawn ) + { + return; + } + maps/mp/gametypes_zm/_globallogic_utils::waittillslowprocessallowed(); + spawn_team = undefined; + if ( isDefined( killer ) && isDefined( killer.team ) && isDefined( level.teams[ killer.team ] ) ) + { + spawn_team = killer.team; + } + if ( isDefined( spawn_team ) ) + { + spawnqueuedclientonteam( spawn_team ); + return; + } + _a746 = level.teams; + _k746 = getFirstArrayKey( _a746 ); + while ( isDefined( _k746 ) ) + { + team = _a746[ _k746 ]; + if ( team == dead_player_team ) + { + } + else + { + spawnqueuedclientonteam( team ); + } + _k746 = getNextArrayKey( _a746, _k746 ); + } +} + +allteamsnearscorelimit() +{ + if ( !level.teambased ) + { + return 0; + } + if ( level.scorelimit <= 1 ) + { + return 0; + } + _a763 = level.teams; + _k763 = getFirstArrayKey( _a763 ); + while ( isDefined( _k763 ) ) + { + team = _a763[ _k763 ]; + if ( ( level.scorelimit - 1 ) < game[ "teamScores" ][ team ] ) + { + return 0; + } + _k763 = getNextArrayKey( _a763, _k763 ); + } + return 1; +} + +shouldshowrespawnmessage() +{ + if ( waslastround() ) + { + return 0; + } + if ( isoneround() ) + { + return 0; + } + if ( isDefined( level.livesdonotreset ) && level.livesdonotreset ) + { + return 0; + } + if ( allteamsnearscorelimit() ) + { + return 0; + } + return 1; +} + +default_spawnmessage() +{ + setlowermessage( game[ "strings" ][ "spawn_next_round" ] ); + self thread maps/mp/gametypes_zm/_globallogic_ui::removespawnmessageshortly( 3 ); +} + +showspawnmessage() +{ + if ( shouldshowrespawnmessage() ) + { + self thread [[ level.spawnmessage ]](); + } +} + +spawnclient( timealreadypassed ) +{ + pixbeginevent( "spawnClient" ); +/# + assert( isDefined( self.team ) ); +#/ +/# + assert( maps/mp/gametypes_zm/_globallogic_utils::isvalidclass( self.class ) ); +#/ + if ( !self mayspawn() ) + { + currentorigin = self.origin; + currentangles = self.angles; + self showspawnmessage(); + self thread [[ level.spawnspectator ]]( currentorigin + vectorScale( ( 0, 0, 1 ), 60 ), currentangles ); + pixendevent(); + return; + } + if ( self.waitingtospawn ) + { + pixendevent(); + return; + } + self.waitingtospawn = 1; + self.allowqueuespawn = undefined; + self waitandspawnclient( timealreadypassed ); + if ( isDefined( self ) ) + { + self.waitingtospawn = 0; + } + pixendevent(); +} + +waitandspawnclient( timealreadypassed ) +{ + self endon( "disconnect" ); + self endon( "end_respawn" ); + level endon( "game_ended" ); + if ( !isDefined( timealreadypassed ) ) + { + timealreadypassed = 0; + } + spawnedasspectator = 0; + if ( isDefined( self.teamkillpunish ) && self.teamkillpunish ) + { + teamkilldelay = maps/mp/gametypes_zm/_globallogic_player::teamkilldelay(); + if ( teamkilldelay > timealreadypassed ) + { + teamkilldelay -= timealreadypassed; + timealreadypassed = 0; + } + else + { + timealreadypassed -= teamkilldelay; + teamkilldelay = 0; + } + if ( teamkilldelay > 0 ) + { + setlowermessage( &"MP_FRIENDLY_FIRE_WILL_NOT", teamkilldelay ); + self thread respawn_asspectator( self.origin + vectorScale( ( 0, 0, 1 ), 60 ), self.angles ); + spawnedasspectator = 1; + wait teamkilldelay; + } + self.teamkillpunish = 0; + } + if ( !isDefined( self.wavespawnindex ) && isDefined( level.waveplayerspawnindex[ self.team ] ) ) + { + self.wavespawnindex = level.waveplayerspawnindex[ self.team ]; + level.waveplayerspawnindex[ self.team ]++; + } + timeuntilspawn = timeuntilspawn( 0 ); + if ( timeuntilspawn > timealreadypassed ) + { + timeuntilspawn -= timealreadypassed; + timealreadypassed = 0; + } + else + { + timealreadypassed -= timeuntilspawn; + timeuntilspawn = 0; + } + if ( timeuntilspawn > 0 ) + { + if ( level.playerqueuedrespawn ) + { + setlowermessage( game[ "strings" ][ "you_will_spawn" ], timeuntilspawn ); + } + else if ( self issplitscreen() ) + { + setlowermessage( game[ "strings" ][ "waiting_to_spawn_ss" ], timeuntilspawn, 1 ); + } + else + { + setlowermessage( game[ "strings" ][ "waiting_to_spawn" ], timeuntilspawn ); + } + if ( !spawnedasspectator ) + { + spawnorigin = self.origin + vectorScale( ( 0, 0, 1 ), 60 ); + spawnangles = self.angles; + if ( isDefined( level.useintermissionpointsonwavespawn ) && [[ level.useintermissionpointsonwavespawn ]]() == 1 ) + { + spawnpoint = maps/mp/gametypes_zm/_spawnlogic::getrandomintermissionpoint(); + if ( isDefined( spawnpoint ) ) + { + spawnorigin = spawnpoint.origin; + spawnangles = spawnpoint.angles; + } + } + self thread respawn_asspectator( spawnorigin, spawnangles ); + } + spawnedasspectator = 1; + self maps/mp/gametypes_zm/_globallogic_utils::waitfortimeornotify( timeuntilspawn, "force_spawn" ); + self notify( "stop_wait_safe_spawn_button" ); + } + wavebased = level.waverespawndelay > 0; + if ( !level.playerforcerespawn && self.hasspawned && !wavebased && !self.wantsafespawn && !level.playerqueuedrespawn ) + { + setlowermessage( game[ "strings" ][ "press_to_spawn" ] ); + if ( !spawnedasspectator ) + { + self thread respawn_asspectator( self.origin + vectorScale( ( 0, 0, 1 ), 60 ), self.angles ); + } + spawnedasspectator = 1; + self waitrespawnorsafespawnbutton(); + } + self.waitingtospawn = 0; + self clearlowermessage(); + self.wavespawnindex = undefined; + self.respawntimerstarttime = undefined; + self thread [[ level.spawnplayer ]](); +} + +waitrespawnorsafespawnbutton() +{ + self endon( "disconnect" ); + self endon( "end_respawn" ); + while ( 1 ) + { + if ( self usebuttonpressed() ) + { + return; + } + else + { + wait 0,05; + } + } +} + +waitinspawnqueue() +{ + self endon( "disconnect" ); + self endon( "end_respawn" ); + if ( !level.ingraceperiod && !level.usestartspawns ) + { + currentorigin = self.origin; + currentangles = self.angles; + self thread [[ level.spawnspectator ]]( currentorigin + vectorScale( ( 0, 0, 1 ), 60 ), currentangles ); + self waittill( "queue_respawn" ); + } +} + +setthirdperson( value ) +{ + if ( !level.console ) + { + return; + } + if ( !isDefined( self.spectatingthirdperson ) || value != self.spectatingthirdperson ) + { + self.spectatingthirdperson = value; + if ( value ) + { + self setclientthirdperson( 1 ); + self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); + } + else + { + self setclientthirdperson( 0 ); + self setdepthoffield( 0, 0, 512, 4000, 4, 0 ); + } + self resetfov(); + } +} + +setspawnvariables() +{ + resettimeout(); + self stopshellshock(); + self stoprumble( "damage_heavy" ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_ui.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_ui.gsc new file mode 100644 index 0000000..00d91fe --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_ui.gsc @@ -0,0 +1,544 @@ +#include maps/mp/gametypes_zm/_globallogic_player; +#include maps/mp/gametypes_zm/_spectating; +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +init() +{ + precachestring( &"MP_HALFTIME" ); + precachestring( &"MP_OVERTIME" ); + precachestring( &"MP_ROUNDEND" ); + precachestring( &"MP_INTERMISSION" ); + precachestring( &"MP_SWITCHING_SIDES_CAPS" ); + precachestring( &"MP_FRIENDLY_FIRE_WILL_NOT" ); + precachestring( &"MP_RAMPAGE" ); + precachestring( &"medal_received" ); + precachestring( &"killstreak_received" ); + precachestring( &"prox_grenade_notify" ); + precachestring( &"player_callout" ); + precachestring( &"score_event" ); + precachestring( &"rank_up" ); + precachestring( &"gun_level_complete" ); + precachestring( &"challenge_complete" ); + if ( sessionmodeiszombiesgame() ) + { + precachestring( &"hud_update_survival_team" ); + } + if ( level.splitscreen ) + { + precachestring( &"MP_ENDED_GAME" ); + } + else + { + precachestring( &"MP_HOST_ENDED_GAME" ); + } +} + +setupcallbacks() +{ + level.autoassign = ::menuautoassign; + level.spectator = ::menuspectator; + level.class = ::menuclass; + level.teammenu = ::menuteam; +} + +hideloadoutaftertime( delay ) +{ + self endon( "disconnect" ); + self endon( "perks_hidden" ); + wait delay; + self thread hideallperks( 0,4 ); + self notify( "perks_hidden" ); +} + +hideloadoutondeath() +{ + self endon( "disconnect" ); + self endon( "perks_hidden" ); + self waittill( "death" ); + self hideallperks(); + self notify( "perks_hidden" ); +} + +hideloadoutonkill() +{ + self endon( "disconnect" ); + self endon( "death" ); + self endon( "perks_hidden" ); + self waittill( "killed_player" ); + self hideallperks(); + self notify( "perks_hidden" ); +} + +freegameplayhudelems() +{ + while ( isDefined( self.perkicon ) ) + { + numspecialties = 0; + while ( numspecialties < level.maxspecialties ) + { + if ( isDefined( self.perkicon[ numspecialties ] ) ) + { + self.perkicon[ numspecialties ] destroyelem(); + self.perkname[ numspecialties ] destroyelem(); + } + numspecialties++; + } + } + if ( isDefined( self.perkhudelem ) ) + { + self.perkhudelem destroyelem(); + } + if ( isDefined( self.killstreakicon ) ) + { + if ( isDefined( self.killstreakicon[ 0 ] ) ) + { + self.killstreakicon[ 0 ] destroyelem(); + } + if ( isDefined( self.killstreakicon[ 1 ] ) ) + { + self.killstreakicon[ 1 ] destroyelem(); + } + if ( isDefined( self.killstreakicon[ 2 ] ) ) + { + self.killstreakicon[ 2 ] destroyelem(); + } + if ( isDefined( self.killstreakicon[ 3 ] ) ) + { + self.killstreakicon[ 3 ] destroyelem(); + } + if ( isDefined( self.killstreakicon[ 4 ] ) ) + { + self.killstreakicon[ 4 ] destroyelem(); + } + } + self notify( "perks_hidden" ); + if ( isDefined( self.lowermessage ) ) + { + self.lowermessage destroyelem(); + } + if ( isDefined( self.lowertimer ) ) + { + self.lowertimer destroyelem(); + } + if ( isDefined( self.proxbar ) ) + { + self.proxbar destroyelem(); + } + if ( isDefined( self.proxbartext ) ) + { + self.proxbartext destroyelem(); + } + if ( isDefined( self.carryicon ) ) + { + self.carryicon destroyelem(); + } +} + +teamplayercountsequal( playercounts ) +{ + count = undefined; + _a150 = level.teams; + _k150 = getFirstArrayKey( _a150 ); + while ( isDefined( _k150 ) ) + { + team = _a150[ _k150 ]; + if ( !isDefined( count ) ) + { + count = playercounts[ team ]; + } + else + { + if ( count != playercounts[ team ] ) + { + return 0; + } + } + _k150 = getNextArrayKey( _a150, _k150 ); + } + return 1; +} + +teamwithlowestplayercount( playercounts, ignore_team ) +{ + count = 9999; + lowest_team = undefined; + _a169 = level.teams; + _k169 = getFirstArrayKey( _a169 ); + while ( isDefined( _k169 ) ) + { + team = _a169[ _k169 ]; + if ( count > playercounts[ team ] ) + { + count = playercounts[ team ]; + lowest_team = team; + } + _k169 = getNextArrayKey( _a169, _k169 ); + } + return lowest_team; +} + +menuautoassign( comingfrommenu ) +{ + teamkeys = getarraykeys( level.teams ); + assignment = teamkeys[ randomint( teamkeys.size ) ]; + self closemenus(); + if ( isDefined( level.forceallallies ) && level.forceallallies ) + { + assignment = "allies"; + } + else + { + if ( level.teambased ) + { + if ( getDvarInt( "party_autoteams" ) == 1 ) + { + if ( level.allow_teamchange == "1" || self.hasspawned && comingfrommenu ) + { + assignment = ""; + break; + } + else + { + team = getassignedteam( self ); + switch( team ) + { + case 1: + assignment = teamkeys[ 1 ]; + break; + case 2: + assignment = teamkeys[ 0 ]; + break; + case 3: + assignment = teamkeys[ 2 ]; + break; + case 4: + if ( !isDefined( level.forceautoassign ) || !level.forceautoassign ) + { + self setclientscriptmainmenu( game[ "menu_class" ] ); + return; + } + default: + assignment = ""; + if ( isDefined( level.teams[ team ] ) ) + { + assignment = team; + } + else + { + if ( team == "spectator" && !level.forceautoassign ) + { + self setclientscriptmainmenu( game[ "menu_class" ] ); + return; + } + } + } + } + } + if ( assignment == "" || getDvarInt( "party_autoteams" ) == 0 ) + { + if ( sessionmodeiszombiesgame() ) + { + assignment = "allies"; + } + } + if ( assignment == self.pers[ "team" ] || self.sessionstate == "playing" && self.sessionstate == "dead" ) + { + self beginclasschoice(); + return; + } + } + else if ( getDvarInt( "party_autoteams" ) == 1 ) + { + if ( level.allow_teamchange != "1" || !self.hasspawned && !comingfrommenu ) + { + team = getassignedteam( self ); + if ( isDefined( level.teams[ team ] ) ) + { + assignment = team; + } + else + { + if ( team == "spectator" && !level.forceautoassign ) + { + self setclientscriptmainmenu( game[ "menu_class" ] ); + return; + } + } + } + } + } + if ( assignment != self.pers[ "team" ] || self.sessionstate == "playing" && self.sessionstate == "dead" ) + { + self.switching_teams = 1; + self.joining_team = assignment; + self.leaving_team = self.pers[ "team" ]; + self suicide(); + } + self.pers[ "team" ] = assignment; + self.team = assignment; + self.class = undefined; + self updateobjectivetext(); + if ( level.teambased ) + { + self.sessionteam = assignment; + } + else + { + self.sessionteam = "none"; + self.ffateam = assignment; + } + if ( !isalive( self ) ) + { + self.statusicon = "hud_status_dead"; + } + self notify( "joined_team" ); + level notify( "joined_team" ); + self notify( "end_respawn" ); + self beginclasschoice(); + self setclientscriptmainmenu( game[ "menu_class" ] ); +} + +teamscoresequal() +{ + score = undefined; + _a413 = level.teams; + _k413 = getFirstArrayKey( _a413 ); + while ( isDefined( _k413 ) ) + { + team = _a413[ _k413 ]; + if ( !isDefined( score ) ) + { + score = getteamscore( team ); + } + else + { + if ( score != getteamscore( team ) ) + { + return 0; + } + } + _k413 = getNextArrayKey( _a413, _k413 ); + } + return 1; +} + +teamwithlowestscore() +{ + score = 99999999; + lowest_team = undefined; + _a432 = level.teams; + _k432 = getFirstArrayKey( _a432 ); + while ( isDefined( _k432 ) ) + { + team = _a432[ _k432 ]; + if ( score > getteamscore( team ) ) + { + lowest_team = team; + } + _k432 = getNextArrayKey( _a432, _k432 ); + } + return lowest_team; +} + +pickteamfromscores( teams ) +{ + assignment = "allies"; + if ( teamscoresequal() ) + { + assignment = teams[ randomint( teams.size ) ]; + } + else + { + assignment = teamwithlowestscore(); + } + return assignment; +} + +getsplitscreenteam() +{ + index = 0; + while ( index < level.players.size ) + { + if ( !isDefined( level.players[ index ] ) ) + { + index++; + continue; + } + else if ( level.players[ index ] == self ) + { + index++; + continue; + } + else if ( !self isplayeronsamemachine( level.players[ index ] ) ) + { + index++; + continue; + } + else + { + team = level.players[ index ].sessionteam; + if ( team != "spectator" ) + { + return team; + } + } + index++; + } + return ""; +} + +updateobjectivetext() +{ + if ( sessionmodeiszombiesgame() || self.pers[ "team" ] == "spectator" ) + { + self setclientcgobjectivetext( "" ); + return; + } + if ( level.scorelimit > 0 ) + { + self setclientcgobjectivetext( getobjectivescoretext( self.pers[ "team" ] ) ); + } + else + { + self setclientcgobjectivetext( getobjectivetext( self.pers[ "team" ] ) ); + } +} + +closemenus() +{ + self closemenu(); + self closeingamemenu(); +} + +beginclasschoice( forcenewchoice ) +{ +/# + assert( isDefined( level.teams[ self.pers[ "team" ] ] ) ); +#/ + team = self.pers[ "team" ]; + if ( level.disablecac == 1 ) + { + self.pers[ "class" ] = level.defaultclass; + self.class = level.defaultclass; + if ( self.sessionstate != "playing" && game[ "state" ] == "playing" ) + { + self thread [[ level.spawnclient ]](); + } + level thread maps/mp/gametypes_zm/_globallogic::updateteamstatus(); + self thread maps/mp/gametypes_zm/_spectating::setspectatepermissionsformachine(); + return; + } + if ( level.wagermatch ) + { + self openmenu( game[ "menu_changeclass_wager" ] ); + } + else if ( getDvarInt( "barebones_class_mode" ) ) + { + self openmenu( game[ "menu_changeclass_barebones" ] ); + } + else + { + self openmenu( game[ "menu_changeclass_" + team ] ); + } +} + +showmainmenuforteam() +{ +/# + assert( isDefined( level.teams[ self.pers[ "team" ] ] ) ); +#/ + team = self.pers[ "team" ]; + if ( level.wagermatch ) + { + self openmenu( game[ "menu_changeclass_wager" ] ); + } + else + { + self openmenu( game[ "menu_changeclass_" + team ] ); + } +} + +menuteam( team ) +{ + self closemenus(); + if ( !level.console && level.allow_teamchange == "0" && isDefined( self.hasdonecombat ) && self.hasdonecombat ) + { + return; + } + if ( self.pers[ "team" ] != team ) + { + if ( level.ingraceperiod || !isDefined( self.hasdonecombat ) && !self.hasdonecombat ) + { + self.hasspawned = 0; + } + if ( self.sessionstate == "playing" ) + { + self.switching_teams = 1; + self.joining_team = team; + self.leaving_team = self.pers[ "team" ]; + self suicide(); + } + self.pers[ "team" ] = team; + self.team = team; + self.class = undefined; + self updateobjectivetext(); + if ( level.teambased ) + { + self.sessionteam = team; + } + else + { + self.sessionteam = "none"; + self.ffateam = team; + } + self setclientscriptmainmenu( game[ "menu_class" ] ); + self notify( "joined_team" ); + level notify( "joined_team" ); + self notify( "end_respawn" ); + } + self beginclasschoice(); +} + +menuspectator() +{ + self closemenus(); + if ( self.pers[ "team" ] != "spectator" ) + { + if ( isalive( self ) ) + { + self.switching_teams = 1; + self.joining_team = "spectator"; + self.leaving_team = self.pers[ "team" ]; + self suicide(); + } + self.pers[ "team" ] = "spectator"; + self.team = "spectator"; + self.class = undefined; + self updateobjectivetext(); + self.sessionteam = "spectator"; + if ( !level.teambased ) + { + self.ffateam = "spectator"; + } + [[ level.spawnspectator ]](); + self thread maps/mp/gametypes_zm/_globallogic_player::spectate_player_watcher(); + self setclientscriptmainmenu( game[ "menu_class" ] ); + self notify( "joined_spectators" ); + } +} + +menuclass( response ) +{ + self closemenus(); +} + +removespawnmessageshortly( delay ) +{ + self endon( "disconnect" ); + waittillframeend; + self endon( "end_respawn" ); + wait delay; + self clearlowermessage( 2 ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_utils.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_utils.gsc new file mode 100644 index 0000000..4de74a7 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_utils.gsc @@ -0,0 +1,478 @@ +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/gametypes_zm/_hostmigration; +#include maps/mp/gametypes_zm/_hud_message; +#include maps/mp/_utility; + +waittillslowprocessallowed() +{ + while ( level.lastslowprocessframe == getTime() ) + { + wait 0,05; + } + level.lastslowprocessframe = getTime(); +} + +testmenu() +{ + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + wait 10; + notifydata = spawnstruct(); + notifydata.titletext = &"MP_CHALLENGE_COMPLETED"; + notifydata.notifytext = "wheee"; + notifydata.sound = "mp_challenge_complete"; + self thread maps/mp/gametypes_zm/_hud_message::notifymessage( notifydata ); + } +} + +testshock() +{ + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + wait 3; + numshots = randomint( 6 ); + i = 0; + while ( i < numshots ) + { + iprintlnbold( numshots ); + self shellshock( "frag_grenade_mp", 0,2 ); + wait 0,1; + i++; + } + } +} + +testhps() +{ + self endon( "death" ); + self endon( "disconnect" ); + hps = []; + hps[ hps.size ] = "radar_mp"; + hps[ hps.size ] = "artillery_mp"; + hps[ hps.size ] = "dogs_mp"; + for ( ;; ) + { + hp = "radar_mp"; + wait 20; + } +} + +timeuntilroundend() +{ + if ( level.gameended ) + { + timepassed = ( getTime() - level.gameendtime ) / 1000; + timeremaining = level.postroundtime - timepassed; + if ( timeremaining < 0 ) + { + return 0; + } + return timeremaining; + } + if ( level.inovertime ) + { + return undefined; + } + if ( level.timelimit <= 0 ) + { + return undefined; + } + if ( !isDefined( level.starttime ) ) + { + return undefined; + } + timepassed = ( gettimepassed() - level.starttime ) / 1000; + timeremaining = ( level.timelimit * 60 ) - timepassed; + return timeremaining + level.postroundtime; +} + +gettimeremaining() +{ + return ( ( level.timelimit * 60 ) * 1000 ) - gettimepassed(); +} + +registerpostroundevent( eventfunc ) +{ + if ( !isDefined( level.postroundevents ) ) + { + level.postroundevents = []; + } + level.postroundevents[ level.postroundevents.size ] = eventfunc; +} + +executepostroundevents() +{ + if ( !isDefined( level.postroundevents ) ) + { + return; + } + i = 0; + while ( i < level.postroundevents.size ) + { + [[ level.postroundevents[ i ] ]](); + i++; + } +} + +getvalueinrange( value, minvalue, maxvalue ) +{ + if ( value > maxvalue ) + { + return maxvalue; + } + else + { + if ( value < minvalue ) + { + return minvalue; + } + else + { + return value; + } + } +} + +assertproperplacement() +{ +/# + numplayers = level.placement[ "all" ].size; + i = 0; + while ( i < ( numplayers - 1 ) ) + { + if ( isDefined( level.placement[ "all" ][ i ] ) && isDefined( level.placement[ "all" ][ i + 1 ] ) ) + { + if ( level.placement[ "all" ][ i ].score < level.placement[ "all" ][ i + 1 ].score ) + { + println( "^1Placement array:" ); + i = 0; + while ( i < numplayers ) + { + player = level.placement[ "all" ][ i ]; + println( "^1" + i + ". " + player.name + ": " + player.score ); + i++; + } + assertmsg( "Placement array was not properly sorted" ); + return; + } + } + else + { + i++; +#/ + } + } +} + +isvalidclass( class ) +{ + if ( level.oldschool || sessionmodeiszombiesgame() ) + { +/# + assert( !isDefined( class ) ); +#/ + return 1; + } + if ( isDefined( class ) ) + { + return class != ""; + } +} + +playtickingsound( gametype_tick_sound ) +{ + self endon( "death" ); + self endon( "stop_ticking" ); + level endon( "game_ended" ); + time = level.bombtimer; + while ( 1 ) + { + self playsound( gametype_tick_sound ); + if ( time > 10 ) + { + time -= 1; + wait 1; + } + else if ( time > 4 ) + { + time -= 0,5; + wait 0,5; + } + else if ( time > 1 ) + { + time -= 0,4; + wait 0,4; + } + else + { + time -= 0,3; + wait 0,3; + } + maps/mp/gametypes_zm/_hostmigration::waittillhostmigrationdone(); + } +} + +stoptickingsound() +{ + self notify( "stop_ticking" ); +} + +gametimer() +{ + level endon( "game_ended" ); + level waittill( "prematch_over" ); + level.starttime = getTime(); + level.discardtime = 0; + if ( isDefined( game[ "roundMillisecondsAlreadyPassed" ] ) ) + { + level.starttime -= game[ "roundMillisecondsAlreadyPassed" ]; + } + prevtime = getTime(); + while ( game[ "state" ] == "playing" ) + { + if ( !level.timerstopped ) + { + game[ "timepassed" ] += getTime() - prevtime; + } + prevtime = getTime(); + wait 1; + } +} + +gettimepassed() +{ + if ( !isDefined( level.starttime ) ) + { + return 0; + } + if ( level.timerstopped ) + { + return level.timerpausetime - level.starttime - level.discardtime; + } + else + { + return getTime() - level.starttime - level.discardtime; + } +} + +pausetimer() +{ + if ( level.timerstopped ) + { + return; + } + level.timerstopped = 1; + level.timerpausetime = getTime(); +} + +resumetimer() +{ + if ( !level.timerstopped ) + { + return; + } + level.timerstopped = 0; + level.discardtime += getTime() - level.timerpausetime; +} + +getscoreremaining( team ) +{ +/# + if ( !isplayer( self ) ) + { + assert( isDefined( team ) ); + } +#/ + scorelimit = level.scorelimit; + if ( isplayer( self ) ) + { + return scorelimit - maps/mp/gametypes_zm/_globallogic_score::_getplayerscore( self ); + } + else + { + return scorelimit - getteamscore( team ); + } +} + +getscoreperminute( team ) +{ +/# + if ( !isplayer( self ) ) + { + assert( isDefined( team ) ); + } +#/ + scorelimit = level.scorelimit; + timelimit = level.timelimit; + minutespassed = ( gettimepassed() / 60000 ) + 0,0001; + if ( isplayer( self ) ) + { + return maps/mp/gametypes_zm/_globallogic_score::_getplayerscore( self ) / minutespassed; + } + else + { + return getteamscore( team ) / minutespassed; + } +} + +getestimatedtimeuntilscorelimit( team ) +{ +/# + if ( !isplayer( self ) ) + { + assert( isDefined( team ) ); + } +#/ + scoreperminute = self getscoreperminute( team ); + scoreremaining = self getscoreremaining( team ); + if ( !scoreperminute ) + { + return 999999; + } + return scoreremaining / scoreperminute; +} + +rumbler() +{ + self endon( "disconnect" ); + while ( 1 ) + { + wait 0,1; + self playrumbleonentity( "damage_heavy" ); + } +} + +waitfortimeornotify( time, notifyname ) +{ + self endon( notifyname ); + wait time; +} + +waitfortimeornotifynoartillery( time, notifyname ) +{ + self endon( notifyname ); + wait time; + while ( isDefined( level.artilleryinprogress ) ) + { +/# + assert( level.artilleryinprogress ); +#/ + wait 0,25; + } +} + +isheadshot( sweapon, shitloc, smeansofdeath, einflictor ) +{ + if ( shitloc != "head" && shitloc != "helmet" ) + { + return 0; + } + switch( smeansofdeath ) + { + case "MOD_BAYONET": + case "MOD_MELEE": + return 0; + case "MOD_IMPACT": + if ( sweapon != "knife_ballistic_mp" ) + { + return 0; + } + } + return 1; +} + +gethitlocheight( shitloc ) +{ + switch( shitloc ) + { + case "head": + case "helmet": + case "neck": + return 60; + case "gun": + case "left_arm_lower": + case "left_arm_upper": + case "left_hand": + case "right_arm_lower": + case "right_arm_upper": + case "right_hand": + case "torso_upper": + return 48; + case "torso_lower": + return 40; + case "left_leg_upper": + case "right_leg_upper": + return 32; + case "left_leg_lower": + case "right_leg_lower": + return 10; + case "left_foot": + case "right_foot": + return 5; + } + return 48; +} + +debugline( start, end ) +{ +/# + i = 0; + while ( i < 50 ) + { + line( start, end ); + wait 0,05; + i++; +#/ + } +} + +isexcluded( entity, entitylist ) +{ + index = 0; + while ( index < entitylist.size ) + { + if ( entity == entitylist[ index ] ) + { + return 1; + } + index++; + } + return 0; +} + +waitfortimeornotifies( desireddelay ) +{ + startedwaiting = getTime(); + waitedtime = ( getTime() - startedwaiting ) / 1000; + if ( waitedtime < desireddelay ) + { + wait ( desireddelay - waitedtime ); + return desireddelay; + } + else + { + return waitedtime; + } +} + +logteamwinstring( wintype, winner ) +{ + log_string = wintype; + if ( isDefined( winner ) ) + { + log_string = ( log_string + ", win: " ) + winner; + } + _a469 = level.teams; + _k469 = getFirstArrayKey( _a469 ); + while ( isDefined( _k469 ) ) + { + team = _a469[ _k469 ]; + log_string = ( log_string + ", " ) + team + ": " + game[ "teamScores" ][ team ]; + _k469 = getNextArrayKey( _a469, _k469 ); + } + logstring( log_string ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_vehicle.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_vehicle.gsc new file mode 100644 index 0000000..9bfb41d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_globallogic_vehicle.gsc @@ -0,0 +1,471 @@ +#include maps/mp/gametypes_zm/_damagefeedback; +#include maps/mp/gametypes_zm/_globallogic_player; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/_utility; + +callback_vehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname ) +{ + self.idflags = idflags; + self.idflagstime = getTime(); + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( eattacker.candocombat ) && !eattacker.candocombat ) + { + return; + } + if ( !isDefined( vdir ) ) + { + idflags |= level.idflags_no_knockback; + } + friendly = 0; + if ( isDefined( self.maxhealth ) || self.health == self.maxhealth && !isDefined( self.attackers ) ) + { + self.attackers = []; + self.attackerdata = []; + self.attackerdamage = []; + } + if ( sweapon == "none" && isDefined( einflictor ) ) + { + if ( isDefined( einflictor.targetname ) && einflictor.targetname == "explodable_barrel" ) + { + sweapon = "explodable_barrel_mp"; + } + else + { + if ( isDefined( einflictor.destructible_type ) && issubstr( einflictor.destructible_type, "vehicle_" ) ) + { + sweapon = "destructible_car_mp"; + } + } + } + if ( idflags & level.idflags_no_protection ) + { + if ( self isvehicleimmunetodamage( idflags, smeansofdeath, sweapon ) ) + { + return; + } + if ( smeansofdeath == "MOD_PISTOL_BULLET" || smeansofdeath == "MOD_RIFLE_BULLET" ) + { + } + else + { + if ( smeansofdeath == "MOD_PROJECTILE" || smeansofdeath == "MOD_GRENADE" ) + { + idamage *= getvehicleprojectilescalar( sweapon ); + idamage = int( idamage ); + if ( idamage == 0 ) + { + return; + } + } + else + { + if ( smeansofdeath == "MOD_GRENADE_SPLASH" ) + { + idamage *= getvehicleunderneathsplashscalar( sweapon ); + idamage = int( idamage ); + if ( idamage == 0 ) + { + return; + } + } + } + } + idamage *= level.vehicledamagescalar; + idamage = int( idamage ); + if ( isplayer( eattacker ) ) + { + eattacker.pers[ "participation" ]++; + } + prevhealthratio = self.health / self.maxhealth; + if ( isDefined( self.owner ) && isplayer( self.owner ) ) + { + team = self.owner.pers[ "team" ]; + } + if ( level.teambased && isplayer( eattacker ) && team == eattacker.pers[ "team" ] ) + { + if ( level.friendlyfire == 0 ) + { + if ( !allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon ) ) + { + return; + } + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 1 ); + } + else if ( level.friendlyfire == 1 ) + { + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 ); + } + else if ( level.friendlyfire == 2 ) + { + if ( !allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon ) ) + { + return; + } + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 1 ); + } + else + { + if ( level.friendlyfire == 3 ) + { + idamage = int( idamage * 0,5 ); + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 ); + } + } + friendly = 1; + } + else + { + if ( !level.teambased && isDefined( self.targetname ) && self.targetname == "rcbomb" ) + { + } + else + { + if ( isDefined( self.owner ) && isDefined( eattacker ) && self.owner == eattacker ) + { + return; + } + } + if ( idamage < 1 ) + { + idamage = 1; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( sweapon ) ) + { + eattacker thread maps/mp/gametypes_zm/_weapons::checkhit( sweapon ); + } + if ( issubstr( smeansofdeath, "MOD_GRENADE" ) && isDefined( einflictor.iscooked ) ) + { + self.wascooked = getTime(); + } + else + { + self.wascooked = undefined; + } + attacker_seat = undefined; + if ( isDefined( eattacker ) ) + { + attacker_seat = self getoccupantseat( eattacker ); + } + if ( isDefined( eattacker ) ) + { + self.lastdamagewasfromenemy = !isDefined( attacker_seat ); + } + self finishvehicledamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, damagefromunderneath, modelindex, partname, 0 ); + if ( level.gametype == "hack" && sweapon != "emp_grenade_mp" ) + { + idamage = 0; + } + } + if ( isDefined( eattacker ) && eattacker != self ) + { + if ( maps/mp/gametypes_zm/_globallogic_player::dodamagefeedback( sweapon, einflictor ) ) + { + if ( idamage > 0 ) + { + eattacker thread maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback( smeansofdeath, einflictor ); + } + } + } + } +/# + if ( getDvarInt( "g_debugDamage" ) ) + { + println( "actor:" + self getentitynumber() + " health:" + self.health + " attacker:" + eattacker.clientid + " inflictor is player:" + isplayer( einflictor ) + " damage:" + idamage + " hitLoc:" + shitloc ); +#/ + } + if ( 1 ) + { + lpselfnum = self getentitynumber(); + lpselfteam = ""; + lpattackerteam = ""; + if ( isplayer( eattacker ) ) + { + lpattacknum = eattacker getentitynumber(); + lpattackguid = eattacker getguid(); + lpattackname = eattacker.name; + lpattackerteam = eattacker.pers[ "team" ]; + } + else + { + lpattacknum = -1; + lpattackguid = ""; + lpattackname = ""; + lpattackerteam = "world"; + } + logprint( "VD;" + lpselfnum + ";" + lpselfteam + ";" + lpattackguid + ";" + lpattacknum + ";" + lpattackerteam + ";" + lpattackname + ";" + sweapon + ";" + idamage + ";" + smeansofdeath + ";" + shitloc + "\n" ); + } +} + +callback_vehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ) +{ + idamage = 0; + finnerdamage = 0; + fouterdamage = 0; + self.idflags = idflags; + self.idflagstime = getTime(); + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && isDefined( eattacker.candocombat ) && !eattacker.candocombat ) + { + return; + } + friendly = 0; + if ( idflags & level.idflags_no_protection ) + { + if ( self isvehicleimmunetodamage( idflags, smeansofdeath, sweapon ) ) + { + return; + } + if ( smeansofdeath != "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE_SPLASH" && smeansofdeath == "MOD_EXPLOSIVE" ) + { + scalar = getvehicleprojectilesplashscalar( sweapon ); + idamage = int( idamage * scalar ); + finnerdamage *= scalar; + fouterdamage *= scalar; + if ( finnerdamage == 0 ) + { + return; + } + if ( idamage < 1 ) + { + idamage = 1; + } + } + occupant_team = undefined; + if ( level.teambased && isplayer( eattacker ) && occupant_team == eattacker.pers[ "team" ] ) + { + if ( level.friendlyfire == 0 ) + { + if ( !allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon ) ) + { + return; + } + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ); + } + else if ( level.friendlyfire == 1 ) + { + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ); + } + else if ( level.friendlyfire == 2 ) + { + if ( !allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon ) ) + { + return; + } + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ); + } + else + { + if ( level.friendlyfire == 3 ) + { + idamage = int( idamage * 0,5 ); + if ( idamage < 1 ) + { + idamage = 1; + } + self.lastdamagewasfromenemy = 0; + self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ); + } + } + friendly = 1; + return; + } + else + { + if ( idamage < 1 ) + { + idamage = 1; + } + self finishvehicleradiusdamage( einflictor, eattacker, idamage, finnerdamage, fouterdamage, idflags, smeansofdeath, sweapon, vpoint, fradius, fconeanglecos, vconedir, psoffsettime ); + } + } +} + +vehiclecrush() +{ + self endon( "disconnect" ); + if ( isDefined( level._effect ) && isDefined( level._effect[ "tanksquish" ] ) ) + { + playfx( level._effect[ "tanksquish" ], self.origin + vectorScale( ( 0, 0, 1 ), 30 ) ); + } + self playsound( "chr_crunch" ); +} + +getvehicleprojectilescalar( sweapon ) +{ + if ( sweapon == "satchel_charge_mp" ) + { + scale = 1; + } + else if ( sweapon == "sticky_grenade_mp" ) + { + scale = 1; + } + else if ( sweapon == "claymore_mp" ) + { + scale = 1; + } + else if ( sweapon == "remote_missile_missile_mp" ) + { + scale = 10; + } + else if ( sweapon == "remote_mortar_missile_mp" ) + { + scale = 10; + } + else if ( sweapon == "smaw_mp" ) + { + scale = 0,2; + } + else if ( sweapon == "fhj18_mp" ) + { + scale = 0,2; + } + else if ( issubstr( sweapon, "gl_" ) ) + { + scale = 1; + } + else if ( issubstr( sweapon, "turret_mp" ) ) + { + scale = 1; + } + else if ( issubstr( sweapon, "grenade" ) ) + { + scale = 1; + } + else + { + scale = 1; + } + return scale; +} + +getvehicleprojectilesplashscalar( sweapon ) +{ + if ( sweapon == "satchel_charge_mp" ) + { + scale = 1; + } + else if ( sweapon == "sticky_grenade_mp" ) + { + scale = 1; + } + else if ( sweapon == "claymore_mp" ) + { + scale = 1; + } + else if ( sweapon == "remote_missile_missile_mp" ) + { + scale = 10; + } + else if ( sweapon == "remote_mortar_missile_mp" ) + { + scale = 4; + } + else if ( sweapon == "chopper_minigun_mp" ) + { + scale = 0,5; + } + else if ( issubstr( sweapon, "gl_" ) ) + { + scale = 0,5; + } + else if ( issubstr( sweapon, "turrent_mp" ) ) + { + scale = 0,1; + } + else if ( issubstr( sweapon, "grenade" ) ) + { + scale = 1; + } + else + { + scale = 1; + } + return scale; +} + +getvehicleunderneathsplashscalar( sweapon ) +{ + if ( sweapon == "satchel_charge_mp" ) + { + scale = 10; + scale *= 3; + } + else + { + scale = 1; + } + return scale; +} + +getvehiclebulletdamage( sweapon ) +{ + if ( issubstr( sweapon, "ptrs41_" ) ) + { + idamage = 25; + } + else if ( issubstr( sweapon, "gunner" ) ) + { + idamage = 5; + } + else if ( issubstr( sweapon, "mg42_bipod" ) || issubstr( sweapon, "30cal_bipod" ) ) + { + idamage = 5; + } + else + { + idamage = 1; + } + return idamage; +} + +allowfriendlyfiredamage( einflictor, eattacker, smeansofdeath, sweapon ) +{ + if ( isDefined( self.allowfriendlyfiredamageoverride ) ) + { + return [[ self.allowfriendlyfiredamageoverride ]]( einflictor, eattacker, smeansofdeath, sweapon ); + } + vehicle = eattacker getvehicleoccupied(); + return 0; +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_gv_actions.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_gv_actions.gsc new file mode 100644 index 0000000..0b42480 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_gv_actions.gsc @@ -0,0 +1,995 @@ +#include maps/mp/gametypes_zm/_globallogic_ui; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/gametypes_zm/_globallogic; +#include common_scripts/utility; +#include maps/mp/_utility; + +initializeactionarray() +{ + level.gametypeactions = []; + level.gametypeactions[ "GiveAmmo" ] = ::dogiveammo; + level.gametypeactions[ "RemoveAmmo" ] = ::doremoveammo; + level.gametypeactions[ "PlaySound" ] = ::doplaysound; + level.gametypeactions[ "EnableUAV" ] = ::doenableuav; + level.gametypeactions[ "GiveScore" ] = ::dogivescore; + level.gametypeactions[ "RemoveScore" ] = ::doremovescore; + level.gametypeactions[ "SetHeader" ] = ::dosetheader; + level.gametypeactions[ "SetSubHeader" ] = ::dosetsubheader; + level.gametypeactions[ "DisplayMessage" ] = ::dodisplaymessage; + level.gametypeactions[ "GiveHealth" ] = ::dogivehealth; + level.gametypeactions[ "RemoveHealth" ] = ::doremovehealth; + level.gametypeactions[ "SetHealthRegen" ] = ::dosethealthregen; + level.gametypeactions[ "ChangeClass" ] = ::dochangeclass; + level.gametypeactions[ "ChangeTeam" ] = ::dochangeteam; + level.gametypeactions[ "GivePerk" ] = ::dogiveperk; + level.gametypeactions[ "RemovePerk" ] = ::doremoveperk; + level.gametypeactions[ "GiveInvuln" ] = ::dogiveinvuln; + level.gametypeactions[ "RemoveInvuln" ] = ::doremoveinvuln; + level.gametypeactions[ "SetDamageModifier" ] = ::dosetdamagemodifier; + level.gametypeactions[ "GiveKillstreak" ] = ::dogivekillstreak; + level.gametypeactions[ "RemoveKillstreak" ] = ::doremovekillstreak; + level.gametypeactions[ "GiveLives" ] = ::dogivelives; + level.gametypeactions[ "RemoveLives" ] = ::doremovelives; + level.gametypeactions[ "ScaleMoveSpeed" ] = ::doscalemovespeed; + level.gametypeactions[ "ShowOnRadar" ] = ::doshowonradar; + level.conditionals = []; + level.conditionals[ "Equals" ] = ::equals; + level.conditionals[ "==" ] = ::equals; + level.conditionals[ "!=" ] = ::notequals; + level.conditionals[ "<" ] = ::lessthan; + level.conditionals[ "<=" ] = ::lessthanequals; + level.conditionals[ ">" ] = ::greaterthan; + level.conditionals[ ">=" ] = ::greaterthanequals; + level.conditionals[ "InPlace" ] = ::inplace; + level.conditionallefthandside = []; + level.conditionallefthandside[ "PlayersLeft" ] = ::playersleft; + level.conditionallefthandside[ "RoundsPlayed" ] = ::roundsplayed; + level.conditionallefthandside[ "HitBy" ] = ::hitby; + level.conditionallefthandside[ "PlayersClass" ] = ::playersclass; + level.conditionallefthandside[ "VictimsClass" ] = ::playersclass; + level.conditionallefthandside[ "AttackersClass" ] = ::attackersclass; + level.conditionallefthandside[ "PlayersPlace" ] = ::playersplace; + level.conditionallefthandside[ "VictimsPlace" ] = ::playersplace; + level.conditionallefthandside[ "AttackersPlace" ] = ::attackersplace; + level.targets = []; + level.targets[ "Everyone" ] = ::gettargeteveryone; + level.targets[ "PlayersLeft" ] = ::gettargetplayersleft; + level.targets[ "PlayersEliminated" ] = ::gettargetplayerseliminated; + level.targets[ "PlayersTeam" ] = ::gettargetplayersteam; + level.targets[ "VictimsTeam" ] = ::gettargetplayersteam; + level.targets[ "OtherTeam" ] = ::gettargetotherteam; + level.targets[ "AttackersTeam" ] = ::gettargetotherteam; + level.targets[ "PlayersLeftOnPlayersTeam" ] = ::gettargetplayersleftonplayersteam; + level.targets[ "PlayersLeftOnOtherTeam" ] = ::gettargetplayersleftonotherteam; + level.targets[ "PlayersLeftOnVictimsTeam" ] = ::gettargetplayersleftonplayersteam; + level.targets[ "PlayersLeftOnAttackersTeam" ] = ::gettargetplayersleftonotherteam; + level.targets[ "PlayersEliminatedOnPlayersTeam" ] = ::gettargetplayerseliminatedonplayersteam; + level.targets[ "PlayersEliminatedOnOtherTeam" ] = ::gettargetplayerseliminatedonotherteam; + level.targets[ "PlayersEliminatedOnVictimsTeam" ] = ::gettargetplayerseliminatedonplayersteam; + level.targets[ "PlayersEliminatedOnAttackersTeam" ] = ::gettargetplayerseliminatedonotherteam; + level.targets[ "AssistingPlayers" ] = ::getassistingplayers; +} + +equals( param1, param2 ) +{ + return param1 == param2; +} + +notequals( param1, param2 ) +{ + return param1 != param2; +} + +lessthan( param1, param2 ) +{ + return param1 < param2; +} + +lessthanequals( param1, param2 ) +{ + return param1 <= param2; +} + +greaterthan( param1, param2 ) +{ + return param1 > param2; +} + +greaterthanequals( param1, param2 ) +{ + return param1 >= param2; +} + +inplace( param1, param2 ) +{ + if ( param1 == param2 ) + { + return 1; + } + if ( param2 == "top3" && param1 == "first" ) + { + return 1; + } + return 0; +} + +playersleft( rule ) +{ + return 0; +} + +roundsplayed( rule ) +{ + return game[ "roundsplayed" ] + 1; +} + +hitby( rule ) +{ + meansofdeath = rule.target[ "MeansOfDeath" ]; + weapon = rule.target[ "Weapon" ]; + if ( !isDefined( meansofdeath ) || !isDefined( weapon ) ) + { + return undefined; + } + switch( weapon ) + { + case "knife_ballistic_mp": + return "knife"; + } + switch( meansofdeath ) + { + case "MOD_PISTOL_BULLET": + case "MOD_RIFLE_BULLET": + return "bullet"; + case "MOD_BAYONET": + case "MOD_MELEE": + return "knife"; + case "MOD_HEAD_SHOT": + return "headshot"; + case "MOD_EXPLOSIVE": + case "MOD_GRENADE": + case "MOD_GRENADE_SPLASH": + case "MOD_PROJECTILE": + case "MOD_PROJECTILE_SPLASH": + return "explosive"; + } + return undefined; +} + +getplayersclass( player ) +{ + return player.pers[ "class" ]; +} + +playersclass( rule ) +{ + player = rule.target[ "Player" ]; + return getplayersclass( player ); +} + +attackersclass( rule ) +{ + player = rule.target[ "Attacker" ]; + return getplayersclass( player ); +} + +getplayersplace( player ) +{ + maps/mp/gametypes_zm/_globallogic::updateplacement(); + if ( !isDefined( level.placement[ "all" ] ) ) + { + return; + } + place = 0; + while ( place < level.placement[ "all" ].size ) + { + if ( level.placement[ "all" ][ place ] == player ) + { + place++; + continue; + } + else + { + place++; + } + } + place++; + if ( place == 1 ) + { + return "first"; + } + else + { + if ( place <= 3 ) + { + return "top3"; + } + else + { + if ( place == level.placement[ "all" ].size ) + { + return "last"; + } + } + } + return "middle"; +} + +playersplace( rule ) +{ + player = rule.target[ "Player" ]; + return getplayersplace( player ); +} + +attackersplace( rule ) +{ + player = rule.target[ "Attacker" ]; + return getplayersplace( player ); +} + +gettargeteveryone( rule ) +{ + return level.players; +} + +gettargetplayersleft( rule ) +{ + return 0; +} + +gettargetplayerseliminated( rule ) +{ + return 0; +} + +gettargetplayersteam( rule ) +{ + player = rule.target[ "Player" ]; + if ( !isDefined( player ) ) + { + return []; + } + return getplayersonteam( level.players, player.pers[ "team" ] ); +} + +gettargetotherteam( rule ) +{ + player = rule.target[ "Player" ]; + if ( !isDefined( player ) ) + { + return []; + } + return getplayersonteam( level.players, getotherteam( player.pers[ "team" ] ) ); +} + +gettargetplayersleftonplayersteam( rule ) +{ + return []; +} + +gettargetplayersleftonotherteam( rule ) +{ + return []; +} + +gettargetplayerseliminatedonplayersteam( rule ) +{ + return []; +} + +gettargetplayerseliminatedonotherteam( rule ) +{ + return []; +} + +getassistingplayers( rule ) +{ + assisters = []; + attacker = rule.target[ "Attacker" ]; + if ( !isDefined( rule.target[ "Assisters" ] ) || !isDefined( attacker ) ) + { + return assisters; + } + j = 0; + while ( j < rule.target[ "Assisters" ].size ) + { + player = rule.target[ "Assisters" ][ j ]; + if ( !isDefined( player ) ) + { + j++; + continue; + } + else if ( player == attacker ) + { + j++; + continue; + } + else + { + assisters[ assisters.size ] = player; + } + j++; + } + return assisters; +} + +executegametypeeventrule( rule ) +{ + if ( !aregametypeeventruleconditionalsmet( rule ) ) + { + return; + } + if ( !isDefined( level.gametypeactions[ rule.action ] ) ) + { +/# + error( "GAMETYPE VARIANTS - unknown action: " + rule.action + "!" ); +#/ + return; + } + thread internalexecuterule( rule ); +} + +internalexecuterule( rule ) +{ +} + +aregametypeeventruleconditionalsmet( rule ) +{ + if ( !isDefined( rule.conditionals ) || rule.conditionals.size == 0 ) + { + return 1; + } + combinedresult = 1; + if ( rule.conditionaleval == "OR" ) + { + combinedresult = 0; + } + i = 0; + while ( i < rule.conditionals.size ) + { + conditionalresult = evaluategametypeeventruleconditional( rule, rule.conditionals[ i ] ); + switch( rule.conditionaleval ) + { + case "AND": + if ( combinedresult ) + { + combinedresult = conditionalresult; + } + break; + case "OR": + if ( !combinedresult ) + { + combinedresult = conditionalresult; + } + break; + } + if ( rule.conditionaleval == "AND" && !combinedresult ) + { + break; + } + else + { + if ( rule.conditionaleval == "OR" && combinedresult ) + { + break; + } + else + { + i++; + } + } + } + return combinedresult; +} + +evaluategametypeeventruleconditional( rule, conditional ) +{ + if ( isDefined( conditional.lhs ) || !isDefined( conditional.operand ) && !isDefined( conditional.rhs ) ) + { + return 0; + } + if ( !isDefined( level.conditionallefthandside[ conditional.lhs ] ) ) + { + return 0; + } + lhsvalue = [[ level.conditionallefthandside[ conditional.lhs ] ]]( rule ); + if ( !isDefined( lhsvalue ) || !isDefined( level.conditionals[ conditional.operand ] ) ) + { + return 0; + } + return [[ level.conditionals[ conditional.operand ] ]]( lhsvalue, conditional.rhs ); +} + +getplayersonteam( players, team ) +{ + playersonteam = []; + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( player.pers[ "team" ] == team ) + { + playersonteam[ playersonteam.size ] = player; + } + i++; + } + return playersonteam; +} + +gettargetsforgametypeeventrule( rule ) +{ + targets = []; + if ( !isDefined( rule.targetname ) ) + { + return targets; + } + if ( isDefined( rule.target[ rule.targetname ] ) ) + { + targets[ targets.size ] = rule.target[ rule.targetname ]; + } + else + { + if ( isDefined( level.targets[ rule.targetname ] ) ) + { + targets = [[ level.targets[ rule.targetname ] ]]( rule ); + } + } + return targets; +} + +doesrulehavevalidparam( rule ) +{ + if ( isDefined( rule.params ) && isarray( rule.params ) ) + { + return rule.params.size > 0; + } +} + +sortplayersbylivesdescending( players ) +{ + if ( !isDefined( players ) ) + { + return undefined; + } + swapped = 1; + n = players.size; + while ( swapped ) + { + swapped = 0; + i = 0; + while ( i < ( n - 1 ) ) + { + if ( players[ i ].pers[ "lives" ] < players[ i + 1 ].pers[ "lives" ] ) + { + temp = players[ i ]; + players[ i ] = players[ i + 1 ]; + players[ i + 1 ] = temp; + swapped = 1; + } + i++; + } + n--; + + } + return players; +} + +giveammo( players, amount ) +{ + i = 0; + while ( i < players.size ) + { + wait 0,5; + player = players[ i ]; + currentweapon = player getcurrentweapon(); + clipammo = player getweaponammoclip( currentweapon ); + player setweaponammoclip( currentweapon, clipammo + amount ); + i++; + } +} + +dogiveammo( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + giveammo( targets, rule.params[ 0 ] ); +} + +doremoveammo( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + giveammo( targets, 0 - rule.params[ 0 ] ); +} + +doplaysound( rule ) +{ + if ( doesrulehavevalidparam( rule ) ) + { + playsoundonplayers( rule.params[ 0 ] ); + } +} + +doenableuav( rule ) +{ + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + targets[ targetindex ].pers[ "hasRadar" ] = 1; + targets[ targetindex ].hasspyplane = 1; + targetindex++; + } +} + +givescore( players, amount ) +{ + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + score = maps/mp/gametypes_zm/_globallogic_score::_getplayerscore( player ); + maps/mp/gametypes_zm/_globallogic_score::_setplayerscore( player, score + amount ); + i++; + } +} + +dogivescore( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + givescore( targets, rule.params[ 0 ] ); +} + +doremovescore( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + givescore( targets, 0 - rule.params[ 0 ] ); +} + +dosetheader( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + target = targets[ targetindex ]; + displaytextonhudelem( target, target.customgametypeheader, rule.params[ 0 ], rule.params[ 1 ], "gv_header", rule.params[ 2 ] ); + targetindex++; + } +} + +dosetsubheader( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + target = targets[ targetindex ]; + displaytextonhudelem( target, target.customgametypesubheader, rule.params[ 0 ], rule.params[ 1 ], "gv_subheader", rule.params[ 2 ] ); + targetindex++; + } +} + +displaytextonhudelem( target, texthudelem, text, secondstodisplay, notifyname, valueparam ) +{ + texthudelem.alpha = 1; + if ( isDefined( valueparam ) ) + { + texthudelem settext( text, valueparam ); + } + else + { + texthudelem settext( text ); + } + if ( !isDefined( secondstodisplay ) || secondstodisplay <= 0 ) + { + target.doingnotify = 0; + target notify( notifyname ); + return; + } + target thread fadecustomgametypehudelem( texthudelem, secondstodisplay, notifyname ); +} + +fadecustomgametypehudelem( hudelem, seconds, notifyname ) +{ + self endon( "disconnect" ); + self notify( notifyname ); + self endon( notifyname ); + if ( seconds <= 0 ) + { + return; + } + self.doingnotify = 1; + wait seconds; + while ( hudelem.alpha > 0 ) + { + hudelem.alpha -= 0,05; + if ( hudelem.alpha < 0 ) + { + hudelem.alpha = 0; + } + wait 0,05; + } + self.doingnotify = 0; +} + +dodisplaymessage( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + thread announcemessage( targets[ targetindex ], rule.params[ 0 ], 2 ); + targetindex++; + } +} + +announcemessage( target, messagetext, time ) +{ + target endon( "disconnect" ); + clientannouncement( target, messagetext, int( time * 1000 ) ); + if ( time == 0 ) + { + time = getDvarFloat( #"E8C4FC20" ); + } + target.doingnotify = 1; + wait time; + target.doingnotify = 0; +} + +givehealth( players, amount ) +{ + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + player.health += amount; + i++; + } +} + +dogivehealth( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + givehealth( gettargetsforgametypeeventrule( rule ), rule.params[ 0 ] ); +} + +doremovehealth( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + givehealth( gettargetsforgametypeeventrule( rule ), 0 - rule.params[ 0 ] ); +} + +dosethealthregen( rule ) +{ + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + player = targets[ targetindex ]; + player.regenrate = rule.params[ 0 ]; + targetindex++; + } +} + +dochangeclass( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } +} + +dochangeteam( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + team = rule.params[ 0 ]; + teamkeys = getarraykeys( level.teams ); + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + target = targets[ targetindex ]; + if ( target.pers[ "team" ] == team ) + { + targetindex++; + continue; + } + else + { + while ( team == "toggle" ) + { + team = teamkeys[ randomint( teamkeys.size ) ]; + teamindex = 0; + while ( teamindex < teamkeys.size ) + { + if ( target.pers[ "team" ] == teamkeys[ teamindex ] ) + { + team = teamkeys[ ( teamindex + 1 ) % teamkeys.size ]; + break; + } + else + { + teamindex++; + } + } + } + target.pers[ "team" ] = team; + target.team = team; + if ( level.teambased ) + { + target.sessionteam = team; + } + else + { + target.sessionteam = "none"; + } + target notify( "joined_team" ); + level notify( "joined_team" ); + } + targetindex++; + } +} + +displayperk( player, imagename ) +{ + index = 0; + if ( isDefined( player.perkicon ) ) + { + index = -1; + i = 0; + while ( i < player.perkicon.size ) + { + if ( player.perkicon[ i ].alpha == 0 ) + { + index = i; + break; + } + else + { + i++; + } + } + if ( index == -1 ) + { + return; + } + } + player maps/mp/gametypes_zm/_hud_util::showperk( index, imagename, 10 ); + player thread maps/mp/gametypes_zm/_globallogic_ui::hideloadoutaftertime( 3 ); + player thread maps/mp/gametypes_zm/_globallogic_ui::hideloadoutondeath(); +} + +setorunsetperk( players, perks, shouldset ) +{ + if ( level.perksenabled == 0 ) + { + return; + } + if ( perks.size < 2 ) + { + return; + } + hasperkalready = 0; + imagename = perks[ perks.size - 1 ]; + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + perkindex = 0; + while ( perkindex < ( perks.size - 1 ) ) + { + perk = perks[ perkindex ]; + if ( player hasperk( perk ) ) + { + hasperkalready = 1; + } + if ( shouldset ) + { + player setperk( perk ); + perkindex++; + continue; + } + else + { + player unsetperk( perk ); + } + perkindex++; + } + if ( shouldset && !hasperkalready && getDvarInt( "scr_showperksonspawn" ) == 1 ) + { + displayperk( player, imagename ); + } + i++; + } +} + +dogiveperk( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + setorunsetperk( gettargetsforgametypeeventrule( rule ), rule.params, 1 ); +} + +doremoveperk( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + setorunsetperk( gettargetsforgametypeeventrule( rule ), rule.params, 0 ); +} + +giveorremovekillstreak( rule, shouldgive ) +{ +} + +dogivekillstreak( rule ) +{ + giveorremovekillstreak( rule, 1 ); +} + +doremovekillstreak( rule ) +{ + giveorremovekillstreak( rule, 0 ); +} + +givelives( players, amount ) +{ + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + player.pers[ "lives" ] += amount; + if ( player.pers[ "lives" ] < 0 ) + { + player.pers[ "lives" ] = 0; + } + i++; + } +} + +dogivelives( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + givelives( gettargetsforgametypeeventrule( rule ), rule.params[ 0 ] ); +} + +doremovelives( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + givelives( gettargetsforgametypeeventrule( rule ), 0 - rule.params[ 0 ] ); +} + +giveorremoveinvuln( players, shouldgiveinvuln ) +{ + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + i++; + } +} + +dogiveinvuln( rule ) +{ + giveorremoveinvuln( gettargetsforgametypeeventrule( rule ), 1 ); +} + +doremoveinvuln( rule ) +{ + giveorremoveinvuln( gettargetsforgametypeeventrule( rule ), 0 ); +} + +dosetdamagemodifier( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + players = gettargetsforgametypeeventrule( rule ); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + player.damagemodifier = rule.params[ 0 ]; + i++; + } +} + +doscalemovespeed( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + movespeedscale = rule.params[ 0 ]; + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + target = targets[ targetindex ]; + target.movementspeedmodifier = movespeedscale * target getmovespeedscale(); + if ( target.movementspeedmodifier < 0,1 ) + { + target.movementspeedmodifier = 0,1; + } + else + { + if ( target.movementspeedmodifier > 4 ) + { + target.movementspeedmodifier = 4; + } + } + target setmovespeedscale( target.movementspeedmodifier ); + targetindex++; + } +} + +doshowonradar( rule ) +{ + if ( !doesrulehavevalidparam( rule ) ) + { + return; + } + targets = gettargetsforgametypeeventrule( rule ); + targetindex = 0; + while ( targetindex < targets.size ) + { + if ( rule.params[ 0 ] == "enable" ) + { + targets[ targetindex ] setperk( "specialty_showonradar" ); + targetindex++; + continue; + } + else + { + targets[ targetindex ] unsetperk( "specialty_showonradar" ); + } + targetindex++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_healthoverlay.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_healthoverlay.gsc new file mode 100644 index 0000000..a7d8f4b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_healthoverlay.gsc @@ -0,0 +1,288 @@ +#include maps/mp/gametypes_zm/_globallogic_player; + +init() +{ + precacheshader( "overlay_low_health" ); + level.healthoverlaycutoff = 0,55; + regentime = level.playerhealthregentime; + level.playerhealth_regularregendelay = regentime * 1000; + level.healthregendisabled = level.playerhealth_regularregendelay <= 0; + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + player thread onplayerkilled(); + player thread onjoinedteam(); + player thread onjoinedspectators(); + player thread onplayerdisconnect(); + } +} + +onjoinedteam() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "joined_team" ); + self notify( "end_healthregen" ); + } +} + +onjoinedspectators() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "joined_spectators" ); + self notify( "end_healthregen" ); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread playerhealthregen(); + } +} + +onplayerkilled() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "killed_player" ); + self notify( "end_healthregen" ); + } +} + +onplayerdisconnect() +{ + self waittill( "disconnect" ); + self notify( "end_healthregen" ); +} + +playerhealthregen() +{ + self endon( "end_healthregen" ); + if ( self.health <= 0 ) + { +/# + assert( !isalive( self ) ); +#/ + return; + } + maxhealth = self.health; + oldhealth = maxhealth; + player = self; + health_add = 0; + regenrate = 0,1; + usetrueregen = 0; + veryhurt = 0; + player.breathingstoptime = -10000; + thread playerbreathingsound( maxhealth * 0,35 ); + thread playerheartbeatsound( maxhealth * 0,35 ); + lastsoundtime_recover = 0; + hurttime = 0; + newhealth = 0; + for ( ;; ) + { + wait 0,05; + if ( isDefined( player.regenrate ) ) + { + regenrate = player.regenrate; + usetrueregen = 1; + } + if ( player.health == maxhealth ) + { + veryhurt = 0; + self.atbrinkofdeath = 0; + continue; + } + else if ( player.health <= 0 ) + { + return; + } + if ( isDefined( player.laststand ) && player.laststand ) + { + continue; + } + else + { + wasveryhurt = veryhurt; + ratio = player.health / maxhealth; + if ( ratio <= level.healthoverlaycutoff ) + { + veryhurt = 1; + self.atbrinkofdeath = 1; + if ( !wasveryhurt ) + { + hurttime = getTime(); + } + } + if ( player.health >= oldhealth ) + { + regentime = level.playerhealth_regularregendelay; + if ( player hasperk( "specialty_healthregen" ) ) + { + regentime = int( regentime / getDvarFloat( "perk_healthRegenMultiplier" ) ); + } + if ( ( getTime() - hurttime ) < regentime ) + { + break; + } + else if ( level.healthregendisabled ) + { + break; + } + else if ( ( getTime() - lastsoundtime_recover ) > regentime ) + { + lastsoundtime_recover = getTime(); + self notify( "snd_breathing_better" ); + } + if ( veryhurt ) + { + newhealth = ratio; + veryhurttime = 3000; + if ( player hasperk( "specialty_healthregen" ) ) + { + veryhurttime = int( veryhurttime / getDvarFloat( "perk_healthRegenMultiplier" ) ); + } + if ( getTime() > ( hurttime + veryhurttime ) ) + { + newhealth += regenrate; + } + } + else if ( usetrueregen ) + { + newhealth = ratio + regenrate; + } + else + { + newhealth = 1; + } + if ( newhealth >= 1 ) + { + self maps/mp/gametypes_zm/_globallogic_player::resetattackerlist(); + newhealth = 1; + } + if ( newhealth <= 0 ) + { + return; + } + player setnormalhealth( newhealth ); + change = player.health - oldhealth; + if ( change > 0 ) + { + player decayplayerdamages( change ); + } + oldhealth = player.health; + break; + } + else + { + oldhealth = player.health; + health_add = 0; + hurttime = getTime(); + player.breathingstoptime = hurttime + 6000; + } + } + } +} + +decayplayerdamages( decay ) +{ + if ( !isDefined( self.attackerdamage ) ) + { + return; + } + i = 0; + while ( i < self.attackerdamage.size ) + { + if ( !isDefined( self.attackerdamage[ i ] ) || !isDefined( self.attackerdamage[ i ].damage ) ) + { + i++; + continue; + } + else + { + self.attackerdamage[ i ].damage -= decay; + if ( self.attackerdamage[ i ].damage < 0 ) + { + self.attackerdamage[ i ].damage = 0; + } + } + i++; + } +} + +playerbreathingsound( healthcap ) +{ + self endon( "end_healthregen" ); + wait 2; + player = self; + for ( ;; ) + { + wait 0,2; + if ( player.health <= 0 ) + { + return; + } + if ( player.health >= healthcap ) + { + continue; + } + else if ( level.healthregendisabled && getTime() > player.breathingstoptime ) + { + continue; + } + else + { + player notify( "snd_breathing_hurt" ); + wait 0,784; + wait ( 0,1 + randomfloat( 0,8 ) ); + } + } +} + +playerheartbeatsound( healthcap ) +{ + self endon( "end_healthregen" ); + self.hearbeatwait = 0,2; + wait 2; + player = self; + for ( ;; ) + { + wait 0,2; + if ( player.health <= 0 ) + { + return; + } + if ( player.health >= healthcap ) + { + self.hearbeatwait = 0,3; + continue; + } + else if ( level.healthregendisabled && getTime() > player.breathingstoptime ) + { + self.hearbeatwait = 0,3; + continue; + } + else + { + player playlocalsound( "mpl_player_heartbeat" ); + wait self.hearbeatwait; + if ( self.hearbeatwait <= 0,6 ) + { + self.hearbeatwait += 0,1; + } + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_hostmigration.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hostmigration.gsc new file mode 100644 index 0000000..19d1f7f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hostmigration.gsc @@ -0,0 +1,556 @@ +#include maps/mp/zombies/_zm; +#include maps/mp/gametypes_zm/_hud; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/gametypes_zm/_hud_util; +#include common_scripts/utility; +#include maps/mp/_utility; + +debug_script_structs() +{ +/# + if ( isDefined( level.struct ) ) + { + println( "*** Num structs " + level.struct.size ); + println( "" ); + i = 0; + while ( i < level.struct.size ) + { + struct = level.struct[ i ]; + if ( isDefined( struct.targetname ) ) + { + println( "---" + i + " : " + struct.targetname ); + i++; + continue; + } + else + { + println( "---" + i + " : " + "NONE" ); + } + i++; + } + } + else println( "*** No structs defined." ); +#/ +} + +updatetimerpausedness() +{ + shouldbestopped = isDefined( level.hostmigrationtimer ); + if ( !level.timerstopped && shouldbestopped ) + { + level.timerstopped = 1; + level.timerpausetime = getTime(); + } + else + { + if ( level.timerstopped && !shouldbestopped ) + { + level.timerstopped = 0; + level.discardtime += getTime() - level.timerpausetime; + } + } +} + +callback_hostmigrationsave() +{ +} + +callback_prehostmigrationsave() +{ + undo_link_changes(); + disablezombies( 1 ); + if ( is_true( level._hm_should_pause_spawning ) ) + { + flag_set( "spawn_zombies" ); + } + i = 0; + while ( i < level.players.size ) + { + level.players[ i ] enableinvulnerability(); + i++; + } +} + +pausetimer() +{ + level.migrationtimerpausetime = getTime(); +} + +resumetimer() +{ + level.discardtime += getTime() - level.migrationtimerpausetime; +} + +locktimer() +{ + level endon( "host_migration_begin" ); + level endon( "host_migration_end" ); + for ( ;; ) + { + currtime = getTime(); + wait 0,05; + if ( !level.timerstopped && isDefined( level.discardtime ) ) + { + level.discardtime += getTime() - currtime; + } + } +} + +callback_hostmigration() +{ + redo_link_changes(); + setslowmotion( 1, 1, 0 ); + makedvarserverinfo( "ui_guncycle", 0 ); + level.hostmigrationreturnedplayercount = 0; + if ( level.gameended ) + { +/# + println( "Migration starting at time " + getTime() + ", but game has ended, so no countdown." ); +#/ + return; + } + sethostmigrationstatus( 1 ); + level notify( "host_migration_begin" ); + i = 0; + while ( i < level.players.size ) + { + if ( isDefined( level.hostmigration_link_entity_callback ) ) + { + if ( !isDefined( level.players[ i ]._host_migration_link_entity ) ) + { + level.players[ i ]._host_migration_link_entity = level.players[ i ] [[ level.hostmigration_link_entity_callback ]](); + } + } + level.players[ i ] thread hostmigrationtimerthink(); + i++; + } + while ( isDefined( level.hostmigration_ai_link_entity_callback ) ) + { + zombies = getaiarray( level.zombie_team ); + while ( isDefined( zombies ) && zombies.size > 0 ) + { + _a133 = zombies; + _k133 = getFirstArrayKey( _a133 ); + while ( isDefined( _k133 ) ) + { + zombie = _a133[ _k133 ]; + if ( !isDefined( zombie._host_migration_link_entity ) ) + { + zombie._host_migration_link_entity = zombie [[ level.hostmigration_ai_link_entity_callback ]](); + } + _k133 = getNextArrayKey( _a133, _k133 ); + } + } + } + if ( level.inprematchperiod ) + { + level waittill( "prematch_over" ); + } +/# + println( "Migration starting at time " + getTime() ); +#/ + level.hostmigrationtimer = 1; + thread locktimer(); + zombies = getaiarray( level.zombie_team ); + while ( isDefined( zombies ) && zombies.size > 0 ) + { + _a156 = zombies; + _k156 = getFirstArrayKey( _a156 ); + while ( isDefined( _k156 ) ) + { + zombie = _a156[ _k156 ]; + if ( isDefined( zombie._host_migration_link_entity ) ) + { + ent = spawn( "script_origin", zombie.origin ); + ent.angles = zombie.angles; + zombie linkto( ent ); + ent linkto( zombie._host_migration_link_entity, "tag_origin", zombie._host_migration_link_entity worldtolocalcoords( ent.origin ), ent.angles + zombie._host_migration_link_entity.angles ); + zombie._host_migration_link_helper = ent; + zombie linkto( zombie._host_migration_link_helper ); + } + _k156 = getNextArrayKey( _a156, _k156 ); + } + } + level endon( "host_migration_begin" ); + level._hm_should_pause_spawning = flag( "spawn_zombies" ); + if ( level._hm_should_pause_spawning ) + { + flag_clear( "spawn_zombies" ); + } + hostmigrationwait(); + _a185 = level.players; + _k185 = getFirstArrayKey( _a185 ); + while ( isDefined( _k185 ) ) + { + player = _a185[ _k185 ]; + player thread post_migration_become_vulnerable(); + _k185 = getNextArrayKey( _a185, _k185 ); + } + zombies = getaiarray( level.zombie_team ); + while ( isDefined( zombies ) && zombies.size > 0 ) + { + _a193 = zombies; + _k193 = getFirstArrayKey( _a193 ); + while ( isDefined( _k193 ) ) + { + zombie = _a193[ _k193 ]; + if ( isDefined( zombie._host_migration_link_entity ) ) + { + zombie unlink(); + zombie._host_migration_link_helper delete(); + zombie._host_migration_link_helper = undefined; + zombie._host_migration_link_entity = undefined; + } + _k193 = getNextArrayKey( _a193, _k193 ); + } + } + enablezombies( 1 ); + if ( level._hm_should_pause_spawning ) + { + flag_set( "spawn_zombies" ); + } + level.hostmigrationtimer = undefined; + level._hm_should_pause_spawning = undefined; + sethostmigrationstatus( 0 ); +/# + println( "Migration finished at time " + getTime() ); +#/ + level notify( "host_migration_end" ); +} + +post_migration_become_vulnerable() +{ + self endon( "disconnect" ); + wait 3; + self disableinvulnerability(); +} + +matchstarttimerconsole_internal( counttime, matchstarttimer ) +{ + waittillframeend; + visionsetnaked( "mpIntro", 0 ); + level endon( "match_start_timer_beginning" ); + while ( counttime > 0 && !level.gameended ) + { + matchstarttimer thread maps/mp/gametypes_zm/_hud::fontpulse( level ); + wait ( matchstarttimer.inframes * 0,05 ); + matchstarttimer setvalue( counttime ); + if ( counttime == 2 ) + { + visionsetnaked( getDvar( "mapname" ), 3 ); + } + counttime--; + + wait ( 1 - ( matchstarttimer.inframes * 0,05 ) ); + } +} + +matchstarttimerconsole( type, duration ) +{ + level notify( "match_start_timer_beginning" ); + wait 0,05; + matchstarttext = createserverfontstring( "objective", 1,5 ); + matchstarttext setpoint( "CENTER", "CENTER", 0, -40 ); + matchstarttext.sort = 1001; + matchstarttext settext( game[ "strings" ][ "waiting_for_teams" ] ); + matchstarttext.foreground = 0; + matchstarttext.hidewheninmenu = 1; + matchstarttext settext( game[ "strings" ][ type ] ); + matchstarttimer = createserverfontstring( "objective", 2,2 ); + matchstarttimer setpoint( "CENTER", "CENTER", 0, 0 ); + matchstarttimer.sort = 1001; + matchstarttimer.color = ( 1, 1, 0 ); + matchstarttimer.foreground = 0; + matchstarttimer.hidewheninmenu = 1; + matchstarttimer maps/mp/gametypes_zm/_hud::fontpulseinit(); + counttime = int( duration ); + if ( counttime >= 2 ) + { + matchstarttimerconsole_internal( counttime, matchstarttimer ); + visionsetnaked( getDvar( "mapname" ), 3 ); + } + else + { + visionsetnaked( "mpIntro", 0 ); + visionsetnaked( getDvar( "mapname" ), 1 ); + } + matchstarttimer destroyelem(); + matchstarttext destroyelem(); +} + +hostmigrationwait() +{ + level endon( "game_ended" ); + if ( level.hostmigrationreturnedplayercount < ( ( level.players.size * 2 ) / 3 ) ) + { + thread matchstarttimerconsole( "waiting_for_teams", 20 ); + hostmigrationwaitforplayers(); + } + thread matchstarttimerconsole( "match_starting_in", 5 ); + wait 5; +} + +hostmigrationwaitforplayers() +{ + level endon( "hostmigration_enoughplayers" ); + wait 15; +} + +hostmigrationtimerthink_internal() +{ + level endon( "host_migration_begin" ); + level endon( "host_migration_end" ); + self.hostmigrationcontrolsfrozen = 0; + while ( !isalive( self ) ) + { + self waittill( "spawned" ); + } + if ( isDefined( self._host_migration_link_entity ) ) + { + ent = spawn( "script_origin", self.origin ); + ent.angles = self.angles; + self linkto( ent ); + ent linkto( self._host_migration_link_entity, "tag_origin", self._host_migration_link_entity worldtolocalcoords( ent.origin ), ent.angles + self._host_migration_link_entity.angles ); + self._host_migration_link_helper = ent; +/# + println( "Linking player to ent " + self._host_migration_link_entity.targetname ); +#/ + } + self.hostmigrationcontrolsfrozen = 1; + self freezecontrols( 1 ); + level waittill( "host_migration_end" ); +} + +hostmigrationtimerthink() +{ + self endon( "disconnect" ); + level endon( "host_migration_begin" ); + hostmigrationtimerthink_internal(); + if ( self.hostmigrationcontrolsfrozen ) + { + self freezecontrols( 0 ); +/# + println( " Host migration unfreeze controls" ); +#/ + } + if ( isDefined( self._host_migration_link_entity ) ) + { + self unlink(); + self._host_migration_link_helper delete(); + self._host_migration_link_helper = undefined; + if ( isDefined( self._host_migration_link_entity._post_host_migration_thread ) ) + { + self thread [[ self._host_migration_link_entity._post_host_migration_thread ]]( self._host_migration_link_entity ); + } + self._host_migration_link_entity = undefined; + } +} + +waittillhostmigrationdone() +{ + if ( !isDefined( level.hostmigrationtimer ) ) + { + return 0; + } + starttime = getTime(); + level waittill( "host_migration_end" ); + return getTime() - starttime; +} + +waittillhostmigrationstarts( duration ) +{ + if ( isDefined( level.hostmigrationtimer ) ) + { + return; + } + level endon( "host_migration_begin" ); + wait duration; +} + +waitlongdurationwithhostmigrationpause( duration ) +{ + if ( duration == 0 ) + { + return; + } +/# + assert( duration > 0 ); +#/ + starttime = getTime(); + endtime = getTime() + ( duration * 1000 ); + while ( getTime() < endtime ) + { + waittillhostmigrationstarts( ( endtime - getTime() ) / 1000 ); + if ( isDefined( level.hostmigrationtimer ) ) + { + timepassed = waittillhostmigrationdone(); + endtime += timepassed; + } + } + if ( getTime() != endtime ) + { +/# + println( "SCRIPT WARNING: gettime() = " + getTime() + " NOT EQUAL TO endtime = " + endtime ); +#/ + } + waittillhostmigrationdone(); + return getTime() - starttime; +} + +waitlongdurationwithgameendtimeupdate( duration ) +{ + if ( duration == 0 ) + { + return; + } +/# + assert( duration > 0 ); +#/ + starttime = getTime(); + endtime = getTime() + ( duration * 1000 ); + while ( getTime() < endtime ) + { + waittillhostmigrationstarts( ( endtime - getTime() ) / 1000 ); + while ( isDefined( level.hostmigrationtimer ) ) + { + endtime += 1000; + setgameendtime( int( endtime ) ); + wait 1; + } + } +/# + if ( getTime() != endtime ) + { + println( "SCRIPT WARNING: gettime() = " + getTime() + " NOT EQUAL TO endtime = " + endtime ); +#/ + } + while ( isDefined( level.hostmigrationtimer ) ) + { + endtime += 1000; + setgameendtime( int( endtime ) ); + wait 1; + } + return getTime() - starttime; +} + +find_alternate_player_place( v_origin, min_radius, max_radius, max_height, ignore_targetted_nodes ) +{ + found_node = undefined; + a_nodes = getnodesinradiussorted( v_origin, max_radius, min_radius, max_height, "pathnodes" ); + while ( isDefined( a_nodes ) && a_nodes.size > 0 ) + { + a_player_volumes = getentarray( "player_volume", "script_noteworthy" ); + index = a_nodes.size - 1; + i = index; + while ( i >= 0 ) + { + n_node = a_nodes[ i ]; + if ( ignore_targetted_nodes == 1 ) + { + if ( isDefined( n_node.target ) ) + { + i--; + continue; + } + } + else + { + if ( !positionwouldtelefrag( n_node.origin ) ) + { + if ( maps/mp/zombies/_zm_utility::check_point_in_enabled_zone( n_node.origin, 1, a_player_volumes ) ) + { + v_start = ( n_node.origin[ 0 ], n_node.origin[ 1 ], n_node.origin[ 2 ] + 30 ); + v_end = ( n_node.origin[ 0 ], n_node.origin[ 1 ], n_node.origin[ 2 ] - 30 ); + trace = bullettrace( v_start, v_end, 0, undefined ); + if ( trace[ "fraction" ] < 1 ) + { + override_abort = 0; + if ( isDefined( level._chugabud_reject_node_override_func ) ) + { + override_abort = [[ level._chugabud_reject_node_override_func ]]( v_origin, n_node ); + } + if ( !override_abort ) + { + found_node = n_node; + break; + } + } + } + } + } + else + { + i--; + + } + } + } + return found_node; +} + +hostmigration_put_player_in_better_place() +{ + spawnpoint = undefined; + spawnpoint = find_alternate_player_place( self.origin, 50, 150, 64, 1 ); + if ( !isDefined( spawnpoint ) ) + { + spawnpoint = find_alternate_player_place( self.origin, 150, 400, 64, 1 ); + } + if ( !isDefined( spawnpoint ) ) + { + spawnpoint = find_alternate_player_place( self.origin, 50, 400, 256, 0 ); + } + if ( !isDefined( spawnpoint ) ) + { + spawnpoint = maps/mp/zombies/_zm::check_for_valid_spawn_near_team( self, 1 ); + } + if ( !isDefined( spawnpoint ) ) + { + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = ( level.scr_zm_ui_gametype + "_" ) + location; + spawnpoints = []; + structs = getstructarray( "initial_spawn", "script_noteworthy" ); + while ( isDefined( structs ) ) + { + _a558 = structs; + _k558 = getFirstArrayKey( _a558 ); + while ( isDefined( _k558 ) ) + { + struct = _a558[ _k558 ]; + while ( isDefined( struct.script_string ) ) + { + tokens = strtok( struct.script_string, " " ); + _a564 = tokens; + _k564 = getFirstArrayKey( _a564 ); + while ( isDefined( _k564 ) ) + { + token = _a564[ _k564 ]; + if ( token == match_string ) + { + spawnpoints[ spawnpoints.size ] = struct; + } + _k564 = getNextArrayKey( _a564, _k564 ); + } + } + _k558 = getNextArrayKey( _a558, _k558 ); + } + } + if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 ) + { + spawnpoints = getstructarray( "initial_spawn_points", "targetname" ); + } +/# + assert( isDefined( spawnpoints ), "Could not find initial spawn points!" ); +#/ + spawnpoint = maps/mp/zombies/_zm::getfreespawnpoint( spawnpoints, self ); + } + if ( isDefined( spawnpoint ) ) + { + self setorigin( spawnpoint.origin ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud.gsc new file mode 100644 index 0000000..776d008 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud.gsc @@ -0,0 +1,163 @@ + +init() +{ + precacheshader( "progress_bar_bg" ); + precacheshader( "progress_bar_fg" ); + precacheshader( "progress_bar_fill" ); + precacheshader( "score_bar_bg" ); + level.uiparent = spawnstruct(); + level.uiparent.horzalign = "left"; + level.uiparent.vertalign = "top"; + level.uiparent.alignx = "left"; + level.uiparent.aligny = "top"; + level.uiparent.x = 0; + level.uiparent.y = 0; + level.uiparent.width = 0; + level.uiparent.height = 0; + level.uiparent.children = []; + level.fontheight = 12; + _a103 = level.teams; + _k103 = getFirstArrayKey( _a103 ); + while ( isDefined( _k103 ) ) + { + team = _a103[ _k103 ]; + level.hud[ team ] = spawnstruct(); + _k103 = getNextArrayKey( _a103, _k103 ); + } + level.primaryprogressbary = -61; + level.primaryprogressbarx = 0; + level.primaryprogressbarheight = 9; + level.primaryprogressbarwidth = 120; + level.primaryprogressbartexty = -75; + level.primaryprogressbartextx = 0; + level.primaryprogressbarfontsize = 1,4; + level.primaryprogressbarx_ss = 20; + level.primaryprogressbartextx_ss = 20; + level.primaryprogressbary_ss = 30; + level.primaryprogressbartexty_ss = 33; + level.primaryprogressbarheight_ss = 2; + level.secondaryprogressbary = -85; + level.secondaryprogressbarx = 0; + level.secondaryprogressbarheight = 9; + level.secondaryprogressbarwidth = 120; + level.secondaryprogressbartexty = -100; + level.secondaryprogressbartextx = 0; + level.secondaryprogressbarfontsize = 1,4; + level.secondaryprogressbarx_ss = 20; + level.secondaryprogressbartextx_ss = 20; + level.secondaryprogressbary_ss = 15; + level.secondaryprogressbartexty_ss = 0; + level.secondaryprogressbarheight_ss = 2; + level.teamprogressbary = 32; + level.teamprogressbarheight = 14; + level.teamprogressbarwidth = 192; + level.teamprogressbartexty = 8; + level.teamprogressbarfontsize = 1,65; + setdvar( "ui_generic_status_bar", 0 ); + level.lowertextyalign = "BOTTOM"; + level.lowertexty = -42; + level.lowertextfontsize = 1,4; + level.lowertextyalign_ss = "CENTER"; + level.lowertexty_ss = 40; + level.lowertextfontsize_ss = 1,4; +} + +fontpulseinit() +{ + self.basefontscale = self.fontscale; + self.maxfontscale = self.fontscale * 2; + self.inframes = 1,5; + self.outframes = 3; +} + +fontpulse( player ) +{ + self notify( "fontPulse" ); + self endon( "fontPulse" ); + self endon( "death" ); + player endon( "disconnect" ); + player endon( "joined_team" ); + player endon( "joined_spectators" ); + if ( self.outframes == 0 ) + { + self.fontscale = 0,01; + } + else + { + self.fontscale = self.fontscale; + } + if ( self.inframes > 0 ) + { + self changefontscaleovertime( self.inframes * 0,05 ); + self.fontscale = self.maxfontscale; + wait ( self.inframes * 0,05 ); + } + else + { + self.fontscale = self.maxfontscale; + self.alpha = 0; + self fadeovertime( self.outframes * 0,05 ); + self.alpha = 1; + } + if ( self.outframes > 0 ) + { + self changefontscaleovertime( self.outframes * 0,05 ); + self.fontscale = self.basefontscale; + } +} + +fadetoblackforxsec( startwait, blackscreenwait, fadeintime, fadeouttime, shadername ) +{ + wait startwait; + if ( !isDefined( self ) ) + { + return; + } + if ( !isDefined( self.blackscreen ) ) + { + self.blackscreen = newclienthudelem( self ); + } + self.blackscreen.x = 0; + self.blackscreen.y = 0; + self.blackscreen.horzalign = "fullscreen"; + self.blackscreen.vertalign = "fullscreen"; + self.blackscreen.foreground = 0; + self.blackscreen.hidewhendead = 0; + self.blackscreen.hidewheninmenu = 1; + self.blackscreen.sort = 50; + if ( isDefined( shadername ) ) + { + self.blackscreen setshader( shadername, 640, 480 ); + } + else + { + self.blackscreen setshader( "black", 640, 480 ); + } + self.blackscreen.alpha = 0; + if ( fadeintime > 0 ) + { + self.blackscreen fadeovertime( fadeintime ); + } + self.blackscreen.alpha = 1; + wait fadeintime; + if ( !isDefined( self.blackscreen ) ) + { + return; + } + wait blackscreenwait; + if ( !isDefined( self.blackscreen ) ) + { + return; + } + if ( fadeouttime > 0 ) + { + self.blackscreen fadeovertime( fadeouttime ); + } + self.blackscreen.alpha = 0; + wait fadeouttime; + if ( isDefined( self.blackscreen ) ) + { + self.blackscreen destroy(); + self.blackscreen = undefined; + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud_message.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud_message.gsc new file mode 100644 index 0000000..2425d13 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud_message.gsc @@ -0,0 +1,1359 @@ +#include maps/mp/_utility; +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/_music; +#include maps/mp/gametypes_zm/_hud_message; +#include maps/mp/gametypes_zm/_hud_util; + +init() +{ + precachestring( &"MENU_POINTS" ); + precachestring( &"MP_FIRSTPLACE_NAME" ); + precachestring( &"MP_SECONDPLACE_NAME" ); + precachestring( &"MP_THIRDPLACE_NAME" ); + precachestring( &"MP_WAGER_PLACE_NAME" ); + precachestring( &"MP_MATCH_BONUS_IS" ); + precachestring( &"MP_CODPOINTS_MATCH_BONUS_IS" ); + precachestring( &"MP_WAGER_WINNINGS_ARE" ); + precachestring( &"MP_WAGER_SIDEBET_WINNINGS_ARE" ); + precachestring( &"MP_WAGER_IN_THE_MONEY" ); + precachestring( &"faction_popup" ); + game[ "strings" ][ "draw" ] = &"MP_DRAW_CAPS"; + game[ "strings" ][ "round_draw" ] = &"MP_ROUND_DRAW_CAPS"; + game[ "strings" ][ "round_win" ] = &"MP_ROUND_WIN_CAPS"; + game[ "strings" ][ "round_loss" ] = &"MP_ROUND_LOSS_CAPS"; + game[ "strings" ][ "victory" ] = &"MP_VICTORY_CAPS"; + game[ "strings" ][ "defeat" ] = &"MP_DEFEAT_CAPS"; + game[ "strings" ][ "game_over" ] = &"MP_GAME_OVER_CAPS"; + game[ "strings" ][ "halftime" ] = &"MP_HALFTIME_CAPS"; + game[ "strings" ][ "overtime" ] = &"MP_OVERTIME_CAPS"; + game[ "strings" ][ "roundend" ] = &"MP_ROUNDEND_CAPS"; + game[ "strings" ][ "intermission" ] = &"MP_INTERMISSION_CAPS"; + game[ "strings" ][ "side_switch" ] = &"MP_SWITCHING_SIDES_CAPS"; + game[ "strings" ][ "match_bonus" ] = &"MP_MATCH_BONUS_IS"; + game[ "strings" ][ "codpoints_match_bonus" ] = &"MP_CODPOINTS_MATCH_BONUS_IS"; + game[ "strings" ][ "wager_winnings" ] = &"MP_WAGER_WINNINGS_ARE"; + game[ "strings" ][ "wager_sidebet_winnings" ] = &"MP_WAGER_SIDEBET_WINNINGS_ARE"; + game[ "strings" ][ "wager_inthemoney" ] = &"MP_WAGER_IN_THE_MONEY_CAPS"; + game[ "strings" ][ "wager_loss" ] = &"MP_WAGER_LOSS_CAPS"; + game[ "strings" ][ "wager_topwinners" ] = &"MP_WAGER_TOPWINNERS"; + game[ "menu_endgameupdate" ] = "endgameupdate"; + precachemenu( game[ "menu_endgameupdate" ] ); + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread hintmessagedeaththink(); + player thread lowermessagethink(); + player thread initnotifymessage(); + player thread initcustomgametypeheader(); + } +} + +initcustomgametypeheader() +{ + font = "default"; + titlesize = 2,5; + self.customgametypeheader = createfontstring( font, titlesize ); + self.customgametypeheader setpoint( "TOP", undefined, 0, 30 ); + self.customgametypeheader.glowalpha = 1; + self.customgametypeheader.hidewheninmenu = 1; + self.customgametypeheader.archived = 0; + self.customgametypeheader.color = ( 1, 1, 0,6 ); + self.customgametypeheader.alpha = 1; + titlesize = 2; + self.customgametypesubheader = createfontstring( font, titlesize ); + self.customgametypesubheader setparent( self.customgametypeheader ); + self.customgametypesubheader setpoint( "TOP", "BOTTOM", 0, 0 ); + self.customgametypesubheader.glowalpha = 1; + self.customgametypesubheader.hidewheninmenu = 1; + self.customgametypesubheader.archived = 0; + self.customgametypesubheader.color = ( 1, 1, 0,6 ); + self.customgametypesubheader.alpha = 1; +} + +hintmessage( hinttext, duration ) +{ + notifydata = spawnstruct(); + notifydata.notifytext = hinttext; + notifydata.duration = duration; + notifymessage( notifydata ); +} + +hintmessageplayers( players, hinttext, duration ) +{ + notifydata = spawnstruct(); + notifydata.notifytext = hinttext; + notifydata.duration = duration; + i = 0; + while ( i < players.size ) + { + players[ i ] notifymessage( notifydata ); + i++; + } +} + +showinitialfactionpopup( team ) +{ + self luinotifyevent( &"faction_popup", 1, game[ "strings" ][ team + "_name" ] ); + maps/mp/gametypes_zm/_hud_message::oldnotifymessage( undefined, undefined, undefined, undefined ); +} + +initnotifymessage() +{ + if ( !sessionmodeiszombiesgame() ) + { + if ( self issplitscreen() ) + { + titlesize = 2; + textsize = 1,4; + iconsize = 24; + font = "extrabig"; + point = "TOP"; + relativepoint = "BOTTOM"; + yoffset = 30; + xoffset = 30; + } + else + { + titlesize = 2,5; + textsize = 1,75; + iconsize = 30; + font = "extrabig"; + point = "TOP"; + relativepoint = "BOTTOM"; + yoffset = 0; + xoffset = 0; + } + } + else if ( self issplitscreen() ) + { + titlesize = 2; + textsize = 1,4; + iconsize = 24; + font = "extrabig"; + point = "TOP"; + relativepoint = "BOTTOM"; + yoffset = 30; + xoffset = 30; + } + else + { + titlesize = 2,5; + textsize = 1,75; + iconsize = 30; + font = "extrabig"; + point = "BOTTOM LEFT"; + relativepoint = "TOP"; + yoffset = 0; + xoffset = 0; + } + self.notifytitle = createfontstring( font, titlesize ); + self.notifytitle setpoint( point, undefined, xoffset, yoffset ); + self.notifytitle.glowalpha = 1; + self.notifytitle.hidewheninmenu = 1; + self.notifytitle.archived = 0; + self.notifytitle.alpha = 0; + self.notifytext = createfontstring( font, textsize ); + self.notifytext setparent( self.notifytitle ); + self.notifytext setpoint( point, relativepoint, 0, 0 ); + self.notifytext.glowalpha = 1; + self.notifytext.hidewheninmenu = 1; + self.notifytext.archived = 0; + self.notifytext.alpha = 0; + self.notifytext2 = createfontstring( font, textsize ); + self.notifytext2 setparent( self.notifytitle ); + self.notifytext2 setpoint( point, relativepoint, 0, 0 ); + self.notifytext2.glowalpha = 1; + self.notifytext2.hidewheninmenu = 1; + self.notifytext2.archived = 0; + self.notifytext2.alpha = 0; + self.notifyicon = createicon( "white", iconsize, iconsize ); + self.notifyicon setparent( self.notifytext2 ); + self.notifyicon setpoint( point, relativepoint, 0, 0 ); + self.notifyicon.hidewheninmenu = 1; + self.notifyicon.archived = 0; + self.notifyicon.alpha = 0; + self.doingnotify = 0; + self.notifyqueue = []; +} + +oldnotifymessage( titletext, notifytext, iconname, glowcolor, sound, duration ) +{ + if ( level.wagermatch && !level.teambased ) + { + return; + } + notifydata = spawnstruct(); + notifydata.titletext = titletext; + notifydata.notifytext = notifytext; + notifydata.iconname = iconname; + notifydata.sound = sound; + notifydata.duration = duration; + self.startmessagenotifyqueue[ self.startmessagenotifyqueue.size ] = notifydata; + self notify( "received award" ); +} + +notifymessage( notifydata ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self.messagenotifyqueue[ self.messagenotifyqueue.size ] = notifydata; + self notify( "received award" ); +} + +shownotifymessage( notifydata, duration ) +{ + self endon( "disconnect" ); + self.doingnotify = 1; + waitrequirevisibility( 0 ); + self notify( "notifyMessageBegin" ); + self thread resetoncancel(); + if ( isDefined( notifydata.sound ) ) + { + self playlocalsound( notifydata.sound ); + } + if ( isDefined( notifydata.musicstate ) ) + { + self maps/mp/_music::setmusicstate( notifydata.music ); + } + if ( isDefined( notifydata.leadersound ) ) + { + self maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( notifydata.leadersound ); + } + if ( isDefined( notifydata.glowcolor ) ) + { + glowcolor = notifydata.glowcolor; + } + else + { + glowcolor = ( 1, 1, 1 ); + } + if ( isDefined( notifydata.color ) ) + { + color = notifydata.color; + } + else + { + color = ( 1, 1, 1 ); + } + anchorelem = self.notifytitle; + if ( isDefined( notifydata.titletext ) ) + { + if ( isDefined( notifydata.titlelabel ) ) + { + self.notifytitle.label = notifydata.titlelabel; + } + else + { + self.notifytitle.label = &""; + } + if ( isDefined( notifydata.titlelabel ) && !isDefined( notifydata.titleisstring ) ) + { + self.notifytitle setvalue( notifydata.titletext ); + } + else + { + self.notifytitle settext( notifydata.titletext ); + } + self.notifytitle setcod7decodefx( 200, int( duration * 1000 ), 600 ); + self.notifytitle.glowcolor = glowcolor; + self.notifytitle.color = color; + self.notifytitle.alpha = 1; + } + if ( isDefined( notifydata.notifytext ) ) + { + if ( isDefined( notifydata.textlabel ) ) + { + self.notifytext.label = notifydata.textlabel; + } + else + { + self.notifytext.label = &""; + } + if ( isDefined( notifydata.textlabel ) && !isDefined( notifydata.textisstring ) ) + { + self.notifytext setvalue( notifydata.notifytext ); + } + else + { + self.notifytext settext( notifydata.notifytext ); + } + self.notifytext setcod7decodefx( 100, int( duration * 1000 ), 600 ); + self.notifytext.glowcolor = glowcolor; + self.notifytext.color = color; + self.notifytext.alpha = 1; + anchorelem = self.notifytext; + } + if ( isDefined( notifydata.notifytext2 ) ) + { + if ( self issplitscreen() ) + { + if ( isDefined( notifydata.text2label ) ) + { + self iprintlnbold( notifydata.text2label, notifydata.notifytext2 ); + } + else + { + self iprintlnbold( notifydata.notifytext2 ); + } + } + else + { + self.notifytext2 setparent( anchorelem ); + if ( isDefined( notifydata.text2label ) ) + { + self.notifytext2.label = notifydata.text2label; + } + else + { + self.notifytext2.label = &""; + } + self.notifytext2 settext( notifydata.notifytext2 ); + self.notifytext2 setpulsefx( 100, int( duration * 1000 ), 1000 ); + self.notifytext2.glowcolor = glowcolor; + self.notifytext2.color = color; + self.notifytext2.alpha = 1; + anchorelem = self.notifytext2; + } + } + if ( isDefined( notifydata.iconname ) ) + { + iconwidth = 60; + iconheight = 60; + if ( isDefined( notifydata.iconwidth ) ) + { + iconwidth = notifydata.iconwidth; + } + if ( isDefined( notifydata.iconheight ) ) + { + iconheight = notifydata.iconheight; + } + self.notifyicon setparent( anchorelem ); + self.notifyicon setshader( notifydata.iconname, iconwidth, iconheight ); + self.notifyicon.alpha = 0; + self.notifyicon fadeovertime( 1 ); + self.notifyicon.alpha = 1; + waitrequirevisibility( duration ); + self.notifyicon fadeovertime( 0,75 ); + self.notifyicon.alpha = 0; + } + else + { + waitrequirevisibility( duration ); + } + self notify( "notifyMessageDone" ); + self.doingnotify = 0; +} + +waitrequirevisibility( waittime ) +{ + interval = 0,05; + while ( !self canreadtext() ) + { + wait interval; + } + while ( waittime > 0 ) + { + wait interval; + if ( self canreadtext() ) + { + waittime -= interval; + } + } +} + +canreadtext() +{ + return 1; +} + +resetondeath() +{ + self endon( "notifyMessageDone" ); + self endon( "disconnect" ); + level endon( "game_ended" ); + self waittill( "death" ); + resetnotify(); +} + +resetoncancel() +{ + self notify( "resetOnCancel" ); + self endon( "resetOnCancel" ); + self endon( "notifyMessageDone" ); + self endon( "disconnect" ); + level waittill( "cancel_notify" ); + resetnotify(); +} + +resetnotify() +{ + self.notifytitle.alpha = 0; + self.notifytext.alpha = 0; + self.notifyicon.alpha = 0; + self.doingnotify = 0; +} + +hintmessagedeaththink() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "death" ); + if ( isDefined( self.hintmessage ) ) + { + self.hintmessage destroyelem(); + } + } +} + +lowermessagethink() +{ + self endon( "disconnect" ); + self.lowermessage = createfontstring( "default", level.lowertextfontsize ); + self.lowermessage setpoint( "CENTER", level.lowertextyalign, 0, level.lowertexty ); + self.lowermessage settext( "" ); + self.lowermessage.archived = 0; + timerfontsize = 1,5; + if ( self issplitscreen() ) + { + timerfontsize = 1,4; + } + self.lowertimer = createfontstring( "default", timerfontsize ); + self.lowertimer setparent( self.lowermessage ); + self.lowertimer setpoint( "TOP", "BOTTOM", 0, 0 ); + self.lowertimer settext( "" ); + self.lowertimer.archived = 0; +} + +setmatchscorehudelemforteam( team ) +{ + if ( level.roundscorecarry ) + { + self setvalue( getteamscore( team ) ); + } + else + { + self setvalue( getroundswon( team ) ); + } +} + +teamoutcomenotify( winner, isround, endreasontext ) +{ + self endon( "disconnect" ); + self notify( "reset_outcome" ); + team = self.pers[ "team" ]; + while ( isDefined( team ) && team == "spectator" ) + { + i = 0; + while ( i < level.players.size ) + { + if ( self.currentspectatingclient == level.players[ i ].clientid ) + { + team = level.players[ i ].pers[ "team" ]; + break; + } + else + { + i++; + } + } + } + if ( !isDefined( team ) || !isDefined( level.teams[ team ] ) ) + { + team = "allies"; + } + while ( self.doingnotify ) + { + wait 0,05; + } + self endon( "reset_outcome" ); + headerfont = "extrabig"; + font = "default"; + if ( self issplitscreen() ) + { + titlesize = 2; + textsize = 1,5; + iconsize = 30; + spacing = 10; + } + else + { + titlesize = 3; + textsize = 2; + iconsize = 70; + spacing = 25; + } + duration = 60000; + outcometitle = createfontstring( headerfont, titlesize ); + outcometitle setpoint( "TOP", undefined, 0, 30 ); + outcometitle.glowalpha = 1; + outcometitle.hidewheninmenu = 0; + outcometitle.archived = 0; + outcometext = createfontstring( font, 2 ); + outcometext setparent( outcometitle ); + outcometext setpoint( "TOP", "BOTTOM", 0, 0 ); + outcometext.glowalpha = 1; + outcometext.hidewheninmenu = 0; + outcometext.archived = 0; + if ( winner == "halftime" ) + { + outcometitle settext( game[ "strings" ][ "halftime" ] ); + outcometitle.color = ( 1, 1, 1 ); + winner = "allies"; + } + else if ( winner == "intermission" ) + { + outcometitle settext( game[ "strings" ][ "intermission" ] ); + outcometitle.color = ( 1, 1, 1 ); + winner = "allies"; + } + else if ( winner == "roundend" ) + { + outcometitle settext( game[ "strings" ][ "roundend" ] ); + outcometitle.color = ( 1, 1, 1 ); + winner = "allies"; + } + else if ( winner == "overtime" ) + { + outcometitle settext( game[ "strings" ][ "overtime" ] ); + outcometitle.color = ( 1, 1, 1 ); + winner = "allies"; + } + else if ( winner == "tie" ) + { + if ( isround ) + { + outcometitle settext( game[ "strings" ][ "round_draw" ] ); + } + else + { + outcometitle settext( game[ "strings" ][ "draw" ] ); + } + outcometitle.color = ( 0,29, 0,61, 0,7 ); + winner = "allies"; + } + else if ( isDefined( self.pers[ "team" ] ) && winner == team ) + { + if ( isround ) + { + outcometitle settext( game[ "strings" ][ "round_win" ] ); + } + else + { + outcometitle settext( game[ "strings" ][ "victory" ] ); + } + outcometitle.color = ( 0,42, 0,68, 0,46 ); + } + else + { + if ( isround ) + { + outcometitle settext( game[ "strings" ][ "round_loss" ] ); + } + else + { + outcometitle settext( game[ "strings" ][ "defeat" ] ); + } + outcometitle.color = ( 0,73, 0,29, 0,19 ); + } + outcometext settext( endreasontext ); + outcometitle setcod7decodefx( 200, duration, 600 ); + outcometext setpulsefx( 100, duration, 1000 ); + iconspacing = 100; + currentx = ( ( level.teamcount - 1 ) * -1 * iconspacing ) / 2; + teamicons = []; + teamicons[ team ] = createicon( game[ "icons" ][ team ], iconsize, iconsize ); + teamicons[ team ] setparent( outcometext ); + teamicons[ team ] setpoint( "TOP", "BOTTOM", currentx, spacing ); + teamicons[ team ].hidewheninmenu = 0; + teamicons[ team ].archived = 0; + teamicons[ team ].alpha = 0; + teamicons[ team ] fadeovertime( 0,5 ); + teamicons[ team ].alpha = 1; + currentx += iconspacing; + _a607 = level.teams; + _k607 = getFirstArrayKey( _a607 ); + while ( isDefined( _k607 ) ) + { + enemyteam = _a607[ _k607 ]; + if ( team == enemyteam ) + { + } + else + { + teamicons[ enemyteam ] = createicon( game[ "icons" ][ enemyteam ], iconsize, iconsize ); + teamicons[ enemyteam ] setparent( outcometext ); + teamicons[ enemyteam ] setpoint( "TOP", "BOTTOM", currentx, spacing ); + teamicons[ enemyteam ].hidewheninmenu = 0; + teamicons[ enemyteam ].archived = 0; + teamicons[ enemyteam ].alpha = 0; + teamicons[ enemyteam ] fadeovertime( 0,5 ); + teamicons[ enemyteam ].alpha = 1; + currentx += iconspacing; + } + _k607 = getNextArrayKey( _a607, _k607 ); + } + teamscores = []; + teamscores[ team ] = createfontstring( font, titlesize ); + teamscores[ team ] setparent( teamicons[ team ] ); + teamscores[ team ] setpoint( "TOP", "BOTTOM", 0, spacing ); + teamscores[ team ].glowalpha = 1; + if ( isround ) + { + teamscores[ team ] setvalue( getteamscore( team ) ); + } + else + { + teamscores[ team ] [[ level.setmatchscorehudelemforteam ]]( team ); + } + teamscores[ team ].hidewheninmenu = 0; + teamscores[ team ].archived = 0; + teamscores[ team ] setpulsefx( 100, duration, 1000 ); + _a641 = level.teams; + _k641 = getFirstArrayKey( _a641 ); + while ( isDefined( _k641 ) ) + { + enemyteam = _a641[ _k641 ]; + if ( team == enemyteam ) + { + } + else + { + teamscores[ enemyteam ] = createfontstring( headerfont, titlesize ); + teamscores[ enemyteam ] setparent( teamicons[ enemyteam ] ); + teamscores[ enemyteam ] setpoint( "TOP", "BOTTOM", 0, spacing ); + teamscores[ enemyteam ].glowalpha = 1; + if ( isround ) + { + teamscores[ enemyteam ] setvalue( getteamscore( enemyteam ) ); + } + else + { + teamscores[ enemyteam ] [[ level.setmatchscorehudelemforteam ]]( enemyteam ); + } + teamscores[ enemyteam ].hidewheninmenu = 0; + teamscores[ enemyteam ].archived = 0; + teamscores[ enemyteam ] setpulsefx( 100, duration, 1000 ); + } + _k641 = getNextArrayKey( _a641, _k641 ); + } + font = "objective"; + matchbonus = undefined; + if ( isDefined( self.matchbonus ) ) + { + matchbonus = createfontstring( font, 2 ); + matchbonus setparent( outcometext ); + matchbonus setpoint( "TOP", "BOTTOM", 0, iconsize + ( spacing * 3 ) + teamscores[ team ].height ); + matchbonus.glowalpha = 1; + matchbonus.hidewheninmenu = 0; + matchbonus.archived = 0; + matchbonus.label = game[ "strings" ][ "match_bonus" ]; + matchbonus setvalue( self.matchbonus ); + } + self thread resetoutcomenotify( teamicons, teamscores, outcometitle, outcometext ); +} + +teamoutcomenotifyzombie( winner, isround, endreasontext ) +{ + self endon( "disconnect" ); + self notify( "reset_outcome" ); + team = self.pers[ "team" ]; + while ( isDefined( team ) && team == "spectator" ) + { + i = 0; + while ( i < level.players.size ) + { + if ( self.currentspectatingclient == level.players[ i ].clientid ) + { + team = level.players[ i ].pers[ "team" ]; + break; + } + else + { + i++; + } + } + } + if ( !isDefined( team ) || !isDefined( level.teams[ team ] ) ) + { + team = "allies"; + } + while ( self.doingnotify ) + { + wait 0,05; + } + self endon( "reset_outcome" ); + if ( self issplitscreen() ) + { + titlesize = 2; + spacing = 10; + font = "default"; + } + else + { + titlesize = 3; + spacing = 50; + font = "objective"; + } + outcometitle = createfontstring( font, titlesize ); + outcometitle setpoint( "TOP", undefined, 0, spacing ); + outcometitle.glowalpha = 1; + outcometitle.hidewheninmenu = 0; + outcometitle.archived = 0; + outcometitle settext( endreasontext ); + outcometitle setpulsefx( 100, 60000, 1000 ); + self thread resetoutcomenotify( undefined, undefined, outcometitle ); +} + +outcomenotify( winner, isroundend, endreasontext ) +{ + self endon( "disconnect" ); + self notify( "reset_outcome" ); + while ( self.doingnotify ) + { + wait 0,05; + } + self endon( "reset_outcome" ); + headerfont = "extrabig"; + font = "default"; + if ( self issplitscreen() ) + { + titlesize = 2; + winnersize = 1,5; + othersize = 1,5; + iconsize = 30; + spacing = 10; + } + else + { + titlesize = 3; + winnersize = 2; + othersize = 1,5; + iconsize = 30; + spacing = 20; + } + duration = 60000; + players = level.placement[ "all" ]; + outcometitle = createfontstring( headerfont, titlesize ); + outcometitle setpoint( "TOP", undefined, 0, spacing ); + if ( !maps/mp/_utility::isoneround() && !isroundend ) + { + outcometitle settext( game[ "strings" ][ "game_over" ] ); + } + else + { + if ( isDefined( players[ 1 ] ) && players[ 0 ].score == players[ 1 ].score && players[ 0 ].deaths == players[ 1 ].deaths || self == players[ 0 ] && self == players[ 1 ] ) + { + outcometitle settext( game[ "strings" ][ "tie" ] ); + } + else + { + if ( isDefined( players[ 2 ] ) && players[ 0 ].score == players[ 2 ].score && players[ 0 ].deaths == players[ 2 ].deaths && self == players[ 2 ] ) + { + outcometitle settext( game[ "strings" ][ "tie" ] ); + } + else + { + if ( isDefined( players[ 0 ] ) && self == players[ 0 ] ) + { + outcometitle settext( game[ "strings" ][ "victory" ] ); + outcometitle.color = ( 0,42, 0,68, 0,46 ); + } + else + { + outcometitle settext( game[ "strings" ][ "defeat" ] ); + outcometitle.color = ( 0,73, 0,29, 0,19 ); + } + } + } + } + outcometitle.glowalpha = 1; + outcometitle.hidewheninmenu = 0; + outcometitle.archived = 0; + outcometitle setcod7decodefx( 200, duration, 600 ); + outcometext = createfontstring( font, 2 ); + outcometext setparent( outcometitle ); + outcometext setpoint( "TOP", "BOTTOM", 0, 0 ); + outcometext.glowalpha = 1; + outcometext.hidewheninmenu = 0; + outcometext.archived = 0; + outcometext settext( endreasontext ); + firsttitle = createfontstring( font, winnersize ); + firsttitle setparent( outcometext ); + firsttitle setpoint( "TOP", "BOTTOM", 0, spacing ); + firsttitle.glowalpha = 1; + firsttitle.hidewheninmenu = 0; + firsttitle.archived = 0; + if ( isDefined( players[ 0 ] ) ) + { + firsttitle.label = &"MP_FIRSTPLACE_NAME"; + firsttitle setplayernamestring( players[ 0 ] ); + firsttitle setcod7decodefx( 175, duration, 600 ); + } + secondtitle = createfontstring( font, othersize ); + secondtitle setparent( firsttitle ); + secondtitle setpoint( "TOP", "BOTTOM", 0, spacing ); + secondtitle.glowalpha = 1; + secondtitle.hidewheninmenu = 0; + secondtitle.archived = 0; + if ( isDefined( players[ 1 ] ) ) + { + secondtitle.label = &"MP_SECONDPLACE_NAME"; + secondtitle setplayernamestring( players[ 1 ] ); + secondtitle setcod7decodefx( 175, duration, 600 ); + } + thirdtitle = createfontstring( font, othersize ); + thirdtitle setparent( secondtitle ); + thirdtitle setpoint( "TOP", "BOTTOM", 0, spacing ); + thirdtitle setparent( secondtitle ); + thirdtitle.glowalpha = 1; + thirdtitle.hidewheninmenu = 0; + thirdtitle.archived = 0; + if ( isDefined( players[ 2 ] ) ) + { + thirdtitle.label = &"MP_THIRDPLACE_NAME"; + thirdtitle setplayernamestring( players[ 2 ] ); + thirdtitle setcod7decodefx( 175, duration, 600 ); + } + matchbonus = createfontstring( font, 2 ); + matchbonus setparent( thirdtitle ); + matchbonus setpoint( "TOP", "BOTTOM", 0, spacing ); + matchbonus.glowalpha = 1; + matchbonus.hidewheninmenu = 0; + matchbonus.archived = 0; + if ( isDefined( self.matchbonus ) ) + { + matchbonus.label = game[ "strings" ][ "match_bonus" ]; + matchbonus setvalue( self.matchbonus ); + } + self thread updateoutcome( firsttitle, secondtitle, thirdtitle ); + self thread resetoutcomenotify( undefined, undefined, outcometitle, outcometext, firsttitle, secondtitle, thirdtitle, matchbonus ); +} + +wageroutcomenotify( winner, endreasontext ) +{ + self endon( "disconnect" ); + self notify( "reset_outcome" ); + while ( self.doingnotify ) + { + wait 0,05; + } + setmatchflag( "enable_popups", 0 ); + self endon( "reset_outcome" ); + headerfont = "extrabig"; + font = "objective"; + if ( self issplitscreen() ) + { + titlesize = 2; + winnersize = 1,5; + othersize = 1,5; + iconsize = 30; + spacing = 2; + } + else + { + titlesize = 3; + winnersize = 2; + othersize = 1,5; + iconsize = 30; + spacing = 20; + } + halftime = 0; + if ( isDefined( level.sidebet ) && level.sidebet ) + { + halftime = 1; + } + duration = 60000; + players = level.placement[ "all" ]; + outcometitle = createfontstring( headerfont, titlesize ); + outcometitle setpoint( "TOP", undefined, 0, spacing ); + if ( halftime ) + { + outcometitle settext( game[ "strings" ][ "intermission" ] ); + outcometitle.color = ( 1, 1, 1 ); + outcometitle.glowcolor = ( 1, 1, 1 ); + } + else if ( isDefined( level.dontcalcwagerwinnings ) && level.dontcalcwagerwinnings == 1 ) + { + outcometitle settext( game[ "strings" ][ "wager_topwinners" ] ); + outcometitle.color = ( 0,42, 0,68, 0,46 ); + } + else + { + if ( isDefined( self.wagerwinnings ) && self.wagerwinnings > 0 ) + { + outcometitle settext( game[ "strings" ][ "wager_inthemoney" ] ); + outcometitle.color = ( 0,42, 0,68, 0,46 ); + } + else + { + outcometitle settext( game[ "strings" ][ "wager_loss" ] ); + outcometitle.color = ( 0,73, 0,29, 0,19 ); + } + } + outcometitle.glowalpha = 1; + outcometitle.hidewheninmenu = 0; + outcometitle.archived = 0; + outcometitle setcod7decodefx( 200, duration, 600 ); + outcometext = createfontstring( font, 2 ); + outcometext setparent( outcometitle ); + outcometext setpoint( "TOP", "BOTTOM", 0, 0 ); + outcometext.glowalpha = 1; + outcometext.hidewheninmenu = 0; + outcometext.archived = 0; + outcometext settext( endreasontext ); + playernamehudelems = []; + playercphudelems = []; + numplayers = players.size; + i = 0; + while ( i < numplayers ) + { + if ( !halftime && isDefined( players[ i ] ) ) + { + secondtitle = createfontstring( font, othersize ); + if ( playernamehudelems.size == 0 ) + { + secondtitle setparent( outcometext ); + secondtitle setpoint( "TOP_LEFT", "BOTTOM", -175, spacing * 3 ); + } + else + { + secondtitle setparent( playernamehudelems[ playernamehudelems.size - 1 ] ); + secondtitle setpoint( "TOP_LEFT", "BOTTOM_LEFT", 0, spacing ); + } + secondtitle.glowalpha = 1; + secondtitle.hidewheninmenu = 0; + secondtitle.archived = 0; + secondtitle.label = &"MP_WAGER_PLACE_NAME"; + secondtitle.playernum = i; + secondtitle setplayernamestring( players[ i ] ); + playernamehudelems[ playernamehudelems.size ] = secondtitle; + secondcp = createfontstring( font, othersize ); + secondcp setparent( secondtitle ); + secondcp setpoint( "TOP_RIGHT", "TOP_LEFT", 350, 0 ); + secondcp.glowalpha = 1; + secondcp.hidewheninmenu = 0; + secondcp.archived = 0; + secondcp.label = &"MENU_POINTS"; + secondcp.currentvalue = 0; + if ( isDefined( players[ i ].wagerwinnings ) ) + { + secondcp.targetvalue = players[ i ].wagerwinnings; + } + else + { + secondcp.targetvalue = 0; + } + if ( secondcp.targetvalue > 0 ) + { + secondcp.color = ( 0,42, 0,68, 0,46 ); + } + secondcp setvalue( 0 ); + playercphudelems[ playercphudelems.size ] = secondcp; + } + i++; + } + self thread updatewageroutcome( playernamehudelems, playercphudelems ); + self thread resetwageroutcomenotify( playernamehudelems, playercphudelems, outcometitle, outcometext ); + if ( halftime ) + { + return; + } + stillupdating = 1; + countupduration = 2; + cpincrement = 9999; + if ( isDefined( playercphudelems[ 0 ] ) ) + { + cpincrement = int( playercphudelems[ 0 ].targetvalue / ( countupduration / 0,05 ) ); + if ( cpincrement < 1 ) + { + cpincrement = 1; + } + } + while ( stillupdating ) + { + stillupdating = 0; + i = 0; + while ( i < playercphudelems.size ) + { + if ( isDefined( playercphudelems[ i ] ) && playercphudelems[ i ].currentvalue < playercphudelems[ i ].targetvalue ) + { + playercphudelems[ i ].currentvalue += cpincrement; + if ( playercphudelems[ i ].currentvalue > playercphudelems[ i ].targetvalue ) + { + playercphudelems[ i ].currentvalue = playercphudelems[ i ].targetvalue; + } + playercphudelems[ i ] setvalue( playercphudelems[ i ].currentvalue ); + stillupdating = 1; + } + i++; + } + wait 0,05; + } +} + +teamwageroutcomenotify( winner, isroundend, endreasontext ) +{ + self endon( "disconnect" ); + self notify( "reset_outcome" ); + team = self.pers[ "team" ]; + if ( !isDefined( team ) || !isDefined( level.teams[ team ] ) ) + { + team = "allies"; + } + wait 0,05; + while ( self.doingnotify ) + { + wait 0,05; + } + self endon( "reset_outcome" ); + headerfont = "extrabig"; + font = "objective"; + if ( self issplitscreen() ) + { + titlesize = 2; + textsize = 1,5; + iconsize = 30; + spacing = 10; + } + else + { + titlesize = 3; + textsize = 2; + iconsize = 70; + spacing = 15; + } + halftime = 0; + if ( isDefined( level.sidebet ) && level.sidebet ) + { + halftime = 1; + } + duration = 60000; + outcometitle = createfontstring( headerfont, titlesize ); + outcometitle setpoint( "TOP", undefined, 0, spacing ); + outcometitle.glowalpha = 1; + outcometitle.hidewheninmenu = 0; + outcometitle.archived = 0; + outcometext = createfontstring( font, 2 ); + outcometext setparent( outcometitle ); + outcometext setpoint( "TOP", "BOTTOM", 0, 0 ); + outcometext.glowalpha = 1; + outcometext.hidewheninmenu = 0; + outcometext.archived = 0; + if ( winner == "tie" ) + { + if ( isroundend ) + { + outcometitle settext( game[ "strings" ][ "round_draw" ] ); + } + else + { + outcometitle settext( game[ "strings" ][ "draw" ] ); + } + outcometitle.color = ( 1, 1, 1 ); + winner = "allies"; + } + else if ( winner == "overtime" ) + { + outcometitle settext( game[ "strings" ][ "overtime" ] ); + outcometitle.color = ( 1, 1, 1 ); + } + else if ( isDefined( self.pers[ "team" ] ) && winner == team ) + { + if ( isroundend ) + { + outcometitle settext( game[ "strings" ][ "round_win" ] ); + } + else + { + outcometitle settext( game[ "strings" ][ "victory" ] ); + } + outcometitle.color = ( 0,42, 0,68, 0,46 ); + } + else + { + if ( isroundend ) + { + outcometitle settext( game[ "strings" ][ "round_loss" ] ); + } + else + { + outcometitle settext( game[ "strings" ][ "defeat" ] ); + } + outcometitle.color = ( 0,73, 0,29, 0,19 ); + } + if ( !isDefined( level.dontshowendreason ) || !level.dontshowendreason ) + { + outcometext settext( endreasontext ); + } + outcometitle setpulsefx( 100, duration, 1000 ); + outcometext setpulsefx( 100, duration, 1000 ); + teamicons = []; + teamicons[ team ] = createicon( game[ "icons" ][ team ], iconsize, iconsize ); + teamicons[ team ] setparent( outcometext ); + teamicons[ team ] setpoint( "TOP", "BOTTOM", -60, spacing ); + teamicons[ team ].hidewheninmenu = 0; + teamicons[ team ].archived = 0; + teamicons[ team ].alpha = 0; + teamicons[ team ] fadeovertime( 0,5 ); + teamicons[ team ].alpha = 1; + _a1171 = level.teams; + _k1171 = getFirstArrayKey( _a1171 ); + while ( isDefined( _k1171 ) ) + { + enemyteam = _a1171[ _k1171 ]; + if ( team == enemyteam ) + { + } + else + { + teamicons[ enemyteam ] = createicon( game[ "icons" ][ enemyteam ], iconsize, iconsize ); + teamicons[ enemyteam ] setparent( outcometext ); + teamicons[ enemyteam ] setpoint( "TOP", "BOTTOM", 60, spacing ); + teamicons[ enemyteam ].hidewheninmenu = 0; + teamicons[ enemyteam ].archived = 0; + teamicons[ enemyteam ].alpha = 0; + teamicons[ enemyteam ] fadeovertime( 0,5 ); + teamicons[ enemyteam ].alpha = 1; + } + _k1171 = getNextArrayKey( _a1171, _k1171 ); + } + teamscores = []; + teamscores[ team ] = createfontstring( font, titlesize ); + teamscores[ team ] setparent( teamicons[ team ] ); + teamscores[ team ] setpoint( "TOP", "BOTTOM", 0, spacing ); + teamscores[ team ].glowalpha = 1; + teamscores[ team ] setvalue( getteamscore( team ) ); + teamscores[ team ].hidewheninmenu = 0; + teamscores[ team ].archived = 0; + teamscores[ team ] setpulsefx( 100, duration, 1000 ); + _a1197 = level.teams; + _k1197 = getFirstArrayKey( _a1197 ); + while ( isDefined( _k1197 ) ) + { + enemyteam = _a1197[ _k1197 ]; + if ( team == enemyteam ) + { + } + else + { + teamscores[ enemyteam ] = createfontstring( font, titlesize ); + teamscores[ enemyteam ] setparent( teamicons[ enemyteam ] ); + teamscores[ enemyteam ] setpoint( "TOP", "BOTTOM", 0, spacing ); + teamscores[ enemyteam ].glowalpha = 1; + teamscores[ enemyteam ] setvalue( getteamscore( enemyteam ) ); + teamscores[ enemyteam ].hidewheninmenu = 0; + teamscores[ enemyteam ].archived = 0; + teamscores[ enemyteam ] setpulsefx( 100, duration, 1000 ); + } + _k1197 = getNextArrayKey( _a1197, _k1197 ); + } + matchbonus = undefined; + sidebetwinnings = undefined; + if ( !isroundend && !halftime && isDefined( self.wagerwinnings ) ) + { + matchbonus = createfontstring( font, 2 ); + matchbonus setparent( outcometext ); + matchbonus setpoint( "TOP", "BOTTOM", 0, iconsize + ( spacing * 3 ) + teamscores[ team ].height ); + matchbonus.glowalpha = 1; + matchbonus.hidewheninmenu = 0; + matchbonus.archived = 0; + matchbonus.label = game[ "strings" ][ "wager_winnings" ]; + matchbonus setvalue( self.wagerwinnings ); + if ( isDefined( game[ "side_bets" ] ) && game[ "side_bets" ] ) + { + sidebetwinnings = createfontstring( font, 2 ); + sidebetwinnings setparent( matchbonus ); + sidebetwinnings setpoint( "TOP", "BOTTOM", 0, spacing ); + sidebetwinnings.glowalpha = 1; + sidebetwinnings.hidewheninmenu = 0; + sidebetwinnings.archived = 0; + sidebetwinnings.label = game[ "strings" ][ "wager_sidebet_winnings" ]; + sidebetwinnings setvalue( self.pers[ "wager_sideBetWinnings" ] ); + } + } + self thread resetoutcomenotify( teamicons, teamscores, outcometitle, outcometext, matchbonus, sidebetwinnings ); +} + +destroyhudelem( hudelem ) +{ + if ( isDefined( hudelem ) ) + { + hudelem destroyelem(); + } +} + +resetoutcomenotify( hudelemlist1, hudelemlist2, hudelem3, hudelem4, hudelem5, hudelem6, hudelem7, hudelem8, hudelem9, hudelem10 ) +{ + self endon( "disconnect" ); + self waittill( "reset_outcome" ); + destroyhudelem( hudelem3 ); + destroyhudelem( hudelem4 ); + destroyhudelem( hudelem5 ); + destroyhudelem( hudelem6 ); + destroyhudelem( hudelem7 ); + destroyhudelem( hudelem8 ); + destroyhudelem( hudelem9 ); + destroyhudelem( hudelem10 ); + while ( isDefined( hudelemlist1 ) ) + { + _a1263 = hudelemlist1; + _k1263 = getFirstArrayKey( _a1263 ); + while ( isDefined( _k1263 ) ) + { + elem = _a1263[ _k1263 ]; + destroyhudelem( elem ); + _k1263 = getNextArrayKey( _a1263, _k1263 ); + } + } + while ( isDefined( hudelemlist2 ) ) + { + _a1271 = hudelemlist2; + _k1271 = getFirstArrayKey( _a1271 ); + while ( isDefined( _k1271 ) ) + { + elem = _a1271[ _k1271 ]; + destroyhudelem( elem ); + _k1271 = getNextArrayKey( _a1271, _k1271 ); + } + } +} + +resetwageroutcomenotify( playernamehudelems, playercphudelems, outcometitle, outcometext ) +{ + self endon( "disconnect" ); + self waittill( "reset_outcome" ); + i = playernamehudelems.size - 1; + while ( i >= 0 ) + { + if ( isDefined( playernamehudelems[ i ] ) ) + { + playernamehudelems[ i ] destroy(); + } + i--; + + } + i = playercphudelems.size - 1; + while ( i >= 0 ) + { + if ( isDefined( playercphudelems[ i ] ) ) + { + playercphudelems[ i ] destroy(); + } + i--; + + } + if ( isDefined( outcometext ) ) + { + outcometext destroy(); + } + if ( isDefined( outcometitle ) ) + { + outcometitle destroy(); + } +} + +updateoutcome( firsttitle, secondtitle, thirdtitle ) +{ + self endon( "disconnect" ); + self endon( "reset_outcome" ); + while ( 1 ) + { + self waittill( "update_outcome" ); + players = level.placement[ "all" ]; + if ( isDefined( firsttitle ) && isDefined( players[ 0 ] ) ) + { + firsttitle setplayernamestring( players[ 0 ] ); + } + else + { + if ( isDefined( firsttitle ) ) + { + firsttitle.alpha = 0; + } + } + if ( isDefined( secondtitle ) && isDefined( players[ 1 ] ) ) + { + secondtitle setplayernamestring( players[ 1 ] ); + } + else + { + if ( isDefined( secondtitle ) ) + { + secondtitle.alpha = 0; + } + } + if ( isDefined( thirdtitle ) && isDefined( players[ 2 ] ) ) + { + thirdtitle setplayernamestring( players[ 2 ] ); + continue; + } + else + { + if ( isDefined( thirdtitle ) ) + { + thirdtitle.alpha = 0; + } + } + } +} + +updatewageroutcome( playernamehudelems, playercphudelems ) +{ + self endon( "disconnect" ); + self endon( "reset_outcome" ); + while ( 1 ) + { + self waittill( "update_outcome" ); + players = level.placement[ "all" ]; + i = 0; + while ( i < playernamehudelems.size ) + { + if ( isDefined( playernamehudelems[ i ] ) && isDefined( players[ playernamehudelems[ i ].playernum ] ) ) + { + playernamehudelems[ i ] setplayernamestring( players[ playernamehudelems[ i ].playernum ] ); + i++; + continue; + } + else + { + if ( isDefined( playernamehudelems[ i ] ) ) + { + playernamehudelems[ i ].alpha = 0; + } + if ( isDefined( playercphudelems[ i ] ) ) + { + playercphudelems[ i ].alpha = 0; + } + } + i++; + } + } +} + +setshoutcasterwaitingmessage() +{ + if ( !isDefined( self.waitingforplayerstext ) ) + { + self.waitingforplayerstext = createfontstring( "objective", 2,5 ); + self.waitingforplayerstext setpoint( "CENTER", "CENTER", 0, -80 ); + self.waitingforplayerstext.sort = 1001; + self.waitingforplayerstext settext( &"MP_WAITING_FOR_PLAYERS_SHOUTCASTER" ); + self.waitingforplayerstext.foreground = 0; + self.waitingforplayerstext.hidewheninmenu = 1; + } +} + +clearshoutcasterwaitingmessage() +{ + if ( isDefined( self.waitingforplayerstext ) ) + { + destroyhudelem( self.waitingforplayerstext ); + self.waitingforplayerstext = undefined; + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud_util.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud_util.gsc new file mode 100644 index 0000000..16b74f2 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_hud_util.gsc @@ -0,0 +1,1152 @@ +#include maps/mp/_utility; + +setparent( element ) +{ + if ( isDefined( self.parent ) && self.parent == element ) + { + return; + } + if ( isDefined( self.parent ) ) + { + self.parent removechild( self ); + } + self.parent = element; + self.parent addchild( self ); + if ( isDefined( self.point ) ) + { + self setpoint( self.point, self.relativepoint, self.xoffset, self.yoffset ); + } + else + { + self setpoint( "TOP" ); + } +} + +getparent() +{ + return self.parent; +} + +addchild( element ) +{ + element.index = self.children.size; + self.children[ self.children.size ] = element; +} + +removechild( element ) +{ + element.parent = undefined; + if ( self.children[ self.children.size - 1 ] != element ) + { + self.children[ element.index ] = self.children[ self.children.size - 1 ]; + self.children[ element.index ].index = element.index; + } + element.index = undefined; +} + +setpoint( point, relativepoint, xoffset, yoffset, movetime ) +{ + if ( !isDefined( movetime ) ) + { + movetime = 0; + } + element = self getparent(); + if ( movetime ) + { + self moveovertime( movetime ); + } + if ( !isDefined( xoffset ) ) + { + xoffset = 0; + } + self.xoffset = xoffset; + if ( !isDefined( yoffset ) ) + { + yoffset = 0; + } + self.yoffset = yoffset; + self.point = point; + self.alignx = "center"; + self.aligny = "middle"; + switch( point ) + { + case "CENTER": + break; + case "TOP": + self.aligny = "top"; + break; + case "BOTTOM": + self.aligny = "bottom"; + break; + case "LEFT": + self.alignx = "left"; + break; + case "RIGHT": + self.alignx = "right"; + break; + case "TOPRIGHT": + case "TOP_RIGHT": + self.aligny = "top"; + self.alignx = "right"; + break; + case "TOPLEFT": + case "TOP_LEFT": + self.aligny = "top"; + self.alignx = "left"; + break; + case "TOPCENTER": + self.aligny = "top"; + self.alignx = "center"; + break; + case "BOTTOM RIGHT": + case "BOTTOM_RIGHT": + self.aligny = "bottom"; + self.alignx = "right"; + break; + case "BOTTOM LEFT": + case "BOTTOM_LEFT": + self.aligny = "bottom"; + self.alignx = "left"; + break; + default: +/# + println( "^3Warning: unknown point passed to setPoint(): " + point ); +#/ + break; + } + if ( !isDefined( relativepoint ) ) + { + relativepoint = point; + } + self.relativepoint = relativepoint; + relativex = "center"; + relativey = "middle"; + switch( relativepoint ) + { + case "CENTER": + break; + case "TOP": + relativey = "top"; + break; + case "BOTTOM": + relativey = "bottom"; + break; + case "LEFT": + relativex = "left"; + break; + case "RIGHT": + relativex = "right"; + break; + case "TOPRIGHT": + case "TOP_RIGHT": + relativey = "top"; + relativex = "right"; + break; + case "TOPLEFT": + case "TOP_LEFT": + relativey = "top"; + relativex = "left"; + break; + case "TOPCENTER": + relativey = "top"; + relativex = "center"; + break; + case "BOTTOM RIGHT": + case "BOTTOM_RIGHT": + relativey = "bottom"; + relativex = "right"; + break; + case "BOTTOM LEFT": + case "BOTTOM_LEFT": + relativey = "bottom"; + relativex = "left"; + break; + default: +/# + println( "^3Warning: unknown relativePoint passed to setPoint(): " + relativepoint ); +#/ + break; + } + if ( element == level.uiparent ) + { + self.horzalign = relativex; + self.vertalign = relativey; + } + else + { + self.horzalign = element.horzalign; + self.vertalign = element.vertalign; + } + if ( relativex == element.alignx ) + { + offsetx = 0; + xfactor = 0; + } + else if ( relativex == "center" || element.alignx == "center" ) + { + offsetx = int( element.width / 2 ); + if ( relativex == "left" || element.alignx == "right" ) + { + xfactor = -1; + } + else + { + xfactor = 1; + } + } + else + { + offsetx = element.width; + if ( relativex == "left" ) + { + xfactor = -1; + } + else + { + xfactor = 1; + } + } + self.x = element.x + ( offsetx * xfactor ); + if ( relativey == element.aligny ) + { + offsety = 0; + yfactor = 0; + } + else if ( relativey == "middle" || element.aligny == "middle" ) + { + offsety = int( element.height / 2 ); + if ( relativey == "top" || element.aligny == "bottom" ) + { + yfactor = -1; + } + else + { + yfactor = 1; + } + } + else + { + offsety = element.height; + if ( relativey == "top" ) + { + yfactor = -1; + } + else + { + yfactor = 1; + } + } + self.y = element.y + ( offsety * yfactor ); + self.x += self.xoffset; + self.y += self.yoffset; + switch( self.elemtype ) + { + case "bar": + setpointbar( point, relativepoint, xoffset, yoffset ); + self.barframe setparent( self getparent() ); + self.barframe setpoint( point, relativepoint, xoffset, yoffset ); + break; + } + self updatechildren(); +} + +setpointbar( point, relativepoint, xoffset, yoffset ) +{ + self.bar.horzalign = self.horzalign; + self.bar.vertalign = self.vertalign; + self.bar.alignx = "left"; + self.bar.aligny = self.aligny; + self.bar.y = self.y; + if ( self.alignx == "left" ) + { + self.bar.x = self.x; + } + else if ( self.alignx == "right" ) + { + self.bar.x = self.x - self.width; + } + else + { + self.bar.x = self.x - int( self.width / 2 ); + } + if ( self.aligny == "top" ) + { + self.bar.y = self.y; + } + else + { + if ( self.aligny == "bottom" ) + { + self.bar.y = self.y; + } + } + self updatebar( self.bar.frac ); +} + +updatebar( barfrac, rateofchange ) +{ + if ( self.elemtype == "bar" ) + { + updatebarscale( barfrac, rateofchange ); + } +} + +updatebarscale( barfrac, rateofchange ) +{ + barwidth = int( ( self.width * barfrac ) + 0,5 ); + if ( !barwidth ) + { + barwidth = 1; + } + self.bar.frac = barfrac; + self.bar setshader( self.bar.shader, barwidth, self.height ); +/# + assert( barwidth <= self.width, "barWidth <= self.width: " + barwidth + " <= " + self.width + " - barFrac was " + barfrac ); +#/ + if ( isDefined( rateofchange ) && barwidth < self.width ) + { + if ( rateofchange > 0 ) + { +/# + assert( ( ( 1 - barfrac ) / rateofchange ) > 0, "barFrac: " + barfrac + "rateOfChange: " + rateofchange ); +#/ + self.bar scaleovertime( ( 1 - barfrac ) / rateofchange, self.width, self.height ); + } + else + { + if ( rateofchange < 0 ) + { +/# + assert( ( barfrac / ( -1 * rateofchange ) ) > 0, "barFrac: " + barfrac + "rateOfChange: " + rateofchange ); +#/ + self.bar scaleovertime( barfrac / ( -1 * rateofchange ), 1, self.height ); + } + } + } + self.bar.rateofchange = rateofchange; + self.bar.lastupdatetime = getTime(); +} + +createfontstring( font, fontscale ) +{ + fontelem = newclienthudelem( self ); + fontelem.elemtype = "font"; + fontelem.font = font; + fontelem.fontscale = fontscale; + fontelem.x = 0; + fontelem.y = 0; + fontelem.width = 0; + fontelem.height = int( level.fontheight * fontscale ); + fontelem.xoffset = 0; + fontelem.yoffset = 0; + fontelem.children = []; + fontelem setparent( level.uiparent ); + fontelem.hidden = 0; + return fontelem; +} + +createserverfontstring( font, fontscale, team ) +{ + if ( isDefined( team ) ) + { + fontelem = newteamhudelem( team ); + } + else + { + fontelem = newhudelem(); + } + fontelem.elemtype = "font"; + fontelem.font = font; + fontelem.fontscale = fontscale; + fontelem.x = 0; + fontelem.y = 0; + fontelem.width = 0; + fontelem.height = int( level.fontheight * fontscale ); + fontelem.xoffset = 0; + fontelem.yoffset = 0; + fontelem.children = []; + fontelem setparent( level.uiparent ); + fontelem.hidden = 0; + return fontelem; +} + +createservertimer( font, fontscale, team ) +{ + if ( isDefined( team ) ) + { + timerelem = newteamhudelem( team ); + } + else + { + timerelem = newhudelem(); + } + timerelem.elemtype = "timer"; + timerelem.font = font; + timerelem.fontscale = fontscale; + timerelem.x = 0; + timerelem.y = 0; + timerelem.width = 0; + timerelem.height = int( level.fontheight * fontscale ); + timerelem.xoffset = 0; + timerelem.yoffset = 0; + timerelem.children = []; + timerelem setparent( level.uiparent ); + timerelem.hidden = 0; + return timerelem; +} + +createclienttimer( font, fontscale ) +{ + timerelem = newclienthudelem( self ); + timerelem.elemtype = "timer"; + timerelem.font = font; + timerelem.fontscale = fontscale; + timerelem.x = 0; + timerelem.y = 0; + timerelem.width = 0; + timerelem.height = int( level.fontheight * fontscale ); + timerelem.xoffset = 0; + timerelem.yoffset = 0; + timerelem.children = []; + timerelem setparent( level.uiparent ); + timerelem.hidden = 0; + return timerelem; +} + +createicon( shader, width, height ) +{ + iconelem = newclienthudelem( self ); + iconelem.elemtype = "icon"; + iconelem.x = 0; + iconelem.y = 0; + iconelem.width = width; + iconelem.height = height; + iconelem.xoffset = 0; + iconelem.yoffset = 0; + iconelem.children = []; + iconelem setparent( level.uiparent ); + iconelem.hidden = 0; + if ( isDefined( shader ) ) + { + iconelem setshader( shader, width, height ); + } + return iconelem; +} + +createservericon( shader, width, height, team ) +{ + if ( isDefined( team ) ) + { + iconelem = newteamhudelem( team ); + } + else + { + iconelem = newhudelem(); + } + iconelem.elemtype = "icon"; + iconelem.x = 0; + iconelem.y = 0; + iconelem.width = width; + iconelem.height = height; + iconelem.xoffset = 0; + iconelem.yoffset = 0; + iconelem.children = []; + iconelem setparent( level.uiparent ); + iconelem.hidden = 0; + if ( isDefined( shader ) ) + { + iconelem setshader( shader, width, height ); + } + return iconelem; +} + +createserverbar( color, width, height, flashfrac, team, selected ) +{ + if ( isDefined( team ) ) + { + barelem = newteamhudelem( team ); + } + else + { + barelem = newhudelem(); + } + barelem.x = 0; + barelem.y = 0; + barelem.frac = 0; + barelem.color = color; + barelem.sort = -2; + barelem.shader = "progress_bar_fill"; + barelem setshader( "progress_bar_fill", width, height ); + barelem.hidden = 0; + if ( isDefined( flashfrac ) ) + { + barelem.flashfrac = flashfrac; + } + if ( isDefined( team ) ) + { + barelemframe = newteamhudelem( team ); + } + else + { + barelemframe = newhudelem(); + } + barelemframe.elemtype = "icon"; + barelemframe.x = 0; + barelemframe.y = 0; + barelemframe.width = width; + barelemframe.height = height; + barelemframe.xoffset = 0; + barelemframe.yoffset = 0; + barelemframe.bar = barelem; + barelemframe.barframe = barelemframe; + barelemframe.children = []; + barelemframe.sort = -1; + barelemframe.color = ( 1, 0, 0 ); + barelemframe setparent( level.uiparent ); + if ( isDefined( selected ) ) + { + barelemframe setshader( "progress_bar_fg_sel", width, height ); + } + else + { + barelemframe setshader( "progress_bar_fg", width, height ); + } + barelemframe.hidden = 0; + if ( isDefined( team ) ) + { + barelembg = newteamhudelem( team ); + } + else + { + barelembg = newhudelem(); + } + barelembg.elemtype = "bar"; + barelembg.x = 0; + barelembg.y = 0; + barelembg.width = width; + barelembg.height = height; + barelembg.xoffset = 0; + barelembg.yoffset = 0; + barelembg.bar = barelem; + barelembg.barframe = barelemframe; + barelembg.children = []; + barelembg.sort = -3; + barelembg.color = ( 1, 0, 0 ); + barelembg.alpha = 0,5; + barelembg setparent( level.uiparent ); + barelembg setshader( "progress_bar_bg", width, height ); + barelembg.hidden = 0; + return barelembg; +} + +createbar( color, width, height, flashfrac ) +{ + barelem = newclienthudelem( self ); + barelem.x = 0; + barelem.y = 0; + barelem.frac = 0; + barelem.color = color; + barelem.sort = -2; + barelem.shader = "progress_bar_fill"; + barelem setshader( "progress_bar_fill", width, height ); + barelem.hidden = 0; + if ( isDefined( flashfrac ) ) + { + barelem.flashfrac = flashfrac; + } + barelemframe = newclienthudelem( self ); + barelemframe.elemtype = "icon"; + barelemframe.x = 0; + barelemframe.y = 0; + barelemframe.width = width; + barelemframe.height = height; + barelemframe.xoffset = 0; + barelemframe.yoffset = 0; + barelemframe.bar = barelem; + barelemframe.barframe = barelemframe; + barelemframe.children = []; + barelemframe.sort = -1; + barelemframe.color = ( 1, 0, 0 ); + barelemframe setparent( level.uiparent ); + barelemframe.hidden = 0; + barelembg = newclienthudelem( self ); + barelembg.elemtype = "bar"; + if ( !self issplitscreen() ) + { + barelembg.x = -2; + barelembg.y = -2; + } + barelembg.width = width; + barelembg.height = height; + barelembg.xoffset = 0; + barelembg.yoffset = 0; + barelembg.bar = barelem; + barelembg.barframe = barelemframe; + barelembg.children = []; + barelembg.sort = -3; + barelembg.color = ( 1, 0, 0 ); + barelembg.alpha = 0,5; + barelembg setparent( level.uiparent ); + if ( !self issplitscreen() ) + { + barelembg setshader( "progress_bar_bg", width + 4, height + 4 ); + } + else + { + barelembg setshader( "progress_bar_bg", width + 0, height + 0 ); + } + barelembg.hidden = 0; + return barelembg; +} + +getcurrentfraction() +{ + frac = self.bar.frac; + if ( isDefined( self.bar.rateofchange ) ) + { + frac += ( getTime() - self.bar.lastupdatetime ) * self.bar.rateofchange; + if ( frac > 1 ) + { + frac = 1; + } + if ( frac < 0 ) + { + frac = 0; + } + } + return frac; +} + +createprimaryprogressbar() +{ + bar = undefined; + if ( self issplitscreen() ) + { + bar = self createbar( ( 1, 0, 0 ), level.primaryprogressbarwidth, level.primaryprogressbarheight_ss ); + bar setpoint( "TOP", undefined, level.primaryprogressbarx_ss, level.primaryprogressbary_ss ); + } + else + { + bar = self createbar( ( 1, 0, 0 ), level.primaryprogressbarwidth, level.primaryprogressbarheight ); + bar setpoint( "CENTER", undefined, level.primaryprogressbarx, level.primaryprogressbary ); + } + return bar; +} + +createprimaryprogressbartext() +{ + text = createfontstring( "objective", level.primaryprogressbarfontsize ); + if ( self issplitscreen() ) + { + text setpoint( "TOP", undefined, level.primaryprogressbartextx_ss, level.primaryprogressbartexty_ss ); + } + else + { + text setpoint( "CENTER", undefined, level.primaryprogressbartextx, level.primaryprogressbartexty ); + } + text.sort = -1; + return text; +} + +createsecondaryprogressbar() +{ + secondaryprogressbarheight = getdvarintdefault( "scr_secondaryProgressBarHeight", level.secondaryprogressbarheight ); + secondaryprogressbarx = getdvarintdefault( "scr_secondaryProgressBarX", level.secondaryprogressbarx ); + secondaryprogressbary = getdvarintdefault( "scr_secondaryProgressBarY", level.secondaryprogressbary ); + secondaryprogressbarheight_ss = getdvarintdefault( "scr_secondaryProgressBarHeight", level.secondaryprogressbarheight_ss ); + secondaryprogressbarx_ss = getdvarintdefault( "scr_secondaryProgressBarX", level.secondaryprogressbarx_ss ); + secondaryprogressbary_ss = getdvarintdefault( "scr_secondaryProgressBarY", level.secondaryprogressbary_ss ); + bar = undefined; + if ( self issplitscreen() ) + { + bar = self createbar( ( 1, 0, 0 ), level.secondaryprogressbarwidth, secondaryprogressbarheight_ss ); + bar setpoint( "TOP", undefined, secondaryprogressbarx_ss, secondaryprogressbary_ss ); + } + else + { + bar = self createbar( ( 1, 0, 0 ), level.secondaryprogressbarwidth, secondaryprogressbarheight ); + bar setpoint( "CENTER", undefined, secondaryprogressbarx, secondaryprogressbary ); + } + return bar; +} + +createsecondaryprogressbartext() +{ + secondaryprogressbartextx = getdvarintdefault( "scr_btx", level.secondaryprogressbartextx ); + secondaryprogressbartexty = getdvarintdefault( "scr_bty", level.secondaryprogressbartexty ); + secondaryprogressbartextx_ss = getdvarintdefault( "scr_btx", level.secondaryprogressbartextx_ss ); + secondaryprogressbartexty_ss = getdvarintdefault( "scr_bty", level.secondaryprogressbartexty_ss ); + text = createfontstring( "objective", level.primaryprogressbarfontsize ); + if ( self issplitscreen() ) + { + text setpoint( "TOP", undefined, secondaryprogressbartextx_ss, secondaryprogressbartexty_ss ); + } + else + { + text setpoint( "CENTER", undefined, secondaryprogressbartextx, secondaryprogressbartexty ); + } + text.sort = -1; + return text; +} + +createteamprogressbar( team ) +{ + bar = createserverbar( ( 1, 0, 0 ), level.teamprogressbarwidth, level.teamprogressbarheight, undefined, team ); + bar setpoint( "TOP", undefined, 0, level.teamprogressbary ); + return bar; +} + +createteamprogressbartext( team ) +{ + text = createserverfontstring( "default", level.teamprogressbarfontsize, team ); + text setpoint( "TOP", undefined, 0, level.teamprogressbartexty ); + return text; +} + +setflashfrac( flashfrac ) +{ + self.bar.flashfrac = flashfrac; +} + +hideelem() +{ + if ( self.hidden ) + { + return; + } + self.hidden = 1; + if ( self.alpha != 0 ) + { + self.alpha = 0; + } + if ( self.elemtype == "bar" || self.elemtype == "bar_shader" ) + { + self.bar.hidden = 1; + if ( self.bar.alpha != 0 ) + { + self.bar.alpha = 0; + } + self.barframe.hidden = 1; + if ( self.barframe.alpha != 0 ) + { + self.barframe.alpha = 0; + } + } +} + +showelem() +{ + if ( !self.hidden ) + { + return; + } + self.hidden = 0; + if ( self.elemtype == "bar" || self.elemtype == "bar_shader" ) + { + if ( self.alpha != 0,5 ) + { + self.alpha = 0,5; + } + self.bar.hidden = 0; + if ( self.bar.alpha != 1 ) + { + self.bar.alpha = 1; + } + self.barframe.hidden = 0; + if ( self.barframe.alpha != 1 ) + { + self.barframe.alpha = 1; + } + } + else + { + if ( self.alpha != 1 ) + { + self.alpha = 1; + } + } +} + +flashthread() +{ + self endon( "death" ); + if ( !self.hidden ) + { + self.alpha = 1; + } + while ( 1 ) + { + if ( self.frac >= self.flashfrac ) + { + if ( !self.hidden ) + { + self fadeovertime( 0,3 ); + self.alpha = 0,2; + wait 0,35; + self fadeovertime( 0,3 ); + self.alpha = 1; + } + wait 0,7; + continue; + } + else + { + if ( !self.hidden && self.alpha != 1 ) + { + self.alpha = 1; + } + wait 0,05; + } + } +} + +destroyelem() +{ + tempchildren = []; + index = 0; + while ( index < self.children.size ) + { + if ( isDefined( self.children[ index ] ) ) + { + tempchildren[ tempchildren.size ] = self.children[ index ]; + } + index++; + } + index = 0; + while ( index < tempchildren.size ) + { + tempchildren[ index ] setparent( self getparent() ); + index++; + } + if ( self.elemtype == "bar" || self.elemtype == "bar_shader" ) + { + self.bar destroy(); + self.barframe destroy(); + } + self destroy(); +} + +seticonshader( shader ) +{ + self setshader( shader, self.width, self.height ); +} + +setwidth( width ) +{ + self.width = width; +} + +setheight( height ) +{ + self.height = height; +} + +setsize( width, height ) +{ + self.width = width; + self.height = height; +} + +updatechildren() +{ + index = 0; + while ( index < self.children.size ) + { + child = self.children[ index ]; + child setpoint( child.point, child.relativepoint, child.xoffset, child.yoffset ); + index++; + } +} + +createloadouticon( verindex, horindex, xpos, ypos ) +{ + iconsize = 32; + if ( level.splitscreen ) + { + ypos -= 80 + ( iconsize * ( 3 - verindex ) ); + } + else + { + ypos -= 90 + ( iconsize * ( 3 - verindex ) ); + } + if ( level.splitscreen ) + { + xpos -= 5 + ( iconsize * horindex ); + } + else + { + xpos -= 10 + ( iconsize * horindex ); + } + icon = createicon( "white", iconsize, iconsize ); + icon setpoint( "BOTTOM RIGHT", "BOTTOM RIGHT", xpos, ypos ); + icon.horzalign = "user_right"; + icon.vertalign = "user_bottom"; + icon.archived = 0; + icon.foreground = 0; + return icon; +} + +setloadouticoncoords( verindex, horindex, xpos, ypos ) +{ + iconsize = 32; + if ( level.splitscreen ) + { + ypos -= 80 + ( iconsize * ( 3 - verindex ) ); + } + else + { + ypos -= 90 + ( iconsize * ( 3 - verindex ) ); + } + if ( level.splitscreen ) + { + xpos -= 5 + ( iconsize * horindex ); + } + else + { + xpos -= 10 + ( iconsize * horindex ); + } + self setpoint( "BOTTOM RIGHT", "BOTTOM RIGHT", xpos, ypos ); + self.horzalign = "user_right"; + self.vertalign = "user_bottom"; + self.archived = 0; + self.foreground = 0; + self.alpha = 1; +} + +setloadouttextcoords( xcoord ) +{ + self setpoint( "RIGHT", "LEFT", xcoord, 0 ); +} + +createloadouttext( icon, xcoord ) +{ + text = createfontstring( "small", 1 ); + text setparent( icon ); + text setpoint( "RIGHT", "LEFT", xcoord, 0 ); + text.archived = 0; + text.alignx = "right"; + text.aligny = "middle"; + text.foreground = 0; + return text; +} + +showloadoutattribute( iconelem, icon, alpha, textelem, text ) +{ + iconsize = 32; + iconelem.alpha = alpha; + if ( alpha ) + { + iconelem setshader( icon, iconsize, iconsize ); + } + if ( isDefined( textelem ) ) + { + textelem.alpha = alpha; + if ( alpha ) + { + textelem settext( text ); + } + } +} + +hideloadoutattribute( iconelem, fadetime, textelem, hidetextonly ) +{ + if ( isDefined( fadetime ) ) + { + if ( !isDefined( hidetextonly ) || !hidetextonly ) + { + iconelem fadeovertime( fadetime ); + } + if ( isDefined( textelem ) ) + { + textelem fadeovertime( fadetime ); + } + } + if ( !isDefined( hidetextonly ) || !hidetextonly ) + { + iconelem.alpha = 0; + } + if ( isDefined( textelem ) ) + { + textelem.alpha = 0; + } +} + +showperks() +{ + ypos = 40; + if ( !isDefined( self.perkhudelem ) ) + { + self.perkhudelem = createloadouticon( 0, 0, 200, ypos ); + } + else + { + self.perkhudelem setloadouticoncoords( 0, 0, 200, ypos ); + } + self.perkhudelem setperks( self ); + self.perkhudelem.x = -10; + self.perkhudelem.alpha = 0; + self.perkhudelem fadeovertime( 0,4 ); + self.perkhudelem.alpha = 1; + self.perkhudelem.hidewheninmenu = 1; +} + +showperk( index, perk, ypos ) +{ +/# + assert( game[ "state" ] != "postgame" ); +#/ + if ( !isDefined( self.perkicon ) ) + { + self.perkicon = []; + self.perkname = []; + } + if ( !isDefined( self.perkicon[ index ] ) ) + { +/# + assert( !isDefined( self.perkname[ index ] ) ); +#/ + self.perkicon[ index ] = createloadouticon( index, 0, 200, ypos ); + self.perkname[ index ] = createloadouttext( self.perkicon[ index ], 160 ); + } + else + { + self.perkicon[ index ] setloadouticoncoords( index, 0, 200, ypos ); + self.perkname[ index ] setloadouttextcoords( 160 ); + } + if ( perk != "perk_null" || perk == "weapon_null" && perk == "specialty_null" ) + { + alpha = 0; + } + else + { +/# + assert( isDefined( level.perknames[ perk ] ), perk ); +#/ + alpha = 1; + } + showloadoutattribute( self.perkicon[ index ], perk, alpha, self.perkname[ index ], level.perknames[ perk ] ); + self.perkicon[ index ] moveovertime( 0,3 ); + self.perkicon[ index ].x = -5; + self.perkicon[ index ].hidewheninmenu = 1; + self.perkname[ index ] moveovertime( 0,3 ); + self.perkname[ index ].x = -40; + self.perkname[ index ].hidewheninmenu = 1; +} + +hideperks( fadetime ) +{ + if ( level.perksenabled == 1 ) + { + if ( game[ "state" ] == "postgame" ) + { +/# + assert( !isDefined( self.perkhudelem ) ); +#/ + return; + } + } +/# + assert( isDefined( self.perkhudelem ) ); +#/ + if ( isDefined( self.perkhudelem ) ) + { + hideloadoutattribute( self.perkhudelem, fadetime ); + } +} + +hideperk( index, fadetime, hidetextonly ) +{ + if ( !isDefined( fadetime ) ) + { + fadetime = 0,05; + } + if ( level.perksenabled == 1 ) + { + if ( game[ "state" ] == "postgame" ) + { + if ( isDefined( self.perkicon ) ) + { +/# + assert( !isDefined( self.perkicon[ index ] ) ); +#/ +/# + assert( !isDefined( self.perkname[ index ] ) ); +#/ + } + return; + } +/# + assert( isDefined( self.perkicon[ index ] ) ); +#/ +/# + assert( isDefined( self.perkname[ index ] ) ); +#/ + if ( isDefined( self.perkicon ) && isDefined( self.perkicon[ index ] ) && isDefined( self.perkname ) && isDefined( self.perkname[ index ] ) ) + { + hideloadoutattribute( self.perkicon[ index ], fadetime, self.perkname[ index ], hidetextonly ); + } + } +} + +hideallperks( fadetime, hidetextonly ) +{ + if ( level.perksenabled == 1 ) + { + hideperks( fadetime ); + } +} + +showkillstreak( index, killstreak, xpos, ypos ) +{ +/# + assert( game[ "state" ] != "postgame" ); +#/ + if ( !isDefined( self.killstreakicon ) ) + { + self.killstreakicon = []; + } + if ( !isDefined( self.killstreakicon[ index ] ) ) + { + self.killstreakicon[ index ] = createloadouticon( 3, ( self.killstreak.size - 1 ) - index, xpos, ypos ); + } + if ( killstreak == "killstreak_null" || killstreak == "weapon_null" ) + { + alpha = 0; + } + else + { +/# + assert( isDefined( level.killstreakicons[ killstreak ] ), killstreak ); +#/ + alpha = 1; + } + showloadoutattribute( self.killstreakicon[ index ], level.killstreakicons[ killstreak ], alpha ); +} + +hidekillstreak( index, fadetime ) +{ + if ( iskillstreaksenabled() ) + { + if ( game[ "state" ] == "postgame" ) + { +/# + assert( !isDefined( self.killstreakicon[ index ] ) ); +#/ + return; + } +/# + assert( isDefined( self.killstreakicon[ index ] ) ); +#/ + hideloadoutattribute( self.killstreakicon[ index ], fadetime ); + } +} + +setgamemodeinfopoint() +{ + self.x = 5; + self.y = 120; + self.horzalign = "user_left"; + self.vertalign = "user_top"; + self.alignx = "left"; + self.aligny = "top"; +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_menus.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_menus.gsc new file mode 100644 index 0000000..97f9513 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_menus.gsc @@ -0,0 +1,175 @@ +#include maps/mp/gametypes_zm/_rank; +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/_utility; + +init() +{ + precachestring( &"open_ingame_menu" ); + game[ "menu_team" ] = "team_marinesopfor"; + game[ "menu_initteam_allies" ] = "initteam_marines"; + game[ "menu_initteam_axis" ] = "initteam_opfor"; + game[ "menu_class" ] = "class"; + game[ "menu_changeclass" ] = "changeclass"; + game[ "menu_changeclass_offline" ] = "changeclass"; + game[ "menu_wager_side_bet" ] = "sidebet"; + game[ "menu_wager_side_bet_player" ] = "sidebet_player"; + game[ "menu_changeclass_wager" ] = "changeclass_wager"; + game[ "menu_changeclass_custom" ] = "changeclass_custom"; + game[ "menu_changeclass_barebones" ] = "changeclass_barebones"; + _a18 = level.teams; + _k18 = getFirstArrayKey( _a18 ); + while ( isDefined( _k18 ) ) + { + team = _a18[ _k18 ]; + game[ "menu_changeclass_" + team ] = "changeclass"; + _k18 = getNextArrayKey( _a18, _k18 ); + } + game[ "menu_controls" ] = "ingame_controls"; + game[ "menu_options" ] = "ingame_options"; + game[ "menu_leavegame" ] = "popup_leavegame"; + precachemenu( game[ "menu_controls" ] ); + precachemenu( game[ "menu_options" ] ); + precachemenu( game[ "menu_leavegame" ] ); + precachemenu( "scoreboard" ); + precachemenu( "spectate" ); + precachemenu( game[ "menu_team" ] ); + precachemenu( game[ "menu_changeclass_allies" ] ); + precachemenu( game[ "menu_initteam_allies" ] ); + precachemenu( game[ "menu_changeclass_axis" ] ); + precachemenu( game[ "menu_class" ] ); + precachemenu( game[ "menu_changeclass" ] ); + precachemenu( game[ "menu_initteam_axis" ] ); + precachemenu( game[ "menu_changeclass_offline" ] ); + precachemenu( game[ "menu_changeclass_wager" ] ); + precachemenu( game[ "menu_changeclass_custom" ] ); + precachemenu( game[ "menu_changeclass_barebones" ] ); + precachemenu( game[ "menu_wager_side_bet" ] ); + precachemenu( game[ "menu_wager_side_bet_player" ] ); + precachestring( &"MP_HOST_ENDED_GAME" ); + precachestring( &"MP_HOST_ENDGAME_RESPONSE" ); + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onmenuresponse(); + } +} + +onmenuresponse() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "menuresponse", menu, response ); + if ( response == "back" ) + { + self closemenu(); + self closeingamemenu(); + if ( level.console ) + { + if ( game[ "menu_changeclass" ] != menu && game[ "menu_changeclass_offline" ] != menu || menu == game[ "menu_team" ] && menu == game[ "menu_controls" ] ) + { + if ( isDefined( level.teams[ self.pers[ "team" ] ] ) ) + { + self openmenu( game[ "menu_class" ] ); + } + } + } + continue; + } + else if ( response == "changeteam" && level.allow_teamchange == "1" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_team" ] ); + } + if ( response == "changeclass_marines_splitscreen" ) + { + self openmenu( "changeclass_marines_splitscreen" ); + } + if ( response == "changeclass_opfor_splitscreen" ) + { + self openmenu( "changeclass_opfor_splitscreen" ); + } + if ( response == "endgame" ) + { + if ( self issplitscreen() ) + { + level.skipvote = 1; + if ( !level.gameended ) + { + level thread maps/mp/gametypes_zm/_globallogic::forceend(); + } + } + continue; + } + else if ( response == "killserverpc" ) + { + level thread maps/mp/gametypes_zm/_globallogic::killserverpc(); + continue; + } + else if ( response == "endround" ) + { + if ( !level.gameended ) + { + level thread maps/mp/gametypes_zm/_globallogic::forceend(); + } + else + { + self closemenu(); + self closeingamemenu(); + self iprintln( &"MP_HOST_ENDGAME_RESPONSE" ); + } + continue; + } + else if ( menu == game[ "menu_team" ] && level.allow_teamchange == "1" ) + { + switch( response ) + { + case "autoassign": + self [[ level.autoassign ]]( 1 ); + break; + case "spectator": + self [[ level.spectator ]](); + break; + default: + self [[ level.teammenu ]]( response ); + break; + } + continue; + } + else + { + if ( game[ "menu_changeclass" ] != menu && game[ "menu_changeclass_offline" ] != menu && game[ "menu_changeclass_wager" ] != menu || menu == game[ "menu_changeclass_custom" ] && menu == game[ "menu_changeclass_barebones" ] ) + { + self closemenu(); + self closeingamemenu(); + if ( level.rankedmatch && issubstr( response, "custom" ) ) + { + if ( self isitemlocked( maps/mp/gametypes_zm/_rank::getitemindex( "feature_cac" ) ) ) + { + kick( self getentitynumber() ); + } + } + self.selectedclass = 1; + self [[ level.class ]]( response ); + break; + } + else + { + if ( menu == "spectate" ) + { + player = getplayerfromclientnum( int( response ) ); + if ( isDefined( player ) ) + { + self setcurrentspectatorclient( player ); + } + } + } + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_perplayer.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_perplayer.gsc new file mode 100644 index 0000000..1fd16a2 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_perplayer.gsc @@ -0,0 +1,196 @@ +#include maps/mp/_utility; + +init( id, playerbegincallback, playerendcallback ) +{ + precacheshader( "objpoint_default" ); + handler = spawnstruct(); + handler.id = id; + handler.playerbegincallback = playerbegincallback; + handler.playerendcallback = playerendcallback; + handler.enabled = 0; + handler.players = []; + thread onplayerconnect( handler ); + level.handlerglobalflagval = 0; + return handler; +} + +enable( handler ) +{ + if ( handler.enabled ) + { + return; + } + handler.enabled = 1; + level.handlerglobalflagval++; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ].handlerflagval = level.handlerglobalflagval; + i++; + } + players = handler.players; + i = 0; + while ( i < players.size ) + { + if ( players[ i ].handlerflagval != level.handlerglobalflagval ) + { + i++; + continue; + } + else + { + if ( players[ i ].handlers[ handler.id ].ready ) + { + players[ i ] handleplayer( handler ); + } + } + i++; + } +} + +disable( handler ) +{ + if ( !handler.enabled ) + { + return; + } + handler.enabled = 0; + level.handlerglobalflagval++; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ].handlerflagval = level.handlerglobalflagval; + i++; + } + players = handler.players; + i = 0; + while ( i < players.size ) + { + if ( players[ i ].handlerflagval != level.handlerglobalflagval ) + { + i++; + continue; + } + else + { + if ( players[ i ].handlers[ handler.id ].ready ) + { + players[ i ] unhandleplayer( handler, 0, 0 ); + } + } + i++; + } +} + +onplayerconnect( handler ) +{ + for ( ;; ) + { + level waittill( "connecting", player ); + if ( !isDefined( player.handlers ) ) + { + player.handlers = []; + } + player.handlers[ handler.id ] = spawnstruct(); + player.handlers[ handler.id ].ready = 0; + player.handlers[ handler.id ].handled = 0; + player.handlerflagval = -1; + handler.players[ handler.players.size ] = player; + player thread onplayerdisconnect( handler ); + player thread onplayerspawned( handler ); + player thread onjoinedteam( handler ); + player thread onjoinedspectators( handler ); + player thread onplayerkilled( handler ); + } +} + +onplayerdisconnect( handler ) +{ + self waittill( "disconnect" ); + newplayers = []; + i = 0; + while ( i < handler.players.size ) + { + if ( handler.players[ i ] != self ) + { + newplayers[ newplayers.size ] = handler.players[ i ]; + } + i++; + } + handler.players = newplayers; + self thread unhandleplayer( handler, 1, 1 ); +} + +onjoinedteam( handler ) +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "joined_team" ); + self thread unhandleplayer( handler, 1, 0 ); + } +} + +onjoinedspectators( handler ) +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "joined_spectators" ); + self thread unhandleplayer( handler, 1, 0 ); + } +} + +onplayerspawned( handler ) +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread handleplayer( handler ); + } +} + +onplayerkilled( handler ) +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "killed_player" ); + self thread unhandleplayer( handler, 1, 0 ); + } +} + +handleplayer( handler ) +{ + self.handlers[ handler.id ].ready = 1; + if ( !handler.enabled ) + { + return; + } + if ( self.handlers[ handler.id ].handled ) + { + return; + } + self.handlers[ handler.id ].handled = 1; + self thread [[ handler.playerbegincallback ]](); +} + +unhandleplayer( handler, unsetready, disconnected ) +{ + if ( !disconnected && unsetready ) + { + self.handlers[ handler.id ].ready = 0; + } + if ( !self.handlers[ handler.id ].handled ) + { + return; + } + if ( !disconnected ) + { + self.handlers[ handler.id ].handled = 0; + } + self thread [[ handler.playerendcallback ]]( disconnected ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_scoreboard.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_scoreboard.gsc new file mode 100644 index 0000000..9c57984 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_scoreboard.gsc @@ -0,0 +1,25 @@ + +init() +{ + setdvar( "g_ScoresColor_Spectator", ".25 .25 .25" ); + setdvar( "g_ScoresColor_Free", ".76 .78 .10" ); + setdvar( "g_teamColor_MyTeam", ".4 .7 .4" ); + setdvar( "g_teamColor_EnemyTeam", "1 .315 0.35" ); + setdvar( "g_teamColor_MyTeamAlt", ".35 1 1" ); + setdvar( "g_teamColor_EnemyTeamAlt", "1 .5 0" ); + setdvar( "g_teamColor_Squad", ".315 0.35 1" ); + if ( level.createfx_enabled ) + { + return; + } + if ( sessionmodeiszombiesgame() ) + { + setdvar( "g_TeamIcon_Axis", "faction_cia" ); + setdvar( "g_TeamIcon_Allies", "faction_cdc" ); + } + else + { + setdvar( "g_TeamIcon_Axis", game[ "icons" ][ "axis" ] ); + setdvar( "g_TeamIcon_Allies", game[ "icons" ][ "allies" ] ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_serversettings.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_serversettings.gsc new file mode 100644 index 0000000..a747dcc --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_serversettings.gsc @@ -0,0 +1,207 @@ + +init() +{ + level.hostname = getDvar( "sv_hostname" ); + if ( level.hostname == "" ) + { + level.hostname = "CoDHost"; + } + setdvar( "sv_hostname", level.hostname ); + setdvar( "ui_hostname", level.hostname ); + makedvarserverinfo( "ui_hostname", "CoDHost" ); + level.motd = getDvar( "scr_motd" ); + if ( level.motd == "" ) + { + level.motd = ""; + } + setdvar( "scr_motd", level.motd ); + setdvar( "ui_motd", level.motd ); + makedvarserverinfo( "ui_motd", "" ); + level.allowvote = getDvar( "g_allowVote" ); + if ( level.allowvote == "" ) + { + level.allowvote = "1"; + } + setdvar( "g_allowvote", level.allowvote ); + setdvar( "ui_allowvote", level.allowvote ); + makedvarserverinfo( "ui_allowvote", "1" ); + level.allow_teamchange = "0"; + if ( sessionmodeisprivate() || !sessionmodeisonlinegame() ) + { + level.allow_teamchange = "1"; + } + setdvar( "ui_allow_teamchange", level.allow_teamchange ); + level.friendlyfire = getgametypesetting( "friendlyfiretype" ); + setdvar( "ui_friendlyfire", level.friendlyfire ); + makedvarserverinfo( "ui_friendlyfire", "0" ); + if ( getDvar( "scr_mapsize" ) == "" ) + { + setdvar( "scr_mapsize", "64" ); + } + else if ( getDvarFloat( "scr_mapsize" ) >= 64 ) + { + setdvar( "scr_mapsize", "64" ); + } + else if ( getDvarFloat( "scr_mapsize" ) >= 32 ) + { + setdvar( "scr_mapsize", "32" ); + } + else if ( getDvarFloat( "scr_mapsize" ) >= 16 ) + { + setdvar( "scr_mapsize", "16" ); + } + else + { + setdvar( "scr_mapsize", "8" ); + } + level.mapsize = getDvarFloat( "scr_mapsize" ); + constraingametype( getDvar( "g_gametype" ) ); + constrainmapsize( level.mapsize ); + for ( ;; ) + { + updateserversettings(); + wait 5; + } +} + +updateserversettings() +{ + sv_hostname = getDvar( "sv_hostname" ); + if ( level.hostname != sv_hostname ) + { + level.hostname = sv_hostname; + setdvar( "ui_hostname", level.hostname ); + } + scr_motd = getDvar( "scr_motd" ); + if ( level.motd != scr_motd ) + { + level.motd = scr_motd; + setdvar( "ui_motd", level.motd ); + } + g_allowvote = getDvar( "g_allowVote" ); + if ( level.allowvote != g_allowvote ) + { + level.allowvote = g_allowvote; + setdvar( "ui_allowvote", level.allowvote ); + } + scr_friendlyfire = getgametypesetting( "friendlyfiretype" ); + if ( level.friendlyfire != scr_friendlyfire ) + { + level.friendlyfire = scr_friendlyfire; + setdvar( "ui_friendlyfire", level.friendlyfire ); + } +} + +constraingametype( gametype ) +{ + entities = getentarray(); + i = 0; + while ( i < entities.size ) + { + entity = entities[ i ]; + if ( gametype == "dm" ) + { + if ( isDefined( entity.script_gametype_dm ) && entity.script_gametype_dm != "1" ) + { + entity delete(); + } + i++; + continue; + } + else if ( gametype == "tdm" ) + { + if ( isDefined( entity.script_gametype_tdm ) && entity.script_gametype_tdm != "1" ) + { + entity delete(); + } + i++; + continue; + } + else if ( gametype == "ctf" ) + { + if ( isDefined( entity.script_gametype_ctf ) && entity.script_gametype_ctf != "1" ) + { + entity delete(); + } + i++; + continue; + } + else if ( gametype == "hq" ) + { + if ( isDefined( entity.script_gametype_hq ) && entity.script_gametype_hq != "1" ) + { + entity delete(); + } + i++; + continue; + } + else if ( gametype == "sd" ) + { + if ( isDefined( entity.script_gametype_sd ) && entity.script_gametype_sd != "1" ) + { + entity delete(); + } + i++; + continue; + } + else + { + if ( gametype == "koth" ) + { + if ( isDefined( entity.script_gametype_koth ) && entity.script_gametype_koth != "1" ) + { + entity delete(); + } + } + } + i++; + } +} + +constrainmapsize( mapsize ) +{ + entities = getentarray(); + i = 0; + while ( i < entities.size ) + { + entity = entities[ i ]; + if ( int( mapsize ) == 8 ) + { + if ( isDefined( entity.script_mapsize_08 ) && entity.script_mapsize_08 != "1" ) + { + entity delete(); + } + i++; + continue; + } + else if ( int( mapsize ) == 16 ) + { + if ( isDefined( entity.script_mapsize_16 ) && entity.script_mapsize_16 != "1" ) + { + entity delete(); + } + i++; + continue; + } + else if ( int( mapsize ) == 32 ) + { + if ( isDefined( entity.script_mapsize_32 ) && entity.script_mapsize_32 != "1" ) + { + entity delete(); + } + i++; + continue; + } + else + { + if ( int( mapsize ) == 64 ) + { + if ( isDefined( entity.script_mapsize_64 ) && entity.script_mapsize_64 != "1" ) + { + entity delete(); + } + } + } + i++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_shellshock.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_shellshock.gsc new file mode 100644 index 0000000..770c71c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_shellshock.gsc @@ -0,0 +1,64 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + precacheshellshock( "frag_grenade_mp" ); + precacheshellshock( "damage_mp" ); + precacherumble( "artillery_rumble" ); + precacherumble( "grenade_rumble" ); +} + +shellshockondamage( cause, damage ) +{ + if ( cause != "MOD_EXPLOSIVE" && cause != "MOD_GRENADE" && cause != "MOD_GRENADE_SPLASH" || cause == "MOD_PROJECTILE" && cause == "MOD_PROJECTILE_SPLASH" ) + { + time = 0; + if ( damage >= 90 ) + { + time = 4; + } + else if ( damage >= 50 ) + { + time = 3; + } + else if ( damage >= 25 ) + { + time = 2; + } + else + { + if ( damage > 10 ) + { + time = 2; + } + } + if ( time ) + { + if ( self mayapplyscreeneffect() ) + { + self shellshock( "frag_grenade_mp", 0,5 ); + } + } + } +} + +endondeath() +{ + self waittill( "death" ); + waittillframeend; + self notify( "end_explode" ); +} + +endontimer( timer ) +{ + self endon( "disconnect" ); + wait timer; + self notify( "end_on_timer" ); +} + +rcbomb_earthquake( position ) +{ + playrumbleonposition( "grenade_rumble", position ); + earthquake( 0,5, 0,5, self.origin, 512 ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_spawning.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_spawning.gsc new file mode 100644 index 0000000..ce29a09 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_spawning.gsc @@ -0,0 +1,1073 @@ +#include maps/mp/gametypes_zm/_spawnlogic; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + if ( !isDefined( level.gamemodespawndvars ) ) + { + level.gamemodespawndvars = ::default_gamemodespawndvars; + } + level init_spawn_system(); + level.recently_deceased = []; + _a74 = level.teams; + _k74 = getFirstArrayKey( _a74 ); + while ( isDefined( _k74 ) ) + { + team = _a74[ _k74 ]; + level.recently_deceased[ team ] = spawn_array_struct(); + _k74 = getNextArrayKey( _a74, _k74 ); + } + level thread onplayerconnect(); + if ( getDvar( #"AD6C19FE" ) == "" ) + { + level.spawn_visibility_check_max = 20; + } + else + { + level.spawn_visibility_check_max = getDvarInt( #"AD6C19FE" ); + } + level.spawnprotectiontime = getgametypesetting( "spawnprotectiontime" ); +/# + setdvar( "scr_debug_spawn_player", "" ); + setdvar( "scr_debug_render_spawn_data", "1" ); + setdvar( "scr_debug_render_snapshotmode", "0" ); + setdvar( "scr_spawn_point_test_mode", "0" ); + level.test_spawn_point_index = 0; + setdvar( "scr_debug_render_spawn_text", "1" ); +#/ + return; +} + +default_gamemodespawndvars( reset_dvars ) +{ +} + +init_spawn_system() +{ + level.spawnsystem = spawnstruct(); + spawnsystem = level.spawnsystem; + level get_player_spawning_dvars( 1 ); + level thread initialize_player_spawning_dvars(); + spawnsystem.einfluencer_shape_sphere = 0; + spawnsystem.einfluencer_shape_cylinder = 1; + spawnsystem.einfluencer_type_normal = 0; + spawnsystem.einfluencer_type_player = 1; + spawnsystem.einfluencer_type_weapon = 2; + spawnsystem.einfluencer_type_dog = 3; + spawnsystem.einfluencer_type_vehicle = 4; + spawnsystem.einfluencer_type_game_mode = 6; + spawnsystem.einfluencer_type_enemy_spawned = 7; + spawnsystem.einfluencer_curve_constant = 0; + spawnsystem.einfluencer_curve_linear = 1; + spawnsystem.einfluencer_curve_steep = 2; + spawnsystem.einfluencer_curve_inverse_linear = 3; + spawnsystem.einfluencer_curve_negative_to_positive = 4; + spawnsystem.ispawn_teammask = []; + spawnsystem.ispawn_teammask_free = 1; + spawnsystem.ispawn_teammask[ "free" ] = spawnsystem.ispawn_teammask_free; + all = spawnsystem.ispawn_teammask_free; + count = 1; + _a146 = level.teams; + _k146 = getFirstArrayKey( _a146 ); + while ( isDefined( _k146 ) ) + { + team = _a146[ _k146 ]; + spawnsystem.ispawn_teammask[ team ] = 1 << count; + all |= spawnsystem.ispawn_teammask[ team ]; + count++; + _k146 = getNextArrayKey( _a146, _k146 ); + } + spawnsystem.ispawn_teammask[ "all" ] = all; +} + +onplayerconnect() +{ + level endon( "game_ended" ); + for ( ;; ) + { + level waittill( "connecting", player ); + player setentertime( getTime() ); + player thread onplayerspawned(); + player thread ondisconnect(); + player thread onteamchange(); + player thread ongrenadethrow(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + level endon( "game_ended" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread initialspawnprotection( "specialty_nottargetedbyairsupport", 1 ); + self thread initialspawnprotection( "specialty_nokillstreakreticle", 0 ); + self thread initialspawnprotection( "specialty_nottargettedbysentry", 0 ); + if ( isDefined( self.pers[ "hasRadar" ] ) && self.pers[ "hasRadar" ] ) + { + self.hasspyplane = 1; + } + self enable_player_influencers( 1 ); + self thread ondeath(); + } +} + +ondeath() +{ + self endon( "disconnect" ); + level endon( "game_ended" ); + self waittill( "death" ); + self enable_player_influencers( 0 ); + self create_body_influencers(); +} + +onteamchange() +{ + self endon( "disconnect" ); + level endon( "game_ended" ); + while ( 1 ) + { + self waittill( "joined_team" ); + self player_influencers_set_team(); + wait 0,05; + } +} + +ongrenadethrow() +{ + self endon( "disconnect" ); + level endon( "game_ended" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weaponname ); + level thread create_grenade_influencers( self.pers[ "team" ], weaponname, grenade ); + wait 0,05; + } +} + +ondisconnect() +{ + level endon( "game_ended" ); + self waittill( "disconnect" ); +} + +get_score_curve_index( curve ) +{ + switch( curve ) + { + case "linear": + return level.spawnsystem.einfluencer_curve_linear; + case "steep": + return level.spawnsystem.einfluencer_curve_steep; + case "inverse_linear": + return level.spawnsystem.einfluencer_curve_linear; + case "negative_to_positive": + return level.spawnsystem.einfluencer_curve_negative_to_positive; + case "constant": + default: + return level.spawnsystem.einfluencer_curve_constant; + } +} + +get_influencer_type_index( curve ) +{ +} + +create_player_influencers() +{ +/# + assert( !isDefined( self.influencer_enemy_sphere ) ); +#/ +/# + assert( !isDefined( self.influencer_weapon_cylinder ) ); +#/ +/# + if ( level.teambased ) + { + assert( !isDefined( self.influencer_friendly_sphere ) ); + } +#/ +/# + if ( level.teambased ) + { + assert( !isDefined( self.influencer_friendly_cylinder ) ); + } +#/ + if ( !level.teambased ) + { + team_mask = level.spawnsystem.ispawn_teammask_free; + other_team_mask = level.spawnsystem.ispawn_teammask_free; + weapon_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else if ( isDefined( self.pers[ "team" ] ) ) + { + team = self.pers[ "team" ]; + team_mask = getteammask( team ); + other_team_mask = getotherteamsmask( team ); + weapon_team_mask = getotherteamsmask( team ); + } + else + { + team_mask = 0; + other_team_mask = 0; + weapon_team_mask = 0; + } + if ( level.hardcoremode ) + { + weapon_team_mask |= team_mask; + } + angles = self.angles; + origin = self.origin; + up = ( 0, 0, 0 ); + forward = ( 0, 0, 0 ); + cylinder_forward = up; + cylinder_up = forward; + self.influencer_enemy_sphere = addsphereinfluencer( level.spawnsystem.einfluencer_type_player, origin, level.spawnsystem.enemy_influencer_radius, level.spawnsystem.enemy_influencer_score, other_team_mask, "enemy,r,s", get_score_curve_index( level.spawnsystem.enemy_influencer_score_curve ), 0, self ); + if ( level.teambased ) + { + cylinder_up = -1 * forward; + self.influencer_friendly_sphere = addsphereinfluencer( level.spawnsystem.einfluencer_type_player, origin, level.spawnsystem.friend_weak_influencer_radius, level.spawnsystem.friend_weak_influencer_score, team_mask, "friend_weak,r,s", get_score_curve_index( level.spawnsystem.friend_weak_influencer_score_curve ), 0, self ); + } + self.spawn_influencers_created = 1; + if ( !isDefined( self.pers[ "team" ] ) || self.pers[ "team" ] == "spectator" ) + { + self enable_player_influencers( 0 ); + } +} + +remove_player_influencers() +{ + if ( level.teambased && isDefined( self.influencer_friendly_sphere ) ) + { + removeinfluencer( self.influencer_friendly_sphere ); + self.influencer_friendly_sphere = undefined; + } + if ( level.teambased && isDefined( self.influencer_friendly_cylinder ) ) + { + removeinfluencer( self.influencer_friendly_cylinder ); + self.influencer_friendly_cylinder = undefined; + } + if ( isDefined( self.influencer_enemy_sphere ) ) + { + removeinfluencer( self.influencer_enemy_sphere ); + self.influencer_enemy_sphere = undefined; + } + if ( isDefined( self.influencer_weapon_cylinder ) ) + { + removeinfluencer( self.influencer_weapon_cylinder ); + self.influencer_weapon_cylinder = undefined; + } +} + +enable_player_influencers( enabled ) +{ + if ( !isDefined( self.spawn_influencers_created ) ) + { + self create_player_influencers(); + } + if ( isDefined( self.influencer_friendly_sphere ) ) + { + enableinfluencer( self.influencer_friendly_sphere, enabled ); + } + if ( isDefined( self.influencer_friendly_cylinder ) ) + { + enableinfluencer( self.influencer_friendly_cylinder, enabled ); + } + if ( isDefined( self.influencer_enemy_sphere ) ) + { + enableinfluencer( self.influencer_enemy_sphere, enabled ); + } + if ( isDefined( self.influencer_weapon_cylinder ) ) + { + enableinfluencer( self.influencer_weapon_cylinder, enabled ); + } +} + +player_influencers_set_team() +{ + if ( !level.teambased ) + { + team_mask = level.spawnsystem.ispawn_teammask_free; + other_team_mask = level.spawnsystem.ispawn_teammask_free; + weapon_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + team = self.pers[ "team" ]; + team_mask = getteammask( team ); + other_team_mask = getotherteamsmask( team ); + weapon_team_mask = getotherteamsmask( team ); + } + if ( level.friendlyfire != 0 && level.teambased ) + { + weapon_team_mask |= team_mask; + } + if ( isDefined( self.influencer_friendly_sphere ) ) + { + setinfluencerteammask( self.influencer_friendly_sphere, team_mask ); + } + if ( isDefined( self.influencer_friendly_cylinder ) ) + { + setinfluencerteammask( self.influencer_friendly_cylinder, team_mask ); + } + if ( isDefined( self.influencer_enemy_sphere ) ) + { + setinfluencerteammask( self.influencer_enemy_sphere, other_team_mask ); + } + if ( isDefined( self.influencer_weapon_cylinder ) ) + { + setinfluencerteammask( self.influencer_weapon_cylinder, weapon_team_mask ); + } +} + +create_body_influencers() +{ + if ( level.teambased ) + { + team_mask = getteammask( self.pers[ "team" ] ); + } + else + { + team_mask = level.spawnsystem.ispawn_teammask_free; + } + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, level.spawnsystem.dead_friend_influencer_radius, level.spawnsystem.dead_friend_influencer_score, team_mask, "dead_friend,r,s", get_score_curve_index( level.spawnsystem.dead_friend_influencer_score_curve ), level.spawnsystem.dead_friend_influencer_timeout_seconds ); +} + +create_grenade_influencers( parent_team, weaponname, grenade ) +{ + pixbeginevent( "create_grenade_influencers" ); + if ( !level.teambased ) + { + weapon_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + weapon_team_mask = getotherteamsmask( parent_team ); + if ( level.friendlyfire ) + { + weapon_team_mask |= getteammask( parent_team ); + } + } + if ( issubstr( weaponname, "napalmblob" ) || issubstr( weaponname, "gl_" ) ) + { + pixendevent(); + return; + } + timeout = 0; + if ( weaponname == "tabun_gas_mp" ) + { + timeout = 7; + } + if ( isDefined( grenade.origin ) ) + { + if ( weaponname == "claymore_mp" || weaponname == "bouncingbetty_mp" ) + { + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, grenade.origin, level.spawnsystem.claymore_influencer_radius, level.spawnsystem.claymore_influencer_score, weapon_team_mask, "claymore,r,s", get_score_curve_index( level.spawnsystem.claymore_influencer_score_curve ), timeout, grenade ); + } + else + { + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, grenade.origin, level.spawnsystem.grenade_influencer_radius, level.spawnsystem.grenade_influencer_score, weapon_team_mask, "grenade,r,s", get_score_curve_index( level.spawnsystem.grenade_influencer_score_curve ), timeout, grenade ); + } + } + pixendevent(); +} + +create_napalm_fire_influencers( point, direction, parent_team, duration ) +{ + timeout = duration; + weapon_team_mask = 0; + offset = vectorScale( anglesToForward( direction ), 1100 ); + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, point + ( 2 * offset ), level.spawnsystem.napalm_influencer_radius, level.spawnsystem.napalm_influencer_score, weapon_team_mask, "napalm,r,s", get_score_curve_index( level.spawnsystem.napalm_influencer_score_curve ), timeout ); + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, point + offset, level.spawnsystem.napalm_influencer_radius, level.spawnsystem.napalm_influencer_score, weapon_team_mask, "napalm,r,s", get_score_curve_index( level.spawnsystem.napalm_influencer_score_curve ), timeout ); + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, point, level.spawnsystem.napalm_influencer_radius, level.spawnsystem.napalm_influencer_score, weapon_team_mask, "napalm,r,s", get_score_curve_index( level.spawnsystem.napalm_influencer_score_curve ), timeout ); + addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, point - offset, level.spawnsystem.napalm_influencer_radius, level.spawnsystem.napalm_influencer_score, weapon_team_mask, "napalm,r,s", get_score_curve_index( level.spawnsystem.napalm_influencer_score_curve ), timeout ); +} + +create_auto_turret_influencer( point, parent_team, angles ) +{ + if ( !level.teambased ) + { + weapon_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + weapon_team_mask = getotherteamsmask( parent_team ); + } + projected_point = point + vectorScale( anglesToForward( angles ), level.spawnsystem.auto_turret_influencer_radius * 0,7 ); + influencerid = addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, projected_point, level.spawnsystem.auto_turret_influencer_radius, level.spawnsystem.auto_turret_influencer_score, weapon_team_mask, "auto_turret,r,s", get_score_curve_index( level.spawnsystem.auto_turret_influencer_score_curve ) ); + return influencerid; +} + +create_dog_influencers() +{ + if ( !level.teambased ) + { + dog_enemy_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + dog_enemy_team_mask = getotherteamsmask( self.aiteam ); + } + addsphereinfluencer( level.spawnsystem.einfluencer_type_dog, self.origin, level.spawnsystem.dog_influencer_radius, level.spawnsystem.dog_influencer_score, dog_enemy_team_mask, "dog,r,s", get_score_curve_index( level.spawnsystem.dog_influencer_score_curve ), 0, self ); +} + +create_helicopter_influencers( parent_team ) +{ + if ( !level.teambased ) + { + team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + team_mask = getotherteamsmask( parent_team ); + } + self.influencer_helicopter_cylinder = addcylinderinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, ( 0, 0, 0 ), ( 0, 0, 0 ), level.spawnsystem.helicopter_influencer_radius, level.spawnsystem.helicopter_influencer_length, level.spawnsystem.helicopter_influencer_score, team_mask, "helicopter,r,s", get_score_curve_index( level.spawnsystem.helicopter_influencer_score_curve ), 0, self ); +} + +remove_helicopter_influencers() +{ + if ( isDefined( self.influencer_helicopter_cylinder ) ) + { + removeinfluencer( self.influencer_helicopter_cylinder ); + } + self.influencer_helicopter_cylinder = undefined; +} + +create_tvmissile_influencers( parent_team ) +{ + if ( !level.teambased || is_hardcore() ) + { + team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + team_mask = getotherteamsmask( parent_team ); + } + self.influencer_tvmissile_cylinder = addcylinderinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, ( 0, 0, 0 ), ( 0, 0, 0 ), level.spawnsystem.tvmissile_influencer_radius, level.spawnsystem.tvmissile_influencer_length, level.spawnsystem.tvmissile_influencer_score, team_mask, "tvmissile,r,s", get_score_curve_index( level.spawnsystem.tvmissile_influencer_score_curve ), 0, self ); +} + +remove_tvmissile_influencers() +{ + if ( isDefined( self.influencer_tvmissile_cylinder ) ) + { + removeinfluencer( self.influencer_tvmissile_cylinder ); + } + self.influencer_tvmissile_cylinder = undefined; +} + +create_artillery_influencers( point, radius ) +{ + weapon_team_mask = 0; + if ( radius < 0 ) + { + thisradius = level.spawnsystem.artillery_influencer_radius; + } + else + { + thisradius = radius; + } + return addcylinderinfluencer( level.spawnsystem.einfluencer_type_normal, point + vectorScale( ( 0, 0, 0 ), 2000 ), ( 0, 0, 0 ), ( 0, 0, 0 ), thisradius, 5000, level.spawnsystem.artillery_influencer_score, weapon_team_mask, "artillery,s,r", get_score_curve_index( level.spawnsystem.artillery_influencer_score_curve ), 7 ); +} + +create_vehicle_influencers() +{ + weapon_team_mask = 0; + vehicleradius = 144; + cylinderlength = level.spawnsystem.vehicle_influencer_lead_seconds; + up = ( 0, 0, 0 ); + forward = ( 0, 0, 0 ); + cylinder_forward = up; + cylinder_up = forward; + return addcylinderinfluencer( level.spawnsystem.einfluencer_type_vehicle, self.origin, cylinder_forward, cylinder_up, vehicleradius, cylinderlength, level.spawnsystem.vehicle_influencer_score, weapon_team_mask, "vehicle,s", get_score_curve_index( level.spawnsystem.vehicle_influencer_score_curve ), 0, self ); +} + +create_rcbomb_influencers( team ) +{ + if ( !level.teambased ) + { + other_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + other_team_mask = getotherteamsmask( team ); + } + return addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, level.spawnsystem.rcbomb_influencer_radius, level.spawnsystem.rcbomb_influencer_score, other_team_mask, "rcbomb,r,s", get_score_curve_index( level.spawnsystem.rcbomb_influencer_score_curve ), 0, self ); +} + +create_qrdrone_influencers( team ) +{ + if ( !level.teambased ) + { + other_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + other_team_mask = getotherteamsmask( team ); + } + self.influencer_qrdrone_cylinder = addcylinderinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, ( 0, 0, 0 ), ( 0, 0, 0 ), level.spawnsystem.qrdrone_cylinder_influencer_radius, level.spawnsystem.qrdrone_cylinder_influencer_length, level.spawnsystem.qrdrone_cylinder_influencer_score, other_team_mask, "qrdrone_cyl,r,s", get_score_curve_index( level.spawnsystem.qrdrone_cylinder_influencer_score_curve ), 0, self ); + return addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, level.spawnsystem.qrdrone_influencer_radius, level.spawnsystem.qrdrone_influencer_score, other_team_mask, "qrdrone,r,s", get_score_curve_index( level.spawnsystem.qrdrone_influencer_score_curve ), 0, self ); +} + +create_aitank_influencers( team ) +{ + if ( !level.teambased ) + { + other_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + other_team_mask = getotherteamsmask( team ); + } + return addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, self.origin, level.spawnsystem.aitank_influencer_radius, level.spawnsystem.aitank_influencer_score, other_team_mask, "aitank,r,s", get_score_curve_index( level.spawnsystem.aitank_influencer_score_curve ), 0, self ); +} + +create_pegasus_influencer( origin, team ) +{ + if ( !level.teambased ) + { + other_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + other_team_mask = getotherteamsmask( team ); + } + return addsphereinfluencer( level.spawnsystem.einfluencer_type_normal, origin, level.spawnsystem.pegasus_influencer_radius, level.spawnsystem.pegasus_influencer_score, other_team_mask, "pegasus,r,s", get_score_curve_index( level.spawnsystem.pegasus_influencer_score_curve ), 0 ); +} + +create_map_placed_influencers() +{ + staticinfluencerents = getentarray( "mp_uspawn_influencer", "classname" ); + i = 0; + while ( i < staticinfluencerents.size ) + { + staticinfluencerent = staticinfluencerents[ i ]; + if ( isDefined( staticinfluencerent.script_gameobjectname ) && staticinfluencerent.script_gameobjectname == "twar" ) + { + i++; + continue; + } + else + { + create_map_placed_influencer( staticinfluencerent ); + } + i++; + } +} + +create_map_placed_influencer( influencer_entity, optional_score_override ) +{ + influencer_id = -1; + if ( isDefined( influencer_entity.script_shape ) && isDefined( influencer_entity.script_score ) && isDefined( influencer_entity.script_score_curve ) ) + { + switch( influencer_entity.script_shape ) + { + case "sphere": + if ( isDefined( influencer_entity.radius ) ) + { + if ( isDefined( optional_score_override ) ) + { + score = optional_score_override; + } + else + { + score = influencer_entity.script_score; + } + influencer_id = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, influencer_entity.origin, influencer_entity.radius, score, getteammask( influencer_entity.script_team ), "*map_defined", get_score_curve_index( influencer_entity.script_score_curve ) ); + } + else + { +/# + assertmsg( "Radiant-placed sphere spawn influencers require 'radius' parameter" ); +#/ + } + break; + case "cylinder": + if ( isDefined( influencer_entity.radius ) && isDefined( influencer_entity.height ) ) + { + if ( isDefined( optional_score_override ) ) + { + score = optional_score_override; + } + else + { + score = influencer_entity.script_score; + } + influencer_id = addcylinderinfluencer( level.spawnsystem.einfluencer_type_game_mode, influencer_entity.origin, anglesToForward( influencer_entity.angles ), anglesToUp( influencer_entity.angles ), influencer_entity.radius, influencer_entity.height, score, getteammask( influencer_entity.script_team ), "*map_defined", get_score_curve_index( influencer_entity.script_score_curve ) ); + } + else + { +/# + assertmsg( "Radiant-placed cylinder spawn influencers require 'radius' and 'height' parameters" ); +#/ + } + break; + default: +/# + assertmsg( "Unsupported script_shape value ("" + influencer_entity.script_shape + "") for unified spawning system static influencer. Supported shapes are "cylinder" and "sphere"." ); +#/ + break; + } + } + else + { +/# + assertmsg( "Radiant-placed spawn influencers require 'script_shape', 'script_score' and 'script_score_curve' parameters" ); +#/ + } + return influencer_id; +} + +create_enemy_spawned_influencers( origin, team ) +{ + if ( !level.teambased ) + { + other_team_mask = level.spawnsystem.ispawn_teammask_free; + } + else + { + other_team_mask = getotherteamsmask( team ); + } + return addsphereinfluencer( level.spawnsystem.einfluencer_type_enemy_spawned, origin, level.spawnsystem.enemy_spawned_influencer_radius, level.spawnsystem.enemy_spawned_influencer_score, other_team_mask, "enemy_spawned,r,s", get_score_curve_index( level.spawnsystem.enemy_spawned_influencer_score_curve ), 7 ); +} + +updateallspawnpoints() +{ + _a1046 = level.teams; + _k1046 = getFirstArrayKey( _a1046 ); + while ( isDefined( _k1046 ) ) + { + team = _a1046[ _k1046 ]; + gatherspawnentities( team ); + _k1046 = getNextArrayKey( _a1046, _k1046 ); + } + clearspawnpoints(); + if ( level.teambased ) + { + _a1055 = level.teams; + _k1055 = getFirstArrayKey( _a1055 ); + while ( isDefined( _k1055 ) ) + { + team = _a1055[ _k1055 ]; + addspawnpoints( team, level.unified_spawn_points[ team ].a ); + _k1055 = getNextArrayKey( _a1055, _k1055 ); + } + } + else _a1062 = level.teams; + _k1062 = getFirstArrayKey( _a1062 ); + while ( isDefined( _k1062 ) ) + { + team = _a1062[ _k1062 ]; + addspawnpoints( "free", level.unified_spawn_points[ team ].a ); + _k1062 = getNextArrayKey( _a1062, _k1062 ); + } + remove_unused_spawn_entities(); +} + +initialize_player_spawning_dvars() +{ +/# + reset_dvars = 1; + while ( 1 ) + { + get_player_spawning_dvars( reset_dvars ); + reset_dvars = 0; + wait 2; +#/ + } +} + +get_player_spawning_dvars( reset_dvars ) +{ + k_player_height = get_player_height(); + player_height_times_10 = "" + ( 10 * k_player_height ); + ss = level.spawnsystem; + player_influencer_radius = 15 * k_player_height; + player_influencer_score = 150; + dog_influencer_radius = 10 * k_player_height; + dog_influencer_score = 150; + ss.script_based_influencer_system = set_dvar_int_if_unset( "scr_script_based_influencer_system", "0", reset_dvars ); + ss.randomness_range = set_dvar_float_if_unset( "scr_spawn_randomness_range", "10", reset_dvars ); + ss.objective_facing_bonus = set_dvar_float_if_unset( "scr_spawn_objective_facing_bonus", "50", reset_dvars ); + ss.friend_weak_influencer_score = set_dvar_float_if_unset( "scr_spawn_friend_weak_influencer_score", "10", reset_dvars ); + ss.friend_weak_influencer_score_curve = set_dvar_if_unset( "scr_spawn_friend_weak_influencer_score_curve", "steep", reset_dvars ); + ss.friend_weak_influencer_radius = set_dvar_float_if_unset( "scr_spawn_friend_weak_influencer_radius", player_height_times_10, reset_dvars ); + ss.enemy_influencer_score = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_score", "-150", reset_dvars ); + ss.enemy_influencer_score_curve = set_dvar_if_unset( "scr_spawn_enemy_influencer_score_curve", "steep", reset_dvars ); + ss.enemy_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_influencer_radius", "2600", reset_dvars ); + ss.dead_friend_influencer_timeout_seconds = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_timeout_seconds", "15", reset_dvars ); + ss.dead_friend_influencer_count = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_count", "7", reset_dvars ); + ss.dead_friend_influencer_score = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_score", "-100", reset_dvars ); + ss.dead_friend_influencer_score_curve = set_dvar_if_unset( "scr_spawn_dead_friend_influencer_score_curve", "steep", reset_dvars ); + ss.dead_friend_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dead_friend_influencer_radius", player_height_times_10, reset_dvars ); + ss.vehicle_influencer_score = set_dvar_float_if_unset( "scr_spawn_vehicle_influencer_score", "-50", reset_dvars ); + ss.vehicle_influencer_score_curve = set_dvar_if_unset( "scr_spawn_vehicle_influencer_score_curve", "linear", reset_dvars ); + ss.vehicle_influencer_lead_seconds = set_dvar_float_if_unset( "scr_spawn_vehicle_influencer_lead_seconds", "3", reset_dvars ); + ss.dog_influencer_score = set_dvar_float_if_unset( "scr_spawn_dog_influencer_score", "-150", reset_dvars ); + ss.dog_influencer_score_curve = set_dvar_if_unset( "scr_spawn_dog_influencer_score_curve", "steep", reset_dvars ); + ss.dog_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dog_influencer_radius", "" + ( 15 * k_player_height ), reset_dvars ); + ss.artillery_influencer_score = set_dvar_float_if_unset( "scr_spawn_artillery_influencer_score", "-600", reset_dvars ); + ss.artillery_influencer_score_curve = set_dvar_if_unset( "scr_spawn_artillery_influencer_score_curve", "linear", reset_dvars ); + ss.artillery_influencer_radius = set_dvar_float_if_unset( "scr_spawn_artillery_influencer_radius", "1200", reset_dvars ); + ss.grenade_influencer_score = set_dvar_float_if_unset( "scr_spawn_grenade_influencer_score", "-300", reset_dvars ); + ss.grenade_influencer_score_curve = set_dvar_if_unset( "scr_spawn_grenade_influencer_score_curve", "linear", reset_dvars ); + ss.grenade_influencer_radius = set_dvar_float_if_unset( "scr_spawn_grenade_influencer_radius", "" + ( 8 * k_player_height ), reset_dvars ); + ss.grenade_endpoint_influencer_score = set_dvar_float_if_unset( "scr_spawn_grenade_endpoint_influencer_score", "-300", reset_dvars ); + ss.grenade_endpoint_influencer_score_curve = set_dvar_if_unset( "scr_spawn_grenade_endpoint_influencer_score_curve", "linear", reset_dvars ); + ss.grenade_endpoint_influencer_radius = set_dvar_float_if_unset( "scr_spawn_grenade_endpoint_influencer_radius", "" + ( 8 * k_player_height ), reset_dvars ); + ss.claymore_influencer_score = set_dvar_float_if_unset( "scr_spawn_claymore_influencer_score", "-150", reset_dvars ); + ss.claymore_influencer_score_curve = set_dvar_if_unset( "scr_spawn_claymore_influencer_score_curve", "steep", reset_dvars ); + ss.claymore_influencer_radius = set_dvar_float_if_unset( "scr_spawn_claymore_influencer_radius", "" + ( 9 * k_player_height ), reset_dvars ); + ss.napalm_influencer_score = set_dvar_float_if_unset( "scr_spawn_napalm_influencer_score", "-500", reset_dvars ); + ss.napalm_influencer_score_curve = set_dvar_if_unset( "scr_spawn_napalm_influencer_score_curve", "linear", reset_dvars ); + ss.napalm_influencer_radius = set_dvar_float_if_unset( "scr_spawn_napalm_influencer_radius", "" + 750, reset_dvars ); + ss.auto_turret_influencer_score = set_dvar_float_if_unset( "scr_spawn_auto_turret_influencer_score", "-650", reset_dvars ); + ss.auto_turret_influencer_score_curve = set_dvar_if_unset( "scr_spawn_auto_turret_influencer_score_curve", "linear", reset_dvars ); + ss.auto_turret_influencer_radius = set_dvar_float_if_unset( "scr_spawn_auto_turret_influencer_radius", "" + 1200, reset_dvars ); + ss.rcbomb_influencer_score = set_dvar_float_if_unset( "scr_spawn_rcbomb_influencer_score", "-200", reset_dvars ); + ss.rcbomb_influencer_score_curve = set_dvar_if_unset( "scr_spawn_rcbomb_influencer_score_curve", "steep", reset_dvars ); + ss.rcbomb_influencer_radius = set_dvar_float_if_unset( "scr_spawn_rcbomb_influencer_radius", "" + ( 25 * k_player_height ), reset_dvars ); + ss.qrdrone_influencer_score = set_dvar_float_if_unset( "scr_spawn_qrdrone_influencer_score", "-200", reset_dvars ); + ss.qrdrone_influencer_score_curve = set_dvar_if_unset( "scr_spawn_qrdrone_influencer_score_curve", "steep", reset_dvars ); + ss.qrdrone_influencer_radius = set_dvar_float_if_unset( "scr_spawn_qrdrone_influencer_radius", "" + ( 25 * k_player_height ), reset_dvars ); + ss.qrdrone_cylinder_influencer_score = set_dvar_float_if_unset( "scr_spawn_qrdrone_cylinder_influencer_score", "-300", reset_dvars ); + ss.qrdrone_cylinder_influencer_score_curve = set_dvar_if_unset( "scr_spawn_qrdrone_cylinder_influencer_score_curve", "linear", reset_dvars ); + ss.qrdrone_cylinder_influencer_radius = set_dvar_float_if_unset( "scr_spawn_qrdrone_cylinder_influencer_radius", 1000, reset_dvars ); + ss.qrdrone_cylinder_influencer_length = set_dvar_float_if_unset( "scr_spawn_qrdrone_cylinder_influencer_length", 2000, reset_dvars ); + ss.aitank_influencer_score = set_dvar_float_if_unset( "scr_spawn_aitank_influencer_score", "-200", reset_dvars ); + ss.aitank_influencer_score_curve = set_dvar_if_unset( "scr_spawn_aitank_influencer_score_curve", "linear", reset_dvars ); + ss.aitank_influencer_radius = set_dvar_float_if_unset( "scr_spawn_aitank_influencer_radius", "" + ( 25 * k_player_height ), reset_dvars ); + ss.enemy_spawned_influencer_score_curve = set_dvar_if_unset( "scr_spawn_enemy_spawned_influencer_score_curve", "constant", reset_dvars ); + if ( level.teambased ) + { + ss.enemy_spawned_influencer_score = set_dvar_float_if_unset( "scr_spawn_enemy_spawned_influencer_score", "-200", reset_dvars ); + ss.enemy_spawned_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_spawned_influencer_radius", "" + 1100, reset_dvars ); + } + else + { + ss.enemy_spawned_influencer_score = set_dvar_float_if_unset( "scr_spawn_enemy_spawned_influencer_score", "-100", reset_dvars ); + ss.enemy_spawned_influencer_radius = set_dvar_float_if_unset( "scr_spawn_enemy_spawned_influencer_radius", "" + 400, reset_dvars ); + } + ss.helicopter_influencer_score = set_dvar_float_if_unset( "scr_spawn_helicopter_influencer_score", "-500", reset_dvars ); + ss.helicopter_influencer_score_curve = set_dvar_if_unset( "scr_spawn_helicopter_influencer_score_curve", "linear", reset_dvars ); + ss.helicopter_influencer_radius = set_dvar_float_if_unset( "scr_spawn_helicopter_influencer_radius", "" + 2000, reset_dvars ); + ss.helicopter_influencer_length = set_dvar_float_if_unset( "scr_spawn_helicopter_influencer_length", "" + 3500, reset_dvars ); + ss.tvmissile_influencer_score = set_dvar_float_if_unset( "scr_spawn_tvmissile_influencer_score", "-400", reset_dvars ); + ss.tvmissile_influencer_score_curve = set_dvar_if_unset( "scr_spawn_tvmissile_influencer_score_curve", "linear", reset_dvars ); + ss.tvmissile_influencer_radius = set_dvar_float_if_unset( "scr_spawn_tvmissile_influencer_radius", "" + 2000, reset_dvars ); + ss.tvmissile_influencer_length = set_dvar_float_if_unset( "scr_spawn_tvmissile_influencer_length", "" + 3000, reset_dvars ); + ss.pegasus_influencer_score = set_dvar_float_if_unset( "scr_spawn_pegasus_influencer_score", "-250", reset_dvars ); + ss.pegasus_influencer_score_curve = set_dvar_if_unset( "scr_spawn_pegasus_influencer_score_curve", "linear", reset_dvars ); + ss.pegasus_influencer_radius = set_dvar_float_if_unset( "scr_spawn_pegasus_influencer_radius", "" + ( 20 * k_player_height ), reset_dvars ); + if ( !isDefined( ss.unifiedsideswitching ) ) + { + ss.unifiedsideswitching = 1; + } + set_dvar_int_if_unset( "spawnsystem_allow_non_team_spawns", "0", reset_dvars ); + [[ level.gamemodespawndvars ]]( reset_dvars ); + if ( isDefined( level.levelspawndvars ) ) + { + [[ level.levelspawndvars ]]( reset_dvars ); + } + setspawnpointrandomvariation( ss.randomness_range ); +} + +level_use_unified_spawning( use ) +{ +} + +onspawnplayer_unified( predictedspawn ) +{ + if ( !isDefined( predictedspawn ) ) + { + predictedspawn = 0; + } +/# + if ( getDvarInt( "scr_spawn_point_test_mode" ) != 0 ) + { + spawn_point = get_debug_spawnpoint( self ); + self spawn( spawn_point.origin, spawn_point.angles ); + return; +#/ + } + use_new_spawn_system = 0; + initial_spawn = 1; + if ( isDefined( self.uspawn_already_spawned ) ) + { + initial_spawn = !self.uspawn_already_spawned; + } + if ( level.usestartspawns ) + { + use_new_spawn_system = 0; + } + if ( level.gametype == "sd" ) + { + use_new_spawn_system = 0; + } + set_dvar_if_unset( "scr_spawn_force_unified", "0" ); + [[ level.onspawnplayer ]]( predictedspawn ); + if ( !predictedspawn ) + { + self.uspawn_already_spawned = 1; + } + return; +} + +getspawnpoint( player_entity, predictedspawn ) +{ + if ( !isDefined( predictedspawn ) ) + { + predictedspawn = 0; + } + if ( level.teambased ) + { + point_team = player_entity.pers[ "team" ]; + influencer_team = player_entity.pers[ "team" ]; + } + else + { + point_team = "free"; + influencer_team = "free"; + } + if ( level.teambased && isDefined( game[ "switchedsides" ] ) && game[ "switchedsides" ] && level.spawnsystem.unifiedsideswitching ) + { + point_team = getotherteam( point_team ); + } + best_spawn_entity = get_best_spawnpoint( point_team, influencer_team, player_entity, predictedspawn ); + if ( !predictedspawn ) + { + player_entity.last_spawn_origin = best_spawn_entity.origin; + } + return best_spawn_entity; +} + +get_debug_spawnpoint( player ) +{ + if ( level.teambased ) + { + team = player.pers[ "team" ]; + } + else + { + team = "free"; + } + index = level.test_spawn_point_index; + level.test_spawn_point_index++; + if ( team == "free" ) + { + spawn_counts = 0; + _a1409 = level.teams; + _k1409 = getFirstArrayKey( _a1409 ); + while ( isDefined( _k1409 ) ) + { + team = _a1409[ _k1409 ]; + spawn_counts += level.unified_spawn_points[ team ].a.size; + _k1409 = getNextArrayKey( _a1409, _k1409 ); + } + if ( level.test_spawn_point_index >= spawn_counts ) + { + level.test_spawn_point_index = 0; + } + count = 0; + _a1420 = level.teams; + _k1420 = getFirstArrayKey( _a1420 ); + while ( isDefined( _k1420 ) ) + { + team = _a1420[ _k1420 ]; + size = level.unified_spawn_points[ team ].a.size; + if ( level.test_spawn_point_index < ( count + size ) ) + { + return level.unified_spawn_points[ team ].a[ level.test_spawn_point_index - count ]; + } + count += size; + _k1420 = getNextArrayKey( _a1420, _k1420 ); + } + } + else if ( level.test_spawn_point_index >= level.unified_spawn_points[ team ].a.size ) + { + level.test_spawn_point_index = 0; + } + return level.unified_spawn_points[ team ].a[ level.test_spawn_point_index ]; +} + +get_best_spawnpoint( point_team, influencer_team, player, predictedspawn ) +{ + if ( level.teambased ) + { + vis_team_mask = getotherteamsmask( player.pers[ "team" ] ); + } + else + { + vis_team_mask = level.spawnsystem.ispawn_teammask_free; + } + scored_spawn_points = getsortedspawnpoints( point_team, influencer_team, vis_team_mask, player, predictedspawn ); +/# + assert( scored_spawn_points.size > 0 ); +#/ +/# + assert( scored_spawn_points.size == 1 ); +#/ + if ( !predictedspawn ) + { + bbprint( "mpspawnpointsused", "reason %s x %d y %d z %d", "point used", scored_spawn_points[ 0 ].origin ); + } + return scored_spawn_points[ 0 ]; +} + +gatherspawnentities( player_team ) +{ + if ( !isDefined( level.unified_spawn_points ) ) + { + level.unified_spawn_points = []; + } + else + { + if ( isDefined( level.unified_spawn_points[ player_team ] ) ) + { + return level.unified_spawn_points[ player_team ]; + } + } + spawn_entities_s = spawn_array_struct(); + spawn_entities_s.a = getentarray( "mp_uspawn_point", "classname" ); + if ( !isDefined( spawn_entities_s.a ) ) + { + spawn_entities_s.a = []; + } + legacy_spawn_points = maps/mp/gametypes_zm/_spawnlogic::getteamspawnpoints( player_team ); + legacy_spawn_index = 0; + while ( legacy_spawn_index < legacy_spawn_points.size ) + { + spawn_entities_s.a[ spawn_entities_s.a.size ] = legacy_spawn_points[ legacy_spawn_index ]; + legacy_spawn_index++; + } + level.unified_spawn_points[ player_team ] = spawn_entities_s; + return spawn_entities_s; +} + +is_hardcore() +{ + if ( isDefined( level.hardcoremode ) ) + { + return level.hardcoremode; + } +} + +teams_have_enmity( team1, team2 ) +{ + if ( isDefined( team1 ) || !isDefined( team2 ) && level.gametype == "dm" ) + { + return 1; + } + if ( team1 != "neutral" && team2 != "neutral" ) + { + return team1 != team2; + } +} + +remove_unused_spawn_entities() +{ + spawn_entity_types = []; + spawn_entity_types[ spawn_entity_types.size ] = "mp_dm_spawn"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_tdm_spawn_allies_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_tdm_spawn_axis_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_tdm_spawn"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_ctf_spawn_allies_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_ctf_spawn_axis_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_ctf_spawn_allies"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_ctf_spawn_axis"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_dom_spawn_allies_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_dom_spawn_axis_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_dom_spawn"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_sab_spawn_allies_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_sab_spawn_axis_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_sab_spawn_allies"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_sab_spawn_axis"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_sd_spawn_attacker"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_sd_spawn_defender"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_twar_spawn_axis_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_twar_spawn_allies_start"; + spawn_entity_types[ spawn_entity_types.size ] = "mp_twar_spawn"; + i = 0; + while ( i < spawn_entity_types.size ) + { + if ( spawn_point_class_name_being_used( spawn_entity_types[ i ] ) ) + { + i++; + continue; + } + else + { + spawnpoints = maps/mp/gametypes_zm/_spawnlogic::getspawnpointarray( spawn_entity_types[ i ] ); + delete_all_spawns( spawnpoints ); + } + i++; + } +} + +delete_all_spawns( spawnpoints ) +{ + i = 0; + while ( i < spawnpoints.size ) + { + spawnpoints[ i ] delete(); + i++; + } +} + +spawn_point_class_name_being_used( name ) +{ + if ( !isDefined( level.spawn_point_class_names ) ) + { + return 0; + } + i = 0; + while ( i < level.spawn_point_class_names.size ) + { + if ( level.spawn_point_class_names[ i ] == name ) + { + return 1; + } + i++; + } + return 0; +} + +codecallback_updatespawnpoints() +{ + _a1624 = level.teams; + _k1624 = getFirstArrayKey( _a1624 ); + while ( isDefined( _k1624 ) ) + { + team = _a1624[ _k1624 ]; + maps/mp/gametypes_zm/_spawnlogic::rebuildspawnpoints( team ); + _k1624 = getNextArrayKey( _a1624, _k1624 ); + } + level.unified_spawn_points = undefined; + updateallspawnpoints(); +} + +initialspawnprotection( specialtyname, spawnmonitorspeed ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( level.spawnprotectiontime ) || level.spawnprotectiontime == 0 ) + { + return; + } + if ( specialtyname == "specialty_nottargetedbyairsupport" ) + { + self.specialty_nottargetedbyairsupport = 1; + wait level.spawnprotectiontime; + self.specialty_nottargetedbyairsupport = undefined; + } + else + { + if ( !self hasperk( specialtyname ) ) + { + self setperk( specialtyname ); + wait level.spawnprotectiontime; + self unsetperk( specialtyname ); + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_spawnlogic.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_spawnlogic.gsc new file mode 100644 index 0000000..ba21d0f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_spawnlogic.gsc @@ -0,0 +1,2496 @@ +#include maps/mp/gametypes_zm/_spawnlogic; +#include maps/mp/gametypes_zm/_gameobjects; +#include maps/mp/gametypes_zm/_callbacksetup; +#include maps/mp/_utility; +#include common_scripts/utility; + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connected", player ); + } +} + +findboxcenter( mins, maxs ) +{ + center = ( -1, -1, -1 ); + center = maxs - mins; + center = ( center[ 0 ] / 2, center[ 1 ] / 2, center[ 2 ] / 2 ) + mins; + return center; +} + +expandmins( mins, point ) +{ + if ( mins[ 0 ] > point[ 0 ] ) + { + mins = ( point[ 0 ], mins[ 1 ], mins[ 2 ] ); + } + if ( mins[ 1 ] > point[ 1 ] ) + { + mins = ( mins[ 0 ], point[ 1 ], mins[ 2 ] ); + } + if ( mins[ 2 ] > point[ 2 ] ) + { + mins = ( mins[ 0 ], mins[ 1 ], point[ 2 ] ); + } + return mins; +} + +expandmaxs( maxs, point ) +{ + if ( maxs[ 0 ] < point[ 0 ] ) + { + maxs = ( point[ 0 ], maxs[ 1 ], maxs[ 2 ] ); + } + if ( maxs[ 1 ] < point[ 1 ] ) + { + maxs = ( maxs[ 0 ], point[ 1 ], maxs[ 2 ] ); + } + if ( maxs[ 2 ] < point[ 2 ] ) + { + maxs = ( maxs[ 0 ], maxs[ 1 ], point[ 2 ] ); + } + return maxs; +} + +addspawnpointsinternal( team, spawnpointname ) +{ + oldspawnpoints = []; + if ( level.teamspawnpoints[ team ].size ) + { + oldspawnpoints = level.teamspawnpoints[ team ]; + } + level.teamspawnpoints[ team ] = getspawnpointarray( spawnpointname ); + if ( !isDefined( level.spawnpoints ) ) + { + level.spawnpoints = []; + } + index = 0; + while ( index < level.teamspawnpoints[ team ].size ) + { + spawnpoint = level.teamspawnpoints[ team ][ index ]; + if ( !isDefined( spawnpoint.inited ) ) + { + spawnpoint spawnpointinit(); + level.spawnpoints[ level.spawnpoints.size ] = spawnpoint; + } + index++; + } + index = 0; + while ( index < oldspawnpoints.size ) + { + origin = oldspawnpoints[ index ].origin; + level.spawnmins = expandmins( level.spawnmins, origin ); + level.spawnmaxs = expandmaxs( level.spawnmaxs, origin ); + level.teamspawnpoints[ team ][ level.teamspawnpoints[ team ].size ] = oldspawnpoints[ index ]; + index++; + } + if ( !level.teamspawnpoints[ team ].size ) + { +/# + println( "^1ERROR: No " + spawnpointname + " spawnpoints found in level!" ); +#/ + maps/mp/gametypes_zm/_callbacksetup::abortlevel(); + wait 1; + return; + } +} + +clearspawnpoints() +{ + _a87 = level.teams; + _k87 = getFirstArrayKey( _a87 ); + while ( isDefined( _k87 ) ) + { + team = _a87[ _k87 ]; + level.teamspawnpoints[ team ] = []; + _k87 = getNextArrayKey( _a87, _k87 ); + } + level.spawnpoints = []; + level.unified_spawn_points = undefined; +} + +addspawnpoints( team, spawnpointname ) +{ + addspawnpointclassname( spawnpointname ); + addspawnpointteamclassname( team, spawnpointname ); + addspawnpointsinternal( team, spawnpointname ); +} + +rebuildspawnpoints( team ) +{ + level.teamspawnpoints[ team ] = []; + index = 0; + while ( index < level.spawn_point_team_class_names[ team ].size ) + { + addspawnpointsinternal( team, level.spawn_point_team_class_names[ team ][ index ] ); + index++; + } +} + +placespawnpoints( spawnpointname ) +{ + addspawnpointclassname( spawnpointname ); + spawnpoints = getspawnpointarray( spawnpointname ); +/# + if ( !isDefined( level.extraspawnpointsused ) ) + { + level.extraspawnpointsused = []; +#/ + } + if ( !spawnpoints.size ) + { +/# + println( "^1No " + spawnpointname + " spawnpoints found in level!" ); +#/ + maps/mp/gametypes_zm/_callbacksetup::abortlevel(); + wait 1; + return; + } + index = 0; + while ( index < spawnpoints.size ) + { + spawnpoints[ index ] spawnpointinit(); +/# + spawnpoints[ index ].fakeclassname = spawnpointname; + level.extraspawnpointsused[ level.extraspawnpointsused.size ] = spawnpoints[ index ]; +#/ + index++; + } +} + +dropspawnpoints( spawnpointname ) +{ + spawnpoints = getspawnpointarray( spawnpointname ); + if ( !spawnpoints.size ) + { +/# + println( "^1No " + spawnpointname + " spawnpoints found in level!" ); +#/ + return; + } + index = 0; + while ( index < spawnpoints.size ) + { + spawnpoints[ index ] placespawnpoint(); + index++; + } +} + +addspawnpointclassname( spawnpointclassname ) +{ + if ( !isDefined( level.spawn_point_class_names ) ) + { + level.spawn_point_class_names = []; + } + level.spawn_point_class_names[ level.spawn_point_class_names.size ] = spawnpointclassname; +} + +addspawnpointteamclassname( team, spawnpointclassname ) +{ + level.spawn_point_team_class_names[ team ][ level.spawn_point_team_class_names[ team ].size ] = spawnpointclassname; +} + +getspawnpointarray( classname ) +{ + spawnpoints = getentarray( classname, "classname" ); + if ( !isDefined( level.extraspawnpoints ) || !isDefined( level.extraspawnpoints[ classname ] ) ) + { + return spawnpoints; + } + i = 0; + while ( i < level.extraspawnpoints[ classname ].size ) + { + spawnpoints[ spawnpoints.size ] = level.extraspawnpoints[ classname ][ i ]; + i++; + } + return spawnpoints; +} + +spawnpointinit() +{ + spawnpoint = self; + origin = spawnpoint.origin; + if ( !level.spawnminsmaxsprimed ) + { + level.spawnmins = origin; + level.spawnmaxs = origin; + level.spawnminsmaxsprimed = 1; + } + else + { + level.spawnmins = expandmins( level.spawnmins, origin ); + level.spawnmaxs = expandmaxs( level.spawnmaxs, origin ); + } + spawnpoint placespawnpoint(); + spawnpoint.forward = anglesToForward( spawnpoint.angles ); + spawnpoint.sighttracepoint = spawnpoint.origin + vectorScale( ( -1, -1, -1 ), 50 ); + spawnpoint.inited = 1; +} + +getteamspawnpoints( team ) +{ + return level.teamspawnpoints[ team ]; +} + +getspawnpoint_final( spawnpoints, useweights ) +{ + bestspawnpoint = undefined; + if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 ) + { + return undefined; + } + if ( !isDefined( useweights ) ) + { + useweights = 1; + } + if ( useweights ) + { + bestspawnpoint = getbestweightedspawnpoint( spawnpoints ); + thread spawnweightdebug( spawnpoints ); + } + else i = 0; + while ( i < spawnpoints.size ) + { + if ( isDefined( self.lastspawnpoint ) && self.lastspawnpoint == spawnpoints[ i ] ) + { + i++; + continue; + } + else + { + if ( positionwouldtelefrag( spawnpoints[ i ].origin ) ) + { + i++; + continue; + } + else + { + bestspawnpoint = spawnpoints[ i ]; + break; + } + } + i++; + } + while ( !isDefined( bestspawnpoint ) ) + { + while ( isDefined( self.lastspawnpoint ) && !positionwouldtelefrag( self.lastspawnpoint.origin ) ) + { + i = 0; + while ( i < spawnpoints.size ) + { + if ( spawnpoints[ i ] == self.lastspawnpoint ) + { + bestspawnpoint = spawnpoints[ i ]; + break; + } + else + { + i++; + } + } + } + } + if ( !isDefined( bestspawnpoint ) ) + { + if ( useweights ) + { + bestspawnpoint = spawnpoints[ randomint( spawnpoints.size ) ]; + } + else + { + bestspawnpoint = spawnpoints[ 0 ]; + } + } + self finalizespawnpointchoice( bestspawnpoint ); +/# + self storespawndata( spawnpoints, useweights, bestspawnpoint ); +#/ + return bestspawnpoint; +} + +finalizespawnpointchoice( spawnpoint ) +{ + time = getTime(); + self.lastspawnpoint = spawnpoint; + self.lastspawntime = time; + spawnpoint.lastspawnedplayer = self; + spawnpoint.lastspawntime = time; +} + +getbestweightedspawnpoint( spawnpoints ) +{ + maxsighttracedspawnpoints = 3; + try = 0; + while ( try <= maxsighttracedspawnpoints ) + { + bestspawnpoints = []; + bestweight = undefined; + bestspawnpoint = undefined; + i = 0; + while ( i < spawnpoints.size ) + { + if ( !isDefined( bestweight ) || spawnpoints[ i ].weight > bestweight ) + { + if ( positionwouldtelefrag( spawnpoints[ i ].origin ) ) + { + i++; + continue; + } + else bestspawnpoints = []; + bestspawnpoints[ 0 ] = spawnpoints[ i ]; + bestweight = spawnpoints[ i ].weight; + i++; + continue; + } + else + { + if ( spawnpoints[ i ].weight == bestweight ) + { + if ( positionwouldtelefrag( spawnpoints[ i ].origin ) ) + { + i++; + continue; + } + else + { + bestspawnpoints[ bestspawnpoints.size ] = spawnpoints[ i ]; + } + } + } + i++; + } + if ( bestspawnpoints.size == 0 ) + { + return undefined; + } + bestspawnpoint = bestspawnpoints[ randomint( bestspawnpoints.size ) ]; + if ( try == maxsighttracedspawnpoints ) + { + return bestspawnpoint; + } + if ( isDefined( bestspawnpoint.lastsighttracetime ) && bestspawnpoint.lastsighttracetime == getTime() ) + { + return bestspawnpoint; + } + if ( !lastminutesighttraces( bestspawnpoint ) ) + { + return bestspawnpoint; + } + penalty = getlospenalty(); +/# + if ( level.storespawndata || level.debugspawning ) + { + bestspawnpoint.spawndata[ bestspawnpoint.spawndata.size ] = "Last minute sight trace: -" + penalty; +#/ + } + bestspawnpoint.weight -= penalty; + bestspawnpoint.lastsighttracetime = getTime(); + try++; + } +} + +checkbad( spawnpoint ) +{ +/# + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( !isalive( player ) || player.sessionstate != "playing" ) + { + i++; + continue; + } + else + { + if ( level.teambased && player.team == self.team ) + { + i++; + continue; + } + else + { + losexists = bullettracepassed( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ); + if ( losexists ) + { + thread badspawnline( spawnpoint.sighttracepoint, player.origin + vectorScale( ( -1, -1, -1 ), 50 ), self.name, player.name ); + } + } + } + i++; +#/ + } +} + +badspawnline( start, end, name1, name2 ) +{ +/# + dist = distance( start, end ); + i = 0; + while ( i < 200 ) + { + line( start, end, ( -1, -1, -1 ) ); + print3d( start, "Bad spawn! " + name1 + ", dist = " + dist ); + print3d( end, name2 ); + wait 0,05; + i++; +#/ + } +} + +storespawndata( spawnpoints, useweights, bestspawnpoint ) +{ +/# + if ( !isDefined( level.storespawndata ) || !level.storespawndata ) + { + return; + } + level.storespawndata = getDvarInt( "scr_recordspawndata" ); + if ( !level.storespawndata ) + { + return; + } + if ( !isDefined( level.spawnid ) ) + { + level.spawngameid = randomint( 100 ); + level.spawnid = 0; + } + if ( bestspawnpoint.classname == "mp_global_intermission" ) + { + return; + } + level.spawnid++; + file = openfile( "spawndata.txt", "append" ); + fprintfields( file, ( level.spawngameid + "." ) + level.spawnid + "," + spawnpoints.size + "," + self.name ); + i = 0; + while ( i < spawnpoints.size ) + { + str = vectostr( spawnpoints[ i ].origin ) + ","; + if ( spawnpoints[ i ] == bestspawnpoint ) + { + str += "1,"; + } + else + { + str += "0,"; + } + if ( !useweights ) + { + str += "0,"; + } + else + { + str += spawnpoints[ i ].weight + ","; + } + if ( !isDefined( spawnpoints[ i ].spawndata ) ) + { + spawnpoints[ i ].spawndata = []; + } + if ( !isDefined( spawnpoints[ i ].sightchecks ) ) + { + spawnpoints[ i ].sightchecks = []; + } + str += spawnpoints[ i ].spawndata.size + ","; + j = 0; + while ( j < spawnpoints[ i ].spawndata.size ) + { + str += spawnpoints[ i ].spawndata[ j ] + ","; + j++; + } + str += spawnpoints[ i ].sightchecks.size + ","; + j = 0; + while ( j < spawnpoints[ i ].sightchecks.size ) + { + str += ( spawnpoints[ i ].sightchecks[ j ].penalty + "," ) + vectostr( spawnpoints[ i ].origin ) + ","; + j++; + } + fprintfields( file, str ); + i++; + } + obj = spawnstruct(); + getallalliedandenemyplayers( obj ); + numallies = 0; + numenemies = 0; + str = ""; + i = 0; + while ( i < obj.allies.size ) + { + if ( obj.allies[ i ] == self ) + { + i++; + continue; + } + else + { + numallies++; + str += vectostr( obj.allies[ i ].origin ) + ","; + } + i++; + } + i = 0; + while ( i < obj.enemies.size ) + { + numenemies++; + str += vectostr( obj.enemies[ i ].origin ) + ","; + i++; + } + str = ( numallies + "," ) + numenemies + "," + str; + fprintfields( file, str ); + otherdata = []; + if ( isDefined( level.bombguy ) ) + { + index = otherdata.size; + otherdata[ index ] = spawnstruct(); + otherdata[ index ].origin = level.bombguy.origin + vectorScale( ( -1, -1, -1 ), 20 ); + otherdata[ index ].text = "Bomb holder"; + } + else + { + if ( isDefined( level.bombpos ) ) + { + index = otherdata.size; + otherdata[ index ] = spawnstruct(); + otherdata[ index ].origin = level.bombpos; + otherdata[ index ].text = "Bomb"; + } + } + while ( isDefined( level.flags ) ) + { + i = 0; + while ( i < level.flags.size ) + { + index = otherdata.size; + otherdata[ index ] = spawnstruct(); + otherdata[ index ].origin = level.flags[ i ].origin; + otherdata[ index ].text = level.flags[ i ].useobj maps/mp/gametypes_zm/_gameobjects::getownerteam() + " flag"; + i++; + } + } + str = otherdata.size + ","; + i = 0; + while ( i < otherdata.size ) + { + str += vectostr( otherdata[ i ].origin ) + "," + otherdata[ i ].text + ","; + i++; + } + fprintfields( file, str ); + closefile( file ); + thisspawnid = ( level.spawngameid + "." ) + level.spawnid; + if ( isDefined( self.thisspawnid ) ) + { + } + self.thisspawnid = thisspawnid; +#/ +} + +readspawndata( desiredid, relativepos ) +{ +/# + file = openfile( "spawndata.txt", "read" ); + if ( file < 0 ) + { + return; + } + oldspawndata = level.curspawndata; + level.curspawndata = undefined; + prev = undefined; + prevthisplayer = undefined; + lookingfornextthisplayer = 0; + lookingfornext = 0; + if ( isDefined( relativepos ) && !isDefined( oldspawndata ) ) + { + return; + } + while ( 1 ) + { + if ( freadln( file ) <= 0 ) + { + break; + } + else data = spawnstruct(); + data.id = fgetarg( file, 0 ); + numspawns = int( fgetarg( file, 1 ) ); + if ( numspawns > 256 ) + { + break; + } + else data.playername = fgetarg( file, 2 ); + data.spawnpoints = []; + data.friends = []; + data.enemies = []; + data.otherdata = []; + i = 0; + while ( i < numspawns ) + { + if ( freadln( file ) <= 0 ) + { + break; + } + else spawnpoint = spawnstruct(); + spawnpoint.origin = strtovec( fgetarg( file, 0 ) ); + spawnpoint.winner = int( fgetarg( file, 1 ) ); + spawnpoint.weight = int( fgetarg( file, 2 ) ); + spawnpoint.data = []; + spawnpoint.sightchecks = []; + if ( i == 0 ) + { + data.minweight = spawnpoint.weight; + data.maxweight = spawnpoint.weight; + } + else + { + if ( spawnpoint.weight < data.minweight ) + { + data.minweight = spawnpoint.weight; + } + if ( spawnpoint.weight > data.maxweight ) + { + data.maxweight = spawnpoint.weight; + } + } + argnum = 4; + numdata = int( fgetarg( file, 3 ) ); + if ( numdata > 256 ) + { + break; + } + else j = 0; + while ( j < numdata ) + { + spawnpoint.data[ spawnpoint.data.size ] = fgetarg( file, argnum ); + argnum++; + j++; + } + numsightchecks = int( fgetarg( file, argnum ) ); + argnum++; + if ( numsightchecks > 256 ) + { + break; + } + else + { + j = 0; + while ( j < numsightchecks ) + { + index = spawnpoint.sightchecks.size; + spawnpoint.sightchecks[ index ] = spawnstruct(); + spawnpoint.sightchecks[ index ].penalty = int( fgetarg( file, argnum ) ); + argnum++; + spawnpoint.sightchecks[ index ].origin = strtovec( fgetarg( file, argnum ) ); + argnum++; + j++; + } + data.spawnpoints[ data.spawnpoints.size ] = spawnpoint; + i++; + } + } + if ( !isDefined( data.minweight ) ) + { + data.minweight = -1; + data.maxweight = 0; + } + if ( data.minweight == data.maxweight ) + { + data.minweight -= 1; + } + if ( freadln( file ) <= 0 ) + { + break; + } + else numfriends = int( fgetarg( file, 0 ) ); + numenemies = int( fgetarg( file, 1 ) ); + if ( numfriends > 32 || numenemies > 32 ) + { + break; + } + else + { + argnum = 2; + i = 0; + while ( i < numfriends ) + { + data.friends[ data.friends.size ] = strtovec( fgetarg( file, argnum ) ); + argnum++; + i++; + } + i = 0; + while ( i < numenemies ) + { + data.enemies[ data.enemies.size ] = strtovec( fgetarg( file, argnum ) ); + argnum++; + i++; + } + if ( freadln( file ) <= 0 ) + { + break; + } + else numotherdata = int( fgetarg( file, 0 ) ); + argnum = 1; + i = 0; + while ( i < numotherdata ) + { + otherdata = spawnstruct(); + otherdata.origin = strtovec( fgetarg( file, argnum ) ); + argnum++; + otherdata.text = fgetarg( file, argnum ); + argnum++; + data.otherdata[ data.otherdata.size ] = otherdata; + i++; + } + if ( isDefined( relativepos ) ) + { + if ( relativepos == "prevthisplayer" ) + { + if ( data.id == oldspawndata.id ) + { + level.curspawndata = prevthisplayer; + break; + } + else } + else if ( relativepos == "prev" ) + { + if ( data.id == oldspawndata.id ) + { + level.curspawndata = prev; + break; + } + else } + else if ( relativepos == "nextthisplayer" ) + { + if ( lookingfornextthisplayer ) + { + level.curspawndata = data; + break; + } + else if ( data.id == oldspawndata.id ) + { + lookingfornextthisplayer = 1; + } + } + else if ( relativepos == "next" ) + { + if ( lookingfornext ) + { + level.curspawndata = data; + break; + } + else if ( data.id == oldspawndata.id ) + { + lookingfornext = 1; + } + } + } + else + { + if ( data.id == desiredid ) + { + level.curspawndata = data; + break; + } + } + else + { + prev = data; + if ( isDefined( oldspawndata ) && data.playername == oldspawndata.playername ) + { + prevthisplayer = data; + } + } + } + } + closefile( file ); +#/ +} + +drawspawndata() +{ +/# + level notify( "drawing_spawn_data" ); + level endon( "drawing_spawn_data" ); + textoffset = vectorScale( ( -1, -1, -1 ), 12 ); + while ( 1 ) + { + while ( !isDefined( level.curspawndata ) ) + { + wait 0,5; + } + i = 0; + while ( i < level.curspawndata.friends.size ) + { + print3d( level.curspawndata.friends[ i ], "=)", ( 0,5, 1, 0,5 ), 1, 5 ); + i++; + } + i = 0; + while ( i < level.curspawndata.enemies.size ) + { + print3d( level.curspawndata.enemies[ i ], "=(", ( 1, 0,5, 0,5 ), 1, 5 ); + i++; + } + i = 0; + while ( i < level.curspawndata.otherdata.size ) + { + print3d( level.curspawndata.otherdata[ i ].origin, level.curspawndata.otherdata[ i ].text, ( 0,5, 0,75, 1 ), 1, 2 ); + i++; + } + i = 0; + while ( i < level.curspawndata.spawnpoints.size ) + { + sp = level.curspawndata.spawnpoints[ i ]; + orig = sp.sighttracepoint; + if ( sp.winner ) + { + print3d( orig, level.curspawndata.playername + " spawned here", ( 0,5, 0,5, 1 ), 1, 2 ); + orig += textoffset; + } + amnt = ( sp.weight - level.curspawndata.minweight ) / ( level.curspawndata.maxweight - level.curspawndata.minweight ); + print3d( orig, "Weight: " + sp.weight, ( 1 - amnt, amnt, 0,5 ) ); + orig += textoffset; + j = 0; + while ( j < sp.data.size ) + { + print3d( orig, sp.data[ j ], ( -1, -1, -1 ) ); + orig += textoffset; + j++; + } + j = 0; + while ( j < sp.sightchecks.size ) + { + print3d( orig, "Sightchecks: -" + sp.sightchecks[ j ].penalty, ( 1, 0,5, 0,5 ) ); + orig += textoffset; + j++; + } + i++; + } + wait 0,05; +#/ + } +} + +vectostr( vec ) +{ +/# + return int( vec[ 0 ] ) + "/" + int( vec[ 1 ] ) + "/" + int( vec[ 2 ] ); +#/ +} + +strtovec( str ) +{ +/# + parts = strtok( str, "/" ); + if ( parts.size != 3 ) + { + return ( -1, -1, -1 ); + } + return ( int( parts[ 0 ] ), int( parts[ 1 ] ), int( parts[ 2 ] ) ); +#/ +} + +getspawnpoint_random( spawnpoints ) +{ + if ( !isDefined( spawnpoints ) ) + { + return undefined; + } + i = 0; + while ( i < spawnpoints.size ) + { + j = randomint( spawnpoints.size ); + spawnpoint = spawnpoints[ i ]; + spawnpoints[ i ] = spawnpoints[ j ]; + spawnpoints[ j ] = spawnpoint; + i++; + } + return getspawnpoint_final( spawnpoints, 0 ); +} + +getallotherplayers() +{ + aliveplayers = []; + i = 0; + while ( i < level.players.size ) + { + if ( !isDefined( level.players[ i ] ) ) + { + i++; + continue; + } + else player = level.players[ i ]; + if ( player.sessionstate != "playing" || player == self ) + { + i++; + continue; + } + else + { + if ( isDefined( level.customalivecheck ) ) + { + if ( !( [[ level.customalivecheck ]]( player ) ) ) + { + i++; + continue; + } + } + else + { + aliveplayers[ aliveplayers.size ] = player; + } + } + i++; + } + return aliveplayers; +} + +getallalliedandenemyplayers( obj ) +{ + if ( level.teambased ) + { +/# + assert( isDefined( level.teams[ self.team ] ) ); +#/ + obj.allies = []; + obj.enemies = []; + i = 0; + while ( i < level.players.size ) + { + if ( !isDefined( level.players[ i ] ) ) + { + i++; + continue; + } + else player = level.players[ i ]; + if ( player.sessionstate != "playing" || player == self ) + { + i++; + continue; + } + else + { + if ( isDefined( level.customalivecheck ) ) + { + if ( !( [[ level.customalivecheck ]]( player ) ) ) + { + i++; + continue; + } + } + else if ( player.team == self.team ) + { + obj.allies[ obj.allies.size ] = player; + i++; + continue; + } + else + { + obj.enemies[ obj.enemies.size ] = player; + } + } + i++; + } + } + else obj.allies = []; + obj.enemies = level.activeplayers; +} + +initweights( spawnpoints ) +{ + i = 0; + while ( i < spawnpoints.size ) + { + spawnpoints[ i ].weight = 0; + i++; + } +/# + while ( level.storespawndata || level.debugspawning ) + { + i = 0; + while ( i < spawnpoints.size ) + { + spawnpoints[ i ].spawndata = []; + spawnpoints[ i ].sightchecks = []; + i++; +#/ + } + } +} + +spawnpointupdate_zm( spawnpoint ) +{ + _a906 = level.teams; + _k906 = getFirstArrayKey( _a906 ); + while ( isDefined( _k906 ) ) + { + team = _a906[ _k906 ]; + spawnpoint.distsum[ team ] = 0; + spawnpoint.enemydistsum[ team ] = 0; + _k906 = getNextArrayKey( _a906, _k906 ); + } + players = get_players(); + spawnpoint.numplayersatlastupdate = players.size; + _a913 = players; + _k913 = getFirstArrayKey( _a913 ); + while ( isDefined( _k913 ) ) + { + player = _a913[ _k913 ]; + if ( !isDefined( player ) ) + { + } + else if ( player.sessionstate != "playing" ) + { + } + else if ( isDefined( level.customalivecheck ) ) + { + if ( !( [[ level.customalivecheck ]]( player ) ) ) + { + } + } + else + { + dist = distance( spawnpoint.origin, player.origin ); + spawnpoint.distsum[ player.team ] += dist; + _a924 = level.teams; + _k924 = getFirstArrayKey( _a924 ); + while ( isDefined( _k924 ) ) + { + team = _a924[ _k924 ]; + if ( team != player.team ) + { + spawnpoint.enemydistsum[ team ] += dist; + } + _k924 = getNextArrayKey( _a924, _k924 ); + } + } + _k913 = getNextArrayKey( _a913, _k913 ); + } +} + +getspawnpoint_nearteam( spawnpoints, favoredspawnpoints, forceallydistanceweight, forceenemydistanceweight ) +{ + if ( !isDefined( spawnpoints ) ) + { + return undefined; + } +/# + if ( getDvar( "scr_spawn_randomly" ) == "" ) + { + setdvar( "scr_spawn_randomly", "0" ); + } + if ( getDvar( "scr_spawn_randomly" ) == "1" ) + { + return getspawnpoint_random( spawnpoints ); +#/ + } + if ( getDvarInt( "scr_spawnsimple" ) > 0 ) + { + return getspawnpoint_random( spawnpoints ); + } + spawnlogic_begin(); + k_favored_spawn_point_bonus = 25000; + initweights( spawnpoints ); + obj = spawnstruct(); + getallalliedandenemyplayers( obj ); + numplayers = obj.allies.size + obj.enemies.size; + allieddistanceweight = 2; + if ( isDefined( forceallydistanceweight ) ) + { + allieddistanceweight = forceallydistanceweight; + } + enemydistanceweight = 1; + if ( isDefined( forceenemydistanceweight ) ) + { + enemydistanceweight = forceenemydistanceweight; + } + myteam = self.team; + i = 0; + while ( i < spawnpoints.size ) + { + spawnpoint = spawnpoints[ i ]; + spawnpointupdate_zm( spawnpoint ); + if ( !isDefined( spawnpoint.numplayersatlastupdate ) ) + { + spawnpoint.numplayersatlastupdate = 0; + } + if ( spawnpoint.numplayersatlastupdate > 0 ) + { + allydistsum = spawnpoint.distsum[ myteam ]; + enemydistsum = spawnpoint.enemydistsum[ myteam ]; + spawnpoint.weight = ( ( enemydistanceweight * enemydistsum ) - ( allieddistanceweight * allydistsum ) ) / spawnpoint.numplayersatlastupdate; +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Base weight: " + int( spawnpoint.weight ) + " = (" + enemydistanceweight + "*" + int( enemydistsum ) + " - " + allieddistanceweight + "*" + int( allydistsum ) + ") / " + spawnpoint.numplayersatlastupdate; +#/ + } + i++; + continue; + } + else + { + spawnpoint.weight = 0; +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Base weight: 0"; +#/ + } + } + i++; + } + while ( isDefined( favoredspawnpoints ) ) + { + i = 0; + while ( i < favoredspawnpoints.size ) + { + if ( isDefined( favoredspawnpoints[ i ].weight ) ) + { + favoredspawnpoints[ i ].weight += k_favored_spawn_point_bonus; + i++; + continue; + } + else + { + favoredspawnpoints[ i ].weight = k_favored_spawn_point_bonus; + } + i++; + } + } + avoidsamespawn( spawnpoints ); + avoidspawnreuse( spawnpoints, 1 ); + avoidweapondamage( spawnpoints ); + avoidvisibleenemies( spawnpoints, 1 ); + result = getspawnpoint_final( spawnpoints ); +/# + if ( getDvar( "scr_spawn_showbad" ) == "" ) + { + setdvar( "scr_spawn_showbad", "0" ); + } + if ( getDvar( "scr_spawn_showbad" ) == "1" ) + { + checkbad( result ); +#/ + } + return result; +} + +getspawnpoint_dm( spawnpoints ) +{ + if ( !isDefined( spawnpoints ) ) + { + return undefined; + } + spawnlogic_begin(); + initweights( spawnpoints ); + aliveplayers = getallotherplayers(); + idealdist = 1600; + baddist = 1200; + while ( aliveplayers.size > 0 ) + { + i = 0; + while ( i < spawnpoints.size ) + { + totaldistfromideal = 0; + nearbybadamount = 0; + j = 0; + while ( j < aliveplayers.size ) + { + dist = distance( spawnpoints[ i ].origin, aliveplayers[ j ].origin ); + if ( dist < baddist ) + { + nearbybadamount += ( baddist - dist ) / baddist; + } + distfromideal = abs( dist - idealdist ); + totaldistfromideal += distfromideal; + j++; + } + avgdistfromideal = totaldistfromideal / aliveplayers.size; + welldistancedamount = ( idealdist - avgdistfromideal ) / idealdist; + spawnpoints[ i ].weight = ( welldistancedamount - ( nearbybadamount * 2 ) ) + randomfloat( 0,2 ); + i++; + } + } + avoidsamespawn( spawnpoints ); + avoidspawnreuse( spawnpoints, 0 ); + avoidweapondamage( spawnpoints ); + avoidvisibleenemies( spawnpoints, 0 ); + return getspawnpoint_final( spawnpoints ); +} + +getspawnpoint_turned( spawnpoints, idealdist, baddist, idealdistteam, baddistteam ) +{ + if ( !isDefined( spawnpoints ) ) + { + return undefined; + } + spawnlogic_begin(); + initweights( spawnpoints ); + aliveplayers = getallotherplayers(); + if ( !isDefined( idealdist ) ) + { + idealdist = 1600; + } + if ( !isDefined( idealdistteam ) ) + { + idealdistteam = 1200; + } + if ( !isDefined( baddist ) ) + { + baddist = 1200; + } + if ( !isDefined( baddistteam ) ) + { + baddistteam = 600; + } + myteam = self.team; + while ( aliveplayers.size > 0 ) + { + i = 0; + while ( i < spawnpoints.size ) + { + totaldistfromideal = 0; + nearbybadamount = 0; + j = 0; + while ( j < aliveplayers.size ) + { + dist = distance( spawnpoints[ i ].origin, aliveplayers[ j ].origin ); + distfromideal = 0; + if ( aliveplayers[ j ].team == myteam ) + { + if ( dist < baddistteam ) + { + nearbybadamount += ( baddistteam - dist ) / baddistteam; + } + distfromideal = abs( dist - idealdistteam ); + } + else + { + if ( dist < baddist ) + { + nearbybadamount += ( baddist - dist ) / baddist; + } + distfromideal = abs( dist - idealdist ); + } + totaldistfromideal += distfromideal; + j++; + } + avgdistfromideal = totaldistfromideal / aliveplayers.size; + welldistancedamount = ( idealdist - avgdistfromideal ) / idealdist; + spawnpoints[ i ].weight = ( welldistancedamount - ( nearbybadamount * 2 ) ) + randomfloat( 0,2 ); + i++; + } + } + avoidsamespawn( spawnpoints ); + avoidspawnreuse( spawnpoints, 0 ); + avoidweapondamage( spawnpoints ); + avoidvisibleenemies( spawnpoints, 0 ); + return getspawnpoint_final( spawnpoints ); +} + +spawnlogic_begin() +{ +/# + level.storespawndata = getDvarInt( "scr_recordspawndata" ); + level.debugspawning = getDvarInt( "scr_spawnpointdebug" ) > 0; +#/ +} + +init() +{ +/# + if ( getDvar( "scr_recordspawndata" ) == "" ) + { + setdvar( "scr_recordspawndata", 0 ); + } + level.storespawndata = getDvarInt( "scr_recordspawndata" ); + if ( getDvar( "scr_killbots" ) == "" ) + { + setdvar( "scr_killbots", 0 ); + } + if ( getDvar( "scr_killbottimer" ) == "" ) + { + setdvar( "scr_killbottimer", 0,25 ); + } + thread loopbotspawns(); +#/ + level.spawnlogic_deaths = []; + level.spawnlogic_spawnkills = []; + level.players = []; + level.grenades = []; + level.pipebombs = []; + level.spawnmins = ( -1, -1, -1 ); + level.spawnmaxs = ( -1, -1, -1 ); + level.spawnminsmaxsprimed = 0; + while ( isDefined( level.safespawns ) ) + { + i = 0; + while ( i < level.safespawns.size ) + { + level.safespawns[ i ] spawnpointinit(); + i++; + } + } + if ( getDvar( "scr_spawn_enemyavoiddist" ) == "" ) + { + setdvar( "scr_spawn_enemyavoiddist", "800" ); + } + if ( getDvar( "scr_spawn_enemyavoidweight" ) == "" ) + { + setdvar( "scr_spawn_enemyavoidweight", "0" ); + } +/# + if ( getDvar( "scr_spawnsimple" ) == "" ) + { + setdvar( "scr_spawnsimple", "0" ); + } + if ( getDvar( "scr_spawnpointdebug" ) == "" ) + { + setdvar( "scr_spawnpointdebug", "0" ); + } + if ( getDvarInt( "scr_spawnpointdebug" ) > 0 ) + { + thread showdeathsdebug(); + thread updatedeathinfodebug(); + thread profiledebug(); + } + if ( level.storespawndata ) + { + thread allowspawndatareading(); + } + if ( getDvar( "scr_spawnprofile" ) == "" ) + { + setdvar( "scr_spawnprofile", "0" ); + } + thread watchspawnprofile(); + thread spawngraphcheck(); +#/ +} + +watchspawnprofile() +{ +/# + while ( 1 ) + { + while ( 1 ) + { + if ( getDvarInt( "scr_spawnprofile" ) > 0 ) + { + break; + } + else + { + wait 0,05; + } + } + thread spawnprofile(); + while ( 1 ) + { + if ( getDvarInt( "scr_spawnprofile" ) <= 0 ) + { + break; + } + else + { + wait 0,05; + } + } + level notify( "stop_spawn_profile" ); +#/ + } +} + +spawnprofile() +{ +/# + level endon( "stop_spawn_profile" ); + while ( 1 ) + { + if ( level.players.size > 0 && level.spawnpoints.size > 0 ) + { + playernum = randomint( level.players.size ); + player = level.players[ playernum ]; + attempt = 1; + while ( !isDefined( player ) && attempt < level.players.size ) + { + playernum = ( playernum + 1 ) % level.players.size; + attempt++; + player = level.players[ playernum ]; + } + player getspawnpoint_nearteam( level.spawnpoints ); + } + wait 0,05; +#/ + } +} + +spawngraphcheck() +{ +/# + while ( 1 ) + { + while ( getDvarInt( #"C25B6B47" ) < 1 ) + { + wait 3; + } + thread spawngraph(); + return; +#/ + } +} + +spawngraph() +{ +/# + w = 20; + h = 20; + weightscale = 0,1; + fakespawnpoints = []; + corners = getentarray( "minimap_corner", "targetname" ); + if ( corners.size != 2 ) + { + println( "^1 can't spawn graph: no minimap corners" ); + return; + } + min = corners[ 0 ].origin; + max = corners[ 0 ].origin; + if ( corners[ 1 ].origin[ 0 ] > max[ 0 ] ) + { + max = ( corners[ 1 ].origin[ 0 ], max[ 1 ], max[ 2 ] ); + } + else + { + min = ( corners[ 1 ].origin[ 0 ], min[ 1 ], min[ 2 ] ); + } + if ( corners[ 1 ].origin[ 1 ] > max[ 1 ] ) + { + max = ( max[ 0 ], corners[ 1 ].origin[ 1 ], max[ 2 ] ); + } + else + { + min = ( min[ 0 ], corners[ 1 ].origin[ 1 ], min[ 2 ] ); + } + i = 0; + y = 0; + while ( y < h ) + { + yamnt = y / ( h - 1 ); + x = 0; + while ( x < w ) + { + xamnt = x / ( w - 1 ); + fakespawnpoints[ i ] = spawnstruct(); + fakespawnpoints[ i ].origin = ( ( min[ 0 ] * xamnt ) + ( max[ 0 ] * ( 1 - xamnt ) ), ( min[ 1 ] * yamnt ) + ( max[ 1 ] * ( 1 - yamnt ) ), min[ 2 ] ); + fakespawnpoints[ i ].angles = ( -1, -1, -1 ); + fakespawnpoints[ i ].forward = anglesToForward( fakespawnpoints[ i ].angles ); + fakespawnpoints[ i ].sighttracepoint = fakespawnpoints[ i ].origin; + i++; + x++; + } + y++; + } + didweights = 0; + while ( 1 ) + { + spawni = 0; + numiters = 5; + i = 0; + while ( i < numiters ) + { + if ( level.players.size && isDefined( level.players[ 0 ].team ) || level.players[ 0 ].team == "spectator" && !isDefined( level.players[ 0 ].class ) ) + { + break; + } + else + { + endspawni = spawni + ( fakespawnpoints.size / numiters ); + if ( i == ( numiters - 1 ) ) + { + endspawni = fakespawnpoints.size; + } + while ( spawni < endspawni ) + { + spawnpointupdate( fakespawnpoints[ spawni ] ); + spawni++; + } + if ( didweights ) + { + level.players[ 0 ] drawspawngraph( fakespawnpoints, w, h, weightscale ); + } + wait 0,05; + i++; + } + } + while ( level.players.size && isDefined( level.players[ 0 ].team ) || level.players[ 0 ].team == "spectator" && !isDefined( level.players[ 0 ].class ) ) + { + wait 1; + } + level.players[ 0 ] getspawnpoint_nearteam( fakespawnpoints ); + i = 0; + while ( i < fakespawnpoints.size ) + { + setupspawngraphpoint( fakespawnpoints[ i ], weightscale ); + i++; + } + didweights = 1; + level.players[ 0 ] drawspawngraph( fakespawnpoints, w, h, weightscale ); + wait 0,05; +#/ + } +} + +drawspawngraph( fakespawnpoints, w, h, weightscale ) +{ +/# + i = 0; + y = 0; + while ( y < h ) + { + yamnt = y / ( h - 1 ); + x = 0; + while ( x < w ) + { + xamnt = x / ( w - 1 ); + if ( y > 0 ) + { + spawngraphline( fakespawnpoints[ i ], fakespawnpoints[ i - w ], weightscale ); + } + if ( x > 0 ) + { + spawngraphline( fakespawnpoints[ i ], fakespawnpoints[ i - 1 ], weightscale ); + } + i++; + x++; + } + y++; +#/ + } +} + +setupspawngraphpoint( s1, weightscale ) +{ +/# + s1.visible = 1; + if ( s1.weight < ( -1000 / weightscale ) ) + { + s1.visible = 0; +#/ + } +} + +spawngraphline( s1, s2, weightscale ) +{ +/# + if ( !s1.visible || !s2.visible ) + { + return; + } + p1 = s1.origin + ( 0, 0, ( s1.weight * weightscale ) + 100 ); + p2 = s2.origin + ( 0, 0, ( s2.weight * weightscale ) + 100 ); + line( p1, p2, ( -1, -1, -1 ) ); +#/ +} + +loopbotspawns() +{ +/# + while ( 1 ) + { + while ( getDvarInt( "scr_killbots" ) < 1 ) + { + wait 3; + } + while ( !isDefined( level.players ) ) + { + wait 0,05; + } + bots = []; + i = 0; + while ( i < level.players.size ) + { + if ( !isDefined( level.players[ i ] ) ) + { + i++; + continue; + } + else + { + if ( level.players[ i ].sessionstate == "playing" && issubstr( level.players[ i ].name, "bot" ) ) + { + bots[ bots.size ] = level.players[ i ]; + } + } + i++; + } + while ( bots.size > 0 ) + { + if ( getDvarInt( "scr_killbots" ) == 1 ) + { + killer = bots[ randomint( bots.size ) ]; + victim = bots[ randomint( bots.size ) ]; + victim thread [[ level.callbackplayerdamage ]]( killer, killer, 1000, 0, "MOD_RIFLE_BULLET", "none", ( -1, -1, -1 ), ( -1, -1, -1 ), "none", 0, 0 ); + break; + } + else + { + numkills = getDvarInt( "scr_killbots" ); + lastvictim = undefined; + index = 0; + while ( index < numkills ) + { + killer = bots[ randomint( bots.size ) ]; + victim = bots[ randomint( bots.size ) ]; + while ( isDefined( lastvictim ) && victim == lastvictim ) + { + victim = bots[ randomint( bots.size ) ]; + } + victim thread [[ level.callbackplayerdamage ]]( killer, killer, 1000, 0, "MOD_RIFLE_BULLET", "none", ( -1, -1, -1 ), ( -1, -1, -1 ), "none", 0, 0 ); + lastvictim = victim; + index++; + } + } + } + if ( getDvar( "scr_killbottimer" ) != "" ) + { + wait getDvarFloat( "scr_killbottimer" ); + continue; + } + else + { + wait 0,05; + } +#/ + } +} + +allowspawndatareading() +{ +/# + setdvar( "scr_showspawnid", "" ); + prevval = getDvar( "scr_showspawnid" ); + prevrelval = getDvar( "scr_spawnidcycle" ); + readthistime = 0; + while ( 1 ) + { + val = getDvar( "scr_showspawnid" ); + relval = undefined; + while ( !isDefined( val ) || val == prevval ) + { + relval = getDvar( "scr_spawnidcycle" ); + if ( isDefined( relval ) && relval != "" ) + { + setdvar( "scr_spawnidcycle", "" ); + break; + } + else + { + wait 0,5; + } + } + prevval = val; + readthistime = 0; + readspawndata( val, relval ); + if ( !isDefined( level.curspawndata ) ) + { + println( "No spawn data to draw." ); + } + else + { + println( "Drawing spawn ID " + level.curspawndata.id ); + } + thread drawspawndata(); +#/ + } +} + +showdeathsdebug() +{ +/# + while ( 1 ) + { + while ( getDvar( "scr_spawnpointdebug" ) == "0" ) + { + wait 3; + } + time = getTime(); + i = 0; + while ( i < level.spawnlogic_deaths.size ) + { + if ( isDefined( level.spawnlogic_deaths[ i ].los ) ) + { + line( level.spawnlogic_deaths[ i ].org, level.spawnlogic_deaths[ i ].killorg, ( -1, -1, -1 ) ); + } + else + { + line( level.spawnlogic_deaths[ i ].org, level.spawnlogic_deaths[ i ].killorg, ( -1, -1, -1 ) ); + } + killer = level.spawnlogic_deaths[ i ].killer; + if ( isDefined( killer ) && isalive( killer ) ) + { + line( level.spawnlogic_deaths[ i ].killorg, killer.origin, ( 0,4, 0,4, 0,8 ) ); + } + i++; + } + p = 0; + while ( p < level.players.size ) + { + if ( !isDefined( level.players[ p ] ) ) + { + p++; + continue; + } + else + { + if ( isDefined( level.players[ p ].spawnlogic_killdist ) ) + { + print3d( level.players[ p ].origin + vectorScale( ( -1, -1, -1 ), 64 ), level.players[ p ].spawnlogic_killdist, ( -1, -1, -1 ) ); + } + } + p++; + } + oldspawnkills = level.spawnlogic_spawnkills; + level.spawnlogic_spawnkills = []; + i = 0; + while ( i < oldspawnkills.size ) + { + spawnkill = oldspawnkills[ i ]; + if ( spawnkill.dierwasspawner ) + { + line( spawnkill.spawnpointorigin, spawnkill.dierorigin, ( 0,4, 0,5, 0,4 ) ); + line( spawnkill.dierorigin, spawnkill.killerorigin, ( 0, 1, 1 ) ); + print3d( spawnkill.dierorigin + vectorScale( ( -1, -1, -1 ), 32 ), "SPAWNKILLED!", ( 0, 1, 1 ) ); + } + else + { + line( spawnkill.spawnpointorigin, spawnkill.killerorigin, ( 0,4, 0,5, 0,4 ) ); + line( spawnkill.killerorigin, spawnkill.dierorigin, ( 0, 1, 1 ) ); + print3d( spawnkill.dierorigin + vectorScale( ( -1, -1, -1 ), 32 ), "SPAWNDIED!", ( 0, 1, 1 ) ); + } + if ( ( time - spawnkill.time ) < 60000 ) + { + level.spawnlogic_spawnkills[ level.spawnlogic_spawnkills.size ] = oldspawnkills[ i ]; + } + i++; + } + wait 0,05; +#/ + } +} + +updatedeathinfodebug() +{ + while ( 1 ) + { + while ( getDvar( "scr_spawnpointdebug" ) == "0" ) + { + wait 3; + } + updatedeathinfo(); + wait 3; + } +} + +spawnweightdebug( spawnpoints ) +{ + level notify( "stop_spawn_weight_debug" ); + level endon( "stop_spawn_weight_debug" ); +/# + while ( 1 ) + { + while ( getDvar( "scr_spawnpointdebug" ) == "0" ) + { + wait 3; + } + textoffset = vectorScale( ( -1, -1, -1 ), 12 ); + i = 0; + while ( i < spawnpoints.size ) + { + amnt = 1 * ( 1 - ( spawnpoints[ i ].weight / -100000 ) ); + if ( amnt < 0 ) + { + amnt = 0; + } + if ( amnt > 1 ) + { + amnt = 1; + } + orig = spawnpoints[ i ].origin + vectorScale( ( -1, -1, -1 ), 80 ); + print3d( orig, int( spawnpoints[ i ].weight ), ( 1, amnt, 0,5 ) ); + orig += textoffset; + while ( isDefined( spawnpoints[ i ].spawndata ) ) + { + j = 0; + while ( j < spawnpoints[ i ].spawndata.size ) + { + print3d( orig, spawnpoints[ i ].spawndata[ j ], vectorScale( ( -1, -1, -1 ), 0,5 ) ); + orig += textoffset; + j++; + } + } + while ( isDefined( spawnpoints[ i ].sightchecks ) ) + { + j = 0; + while ( j < spawnpoints[ i ].sightchecks.size ) + { + if ( spawnpoints[ i ].sightchecks[ j ].penalty == 0 ) + { + j++; + continue; + } + else + { + print3d( orig, "Sight to enemy: -" + spawnpoints[ i ].sightchecks[ j ].penalty, vectorScale( ( -1, -1, -1 ), 0,5 ) ); + orig += textoffset; + } + j++; + } + } + i++; + } + wait 0,05; +#/ + } +} + +profiledebug() +{ + while ( 1 ) + { + while ( getDvar( #"6A99E750" ) != "1" ) + { + wait 3; + } + i = 0; + while ( i < level.spawnpoints.size ) + { + level.spawnpoints[ i ].weight = randomint( 10000 ); + i++; + } + if ( level.players.size > 0 ) + { + level.players[ randomint( level.players.size ) ] getspawnpoint_nearteam( level.spawnpoints ); + } + wait 0,05; + } +} + +debugnearbyplayers( players, origin ) +{ +/# + if ( getDvar( "scr_spawnpointdebug" ) == "0" ) + { + return; + } + starttime = getTime(); + while ( 1 ) + { + i = 0; + while ( i < players.size ) + { + line( players[ i ].origin, origin, ( 0,5, 1, 0,5 ) ); + i++; + } + if ( ( getTime() - starttime ) > 5000 ) + { + return; + } + wait 0,05; +#/ + } +} + +deathoccured( dier, killer ) +{ +} + +checkforsimilardeaths( deathinfo ) +{ + i = 0; + while ( i < level.spawnlogic_deaths.size ) + { + if ( level.spawnlogic_deaths[ i ].killer == deathinfo.killer ) + { + dist = distance( level.spawnlogic_deaths[ i ].org, deathinfo.org ); + if ( dist > 200 ) + { + i++; + continue; + } + else dist = distance( level.spawnlogic_deaths[ i ].killorg, deathinfo.killorg ); + if ( dist > 200 ) + { + i++; + continue; + } + else + { + level.spawnlogic_deaths[ i ].remove = 1; + } + } + i++; + } +} + +updatedeathinfo() +{ + time = getTime(); + i = 0; + while ( i < level.spawnlogic_deaths.size ) + { + deathinfo = level.spawnlogic_deaths[ i ]; + if ( ( time - deathinfo.time ) > 90000 && isDefined( deathinfo.killer ) && isalive( deathinfo.killer ) || !isDefined( level.teams[ deathinfo.killer.team ] ) && distance( deathinfo.killer.origin, deathinfo.killorg ) > 400 ) + { + level.spawnlogic_deaths[ i ].remove = 1; + } + i++; + } + oldarray = level.spawnlogic_deaths; + level.spawnlogic_deaths = []; + start = 0; + if ( ( oldarray.size - 1024 ) > 0 ) + { + start = oldarray.size - 1024; + } + i = start; + while ( i < oldarray.size ) + { + if ( !isDefined( oldarray[ i ].remove ) ) + { + level.spawnlogic_deaths[ level.spawnlogic_deaths.size ] = oldarray[ i ]; + } + i++; + } +} + +ispointvulnerable( playerorigin ) +{ + pos = self.origin + level.bettymodelcenteroffset; + playerpos = playerorigin + vectorScale( ( -1, -1, -1 ), 32 ); + distsqrd = distancesquared( pos, playerpos ); + forward = anglesToForward( self.angles ); + if ( distsqrd < ( level.bettydetectionradius * level.bettydetectionradius ) ) + { + playerdir = vectornormalize( playerpos - pos ); + angle = acos( vectordot( playerdir, forward ) ); + if ( angle < level.bettydetectionconeangle ) + { + return 1; + } + } + return 0; +} + +avoidweapondamage( spawnpoints ) +{ + if ( getDvar( #"0FB71FB7" ) == "0" ) + { + return; + } + weapondamagepenalty = 100000; + if ( getDvar( #"76B8F046" ) != "" && getDvar( #"76B8F046" ) != "0" ) + { + weapondamagepenalty = getDvarFloat( #"76B8F046" ); + } + mingrenadedistsquared = 62500; + i = 0; + while ( i < spawnpoints.size ) + { + j = 0; + while ( j < level.grenades.size ) + { + if ( !isDefined( level.grenades[ j ] ) ) + { + j++; + continue; + } + else + { + if ( distancesquared( spawnpoints[ i ].origin, level.grenades[ j ].origin ) < mingrenadedistsquared ) + { + spawnpoints[ i ].weight -= weapondamagepenalty; +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Was near grenade: -" + int( weapondamagepenalty ); +#/ + } + } + } + j++; + } + i++; + } +} + +spawnperframeupdate() +{ + spawnpointindex = 0; + while ( 1 ) + { + wait 0,05; + if ( !isDefined( level.spawnpoints ) ) + { + return; + } + spawnpointindex = ( spawnpointindex + 1 ) % level.spawnpoints.size; + spawnpoint = level.spawnpoints[ spawnpointindex ]; + spawnpointupdate( spawnpoint ); + } +} + +getnonteamsum( skip_team, sums ) +{ + value = 0; + _a1986 = level.teams; + _k1986 = getFirstArrayKey( _a1986 ); + while ( isDefined( _k1986 ) ) + { + team = _a1986[ _k1986 ]; + if ( team == skip_team ) + { + } + else + { + value += sums[ team ]; + } + _k1986 = getNextArrayKey( _a1986, _k1986 ); + } + return value; +} + +getnonteammindist( skip_team, mindists ) +{ + dist = 9999999; + _a2000 = level.teams; + _k2000 = getFirstArrayKey( _a2000 ); + while ( isDefined( _k2000 ) ) + { + team = _a2000[ _k2000 ]; + if ( team == skip_team ) + { + } + else + { + if ( dist > mindists[ team ] ) + { + dist = mindists[ team ]; + } + } + _k2000 = getNextArrayKey( _a2000, _k2000 ); + } + return dist; +} + +spawnpointupdate( spawnpoint ) +{ + if ( level.teambased ) + { + sights = []; + _a2018 = level.teams; + _k2018 = getFirstArrayKey( _a2018 ); + while ( isDefined( _k2018 ) ) + { + team = _a2018[ _k2018 ]; + spawnpoint.enemysights[ team ] = 0; + sights[ team ] = 0; + spawnpoint.nearbyplayers[ team ] = []; + _k2018 = getNextArrayKey( _a2018, _k2018 ); + } + } + else spawnpoint.enemysights = 0; + spawnpoint.nearbyplayers[ "all" ] = []; + spawnpointdir = spawnpoint.forward; + debug = 0; +/# + debug = getDvarInt( "scr_spawnpointdebug" ) > 0; +#/ + mindist = []; + distsum = []; + if ( !level.teambased ) + { + mindist[ "all" ] = 9999999; + } + _a2047 = level.teams; + _k2047 = getFirstArrayKey( _a2047 ); + while ( isDefined( _k2047 ) ) + { + team = _a2047[ _k2047 ]; + spawnpoint.distsum[ team ] = 0; + spawnpoint.enemydistsum[ team ] = 0; + spawnpoint.minenemydist[ team ] = 9999999; + mindist[ team ] = 9999999; + _k2047 = getNextArrayKey( _a2047, _k2047 ); + } + spawnpoint.numplayersatlastupdate = 0; + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( player.sessionstate != "playing" ) + { + i++; + continue; + } + else diff = player.origin - spawnpoint.origin; + diff = ( diff[ 0 ], diff[ 1 ], 0 ); + dist = length( diff ); + team = "all"; + if ( level.teambased ) + { + team = player.team; + } + if ( dist < 1024 ) + { + spawnpoint.nearbyplayers[ team ][ spawnpoint.nearbyplayers[ team ].size ] = player; + } + if ( dist < mindist[ team ] ) + { + mindist[ team ] = dist; + } + distsum[ team ] += dist; + spawnpoint.numplayersatlastupdate++; + pdir = anglesToForward( player.angles ); + if ( vectordot( spawnpointdir, diff ) < 0 && vectordot( pdir, diff ) > 0 ) + { + i++; + continue; + } + else + { + losexists = bullettracepassed( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ); + spawnpoint.lastsighttracetime = getTime(); + if ( losexists ) + { + if ( level.teambased ) + { + sights[ player.team ]++; + } + else + { + spawnpoint.enemysights++; + } +/# + if ( debug ) + { + line( player.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, ( 0,5, 1, 0,5 ) ); +#/ + } + } + } + i++; + } + if ( level.teambased ) + { + _a2128 = level.teams; + _k2128 = getFirstArrayKey( _a2128 ); + while ( isDefined( _k2128 ) ) + { + team = _a2128[ _k2128 ]; + spawnpoint.enemysights[ team ] = getnonteamsum( team, sights ); + spawnpoint.minenemydist[ team ] = getnonteammindist( team, mindist ); + spawnpoint.distsum[ team ] = distsum[ team ]; + spawnpoint.enemydistsum[ team ] = getnonteamsum( team, distsum ); + _k2128 = getNextArrayKey( _a2128, _k2128 ); + } + } + else spawnpoint.distsum[ "all" ] = distsum[ "all" ]; + spawnpoint.enemydistsum[ "all" ] = distsum[ "all" ]; + spawnpoint.minenemydist[ "all" ] = mindist[ "all" ]; +} + +getlospenalty() +{ + if ( getDvar( #"CACDB8AA" ) != "" && getDvar( #"CACDB8AA" ) != "0" ) + { + return getDvarFloat( #"CACDB8AA" ); + } + return 100000; +} + +lastminutesighttraces( spawnpoint ) +{ + if ( !isDefined( spawnpoint.nearbyplayers ) ) + { + return 0; + } + closest = undefined; + closestdistsq = undefined; + secondclosest = undefined; + secondclosestdistsq = undefined; + _a2162 = spawnpoint.nearbyplayers; + _k2162 = getFirstArrayKey( _a2162 ); + while ( isDefined( _k2162 ) ) + { + team = _a2162[ _k2162 ]; + if ( team == self.team ) + { + } + else + { + i = 0; + while ( i < spawnpoint.nearbyplayers[ team ].size ) + { + player = spawnpoint.nearbyplayers[ team ][ i ]; + if ( !isDefined( player ) ) + { + i++; + continue; + } + else if ( player.sessionstate != "playing" ) + { + i++; + continue; + } + else if ( player == self ) + { + i++; + continue; + } + else distsq = distancesquared( spawnpoint.origin, player.origin ); + if ( !isDefined( closest ) || distsq < closestdistsq ) + { + secondclosest = closest; + secondclosestdistsq = closestdistsq; + closest = player; + closestdistsq = distsq; + i++; + continue; + } + else + { + if ( !isDefined( secondclosest ) || distsq < secondclosestdistsq ) + { + secondclosest = player; + secondclosestdistsq = distsq; + } + } + i++; + } + } + _k2162 = getNextArrayKey( _a2162, _k2162 ); + } + if ( isDefined( closest ) ) + { + if ( bullettracepassed( closest.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ) ) + { + return 1; + } + } + if ( isDefined( secondclosest ) ) + { + if ( bullettracepassed( secondclosest.origin + vectorScale( ( -1, -1, -1 ), 50 ), spawnpoint.sighttracepoint, 0, undefined ) ) + { + return 1; + } + } + return 0; +} + +avoidvisibleenemies( spawnpoints, teambased ) +{ + if ( getDvar( #"0FB71FB7" ) == "0" ) + { + return; + } + lospenalty = getlospenalty(); + mindistteam = self.team; + if ( teambased ) + { + i = 0; + while ( i < spawnpoints.size ) + { + if ( !isDefined( spawnpoints[ i ].enemysights ) ) + { + i++; + continue; + } + else + { + penalty = lospenalty * spawnpoints[ i ].enemysights[ self.team ]; + spawnpoints[ i ].weight -= penalty; +/# + if ( level.storespawndata || level.debugspawning ) + { + index = spawnpoints[ i ].sightchecks.size; + spawnpoints[ i ].sightchecks[ index ] = spawnstruct(); + spawnpoints[ i ].sightchecks[ index ].penalty = penalty; +#/ + } + } + i++; + } + } + else i = 0; + while ( i < spawnpoints.size ) + { + if ( !isDefined( spawnpoints[ i ].enemysights ) ) + { + i++; + continue; + } + else + { + penalty = lospenalty * spawnpoints[ i ].enemysights; + spawnpoints[ i ].weight -= penalty; +/# + if ( level.storespawndata || level.debugspawning ) + { + index = spawnpoints[ i ].sightchecks.size; + spawnpoints[ i ].sightchecks[ index ] = spawnstruct(); + spawnpoints[ i ].sightchecks[ index ].penalty = penalty; +#/ + } + } + i++; + } + mindistteam = "all"; + avoidweight = getDvarFloat( "scr_spawn_enemyavoidweight" ); + while ( avoidweight != 0 ) + { + nearbyenemyouterrange = getDvarFloat( "scr_spawn_enemyavoiddist" ); + nearbyenemyouterrangesq = nearbyenemyouterrange * nearbyenemyouterrange; + nearbyenemypenalty = 1500 * avoidweight; + nearbyenemyminorpenalty = 800 * avoidweight; + lastattackerorigin = vectorScale( ( -1, -1, -1 ), 99999 ); + lastdeathpos = vectorScale( ( -1, -1, -1 ), 99999 ); + if ( isalive( self.lastattacker ) ) + { + lastattackerorigin = self.lastattacker.origin; + } + if ( isDefined( self.lastdeathpos ) ) + { + lastdeathpos = self.lastdeathpos; + } + i = 0; + while ( i < spawnpoints.size ) + { + mindist = spawnpoints[ i ].minenemydist[ mindistteam ]; + if ( mindist < ( nearbyenemyouterrange * 2 ) ) + { + penalty = nearbyenemyminorpenalty * ( 1 - ( mindist / ( nearbyenemyouterrange * 2 ) ) ); + if ( mindist < nearbyenemyouterrange ) + { + penalty += nearbyenemypenalty * ( 1 - ( mindist / nearbyenemyouterrange ) ); + } + if ( penalty > 0 ) + { + spawnpoints[ i ].weight -= penalty; +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Nearest enemy at " + int( spawnpoints[ i ].minenemydist[ mindistteam ] ) + " units: -" + int( penalty ); +#/ + } + } + } + i++; + } + } +} + +avoidspawnreuse( spawnpoints, teambased ) +{ + if ( getDvar( #"0FB71FB7" ) == "0" ) + { + return; + } + time = getTime(); + maxtime = 10000; + maxdistsq = 1048576; + i = 0; + while ( i < spawnpoints.size ) + { + spawnpoint = spawnpoints[ i ]; + if ( isDefined( spawnpoint.lastspawnedplayer ) || !isDefined( spawnpoint.lastspawntime ) && !isalive( spawnpoint.lastspawnedplayer ) ) + { + i++; + continue; + } + else + { + if ( spawnpoint.lastspawnedplayer == self ) + { + i++; + continue; + } + else if ( teambased && spawnpoint.lastspawnedplayer.team == self.team ) + { + i++; + continue; + } + else + { + timepassed = time - spawnpoint.lastspawntime; + if ( timepassed < maxtime ) + { + distsq = distancesquared( spawnpoint.lastspawnedplayer.origin, spawnpoint.origin ); + if ( distsq < maxdistsq ) + { + worsen = ( 5000 * ( 1 - ( distsq / maxdistsq ) ) ) * ( 1 - ( timepassed / maxtime ) ); + spawnpoint.weight -= worsen; +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoint.spawndata[ spawnpoint.spawndata.size ] = "Was recently used: -" + worsen; +#/ + } + } + else + { + spawnpoint.lastspawnedplayer = undefined; + } + i++; + continue; + } + else + { + spawnpoint.lastspawnedplayer = undefined; + } + } + } + i++; + } +} + +avoidsamespawn( spawnpoints ) +{ + if ( getDvar( #"0FB71FB7" ) == "0" ) + { + return; + } + if ( !isDefined( self.lastspawnpoint ) ) + { + return; + } + i = 0; + while ( i < spawnpoints.size ) + { + if ( spawnpoints[ i ] == self.lastspawnpoint ) + { + spawnpoints[ i ].weight -= 50000; +/# + if ( level.storespawndata || level.debugspawning ) + { + spawnpoints[ i ].spawndata[ spawnpoints[ i ].spawndata.size ] = "Was last spawnpoint: -50000"; +#/ + } + return; + } + else + { + i++; + } + } +} + +getrandomintermissionpoint() +{ + spawnpoints = getentarray( "mp_global_intermission", "classname" ); + if ( !spawnpoints.size ) + { + spawnpoints = getentarray( "info_player_start", "classname" ); + } +/# + assert( spawnpoints.size ); +#/ + spawnpoint = maps/mp/gametypes_zm/_spawnlogic::getspawnpoint_random( spawnpoints ); + return spawnpoint; +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_spectating.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_spectating.gsc new file mode 100644 index 0000000..31ce9f4 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_spectating.gsc @@ -0,0 +1,276 @@ + +init() +{ + _a3 = level.teams; + _k3 = getFirstArrayKey( _a3 ); + while ( isDefined( _k3 ) ) + { + team = _a3[ _k3 ]; + level.spectateoverride[ team ] = spawnstruct(); + _k3 = getNextArrayKey( _a3, _k3 ); + } + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onjoinedteam(); + player thread onjoinedspectators(); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self setspectatepermissions(); + } +} + +onjoinedteam() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "joined_team" ); + self setspectatepermissionsformachine(); + } +} + +onjoinedspectators() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "joined_spectators" ); + self setspectatepermissionsformachine(); + } +} + +updatespectatesettings() +{ + level endon( "game_ended" ); + index = 0; + while ( index < level.players.size ) + { + level.players[ index ] setspectatepermissions(); + index++; + } +} + +getsplitscreenteam() +{ + index = 0; + while ( index < level.players.size ) + { + if ( !isDefined( level.players[ index ] ) ) + { + index++; + continue; + } + else if ( level.players[ index ] == self ) + { + index++; + continue; + } + else if ( !self isplayeronsamemachine( level.players[ index ] ) ) + { + index++; + continue; + } + else + { + team = level.players[ index ].sessionteam; + if ( team != "spectator" ) + { + return team; + } + } + index++; + } + return self.sessionteam; +} + +otherlocalplayerstillalive() +{ + index = 0; + while ( index < level.players.size ) + { + if ( !isDefined( level.players[ index ] ) ) + { + index++; + continue; + } + else if ( level.players[ index ] == self ) + { + index++; + continue; + } + else if ( !self isplayeronsamemachine( level.players[ index ] ) ) + { + index++; + continue; + } + else + { + if ( isalive( level.players[ index ] ) ) + { + return 1; + } + } + index++; + } + return 0; +} + +allowspectateallteams( allow ) +{ + _a114 = level.teams; + _k114 = getFirstArrayKey( _a114 ); + while ( isDefined( _k114 ) ) + { + team = _a114[ _k114 ]; + self allowspectateteam( team, allow ); + _k114 = getNextArrayKey( _a114, _k114 ); + } +} + +allowspectateallteamsexceptteam( skip_team, allow ) +{ + _a122 = level.teams; + _k122 = getFirstArrayKey( _a122 ); + while ( isDefined( _k122 ) ) + { + team = _a122[ _k122 ]; + if ( team == skip_team ) + { + } + else + { + self allowspectateteam( team, allow ); + } + _k122 = getNextArrayKey( _a122, _k122 ); + } +} + +setspectatepermissions() +{ + team = self.sessionteam; + if ( team == "spectator" ) + { + if ( self issplitscreen() && !level.splitscreen ) + { + team = getsplitscreenteam(); + } + if ( team == "spectator" ) + { + self allowspectateallteams( 1 ); + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "none", 1 ); + self allowspectateteam( "localplayers", 1 ); + return; + } + } + spectatetype = level.spectatetype; + switch( spectatetype ) + { + case 0: + self allowspectateallteams( 0 ); + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "none", 1 ); + self allowspectateteam( "localplayers", 0 ); + break; + case 3: + if ( self issplitscreen() && self otherlocalplayerstillalive() ) + { + self allowspectateallteams( 0 ); + self allowspectateteam( "none", 0 ); + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "localplayers", 1 ); + break; + } + else + { + case 1: + if ( !level.teambased ) + { + self allowspectateallteams( 1 ); + self allowspectateteam( "none", 1 ); + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "localplayers", 1 ); + } + else if ( isDefined( team ) && isDefined( level.teams[ team ] ) ) + { + self allowspectateteam( team, 1 ); + self allowspectateallteamsexceptteam( team, 0 ); + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "none", 0 ); + self allowspectateteam( "localplayers", 1 ); + } + else + { + self allowspectateallteams( 0 ); + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "none", 0 ); + self allowspectateteam( "localplayers", 1 ); + } + break; + case 2: + self allowspectateallteams( 1 ); + self allowspectateteam( "freelook", 1 ); + self allowspectateteam( "none", 1 ); + self allowspectateteam( "localplayers", 1 ); + break; + } + } + if ( isDefined( team ) && isDefined( level.teams[ team ] ) ) + { + if ( isDefined( level.spectateoverride[ team ].allowfreespectate ) ) + { + self allowspectateteam( "freelook", 1 ); + } + if ( isDefined( level.spectateoverride[ team ].allowenemyspectate ) ) + { + self allowspectateallteamsexceptteam( team, 1 ); + } + } +} + +setspectatepermissionsformachine() +{ + self setspectatepermissions(); + if ( !self issplitscreen() ) + { + return; + } + index = 0; + while ( index < level.players.size ) + { + if ( !isDefined( level.players[ index ] ) ) + { + index++; + continue; + } + else if ( level.players[ index ] == self ) + { + index++; + continue; + } + else if ( !self isplayeronsamemachine( level.players[ index ] ) ) + { + index++; + continue; + } + else + { + level.players[ index ] setspectatepermissions(); + } + index++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_tweakables.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_tweakables.gsc new file mode 100644 index 0000000..4b85e4a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_tweakables.gsc @@ -0,0 +1,394 @@ +#include maps/mp/_utility; + +gettweakabledvarvalue( category, name ) +{ + switch( category ) + { + case "rule": + dvar = level.rules[ name ].dvar; + break; + case "game": + dvar = level.gametweaks[ name ].dvar; + break; + case "team": + dvar = level.teamtweaks[ name ].dvar; + break; + case "player": + dvar = level.playertweaks[ name ].dvar; + break; + case "class": + dvar = level.classtweaks[ name ].dvar; + break; + case "weapon": + dvar = level.weapontweaks[ name ].dvar; + break; + case "killstreak": + dvar = level.hardpointtweaks[ name ].dvar; + break; + case "hud": + dvar = level.hudtweaks[ name ].dvar; + break; + default: + dvar = undefined; + break; + } +/# + assert( isDefined( dvar ) ); +#/ + value = getDvarInt( dvar ); + return value; +} + +gettweakabledvar( category, name ) +{ + switch( category ) + { + case "rule": + value = level.rules[ name ].dvar; + break; + case "game": + value = level.gametweaks[ name ].dvar; + break; + case "team": + value = level.teamtweaks[ name ].dvar; + break; + case "player": + value = level.playertweaks[ name ].dvar; + break; + case "class": + value = level.classtweaks[ name ].dvar; + break; + case "weapon": + value = level.weapontweaks[ name ].dvar; + break; + case "killstreak": + value = level.hardpointtweaks[ name ].dvar; + break; + case "hud": + value = level.hudtweaks[ name ].dvar; + break; + default: + value = undefined; + break; + } +/# + assert( isDefined( value ) ); +#/ + return value; +} + +gettweakablevalue( category, name ) +{ + switch( category ) + { + case "rule": + value = level.rules[ name ].value; + break; + case "game": + value = level.gametweaks[ name ].value; + break; + case "team": + value = level.teamtweaks[ name ].value; + break; + case "player": + value = level.playertweaks[ name ].value; + break; + case "class": + value = level.classtweaks[ name ].value; + break; + case "weapon": + value = level.weapontweaks[ name ].value; + break; + case "killstreak": + value = level.hardpointtweaks[ name ].value; + break; + case "hud": + value = level.hudtweaks[ name ].value; + break; + default: + value = undefined; + break; + } + overridedvar = "scr_" + level.gametype + "_" + category + "_" + name; + if ( getDvar( overridedvar ) != "" ) + { + return getDvarInt( overridedvar ); + } +/# + assert( isDefined( value ) ); +#/ + return value; +} + +gettweakablelastvalue( category, name ) +{ + switch( category ) + { + case "rule": + value = level.rules[ name ].lastvalue; + break; + case "game": + value = level.gametweaks[ name ].lastvalue; + break; + case "team": + value = level.teamtweaks[ name ].lastvalue; + break; + case "player": + value = level.playertweaks[ name ].lastvalue; + break; + case "class": + value = level.classtweaks[ name ].lastvalue; + break; + case "weapon": + value = level.weapontweaks[ name ].lastvalue; + break; + case "killstreak": + value = level.hardpointtweaks[ name ].lastvalue; + break; + case "hud": + value = level.hudtweaks[ name ].lastvalue; + break; + default: + value = undefined; + break; + } +/# + assert( isDefined( value ) ); +#/ + return value; +} + +settweakablevalue( category, name, value ) +{ + switch( category ) + { + case "rule": + dvar = level.rules[ name ].dvar; + break; + case "game": + dvar = level.gametweaks[ name ].dvar; + break; + case "team": + dvar = level.teamtweaks[ name ].dvar; + break; + case "player": + dvar = level.playertweaks[ name ].dvar; + break; + case "class": + dvar = level.classtweaks[ name ].dvar; + break; + case "weapon": + dvar = level.weapontweaks[ name ].dvar; + break; + case "killstreak": + dvar = level.hardpointtweaks[ name ].dvar; + break; + case "hud": + dvar = level.hudtweaks[ name ].dvar; + break; + default: + dvar = undefined; + break; + } + setdvar( dvar, value ); +} + +settweakablelastvalue( category, name, value ) +{ + switch( category ) + { + case "rule": + level.rules[ name ].lastvalue = value; + break; + case "game": + level.gametweaks[ name ].lastvalue = value; + break; + case "team": + level.teamtweaks[ name ].lastvalue = value; + break; + case "player": + level.playertweaks[ name ].lastvalue = value; + break; + case "class": + level.classtweaks[ name ].lastvalue = value; + break; + case "weapon": + level.weapontweaks[ name ].lastvalue = value; + break; + case "killstreak": + level.hardpointtweaks[ name ].lastvalue = value; + break; + case "hud": + level.hudtweaks[ name ].lastvalue = value; + break; + default: + } + } +} + +registertweakable( category, name, dvar, value ) +{ + if ( isstring( value ) ) + { + if ( getDvar( dvar ) == "" ) + { + setdvar( dvar, value ); + } + else + { + value = getDvar( dvar ); + } + } + else if ( getDvar( dvar ) == "" ) + { + setdvar( dvar, value ); + } + else + { + value = getDvarInt( dvar ); + } + switch( category ) + { + case "rule": + if ( !isDefined( level.rules[ name ] ) ) + { + level.rules[ name ] = spawnstruct(); + } + level.rules[ name ].value = value; + level.rules[ name ].lastvalue = value; + level.rules[ name ].dvar = dvar; + break; + case "game": + if ( !isDefined( level.gametweaks[ name ] ) ) + { + level.gametweaks[ name ] = spawnstruct(); + } + level.gametweaks[ name ].value = value; + level.gametweaks[ name ].lastvalue = value; + level.gametweaks[ name ].dvar = dvar; + break; + case "team": + if ( !isDefined( level.teamtweaks[ name ] ) ) + { + level.teamtweaks[ name ] = spawnstruct(); + } + level.teamtweaks[ name ].value = value; + level.teamtweaks[ name ].lastvalue = value; + level.teamtweaks[ name ].dvar = dvar; + break; + case "player": + if ( !isDefined( level.playertweaks[ name ] ) ) + { + level.playertweaks[ name ] = spawnstruct(); + } + level.playertweaks[ name ].value = value; + level.playertweaks[ name ].lastvalue = value; + level.playertweaks[ name ].dvar = dvar; + break; + case "class": + if ( !isDefined( level.classtweaks[ name ] ) ) + { + level.classtweaks[ name ] = spawnstruct(); + } + level.classtweaks[ name ].value = value; + level.classtweaks[ name ].lastvalue = value; + level.classtweaks[ name ].dvar = dvar; + break; + case "weapon": + if ( !isDefined( level.weapontweaks[ name ] ) ) + { + level.weapontweaks[ name ] = spawnstruct(); + } + level.weapontweaks[ name ].value = value; + level.weapontweaks[ name ].lastvalue = value; + level.weapontweaks[ name ].dvar = dvar; + break; + case "killstreak": + if ( !isDefined( level.hardpointtweaks[ name ] ) ) + { + level.hardpointtweaks[ name ] = spawnstruct(); + } + level.hardpointtweaks[ name ].value = value; + level.hardpointtweaks[ name ].lastvalue = value; + level.hardpointtweaks[ name ].dvar = dvar; + break; + case "hud": + if ( !isDefined( level.hudtweaks[ name ] ) ) + { + level.hudtweaks[ name ] = spawnstruct(); + } + level.hudtweaks[ name ].value = value; + level.hudtweaks[ name ].lastvalue = value; + level.hudtweaks[ name ].dvar = dvar; + break; + } +} + +init() +{ + level.clienttweakables = []; + level.tweakablesinitialized = 1; + level.rules = []; + level.gametweaks = []; + level.teamtweaks = []; + level.playertweaks = []; + level.classtweaks = []; + level.weapontweaks = []; + level.hardpointtweaks = []; + level.hudtweaks = []; + registertweakable( "game", "arcadescoring", "scr_game_arcadescoring", 0 ); + registertweakable( "game", "difficulty", "scr_game_difficulty", 1 ); + registertweakable( "game", "pinups", "scr_game_pinups", 0 ); + registertweakable( "team", "teamkillerplaylistbanquantum", "scr_team_teamkillerplaylistbanquantum", 0 ); + registertweakable( "team", "teamkillerplaylistbanpenalty", "scr_team_teamkillerplaylistbanpenalty", 0 ); + registertweakable( "player", "allowrevive", "scr_player_allowrevive", 1 ); + registertweakable( "weapon", "allowfrag", "scr_weapon_allowfrags", 1 ); + registertweakable( "weapon", "allowsmoke", "scr_weapon_allowsmoke", 1 ); + registertweakable( "weapon", "allowflash", "scr_weapon_allowflash", 1 ); + registertweakable( "weapon", "allowc4", "scr_weapon_allowc4", 1 ); + registertweakable( "weapon", "allowsatchel", "scr_weapon_allowsatchel", 1 ); + registertweakable( "weapon", "allowbetty", "scr_weapon_allowbetty", 1 ); + registertweakable( "weapon", "allowrpgs", "scr_weapon_allowrpgs", 1 ); + registertweakable( "weapon", "allowmines", "scr_weapon_allowmines", 1 ); + registertweakable( "hud", "showobjicons", "ui_hud_showobjicons", 1 ); + setclienttweakable( "hud", "showobjicons" ); + registertweakable( "killstreak", "allowradar", "scr_hardpoint_allowradar", 1 ); + registertweakable( "killstreak", "allowradardirection", "scr_hardpoint_allowradardirection", 1 ); + registertweakable( "killstreak", "allowcounteruav", "scr_hardpoint_allowcounteruav", 1 ); + registertweakable( "killstreak", "allowdogs", "scr_hardpoint_allowdogs", 1 ); + registertweakable( "killstreak", "allowhelicopter_comlink", "scr_hardpoint_allowhelicopter_comlink", 1 ); + registertweakable( "killstreak", "allowrcbomb", "scr_hardpoint_allowrcbomb", 1 ); + registertweakable( "killstreak", "allowauto_turret", "scr_hardpoint_allowauto_turret", 1 ); + level thread updateuitweakables(); +} + +setclienttweakable( category, name ) +{ + level.clienttweakables[ level.clienttweakables.size ] = name; +} + +updateuitweakables() +{ + for ( ;; ) + { + index = 0; + while ( index < level.clienttweakables.size ) + { + clienttweakable = level.clienttweakables[ index ]; + curvalue = gettweakabledvarvalue( "hud", clienttweakable ); + lastvalue = gettweakablelastvalue( "hud", clienttweakable ); + if ( curvalue != lastvalue ) + { + updateserverdvar( gettweakabledvar( "hud", clienttweakable ), curvalue ); + settweakablelastvalue( "hud", clienttweakable, curvalue ); + } + index++; + } + wait 1; + } +} + +updateserverdvar( dvar, value ) +{ + makedvarserverinfo( dvar, value ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_weapon_utils.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_weapon_utils.gsc new file mode 100644 index 0000000..7359766 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_weapon_utils.gsc @@ -0,0 +1,119 @@ +#include maps/mp/_utility; +#include common_scripts/utility; + +isgrenadelauncherweapon( weapon ) +{ + if ( getsubstr( weapon, 0, 3 ) == "gl_" ) + { + return 1; + } + switch( weapon ) + { + case "china_lake_mp": + case "xm25_mp": + return 1; + default: + return 0; + } +} + +isdumbrocketlauncherweapon( weapon ) +{ + switch( weapon ) + { + case "m220_tow_mp": + case "rpg_mp": + return 1; + default: + return 0; + } +} + +isguidedrocketlauncherweapon( weapon ) +{ + switch( weapon ) + { + case "fhj18_mp": + case "javelin_mp": + case "m202_flash_mp": + case "m72_law_mp": + case "smaw_mp": + return 1; + default: + return 0; + } +} + +isrocketlauncherweapon( weapon ) +{ + if ( isdumbrocketlauncherweapon( weapon ) ) + { + return 1; + } + if ( isguidedrocketlauncherweapon( weapon ) ) + { + return 1; + } + return 0; +} + +islauncherweapon( weapon ) +{ + if ( isrocketlauncherweapon( weapon ) ) + { + return 1; + } + if ( isgrenadelauncherweapon( weapon ) ) + { + return 1; + } + return 0; +} + +isreducedteamkillweapon( weapon ) +{ + switch( weapon ) + { + case "planemortar_mp": + return 1; + default: + return 0; + } +} + +ishackweapon( weapon ) +{ + return 0; +} + +ispistol( weapon ) +{ + return isDefined( level.side_arm_array[ weapon ] ); +} + +isflashorstunweapon( weapon ) +{ + if ( isDefined( weapon ) ) + { + switch( weapon ) + { + case "concussion_grenade_mp": + case "flash_grenade_mp": + case "proximity_grenade_aoe_mp": + case "proximity_grenade_mp": + return 1; + } + } + return 0; +} + +isflashorstundamage( weapon, meansofdeath ) +{ + if ( isflashorstunweapon( weapon ) ) + { + if ( meansofdeath != "MOD_GRENADE_SPLASH" ) + { + return meansofdeath == "MOD_GAS"; + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_weaponobjects.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_weaponobjects.gsc new file mode 100644 index 0000000..8953fc5 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_weaponobjects.gsc @@ -0,0 +1,2435 @@ +#include maps/mp/gametypes_zm/_globallogic_audio; +#include maps/mp/gametypes_zm/_damagefeedback; +#include maps/mp/gametypes_zm/_globallogic_player; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/_challenges; +#include maps/mp/_ballistic_knife; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ +/# + debug = weapons_get_dvar_int( "scr_weaponobject_debug", "0" ); +#/ + coneangle = weapons_get_dvar_int( "scr_weaponobject_coneangle", "70" ); + mindist = weapons_get_dvar_int( "scr_weaponobject_mindist", "20" ); + graceperiod = weapons_get_dvar( "scr_weaponobject_graceperiod", "0.6" ); + radius = weapons_get_dvar_int( "scr_weaponobject_radius", "192" ); + level thread onplayerconnect(); + level.watcherweapons = []; + level.watcherweapons = getwatcherweapons(); + level.watcherweaponnames = []; + level.watcherweaponnames = getwatchernames( level.watcherweapons ); + level.retrievableweapons = []; + level.retrievableweapons = getretrievableweapons(); + level.retrievableweaponnames = []; + level.retrievableweaponnames = getwatchernames( level.retrievableweapons ); + level.weaponobjects_headicon_offset = []; + level.weaponobjects_headicon_offset[ "default" ] = vectorScale( ( 0, 0, 1 ), 20 ); + level.weaponobjectexplodethisframe = 0; + if ( getDvar( "scr_deleteexplosivesonspawn" ) == "" ) + { + setdvar( "scr_deleteexplosivesonspawn", 1 ); + } + level.deleteexplosivesonspawn = getDvarInt( "scr_deleteexplosivesonspawn" ); + if ( sessionmodeiszombiesgame() ) + { + return; + } + precachestring( &"MP_DEFUSING_EXPLOSIVE" ); + level.claymorefxid = loadfx( "weapon/claymore/fx_claymore_laser" ); + level._equipment_spark_fx = loadfx( "weapon/grenade/fx_spark_disabled_weapon" ); + level._equipment_emp_destroy_fx = loadfx( "weapon/emp/fx_emp_explosion_equip" ); + level._equipment_explode_fx = loadfx( "explosions/fx_exp_equipment" ); + level._equipment_explode_fx_lg = loadfx( "explosions/fx_exp_equipment_lg" ); + level._effect[ "powerLight" ] = loadfx( "weapon/crossbow/fx_trail_crossbow_blink_red_os" ); + setupretrievablehintstrings(); + level.weaponobjects_headicon_offset[ "acoustic_sensor_mp" ] = vectorScale( ( 0, 0, 1 ), 25 ); + level.weaponobjects_headicon_offset[ "sensor_grenade_mp" ] = vectorScale( ( 0, 0, 1 ), 25 ); + level.weaponobjects_headicon_offset[ "camera_spike_mp" ] = vectorScale( ( 0, 0, 1 ), 35 ); + level.weaponobjects_headicon_offset[ "claymore_mp" ] = vectorScale( ( 0, 0, 1 ), 20 ); + level.weaponobjects_headicon_offset[ "bouncingbetty_mp" ] = vectorScale( ( 0, 0, 1 ), 20 ); + level.weaponobjects_headicon_offset[ "satchel_charge_mp" ] = vectorScale( ( 0, 0, 1 ), 10 ); + level.weaponobjects_headicon_offset[ "scrambler_mp" ] = vectorScale( ( 0, 0, 1 ), 20 ); + level.weaponobjects_headicon_offset[ "trophy_system_mp" ] = vectorScale( ( 0, 0, 1 ), 20 ); + level.weaponobjects_hacker_trigger_width = 32; + level.weaponobjects_hacker_trigger_height = 32; +} + +getwatchernames( weapons ) +{ + names = []; + _a73 = weapons; + index = getFirstArrayKey( _a73 ); + while ( isDefined( index ) ) + { + weapon = _a73[ index ]; + names[ index ] = getsubstr( weapon, 0, weapon.size - 3 ); + index = getNextArrayKey( _a73, index ); + } + return names; +} + +weapons_get_dvar_int( dvar, def ) +{ + return int( weapons_get_dvar( dvar, def ) ); +} + +weapons_get_dvar( dvar, def ) +{ + if ( getDvar( dvar ) != "" ) + { + return getDvarFloat( dvar ); + } + else + { + setdvar( dvar, def ); + return def; + } +} + +setupretrievablehintstrings() +{ + createretrievablehint( "hatchet", &"MP_HATCHET_PICKUP" ); + createretrievablehint( "claymore", &"MP_CLAYMORE_PICKUP" ); + createretrievablehint( "bouncingbetty", &"MP_BOUNCINGBETTY_PICKUP" ); + createretrievablehint( "trophy_system", &"MP_TROPHY_SYSTEM_PICKUP" ); + createretrievablehint( "acoustic_sensor", &"MP_ACOUSTIC_SENSOR_PICKUP" ); + createretrievablehint( "camera_spike", &"MP_CAMERA_SPIKE_PICKUP" ); + createretrievablehint( "satchel_charge", &"MP_SATCHEL_CHARGE_PICKUP" ); + createretrievablehint( "scrambler", &"MP_SCRAMBLER_PICKUP" ); + createdestroyhint( "trophy_system", &"MP_TROPHY_SYSTEM_DESTROY" ); + createdestroyhint( "sensor_grenade", &"MP_SENSOR_GRENADE_DESTROY" ); + createhackerhint( "claymore_mp", &"MP_CLAYMORE_HACKING" ); + createhackerhint( "bouncingbetty_mp", &"MP_BOUNCINGBETTY_HACKING" ); + createhackerhint( "trophy_system_mp", &"MP_TROPHY_SYSTEM_HACKING" ); + createhackerhint( "acoustic_sensor_mp", &"MP_ACOUSTIC_SENSOR_HACKING" ); + createhackerhint( "camera_spike_mp", &"MP_CAMERA_SPIKE_HACKING" ); + createhackerhint( "satchel_charge_mp", &"MP_SATCHEL_CHARGE_HACKING" ); + createhackerhint( "scrambler_mp", &"MP_SCRAMBLER_HACKING" ); +} + +onplayerconnect() +{ + if ( isDefined( level._weaponobjects_on_player_connect_override ) ) + { + level thread [[ level._weaponobjects_on_player_connect_override ]](); + return; + } + for ( ;; ) + { + level waittill( "connecting", player ); + player.usedweapons = 0; + player.hits = 0; + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + pixbeginevent( "onPlayerSpawned" ); + if ( !isDefined( self.watchersinitialized ) ) + { + self createbasewatchers(); + self setupretrievablewatcher(); + self thread watchweaponobjectusage(); + self.watchersinitialized = 1; + } + self resetwatchers(); + pixendevent(); + } +} + +resetwatchers() +{ + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + return undefined; + } + team = self.team; + _a199 = self.weaponobjectwatcherarray; + _k199 = getFirstArrayKey( _a199 ); + while ( isDefined( _k199 ) ) + { + watcher = _a199[ _k199 ]; + resetweaponobjectwatcher( watcher, team ); + _k199 = getNextArrayKey( _a199, _k199 ); + } +} + +createbasewatchers() +{ + _a208 = level.watcherweapons; + index = getFirstArrayKey( _a208 ); + while ( isDefined( index ) ) + { + weapon = _a208[ index ]; + self createweaponobjectwatcher( level.watcherweaponnames[ index ], weapon, self.team ); + index = getNextArrayKey( _a208, index ); + } + _a214 = level.retrievableweapons; + index = getFirstArrayKey( _a214 ); + while ( isDefined( index ) ) + { + weapon = _a214[ index ]; + self createweaponobjectwatcher( level.retrievableweaponnames[ index ], weapon, self.team ); + index = getNextArrayKey( _a214, index ); + } +} + +setupretrievablewatcher() +{ + i = 0; + while ( i < level.retrievableweapons.size ) + { + watcher = getweaponobjectwatcherbyweapon( level.retrievableweapons[ i ] ); + if ( !isDefined( watcher.onspawnretrievetriggers ) ) + { + watcher.onspawnretrievetriggers = ::onspawnretrievableweaponobject; + } + if ( !isDefined( watcher.ondestroyed ) ) + { + watcher.ondestroyed = ::ondestroyed; + } + if ( !isDefined( watcher.pickup ) ) + { + watcher.pickup = ::pickup; + } + i++; + } +} + +createballisticknifewatcher() +{ + watcher = self createuseweaponobjectwatcher( "knife_ballistic", "knife_ballistic_mp", self.team ); + watcher.onspawn = ::maps/mp/_ballistic_knife::onspawn; + watcher.detonate = ::deleteent; + watcher.onspawnretrievetriggers = ::maps/mp/_ballistic_knife::onspawnretrievetrigger; + watcher.storedifferentobject = 1; +} + +createhatchetwatcher() +{ + watcher = self createuseweaponobjectwatcher( "hatchet", "hatchet_mp", self.team ); + watcher.detonate = ::deleteent; + watcher.onspawn = ::voidonspawn; + watcher.onspawnretrievetriggers = ::onspawnhatchettrigger; +} + +createtactinsertwatcher() +{ + watcher = self createuseweaponobjectwatcher( "tactical_insertion", "tactical_insertion_mp", self.team ); + watcher.playdestroyeddialog = 0; +} + +creatercbombwatcher() +{ +} + +createqrdronewatcher() +{ +} + +createplayerhelicopterwatcher() +{ + watcher = self createuseweaponobjectwatcher( "helicopter_player", "helicopter_player_mp", self.team ); + watcher.altdetonate = 1; + watcher.headicon = 0; +} + +createclaymorewatcher() +{ + watcher = self createproximityweaponobjectwatcher( "claymore", "claymore_mp", self.team ); + watcher.watchforfire = 1; + watcher.detonate = ::claymoredetonate; + watcher.activatesound = "wpn_claymore_alert"; + watcher.hackable = 1; + watcher.hackertoolradius = level.claymorehackertoolradius; + watcher.hackertooltimems = level.claymorehackertooltimems; + watcher.reconmodel = "t6_wpn_claymore_world_detect"; + watcher.ownergetsassist = 1; + detectionconeangle = weapons_get_dvar_int( "scr_weaponobject_coneangle" ); + watcher.detectiondot = cos( detectionconeangle ); + watcher.detectionmindist = weapons_get_dvar_int( "scr_weaponobject_mindist" ); + watcher.detectiongraceperiod = weapons_get_dvar( "scr_weaponobject_graceperiod" ); + watcher.detonateradius = weapons_get_dvar_int( "scr_weaponobject_radius" ); + watcher.stun = ::weaponstun; + watcher.stuntime = 5; +} + +waittillnotmoving_and_notstunned() +{ + prevorigin = self.origin; + while ( 1 ) + { + wait 0,15; + if ( self.origin == prevorigin && !self isstunned() ) + { + return; + } + else + { + prevorigin = self.origin; + } + } +} + +voidonspawn( unused0, unused1 ) +{ +} + +deleteent( attacker, emp ) +{ + self delete(); +} + +clearfxondeath( fx ) +{ + fx endon( "death" ); + self waittill_any( "death", "hacked" ); + fx delete(); +} + +deleteweaponobjectarray() +{ + while ( isDefined( self.objectarray ) ) + { + i = 0; + while ( i < self.objectarray.size ) + { + if ( isDefined( self.objectarray[ i ] ) ) + { + self.objectarray[ i ] delete(); + } + i++; + } + } + self.objectarray = []; +} + +claymoredetonate( attacker, weaponname ) +{ + from_emp = 0; + if ( !isDefined( from_emp ) || !from_emp ) + { + if ( isDefined( attacker ) ) + { + if ( level.teambased || attacker.team != self.owner.team && attacker != self.owner ) + { + attacker maps/mp/_challenges::destroyedexplosive(); + } + } + } + maps/mp/gametypes_zm/_weaponobjects::weapondetonate( attacker, weaponname ); +} + +weapondetonate( attacker, weaponname ) +{ + from_emp = 0; + if ( from_emp ) + { + self delete(); + return; + } + if ( isDefined( attacker ) ) + { + self detonate( attacker ); + } + else if ( isDefined( self.owner ) && isplayer( self.owner ) ) + { + self detonate( self.owner ); + } + else + { + self detonate(); + } +} + +waitanddetonate( object, delay, attacker, weaponname ) +{ + object endon( "death" ); + object endon( "hacked" ); + from_emp = 0; + if ( from_emp ) + { + object setclientflag( 15 ); + object setclientflag( 9 ); + object.stun_fx = 1; + if ( isDefined( object.name ) && object.name == "qrdrone_turret_mp" ) + { + playfx( level._equipment_emp_destroy_fx, object.origin + ( 0, 0, 1 ), ( 0, randomfloat( 360 ), 0 ) ); + } + else + { + playfx( level._equipment_emp_destroy_fx, object.origin + vectorScale( ( 0, 0, 1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); + } + delay = 1,1; + } + if ( delay ) + { + wait delay; + } + if ( isDefined( object.detonated ) && object.detonated == 1 ) + { + return; + } + if ( !isDefined( self.detonate ) ) + { + return; + } + if ( isDefined( attacker ) && isplayer( attacker ) && isDefined( attacker.pers[ "team" ] ) && isDefined( object.owner ) && isDefined( object.owner.pers[ "team" ] ) ) + { + if ( level.teambased ) + { + if ( attacker.pers[ "team" ] != object.owner.pers[ "team" ] ) + { + attacker notify( "destroyed_explosive" ); + } + } + else + { + if ( attacker != object.owner ) + { + attacker notify( "destroyed_explosive" ); + } + } + } + object.detonated = 1; + object [[ self.detonate ]]( attacker, weaponname ); +} + +detonateweaponobjectarray( forcedetonation, weapon ) +{ + undetonated = []; + while ( isDefined( self.objectarray ) ) + { + i = 0; + while ( i < self.objectarray.size ) + { + if ( isDefined( self.objectarray[ i ] ) ) + { + if ( self.objectarray[ i ] isstunned() && forcedetonation == 0 ) + { + undetonated[ undetonated.size ] = self.objectarray[ i ]; + i++; + continue; + } + else + { + if ( isDefined( weapon ) ) + { + if ( weapon ishacked() && weapon.name != self.objectarray[ i ].name ) + { + undetonated[ undetonated.size ] = self.objectarray[ i ]; + i++; + continue; + } + else if ( self.objectarray[ i ] ishacked() && weapon.name != self.objectarray[ i ].name ) + { + undetonated[ undetonated.size ] = self.objectarray[ i ]; + i++; + continue; + } + } + else + { + self thread waitanddetonate( self.objectarray[ i ], 0,1, undefined, weapon ); + } + } + } + i++; + } + } + self.objectarray = undetonated; +} + +addweaponobjecttowatcher( watchername, weapon ) +{ + watcher = getweaponobjectwatcher( watchername ); +/# + assert( isDefined( watcher ), "Weapon object watcher " + watchername + " does not exist" ); +#/ + self addweaponobject( watcher, weapon ); +} + +addweaponobject( watcher, weapon ) +{ + if ( !isDefined( watcher.storedifferentobject ) ) + { + watcher.objectarray[ watcher.objectarray.size ] = weapon; + } + weapon.owner = self; + weapon.detonated = 0; + weapon.name = watcher.weapon; + if ( isDefined( watcher.ondamage ) ) + { + weapon thread [[ watcher.ondamage ]]( watcher ); + } + else + { + weapon thread weaponobjectdamage( watcher ); + } + weapon.ownergetsassist = watcher.ownergetsassist; + if ( isDefined( watcher.onspawn ) ) + { + weapon thread [[ watcher.onspawn ]]( watcher, self ); + } + if ( isDefined( watcher.onspawnfx ) ) + { + weapon thread [[ watcher.onspawnfx ]](); + } + if ( isDefined( watcher.reconmodel ) ) + { + weapon thread attachreconmodel( watcher.reconmodel, self ); + } + if ( isDefined( watcher.onspawnretrievetriggers ) ) + { + weapon thread [[ watcher.onspawnretrievetriggers ]]( watcher, self ); + } + if ( watcher.hackable ) + { + weapon thread hackerinit( watcher ); + } + if ( isDefined( watcher.stun ) ) + { + weapon thread watchscramble( watcher ); + } + if ( watcher.playdestroyeddialog ) + { + weapon thread playdialogondeath( self ); + weapon thread watchobjectdamage( self ); + } + if ( watcher.deleteonkillbrush ) + { + weapon thread deleteonkillbrush( self ); + } +} + +watchscramble( watcher ) +{ +} + +deleteweaponobjecthelper( weapon_ent ) +{ + if ( !isDefined( weapon_ent.name ) ) + { + return; + } + watcher = self getweaponobjectwatcherbyweapon( weapon_ent.name ); + if ( !isDefined( watcher ) ) + { + return; + } + watcher.objectarray = deleteweaponobject( watcher, weapon_ent ); +} + +deleteweaponobject( watcher, weapon_ent ) +{ + temp_objectarray = watcher.objectarray; + watcher.objectarray = []; + j = 0; + i = 0; + while ( i < temp_objectarray.size ) + { + if ( !isDefined( temp_objectarray[ i ] ) || temp_objectarray[ i ] == weapon_ent ) + { + i++; + continue; + } + else + { + watcher.objectarray[ j ] = temp_objectarray[ i ]; + j++; + } + i++; + } + return watcher.objectarray; +} + +weaponobjectdamage( watcher ) +{ + self endon( "death" ); + self endon( "hacked" ); + self setcandamage( 1 ); + self.maxhealth = 100000; + self.health = self.maxhealth; + attacker = undefined; + for ( ;; ) + { + while ( 1 ) + { + self waittill( "damage", damage, attacker, direction_vec, point, type, modelname, tagname, partname, weaponname, idflags ); + if ( isDefined( weaponname ) ) + { + switch( weaponname ) + { + case "concussion_grenade_mp": + case "flash_grenade_mp": + case "proximity_grenade_mp": + if ( watcher.stuntime > 0 ) + { + self thread stunstart( watcher, watcher.stuntime ); + } + if ( level.teambased && self.owner.team != attacker.team ) + { + if ( maps/mp/gametypes_zm/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) + { + attacker maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback(); + } + continue; + } + else + { + if ( !level.teambased && self.owner != attacker ) + { + if ( maps/mp/gametypes_zm/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) + { + attacker maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback(); + } + } + } + } + case "willy_pete_mp": + } + case "emp_grenade_mp": + if ( level.teambased && self.owner.team != attacker.team ) + { + if ( maps/mp/gametypes_zm/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) + { + attacker maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback(); + } + } + else if ( !level.teambased && self.owner != attacker ) + { + if ( maps/mp/gametypes_zm/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) + { + attacker maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback(); + } + } + break; + break; + default: + } + } + if ( !isplayer( attacker ) && isDefined( attacker.owner ) ) + { + attacker = attacker.owner; + } + while ( level.teambased && isplayer( attacker ) ) + { + while ( !level.hardcoremode && self.owner.team == attacker.pers[ "team" ] && self.owner != attacker ) + { + continue; + } + } + if ( maps/mp/gametypes_zm/_globallogic_player::dodamagefeedback( weaponname, attacker ) ) + { + attacker maps/mp/gametypes_zm/_damagefeedback::updatedamagefeedback(); + } + if ( !isvehicle( self ) && !friendlyfirecheck( self.owner, attacker ) ) + { + continue; + } + } + if ( level.weaponobjectexplodethisframe ) + { + wait ( 0,1 + randomfloat( 0,4 ) ); + } + else wait 0,05; + if ( !isDefined( self ) ) + { + return; + } + level.weaponobjectexplodethisframe = 1; + thread resetweaponobjectexplodethisframe(); + if ( isDefined( type ) && !issubstr( type, "MOD_GRENADE_SPLASH" ) || issubstr( type, "MOD_GRENADE" ) && issubstr( type, "MOD_EXPLOSIVE" ) ) + { + self.waschained = 1; + } + if ( isDefined( idflags ) && idflags & level.idflags_penetration ) + { + self.wasdamagedfrombulletpenetration = 1; + } + self.wasdamaged = 1; + watcher thread waitanddetonate( self, 0, attacker, weaponname ); + } + } +} + +playdialogondeath( owner ) +{ + owner endon( "death" ); + owner endon( "disconnect" ); + self endon( "hacked" ); + self waittill( "death" ); + if ( isDefined( self.playdialog ) && self.playdialog ) + { + owner maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "equipment_destroyed", "item_destroyed" ); + } +} + +watchobjectdamage( owner ) +{ + owner endon( "death" ); + owner endon( "disconnect" ); + self endon( "hacked" ); + self endon( "death" ); + while ( 1 ) + { + self waittill( "damage", damage, attacker ); + if ( isDefined( attacker ) && isplayer( attacker ) && attacker != owner ) + { + self.playdialog = 1; + continue; + } + else + { + self.playdialog = 0; + } + } +} + +stunstart( watcher, time ) +{ + self endon( "death" ); + if ( self isstunned() ) + { + return; + } + if ( isDefined( self.camerahead ) ) + { + self.camerahead setclientflag( 9 ); + } + self setclientflag( 9 ); + if ( isDefined( watcher.stun ) ) + { + self thread [[ watcher.stun ]](); + } + if ( watcher.name == "rcbomb" ) + { + self.owner freezecontrolswrapper( 1 ); + } + if ( isDefined( time ) ) + { + wait time; + } + else + { + return; + } + if ( watcher.name == "rcbomb" ) + { + self.owner freezecontrolswrapper( 0 ); + } + self stunstop(); +} + +stunstop() +{ + self notify( "not_stunned" ); + if ( isDefined( self.camerahead ) ) + { + self.camerahead clearclientflag( 9 ); + } + self clearclientflag( 9 ); +} + +weaponstun() +{ + self endon( "death" ); + self endon( "not_stunned" ); + origin = self gettagorigin( "tag_fx" ); + if ( !isDefined( origin ) ) + { + origin = self.origin + vectorScale( ( 0, 0, 1 ), 10 ); + } + self.stun_fx = spawn( "script_model", origin ); + self.stun_fx setmodel( "tag_origin" ); + self thread stunfxthink( self.stun_fx ); + wait 0,1; + playfxontag( level._equipment_spark_fx, self.stun_fx, "tag_origin" ); + self.stun_fx playsound( "dst_disable_spark" ); +} + +stunfxthink( fx ) +{ + fx endon( "death" ); + self waittill_any( "death", "not_stunned" ); + fx delete(); +} + +isstunned() +{ + return isDefined( self.stun_fx ); +} + +resetweaponobjectexplodethisframe() +{ + wait 0,05; + level.weaponobjectexplodethisframe = 0; +} + +getweaponobjectwatcher( name ) +{ + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + return undefined; + } + watcher = 0; + while ( watcher < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ watcher ].name == name ) + { + return self.weaponobjectwatcherarray[ watcher ]; + } + watcher++; + } + return undefined; +} + +getweaponobjectwatcherbyweapon( weapon ) +{ + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + return undefined; + } + watcher = 0; + while ( watcher < self.weaponobjectwatcherarray.size ) + { + if ( isDefined( self.weaponobjectwatcherarray[ watcher ].weapon ) && self.weaponobjectwatcherarray[ watcher ].weapon == weapon ) + { + return self.weaponobjectwatcherarray[ watcher ]; + } + if ( isDefined( self.weaponobjectwatcherarray[ watcher ].weapon ) && isDefined( self.weaponobjectwatcherarray[ watcher ].altweapon ) && self.weaponobjectwatcherarray[ watcher ].altweapon == weapon ) + { + return self.weaponobjectwatcherarray[ watcher ]; + } + watcher++; + } + return undefined; +} + +resetweaponobjectwatcher( watcher, ownerteam ) +{ + if ( level.deleteexplosivesonspawn == 1 ) + { + self notify( "weapon_object_destroyed" ); + watcher deleteweaponobjectarray(); + } + watcher.ownerteam = ownerteam; +} + +createweaponobjectwatcher( name, weapon, ownerteam ) +{ + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + self.weaponobjectwatcherarray = []; + } + weaponobjectwatcher = getweaponobjectwatcher( name ); + if ( !isDefined( weaponobjectwatcher ) ) + { + weaponobjectwatcher = spawnstruct(); + self.weaponobjectwatcherarray[ self.weaponobjectwatcherarray.size ] = weaponobjectwatcher; + weaponobjectwatcher.name = name; + weaponobjectwatcher.type = "use"; + weaponobjectwatcher.weapon = weapon; + weaponobjectwatcher.weaponidx = getweaponindexfromname( weapon ); + weaponobjectwatcher.watchforfire = 0; + weaponobjectwatcher.hackable = 0; + weaponobjectwatcher.altdetonate = 0; + weaponobjectwatcher.detectable = 1; + weaponobjectwatcher.headicon = 1; + weaponobjectwatcher.stuntime = 0; + weaponobjectwatcher.activatesound = undefined; + weaponobjectwatcher.ignoredirection = undefined; + weaponobjectwatcher.immediatedetonation = undefined; + weaponobjectwatcher.deploysound = getweaponfiresound( weaponobjectwatcher.weaponidx ); + weaponobjectwatcher.deploysoundplayer = getweaponfiresoundplayer( weaponobjectwatcher.weaponidx ); + weaponobjectwatcher.pickupsound = getweaponpickupsound( weaponobjectwatcher.weaponidx ); + weaponobjectwatcher.pickupsoundplayer = getweaponpickupsoundplayer( weaponobjectwatcher.weaponidx ); + weaponobjectwatcher.altweapon = undefined; + weaponobjectwatcher.ownergetsassist = 0; + weaponobjectwatcher.playdestroyeddialog = 1; + weaponobjectwatcher.deleteonkillbrush = 1; + weaponobjectwatcher.deleteondifferentobjectspawn = 1; + weaponobjectwatcher.enemydestroy = 0; + weaponobjectwatcher.onspawn = undefined; + weaponobjectwatcher.onspawnfx = undefined; + weaponobjectwatcher.onspawnretrievetriggers = undefined; + weaponobjectwatcher.ondetonated = undefined; + weaponobjectwatcher.detonate = undefined; + weaponobjectwatcher.stun = undefined; + weaponobjectwatcher.ondestroyed = undefined; + if ( !isDefined( weaponobjectwatcher.objectarray ) ) + { + weaponobjectwatcher.objectarray = []; + } + } + resetweaponobjectwatcher( weaponobjectwatcher, ownerteam ); + return weaponobjectwatcher; +} + +createuseweaponobjectwatcher( name, weapon, ownerteam ) +{ + weaponobjectwatcher = createweaponobjectwatcher( name, weapon, ownerteam ); + weaponobjectwatcher.type = "use"; + weaponobjectwatcher.onspawn = ::onspawnuseweaponobject; + return weaponobjectwatcher; +} + +createproximityweaponobjectwatcher( name, weapon, ownerteam ) +{ + weaponobjectwatcher = createweaponobjectwatcher( name, weapon, ownerteam ); + weaponobjectwatcher.type = "proximity"; + weaponobjectwatcher.onspawn = ::onspawnproximityweaponobject; + detectionconeangle = weapons_get_dvar_int( "scr_weaponobject_coneangle" ); + weaponobjectwatcher.detectiondot = cos( detectionconeangle ); + weaponobjectwatcher.detectionmindist = weapons_get_dvar_int( "scr_weaponobject_mindist" ); + weaponobjectwatcher.detectiongraceperiod = weapons_get_dvar( "scr_weaponobject_graceperiod" ); + weaponobjectwatcher.detonateradius = weapons_get_dvar_int( "scr_weaponobject_radius" ); + return weaponobjectwatcher; +} + +commononspawnuseweaponobject( watcher, owner ) +{ + if ( watcher.detectable ) + { + if ( isDefined( watcher.ismovable ) && watcher.ismovable ) + { + self thread weaponobjectdetectionmovable( owner.pers[ "team" ] ); + } + else + { + self thread weaponobjectdetectiontrigger_wait( owner.pers[ "team" ] ); + } + if ( watcher.headicon && level.teambased ) + { + self waittillnotmoving(); + offset = level.weaponobjects_headicon_offset[ "default" ]; + if ( isDefined( level.weaponobjects_headicon_offset[ self.name ] ) ) + { + offset = level.weaponobjects_headicon_offset[ self.name ]; + } + } + } +} + +onspawnuseweaponobject( watcher, owner ) +{ + self commononspawnuseweaponobject( watcher, owner ); +} + +onspawnproximityweaponobject( watcher, owner ) +{ + self thread commononspawnuseweaponobject( watcher, owner ); + self thread proximityweaponobjectdetonation( watcher ); +/# + if ( getDvarInt( #"38868733" ) ) + { + self thread proximityweaponobjectdebug( watcher ); +#/ + } +} + +watchweaponobjectusage() +{ + self endon( "disconnect" ); + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + self.weaponobjectwatcherarray = []; + } + self thread watchweaponobjectspawn(); + self thread watchweaponprojectileobjectspawn(); + self thread watchweaponobjectdetonation(); + self thread watchweaponobjectaltdetonation(); + self thread watchweaponobjectaltdetonate(); + self thread deleteweaponobjectson(); +} + +watchweaponobjectspawn() +{ + self notify( "watchWeaponObjectSpawn" ); + self endon( "watchWeaponObjectSpawn" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "grenade_fire", weapon, weapname ); + switch( weapname ) + { + case "acoustic_sensor_mp": + case "bouncingbetty_mp": + case "camera_spike_mp": + case "scrambler_mp": + case "tactical_insertion_mp": + break; + case "bouncingbetty_mp": + case "claymore_mp": + case "proximity_grenade_mp": + case "satchel_charge_mp": + case "sensor_grenade_mp": + case "trophy_system_mp": + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + objectarray_size = self.weaponobjectwatcherarray[ i ].objectarray.size; + j = 0; + while ( j < objectarray_size ) + { + if ( !isDefined( self.weaponobjectwatcherarray[ i ].objectarray[ j ] ) ) + { + self.weaponobjectwatcherarray[ i ].objectarray = deleteweaponobject( self.weaponobjectwatcherarray[ i ], weapon ); + } + j++; + } + numallowed = 2; + if ( weapname == "proximity_grenade_mp" ) + { + numallowed = weapons_get_dvar_int( "scr_proximityGrenadeMaxInstances" ); + } + if ( isDefined( self.weaponobjectwatcherarray[ i ].detonate ) && self.weaponobjectwatcherarray[ i ].objectarray.size > ( numallowed - 1 ) ) + { + self.weaponobjectwatcherarray[ i ] thread waitanddetonate( self.weaponobjectwatcherarray[ i ].objectarray[ 0 ], 0,1, undefined, weapname ); + } + } + i++; + } + default: + } + if ( !self ishacked() ) + { + if ( weapname != "claymore_mp" || weapname == "satchel_charge_mp" && weapname == "bouncingbetty_mp" ) + { + self addweaponstat( weapname, "used", 1 ); + } + } + watcher = getweaponobjectwatcherbyweapon( weapname ); + if ( isDefined( watcher ) ) + { + self addweaponobject( watcher, weapon ); + } + } + } + } +} + +watchweaponprojectileobjectspawn() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "missile_fire", weapon, weapname ); + watcher = getweaponobjectwatcherbyweapon( weapname ); + if ( isDefined( watcher ) ) + { + self addweaponobject( watcher, weapon ); + objectarray_size = watcher.objectarray.size; + j = 0; + while ( j < objectarray_size ) + { + if ( !isDefined( watcher.objectarray[ j ] ) ) + { + watcher.objectarray = deleteweaponobject( watcher, weapon ); + } + j++; + } + if ( isDefined( watcher.detonate ) && watcher.objectarray.size > 1 ) + { + watcher thread waitanddetonate( watcher.objectarray[ 0 ], 0,1 ); + } + } + } +} + +proximityweaponobjectdebug( watcher ) +{ +/# + self waittillnotmoving(); + self thread showcone( acos( watcher.detectiondot ), watcher.detonateradius, ( 1, 0,85, 0 ) ); + self thread showcone( 60, 256, ( 0, 0, 1 ) ); +#/ +} + +vectorcross( v1, v2 ) +{ +/# + return ( ( v1[ 1 ] * v2[ 2 ] ) - ( v1[ 2 ] * v2[ 1 ] ), ( v1[ 2 ] * v2[ 0 ] ) - ( v1[ 0 ] * v2[ 2 ] ), ( v1[ 0 ] * v2[ 1 ] ) - ( v1[ 1 ] * v2[ 0 ] ) ); +#/ +} + +showcone( angle, range, color ) +{ +/# + self endon( "death" ); + start = self.origin; + forward = anglesToForward( self.angles ); + right = vectorcross( forward, ( 0, 0, 1 ) ); + up = vectorcross( forward, right ); + fullforward = forward * range * cos( angle ); + sideamnt = range * sin( angle ); + while ( 1 ) + { + prevpoint = ( 0, 0, 1 ); + i = 0; + while ( i <= 20 ) + { + coneangle = ( i / 20 ) * 360; + point = ( start + fullforward ) + ( sideamnt * ( ( right * cos( coneangle ) ) + ( up * sin( coneangle ) ) ) ); + if ( i > 0 ) + { + line( start, point, color ); + line( prevpoint, point, color ); + } + prevpoint = point; + i++; + } + wait 0,05; +#/ + } +} + +weaponobjectdetectionmovable( ownerteam ) +{ + self endon( "end_detection" ); + level endon( "game_ended" ); + self endon( "death" ); + self endon( "hacked" ); + if ( level.oldschool ) + { + return; + } + if ( !level.teambased ) + { + return; + } + self.detectid = "rcBomb" + getTime() + randomint( 1000000 ); + while ( !level.gameended ) + { + wait 1; + players = get_players(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( isai( player ) ) + { + i++; + continue; + } + else if ( isDefined( self.model_name ) && player hasperk( "specialty_detectexplosive" ) ) + { + switch( self.model_name ) + { + case "t6_wpn_c4_world_detect": + case "t6_wpn_claymore_world_detect": + break; + default: + } + } + else if ( player.team == ownerteam ) + { + i++; + continue; + } + else if ( isDefined( player.bombsquadids[ self.detectid ] ) ) + { + i++; + continue; + } + i++; + } + } + } +} + +seticonpos( item, icon, heightincrease ) +{ + icon.x = item.origin[ 0 ]; + icon.y = item.origin[ 1 ]; + icon.z = item.origin[ 2 ] + heightincrease; +} + +weaponobjectdetectiontrigger_wait( ownerteam ) +{ + self endon( "death" ); + self endon( "hacked" ); + waittillnotmoving(); + if ( level.oldschool ) + { + return; + } + self thread weaponobjectdetectiontrigger( ownerteam ); +} + +weaponobjectdetectiontrigger( ownerteam ) +{ + trigger = spawn( "trigger_radius", self.origin - vectorScale( ( 0, 0, 1 ), 128 ), 0, 512, 256 ); + trigger.detectid = "trigger" + getTime() + randomint( 1000000 ); + trigger sethintlowpriority( 1 ); + self waittill_any( "death", "hacked" ); + trigger notify( "end_detection" ); + if ( isDefined( trigger.bombsquadicon ) ) + { + trigger.bombsquadicon destroy(); + } + trigger delete(); +} + +hackertriggersetvisibility( owner ) +{ + self endon( "death" ); +/# + assert( isplayer( owner ) ); +#/ + ownerteam = owner.pers[ "team" ]; + for ( ;; ) + { + if ( level.teambased ) + { + self setvisibletoallexceptteam( ownerteam ); + self setexcludeteamfortrigger( ownerteam ); + } + else + { + self setvisibletoall(); + self setteamfortrigger( "none" ); + } + self setinvisibletoplayer( owner ); + level waittill_any( "player_spawned", "joined_team" ); + } +} + +hackernotmoving() +{ + self endon( "death" ); + self waittillnotmoving(); + self notify( "landed" ); +} + +hackerinit( watcher ) +{ + self thread hackernotmoving(); + event = self waittill_any_return( "death", "landed" ); + if ( event == "death" ) + { + return; + } + triggerorigin = self.origin; + if ( isDefined( self.name ) && self.name == "satchel_charge_mp" ) + { + triggerorigin = self gettagorigin( "tag_fx" ); + } + self.hackertrigger = spawn( "trigger_radius_use", triggerorigin, level.weaponobjects_hacker_trigger_width, level.weaponobjects_hacker_trigger_height ); +/# +#/ + self.hackertrigger sethintlowpriority( 1 ); + self.hackertrigger setcursorhint( "HINT_NOICON", self ); + self.hackertrigger setignoreentfortrigger( self ); + self.hackertrigger enablelinkto(); + self.hackertrigger linkto( self ); + if ( isDefined( level.hackerhints[ self.name ] ) ) + { + self.hackertrigger sethintstring( level.hackerhints[ self.name ].hint ); + } + else + { + self.hackertrigger sethintstring( &"MP_GENERIC_HACKING" ); + } + self.hackertrigger setperkfortrigger( "specialty_disarmexplosive" ); + self.hackertrigger thread hackertriggersetvisibility( self.owner ); + self thread hackerthink( self.hackertrigger, watcher ); +} + +hackerthink( trigger, watcher ) +{ + self endon( "death" ); + for ( ;; ) + { + trigger waittill( "trigger", player, instant ); + if ( !isDefined( instant ) && !trigger hackerresult( player, self.owner ) ) + { + continue; + } + else + { + self.owner hackerremoveweapon( self ); + self.owner maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "hacked_equip", "item_destroyed" ); + self.hacked = 1; + self setmissileowner( player ); + self setteam( player.pers[ "team" ] ); + self.owner = player; + if ( isweaponequipment( self.name ) ) + { + } + if ( self.name == "satchel_charge_mp" && isDefined( player.lowermessage ) ) + { + player.lowermessage settext( &"PLATFORM_SATCHEL_CHARGE_DOUBLE_TAP" ); + player.lowermessage.alpha = 1; + player.lowermessage fadeovertime( 2 ); + player.lowermessage.alpha = 0; + } + self notify( "hacked" ); + level notify( "hacked" ); + if ( self.name == "camera_spike_mp" && isDefined( self.camerahead ) ) + { + self.camerahead notify( "hacked" ); + } +/# +#/ + if ( isDefined( watcher.stun ) ) + { + self thread stunstart( watcher, 0,75 ); + wait 0,75; + } + else + { + wait 0,05; + } + if ( isDefined( player ) && player.sessionstate == "playing" ) + { + player notify( "grenade_fire" ); + } + else + { + watcher thread waitanddetonate( self, 0 ); + } + return; + } + } +} + +ishacked() +{ + if ( isDefined( self.hacked ) ) + { + return self.hacked; + } +} + +hackerunfreezeplayer( player ) +{ + self endon( "hack_done" ); + self waittill( "death" ); + if ( isDefined( player ) ) + { + player freeze_player_controls( 0 ); + player enableweapons(); + } +} + +hackerresult( player, owner ) +{ + success = 1; + time = getTime(); + hacktime = getDvarFloat( "perk_disarmExplosiveTime" ); + if ( !canhack( player, owner, 1 ) ) + { + return 0; + } + self thread hackerunfreezeplayer( player ); + while ( ( time + ( hacktime * 1000 ) ) > getTime() ) + { + if ( !canhack( player, owner, 0 ) ) + { + success = 0; + break; + } + else if ( !player usebuttonpressed() ) + { + success = 0; + break; + } + else if ( !isDefined( self ) ) + { + success = 0; + break; + } + else + { + player freeze_player_controls( 1 ); + player disableweapons(); + if ( !isDefined( self.progressbar ) ) + { + self.progressbar = player createprimaryprogressbar(); + self.progressbar.lastuserate = -1; + self.progressbar showelem(); + self.progressbar updatebar( 0,01, 1 / hacktime ); + self.progresstext = player createprimaryprogressbartext(); + self.progresstext settext( &"MP_HACKING" ); + self.progresstext showelem(); + player playlocalsound( "evt_hacker_hacking" ); + } + wait 0,05; + } + } + if ( isDefined( player ) ) + { + player freeze_player_controls( 0 ); + player enableweapons(); + } + if ( isDefined( self.progressbar ) ) + { + self.progressbar destroyelem(); + self.progresstext destroyelem(); + } + if ( isDefined( self ) ) + { + self notify( "hack_done" ); + } + return success; +} + +canhack( player, owner, weapon_check ) +{ + if ( !isDefined( player ) ) + { + return 0; + } + if ( !isplayer( player ) ) + { + return 0; + } + if ( !isalive( player ) ) + { + return 0; + } + if ( !isDefined( owner ) ) + { + return 0; + } + if ( owner == player ) + { + return 0; + } + if ( level.teambased && player.team == owner.team ) + { + return 0; + } + if ( isDefined( player.isdefusing ) && player.isdefusing ) + { + return 0; + } + if ( isDefined( player.isplanting ) && player.isplanting ) + { + return 0; + } + if ( isDefined( player.proxbar ) && !player.proxbar.hidden ) + { + return 0; + } + if ( isDefined( player.revivingteammate ) && player.revivingteammate == 1 ) + { + return 0; + } + if ( !player isonground() ) + { + return 0; + } + if ( player isinvehicle() ) + { + return 0; + } + if ( player isweaponviewonlylinked() ) + { + return 0; + } + if ( !player hasperk( "specialty_disarmexplosive" ) ) + { + return 0; + } + if ( player isempjammed() ) + { + return 0; + } + if ( isDefined( player.laststand ) && player.laststand ) + { + return 0; + } + if ( weapon_check ) + { + if ( player isthrowinggrenade() ) + { + return 0; + } + if ( player isswitchingweapons() ) + { + return 0; + } + if ( player ismeleeing() ) + { + return 0; + } + weapon = player getcurrentweapon(); + if ( !isDefined( weapon ) ) + { + return 0; + } + if ( weapon == "none" ) + { + return 0; + } + if ( isweaponequipment( weapon ) && player isfiring() ) + { + return 0; + } + if ( isweaponspecificuse( weapon ) ) + { + return 0; + } + } + return 1; +} + +hackerremoveweapon( weapon ) +{ + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapon.name ) + { + i++; + continue; + } + else + { + objectarray_size = self.weaponobjectwatcherarray[ i ].objectarray.size; + j = 0; + while ( j < objectarray_size ) + { + self.weaponobjectwatcherarray[ i ].objectarray = deleteweaponobject( self.weaponobjectwatcherarray[ i ], weapon ); + j++; + } + return; + } + i++; + } +} + +proximityweaponobjectdetonation( watcher ) +{ + self endon( "death" ); + self endon( "hacked" ); + self waittillnotmoving(); + if ( isDefined( watcher.activationdelay ) ) + { + wait watcher.activationdelay; + } + damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - watcher.detonateradius ), level.aitriggerspawnflags | level.vehicletriggerspawnflags, watcher.detonateradius, watcher.detonateradius * 2 ); + damagearea enablelinkto(); + damagearea linkto( self ); + self thread deleteondeath( damagearea ); + up = anglesToUp( self.angles ); + traceorigin = self.origin + up; + while ( 1 ) + { + damagearea waittill( "trigger", ent ); + while ( getDvarInt( #"38868733" ) != 1 ) + { + if ( isDefined( self.owner ) && ent == self.owner ) + { + continue; + } + while ( isDefined( self.owner ) && isvehicle( ent ) && isDefined( ent.owner ) && self.owner == ent.owner ) + { + continue; + } + while ( !friendlyfirecheck( self.owner, ent, 0 ) ) + { + continue; + } + } + if ( lengthsquared( ent getvelocity() ) < 10 && !isDefined( watcher.immediatedetonation ) ) + { + continue; + } + while ( !ent shouldaffectweaponobject( self, watcher ) ) + { + continue; + } + while ( self isstunned() ) + { + continue; + } + if ( isplayer( ent ) && !isalive( ent ) ) + { + continue; + } + if ( ent damageconetrace( traceorigin, self ) > 0 ) + { + break; + } + else + { + } + } + if ( isDefined( watcher.activatesound ) ) + { + self playsound( watcher.activatesound ); + } + if ( isDefined( watcher.activatefx ) ) + { + self setclientflag( 4 ); + } + ent thread deathdodger( watcher.detectiongraceperiod ); + wait watcher.detectiongraceperiod; + if ( isplayer( ent ) && ent hasperk( "specialty_delayexplosive" ) ) + { + wait getDvarFloat( "perk_delayExplosiveTime" ); + } + self.origin = traceorigin; + if ( isDefined( self.owner ) && isplayer( self.owner ) ) + { + self [[ watcher.detonate ]]( self.owner ); + } + else self [[ watcher.detonate ]](); +} + +shouldaffectweaponobject( object, watcher ) +{ + pos = self.origin + vectorScale( ( 0, 0, 1 ), 32 ); + if ( isDefined( watcher.ignoredirection ) ) + { + return 1; + } + dirtopos = pos - object.origin; + objectforward = anglesToForward( object.angles ); + dist = vectordot( dirtopos, objectforward ); + if ( dist < watcher.detectionmindist ) + { + return 0; + } + dirtopos = vectornormalize( dirtopos ); + dot = vectordot( dirtopos, objectforward ); + return dot > watcher.detectiondot; +} + +deathdodger( graceperiod ) +{ + self endon( "death" ); + self endon( "disconnect" ); + wait ( 0,2 + graceperiod ); + self notify( "death_dodger" ); +} + +deleteondeath( ent ) +{ + self waittill_any( "death", "hacked" ); + wait 0,05; + if ( isDefined( ent ) ) + { + ent delete(); + } +} + +deleteonkillbrush( player ) +{ + player endon( "disconnect" ); + self endon( "death" ); + self endon( "stationary" ); + killbrushes = getentarray( "trigger_hurt", "classname" ); + while ( 1 ) + { + i = 0; + while ( i < killbrushes.size ) + { + if ( self istouching( killbrushes[ i ] ) ) + { + if ( self.origin[ 2 ] > player.origin[ 2 ] ) + { + break; + } + else + { + if ( isDefined( self ) ) + { + self delete(); + } + return; + } + i++; + } + } + wait 0,1; + } +} + +watchweaponobjectaltdetonation() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "alt_detonate" ); + while ( !isalive( self ) ) + { + continue; + } + watcher = 0; + while ( watcher < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ watcher ].altdetonate ) + { + self.weaponobjectwatcherarray[ watcher ] detonateweaponobjectarray( 0 ); + } + watcher++; + } + } +} + +watchweaponobjectaltdetonate() +{ + self endon( "disconnect" ); + self endon( "detonated" ); + level endon( "game_ended" ); + buttontime = 0; + for ( ;; ) + { + self waittill( "doubletap_detonate" ); + if ( !isalive( self ) ) + { + continue; + } + else + { + self notify( "alt_detonate" ); + wait 0,05; + } + } +} + +watchweaponobjectdetonation() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "detonate" ); + if ( self isusingoffhand() ) + { + weap = self getcurrentoffhand(); + } + else + { + weap = self getcurrentweapon(); + } + watcher = getweaponobjectwatcherbyweapon( weap ); + if ( isDefined( watcher ) ) + { + watcher detonateweaponobjectarray( 0 ); + } + } +} + +deleteweaponobjectson() +{ + while ( 1 ) + { + msg = self waittill_any_return( "disconnect", "joined_team", "joined_spectators", "death" ); + while ( msg == "death" ) + { + continue; + } + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + return; + } + watchers = []; + watcher = 0; + while ( watcher < self.weaponobjectwatcherarray.size ) + { + weaponobjectwatcher = spawnstruct(); + watchers[ watchers.size ] = weaponobjectwatcher; + weaponobjectwatcher.objectarray = []; + if ( isDefined( self.weaponobjectwatcherarray[ watcher ].objectarray ) ) + { + weaponobjectwatcher.objectarray = self.weaponobjectwatcherarray[ watcher ].objectarray; + } + watcher++; + } + wait 0,05; + watcher = 0; + while ( watcher < watchers.size ) + { + watchers[ watcher ] deleteweaponobjectarray(); + watcher++; + } + if ( msg == "disconnect" ) + { + return; + } + } +} + +saydamaged( orig, amount ) +{ +/# + i = 0; + while ( i < 60 ) + { + print3d( orig, "damaged! " + amount ); + wait 0,05; + i++; +#/ + } +} + +showheadicon( trigger ) +{ + triggerdetectid = trigger.detectid; + useid = -1; + index = 0; + while ( index < 4 ) + { + detectid = self.bombsquadicons[ index ].detectid; + if ( detectid == triggerdetectid ) + { + return; + } + if ( detectid == "" ) + { + useid = index; + } + index++; + } + if ( useid < 0 ) + { + return; + } + self.bombsquadids[ triggerdetectid ] = 1; + self.bombsquadicons[ useid ].x = trigger.origin[ 0 ]; + self.bombsquadicons[ useid ].y = trigger.origin[ 1 ]; + self.bombsquadicons[ useid ].z = trigger.origin[ 2 ] + 24 + 128; + self.bombsquadicons[ useid ] fadeovertime( 0,25 ); + self.bombsquadicons[ useid ].alpha = 1; + self.bombsquadicons[ useid ].detectid = trigger.detectid; + while ( isalive( self ) && isDefined( trigger ) && self istouching( trigger ) ) + { + wait 0,05; + } + if ( !isDefined( self ) ) + { + return; + } + self.bombsquadicons[ useid ].detectid = ""; + self.bombsquadicons[ useid ] fadeovertime( 0,25 ); + self.bombsquadicons[ useid ].alpha = 0; +} + +friendlyfirecheck( owner, attacker, forcedfriendlyfirerule ) +{ + if ( !isDefined( owner ) ) + { + return 1; + } + if ( !level.teambased ) + { + return 1; + } + friendlyfirerule = level.friendlyfire; + if ( isDefined( forcedfriendlyfirerule ) ) + { + friendlyfirerule = forcedfriendlyfirerule; + } + if ( friendlyfirerule != 0 ) + { + return 1; + } + if ( attacker == owner ) + { + return 1; + } + if ( isplayer( attacker ) ) + { + if ( !isDefined( attacker.pers[ "team" ] ) ) + { + return 1; + } + if ( attacker.pers[ "team" ] != owner.pers[ "team" ] ) + { + return 1; + } + } + else + { + if ( isai( attacker ) ) + { + if ( attacker.aiteam != owner.pers[ "team" ] ) + { + return 1; + } + } + else + { + if ( isvehicle( attacker ) ) + { + if ( isDefined( attacker.owner ) && isplayer( attacker.owner ) ) + { + if ( attacker.owner.pers[ "team" ] != owner.pers[ "team" ] ) + { + return 1; + } + } + } + } + } + return 0; +} + +onspawnhatchettrigger( watcher, player ) +{ + self endon( "death" ); + self setowner( player ); + self setteam( player.pers[ "team" ] ); + self.owner = player; + self.oldangles = self.angles; + self waittillnotmoving(); + waittillframeend; + if ( player.pers[ "team" ] == "spectator" ) + { + return; + } + triggerorigin = self.origin; + triggerparentent = undefined; + if ( isDefined( self.stucktoplayer ) ) + { + if ( isalive( self.stucktoplayer ) || !isDefined( self.stucktoplayer.body ) ) + { + if ( isalive( self.stucktoplayer ) ) + { + triggerparentent = self; + self unlink(); + self.angles = self.oldangles; + self launch( vectorScale( ( 0, 0, 1 ), 5 ) ); + self waittillnotmoving(); + waittillframeend; + } + else + { + triggerparentent = self.stucktoplayer; + } + } + else + { + triggerparentent = self.stucktoplayer.body; + } + } + if ( isDefined( triggerparentent ) ) + { + triggerorigin = triggerparentent.origin + vectorScale( ( 0, 0, 1 ), 10 ); + } + self.hatchetpickuptrigger = spawn( "trigger_radius", triggerorigin, 0, 50, 50 ); + self.hatchetpickuptrigger enablelinkto(); + self.hatchetpickuptrigger linkto( self ); + if ( isDefined( triggerparentent ) ) + { + self.hatchetpickuptrigger linkto( triggerparentent ); + } + self thread watchhatchettrigger( self.hatchetpickuptrigger, watcher.pickup, watcher.pickupsoundplayer, watcher.pickupsound ); +/# + thread switch_team( self, watcher.weapon, player ); +#/ + self thread watchshutdown( player ); +} + +watchhatchettrigger( trigger, callback, playersoundonuse, npcsoundonuse ) +{ + self endon( "delete" ); + self endon( "hacked" ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + if ( isDefined( trigger.claimedby ) && player != trigger.claimedby ) + { + continue; + } + while ( !player hasweapon( self.name ) ) + { + continue; + } + curr_ammo = player getweaponammostock( "hatchet_mp" ); + maxammo = weaponmaxammo( "hatchet_mp" ); + if ( player.grenadetypeprimary == "hatchet_mp" ) + { + maxammo = player.grenadetypeprimarycount; + } + else + { + if ( isDefined( player.grenadetypesecondary ) && player.grenadetypesecondary == "hatchet_mp" ) + { + maxammo = player.grenadetypesecondarycount; + } + } + while ( curr_ammo >= maxammo ) + { + continue; + } + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + self thread [[ callback ]]( player ); + } +} + +onspawnretrievableweaponobject( watcher, player ) +{ + self endon( "death" ); + self endon( "hacked" ); + if ( ishacked() ) + { + self thread watchshutdown( player ); + return; + } + self setowner( player ); + self setteam( player.pers[ "team" ] ); + self.owner = player; + self.oldangles = self.angles; + self waittillnotmoving(); + if ( isDefined( watcher.activationdelay ) ) + { + wait watcher.activationdelay; + } + waittillframeend; + if ( player.pers[ "team" ] == "spectator" ) + { + return; + } + triggerorigin = self.origin; + triggerparentent = undefined; + if ( isDefined( self.stucktoplayer ) ) + { + if ( isalive( self.stucktoplayer ) || !isDefined( self.stucktoplayer.body ) ) + { + triggerparentent = self.stucktoplayer; + } + else + { + triggerparentent = self.stucktoplayer.body; + } + } + if ( isDefined( triggerparentent ) ) + { + triggerorigin = triggerparentent.origin + vectorScale( ( 0, 0, 1 ), 10 ); + } + else + { + up = anglesToUp( self.angles ); + triggerorigin = self.origin + up; + } + if ( isDefined( watcher.adjusttriggerorigin ) ) + { + triggerorigin = self [[ watcher.adjusttriggerorigin ]]( triggerorigin ); + } + self.pickuptrigger = spawn( "trigger_radius_use", triggerorigin ); + self.pickuptrigger sethintlowpriority( 1 ); + self.pickuptrigger setcursorhint( "HINT_NOICON", self ); + self.pickuptrigger enablelinkto(); + self.pickuptrigger linkto( self ); + self.pickuptrigger setinvisibletoall(); + self.pickuptrigger setvisibletoplayer( player ); + if ( isDefined( level.retrievehints[ watcher.name ] ) ) + { + self.pickuptrigger sethintstring( level.retrievehints[ watcher.name ].hint ); + } + else + { + self.pickuptrigger sethintstring( &"MP_GENERIC_PICKUP" ); + } + if ( level.teambased ) + { + self.pickuptrigger setteamfortrigger( player.pers[ "team" ] ); + } + else + { + self.pickuptrigger setteamfortrigger( "none" ); + } + if ( isDefined( triggerparentent ) ) + { + self.pickuptrigger linkto( triggerparentent ); + } + if ( watcher.enemydestroy ) + { + self.enemytrigger = spawn( "trigger_radius_use", triggerorigin ); + self.enemytrigger setcursorhint( "HINT_NOICON", self ); + self.enemytrigger enablelinkto(); + self.enemytrigger linkto( self ); + self.enemytrigger setinvisibletoplayer( player ); + if ( level.teambased ) + { + self.enemytrigger setexcludeteamfortrigger( player.team ); + self.enemytrigger.triggerteamignore = self.team; + } + if ( isDefined( level.destroyhints[ watcher.name ] ) ) + { + self.enemytrigger sethintstring( level.destroyhints[ watcher.name ].hint ); + } + else + { + self.enemytrigger sethintstring( &"MP_GENERIC_DESTROY" ); + } + self thread watchusetrigger( self.enemytrigger, watcher.ondestroyed ); + } + self thread watchusetrigger( self.pickuptrigger, watcher.pickup, watcher.pickupsoundplayer, watcher.pickupsound ); +/# + thread switch_team( self, watcher.weapon, player ); +#/ + if ( isDefined( watcher.pickup_trigger_listener ) ) + { + self thread [[ watcher.pickup_trigger_listener ]]( self.pickuptrigger, player ); + } + self thread watchshutdown( player ); +} + +watch_trigger_visibility( triggers, weap_name ) +{ + self notify( "watchTriggerVisibility" ); + self endon( "watchTriggerVisibility" ); + self endon( "death" ); + self endon( "hacked" ); + max_ammo = weaponmaxammo( weap_name ); + start_ammo = weaponstartammo( weap_name ); + ammo_to_check = 0; + while ( 1 ) + { + players = level.players; + i = 0; + while ( i < players.size ) + { + if ( players[ i ] hasweapon( weap_name ) ) + { + ammo_to_check = max_ammo; + if ( self.owner == players[ i ] ) + { + curr_ammo = players[ i ] getweaponammostock( weap_name ) + players[ i ] getweaponammoclip( weap_name ); + if ( weap_name == "hatchet_mp" ) + { + curr_ammo = players[ i ] getweaponammostock( weap_name ); + } + if ( curr_ammo < ammo_to_check ) + { + triggers[ "owner_pickup" ] setvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); + } + else + { + triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); + } + } + else curr_ammo = players[ i ] getweaponammostock( weap_name ) + players[ i ] getweaponammoclip( weap_name ); + if ( weap_name == "hatchet_mp" ) + { + curr_ammo = players[ i ] getweaponammostock( weap_name ); + } + if ( curr_ammo < ammo_to_check ) + { + triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setvisibletoplayer( players[ i ] ); + } + else + { + triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); + } + i++; + continue; + } + else + { + triggers[ "owner_pickup" ] setinvisibletoplayer( players[ i ] ); + triggers[ "enemy_pickup" ] setinvisibletoplayer( players[ i ] ); + } + i++; + } + wait 0,05; + } +} + +destroyent() +{ + self delete(); +} + +pickup( player ) +{ + if ( self.name != "hatchet_mp" && isDefined( self.owner ) && self.owner != player ) + { + return; + } + self.playdialog = 0; + self destroyent(); + player giveweapon( self.name ); + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo < clip_max_ammo ) + { + clip_ammo++; + } + player setweaponammoclip( self.name, clip_ammo ); +} + +ondestroyed( attacker ) +{ + playfx( level._effect[ "tacticalInsertionFizzle" ], self.origin ); + self playsound( "dst_tac_insert_break" ); + self.owner maps/mp/gametypes_zm/_globallogic_audio::leaderdialogonplayer( "equipment_destroyed", "item_destroyed" ); + self delete(); +} + +watchshutdown( player ) +{ + self waittill_any( "death", "hacked" ); + pickuptrigger = self.pickuptrigger; + hackertrigger = self.hackertrigger; + hatchetpickuptrigger = self.hatchetpickuptrigger; + enemytrigger = self.enemytrigger; + if ( isDefined( pickuptrigger ) ) + { + pickuptrigger delete(); + } + if ( isDefined( hackertrigger ) ) + { + if ( isDefined( hackertrigger.progressbar ) ) + { + hackertrigger.progressbar destroyelem(); + hackertrigger.progresstext destroyelem(); + } + hackertrigger delete(); + } + if ( isDefined( hatchetpickuptrigger ) ) + { + hatchetpickuptrigger delete(); + } + if ( isDefined( enemytrigger ) ) + { + enemytrigger delete(); + } +} + +watchusetrigger( trigger, callback, playersoundonuse, npcsoundonuse ) +{ + self endon( "delete" ); + self endon( "hacked" ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + if ( isDefined( trigger.triggerteam ) && player.pers[ "team" ] != trigger.triggerteam ) + { + continue; + } + if ( isDefined( trigger.triggerteamignore ) && player.team == trigger.triggerteamignore ) + { + continue; + } + if ( isDefined( trigger.claimedby ) && player != trigger.claimedby ) + { + continue; + } + grenade = player.throwinggrenade; + isequipment = isweaponequipment( player getcurrentweapon() ); + if ( isDefined( isequipment ) && isequipment ) + { + grenade = 0; + } + if ( player usebuttonpressed() && !grenade && !player meleebuttonpressed() ) + { + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + self thread [[ callback ]]( player ); + } + } +} + +createretrievablehint( name, hint ) +{ + retrievehint = spawnstruct(); + retrievehint.name = name; + retrievehint.hint = hint; + level.retrievehints[ name ] = retrievehint; +} + +createhackerhint( name, hint ) +{ + hackerhint = spawnstruct(); + hackerhint.name = name; + hackerhint.hint = hint; + level.hackerhints[ name ] = hackerhint; +} + +createdestroyhint( name, hint ) +{ + destroyhint = spawnstruct(); + destroyhint.name = name; + destroyhint.hint = hint; + level.destroyhints[ name ] = destroyhint; +} + +attachreconmodel( modelname, owner ) +{ + if ( !isDefined( self ) ) + { + return; + } + reconmodel = spawn( "script_model", self.origin ); + reconmodel.angles = self.angles; + reconmodel setmodel( modelname ); + reconmodel.model_name = modelname; + reconmodel linkto( self ); + reconmodel setcontents( 0 ); + reconmodel resetreconmodelvisibility( owner ); + reconmodel thread watchreconmodelfordeath( self ); + reconmodel thread resetreconmodelonevent( "joined_team", owner ); + reconmodel thread resetreconmodelonevent( "player_spawned", owner ); +} + +resetreconmodelvisibility( owner ) +{ + if ( !isDefined( self ) ) + { + return; + } + self setinvisibletoall(); + self setforcenocull(); + if ( !isDefined( owner ) ) + { + return; + } + i = 0; + while ( i < level.players.size ) + { + if ( !level.players[ i ] hasperk( "specialty_detectexplosive" ) && !level.players[ i ] hasperk( "specialty_showenemyequipment" ) ) + { + i++; + continue; + } + else + { + if ( level.players[ i ].team == "spectator" ) + { + i++; + continue; + } + else hasreconmodel = 0; + if ( level.players[ i ] hasperk( "specialty_detectexplosive" ) ) + { + switch( self.model_name ) + { + case "t6_wpn_c4_world_detect": + case "t6_wpn_claymore_world_detect": + hasreconmodel = 1; + break; + break; + default: + } + } + if ( level.players[ i ] hasperk( "specialty_showenemyequipment" ) ) + { + switch( self.model_name ) + { + case "t5_weapon_scrambler_world_detect": + case "t6_wpn_bouncing_betty_world_detect": + case "t6_wpn_c4_world_detect": + case "t6_wpn_claymore_world_detect": + case "t6_wpn_motion_sensor_world_detect": + case "t6_wpn_tac_insert_detect": + case "t6_wpn_taser_mine_world_detect": + case "t6_wpn_trophy_system_world_detect": + hasreconmodel = 1; + break; + break; + default: + } + } + if ( !hasreconmodel ) + { + i++; + continue; + } + else isenemy = 1; + if ( level.teambased ) + { + if ( level.players[ i ].team == owner.team ) + { + isenemy = 0; + } + } + else + { + if ( level.players[ i ] == owner ) + { + isenemy = 0; + } + } + if ( isenemy ) + { + self setvisibletoplayer( level.players[ i ] ); + } + } + i++; + } + } + } +} + +watchreconmodelfordeath( parentent ) +{ + self endon( "death" ); + parentent waittill_any( "death", "hacked" ); + self delete(); +} + +resetreconmodelonevent( eventname, owner ) +{ + self endon( "death" ); + for ( ;; ) + { + level waittill( eventname, newowner ); + if ( isDefined( newowner ) ) + { + owner = newowner; + } + self resetreconmodelvisibility( owner ); + } +} + +switch_team( entity, weapon_name, owner ) +{ +/# +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_weapons.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_weapons.gsc new file mode 100644 index 0000000..16e4ea3 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_weapons.gsc @@ -0,0 +1,2023 @@ +#include maps/mp/gametypes_zm/_gameobjects; +#include maps/mp/gametypes_zm/_shellshock; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/_challenges; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/_bb; +#include maps/mp/gametypes_zm/_weapon_utils; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + precacheitem( "knife_mp" ); + precacheitem( "knife_held_mp" ); + precacheitem( "dogs_mp" ); + precacheitem( "dog_bite_mp" ); + precacheitem( "explosive_bolt_mp" ); + precachemodel( "t6_wpn_claymore_world_detect" ); + precachemodel( "t6_wpn_c4_world_detect" ); + precachemodel( "t5_weapon_scrambler_world_detect" ); + precachemodel( "t6_wpn_tac_insert_detect" ); + precachemodel( "t6_wpn_taser_mine_world_detect" ); + precachemodel( "t6_wpn_motion_sensor_world_detect" ); + precachemodel( "t6_wpn_trophy_system_world_detect" ); + precachemodel( "t6_wpn_bouncing_betty_world_detect" ); + precachemodel( "t6_wpn_shield_stow_world" ); + precachemodel( "t6_wpn_shield_carry_world" ); + precachemodel( "t5_weapon_camera_head_world" ); + precacheitem( "scavenger_item_mp" ); + precacheitem( "scavenger_item_hack_mp" ); + precacheshader( "hud_scavenger_pickup" ); + precacheshellshock( "default" ); + precacheshellshock( "concussion_grenade_mp" ); + precacheshellshock( "tabun_gas_mp" ); + precacheshellshock( "tabun_gas_nokick_mp" ); + precacheshellshock( "proximity_grenade" ); + precacheshellshock( "proximity_grenade_exit" ); + level.missileentities = []; + level.hackertooltargets = []; + if ( !isDefined( level.grenadelauncherdudtime ) ) + { + level.grenadelauncherdudtime = 0; + } + if ( !isDefined( level.throwngrenadedudtime ) ) + { + level.throwngrenadedudtime = 0; + } + level thread onplayerconnect(); + maps/mp/gametypes_zm/_weaponobjects::init(); + maps/mp/_sticky_grenade::init(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player.usedweapons = 0; + player.lastfiretime = 0; + player.hits = 0; + player scavenger_hud_create(); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self.concussionendtime = 0; + self.hasdonecombat = 0; + self.shielddamageblocked = 0; + self thread watchweaponusage(); + self thread watchgrenadeusage(); + self thread watchmissileusage(); + self thread watchweaponchange(); + self thread watchturretuse(); + self thread watchriotshielduse(); + self thread trackweapon(); + self.droppeddeathweapon = undefined; + self.tookweaponfrom = []; + self.pickedupweaponkills = []; + self thread updatestowedweapon(); + } +} + +watchturretuse() +{ + self endon( "death" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "turretownerchange", turret ); + self thread watchfortowfire( turret ); + } +} + +watchfortowfire( turret ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "turretownerchange" ); + while ( 1 ) + { + self waittill( "turret_tow_fire" ); + self thread watchmissleunlink( turret ); + self waittill( "turret_tow_unlink" ); + } +} + +watchmissleunlink( turret ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "turretownerchange" ); + self waittill( "turret_tow_unlink" ); + self relinktoturret( turret ); +} + +watchweaponchange() +{ + self endon( "death" ); + self endon( "disconnect" ); + self.lastdroppableweapon = self getcurrentweapon(); + self.hitsthismag = []; + weapon = self getcurrentweapon(); + if ( isprimaryweapon( weapon ) && !isDefined( self.hitsthismag[ weapon ] ) ) + { + self.hitsthismag[ weapon ] = weaponclipsize( weapon ); + } + while ( 1 ) + { + previous_weapon = self getcurrentweapon(); + self waittill( "weapon_change", newweapon ); + if ( maydropweapon( newweapon ) ) + { + self.lastdroppableweapon = newweapon; + } + if ( newweapon != "none" ) + { + if ( !isprimaryweapon( newweapon ) && issidearm( newweapon ) && !isDefined( self.hitsthismag[ newweapon ] ) ) + { + self.hitsthismag[ newweapon ] = weaponclipsize( newweapon ); + } + } + } +} + +watchriotshielduse() +{ +} + +updatelastheldweapontimings( newtime ) +{ + if ( isDefined( self.currentweapon ) && isDefined( self.currentweaponstarttime ) ) + { + totaltime = int( ( newtime - self.currentweaponstarttime ) / 1000 ); + if ( totaltime > 0 ) + { + self addweaponstat( self.currentweapon, "timeUsed", totaltime ); + self.currentweaponstarttime = newtime; + } + } +} + +updateweapontimings( newtime ) +{ + if ( self is_bot() ) + { + return; + } + updatelastheldweapontimings( newtime ); + if ( !isDefined( self.staticweaponsstarttime ) ) + { + return; + } + totaltime = int( ( newtime - self.staticweaponsstarttime ) / 1000 ); + if ( totaltime < 0 ) + { + return; + } + self.staticweaponsstarttime = newtime; + while ( isDefined( self.weapon_array_grenade ) ) + { + i = 0; + while ( i < self.weapon_array_grenade.size ) + { + self addweaponstat( self.weapon_array_grenade[ i ], "timeUsed", totaltime ); + i++; + } + } + while ( isDefined( self.weapon_array_inventory ) ) + { + i = 0; + while ( i < self.weapon_array_inventory.size ) + { + self addweaponstat( self.weapon_array_inventory[ i ], "timeUsed", totaltime ); + i++; + } + } + while ( isDefined( self.killstreak ) ) + { + i = 0; + while ( i < self.killstreak.size ) + { + killstreakweapon = level.menureferenceforkillstreak[ self.killstreak[ i ] ]; + if ( isDefined( killstreakweapon ) ) + { + self addweaponstat( killstreakweapon, "timeUsed", totaltime ); + } + i++; + } + } + while ( level.rankedmatch && level.perksenabled ) + { + perksindexarray = []; + specialtys = self.specialty; + if ( !isDefined( specialtys ) ) + { + return; + } + if ( !isDefined( self.class ) ) + { + return; + } + while ( isDefined( self.class_num ) ) + { + numspecialties = 0; + while ( numspecialties < level.maxspecialties ) + { + perk = self getloadoutitem( self.class_num, "specialty" + ( numspecialties + 1 ) ); + if ( perk != 0 ) + { + perksindexarray[ perk ] = 1; + } + numspecialties++; + } + perkindexarraykeys = getarraykeys( perksindexarray ); + i = 0; + while ( i < perkindexarraykeys.size ) + { + if ( perksindexarray[ perkindexarraykeys[ i ] ] == 1 ) + { + self adddstat( "itemStats", perkindexarraykeys[ i ], "stats", "timeUsed", "statValue", totaltime ); + } + i++; + } + } + } +} + +trackweapon() +{ + currentweapon = self getcurrentweapon(); + currenttime = getTime(); + spawnid = getplayerspawnid( self ); + while ( 1 ) + { + event = self waittill_any_return( "weapon_change", "death", "disconnect" ); + newtime = getTime(); + if ( event == "weapon_change" ) + { + self maps/mp/_bb::commitweapondata( spawnid, currentweapon, currenttime ); + newweapon = self getcurrentweapon(); + if ( newweapon != "none" && newweapon != currentweapon ) + { + updatelastheldweapontimings( newtime ); + currentweapon = newweapon; + currenttime = newtime; + } + continue; + } + else + { + if ( event != "disconnect" ) + { + self maps/mp/_bb::commitweapondata( spawnid, currentweapon, currenttime ); + updateweapontimings( newtime ); + } + return; + } + } +} + +maydropweapon( weapon ) +{ + if ( level.disableweapondrop == 1 ) + { + return 0; + } + if ( weapon == "none" ) + { + return 0; + } + if ( ishackweapon( weapon ) ) + { + return 0; + } + invtype = weaponinventorytype( weapon ); + if ( invtype != "primary" ) + { + return 0; + } + if ( weapon == "none" ) + { + return 0; + } + return 1; +} + +dropweaponfordeath( attacker ) +{ + if ( level.disableweapondrop == 1 ) + { + return; + } + weapon = self.lastdroppableweapon; + if ( isDefined( self.droppeddeathweapon ) ) + { + return; + } + if ( !isDefined( weapon ) ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: not defined" ); +#/ + } + return; + } + if ( weapon == "none" ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: weapon == none" ); +#/ + } + return; + } + if ( !self hasweapon( weapon ) ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: don't have it anymore (" + weapon + ")" ); +#/ + } + return; + } + if ( !self anyammoforweaponmodes( weapon ) ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: no ammo for weapon modes" ); +#/ + } + return; + } + if ( !shoulddroplimitedweapon( weapon, self ) ) + { + return; + } + clipammo = self getweaponammoclip( weapon ); + stockammo = self getweaponammostock( weapon ); + clip_and_stock_ammo = clipammo + stockammo; + if ( !clip_and_stock_ammo ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: no ammo" ); +#/ + } + return; + } + stockmax = weaponmaxammo( weapon ); + if ( stockammo > stockmax ) + { + stockammo = stockmax; + } + item = self dropitem( weapon ); + if ( !isDefined( item ) ) + { +/# + iprintlnbold( "dropItem: was not able to drop weapon " + weapon ); +#/ + return; + } +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "dropped weapon: " + weapon ); +#/ + } + droplimitedweapon( weapon, self, item ); + self.droppeddeathweapon = 1; + item itemweaponsetammo( clipammo, stockammo ); + item.owner = self; + item.ownersattacker = attacker; + item thread watchpickup(); + item thread deletepickupafterawhile(); +} + +dropweapontoground( weapon ) +{ + if ( !isDefined( weapon ) ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: not defined" ); +#/ + } + return; + } + if ( weapon == "none" ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: weapon == none" ); +#/ + } + return; + } + if ( !self hasweapon( weapon ) ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: don't have it anymore (" + weapon + ")" ); +#/ + } + return; + } + if ( !self anyammoforweaponmodes( weapon ) ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: no ammo for weapon modes" ); +#/ + } + switch( weapon ) + { + case "m202_flash_mp": + case "m220_tow_mp": + case "m32_mp": + case "minigun_mp": + case "mp40_blinged_mp": + self takeweapon( weapon ); + break; + default: + } + return; + } + if ( !shoulddroplimitedweapon( weapon, self ) ) + { + return; + } + clipammo = self getweaponammoclip( weapon ); + stockammo = self getweaponammostock( weapon ); + clip_and_stock_ammo = clipammo + stockammo; + if ( !clip_and_stock_ammo ) + { +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "didn't drop weapon: no ammo" ); +#/ + } + return; + } + stockmax = weaponmaxammo( weapon ); + if ( stockammo > stockmax ) + { + stockammo = stockmax; + } + item = self dropitem( weapon ); +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "dropped weapon: " + weapon ); +#/ + } + droplimitedweapon( weapon, self, item ); + item itemweaponsetammo( clipammo, stockammo ); + item.owner = self; + item thread watchpickup(); + item thread deletepickupafterawhile(); + } +} + +deletepickupafterawhile() +{ + self endon( "death" ); + wait 60; + if ( !isDefined( self ) ) + { + return; + } + self delete(); +} + +getitemweaponname() +{ + classname = self.classname; +/# + assert( getsubstr( classname, 0, 7 ) == "weapon_" ); +#/ + weapname = getsubstr( classname, 7 ); + return weapname; +} + +watchpickup() +{ + self endon( "death" ); + weapname = self getitemweaponname(); + while ( 1 ) + { + self waittill( "trigger", player, droppeditem ); + if ( isDefined( droppeditem ) ) + { + break; + } + else + { + } + } +/# + if ( getDvar( #"08F7FC88" ) == "1" ) + { + println( "picked up weapon: " + weapname + ", " + isDefined( self.ownersattacker ) ); +#/ + } +/# + assert( isDefined( player.tookweaponfrom ) ); +#/ +/# + assert( isDefined( player.pickedupweaponkills ) ); +#/ + droppedweaponname = droppeditem getitemweaponname(); + if ( isDefined( player.tookweaponfrom[ droppedweaponname ] ) ) + { + droppeditem.owner = player.tookweaponfrom[ droppedweaponname ]; + droppeditem.ownersattacker = player; + } + droppeditem thread watchpickup(); + if ( isDefined( self.ownersattacker ) && self.ownersattacker == player ) + { + player.tookweaponfrom[ weapname ] = self.owner; + player.pickedupweaponkills[ weapname ] = 0; + } + else } + +itemremoveammofromaltmodes() +{ + origweapname = self getitemweaponname(); + curweapname = weaponaltweaponname( origweapname ); + altindex = 1; + while ( curweapname != "none" && curweapname != origweapname ) + { + self itemweaponsetammo( 0, 0, altindex ); + curweapname = weaponaltweaponname( curweapname ); + altindex++; + } +} + +dropoffhand() +{ + grenadetypes = []; + index = 0; + while ( index < grenadetypes.size ) + { + if ( !self hasweapon( grenadetypes[ index ] ) ) + { + index++; + continue; + } + else count = self getammocount( grenadetypes[ index ] ); + if ( !count ) + { + index++; + continue; + } + else + { + self dropitem( grenadetypes[ index ] ); + } + index++; + } +} + +watchweaponusage() +{ + self endon( "death" ); + self endon( "disconnect" ); + level endon( "game_ended" ); + self.usedkillstreakweapon = []; + self.usedkillstreakweapon[ "minigun_mp" ] = 0; + self.usedkillstreakweapon[ "m32_mp" ] = 0; + self.usedkillstreakweapon[ "m202_flash_mp" ] = 0; + self.usedkillstreakweapon[ "m220_tow_mp" ] = 0; + self.usedkillstreakweapon[ "mp40_blinged_mp" ] = 0; + self.killstreaktype = []; + self.killstreaktype[ "minigun_mp" ] = "minigun_mp"; + self.killstreaktype[ "m32_mp" ] = "m32_mp"; + self.killstreaktype[ "m202_flash_mp" ] = "m202_flash_mp"; + self.killstreaktype[ "m220_tow_mp" ] = "m220_tow_mp"; + self.killstreaktype[ "mp40_blinged_mp" ] = "mp40_blinged_drop_mp"; + for ( ;; ) + { + self waittill( "weapon_fired", curweapon ); + self.lastfiretime = getTime(); + self.hasdonecombat = 1; + if ( maps/mp/gametypes_zm/_weapons::isprimaryweapon( curweapon ) || maps/mp/gametypes_zm/_weapons::issidearm( curweapon ) ) + { + if ( isDefined( self.hitsthismag[ curweapon ] ) ) + { + self thread updatemagshots( curweapon ); + } + } + switch( weaponclass( curweapon ) ) + { + case "rifle": + if ( curweapon == "crossbow_explosive_mp" ) + { + level.globalcrossbowfired++; + self addweaponstat( curweapon, "shots", 1 ); + self thread begingrenadetracking(); + break; + continue; + } + else case "mg": + case "pistol": + case "smg": + case "spread": + self trackweaponfire( curweapon ); + level.globalshotsfired++; + break; + continue; + case "grenade": + case "rocketlauncher": + self addweaponstat( curweapon, "shots", 1 ); + break; + continue; + default: + } + } + } +} + +updatemagshots( weaponname ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "updateMagShots_" + weaponname ); + self.hitsthismag[ weaponname ]--; + + wait 0,05; + self.hitsthismag[ weaponname ] = weaponclipsize( weaponname ); +} + +checkhitsthismag( weaponname ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self notify( "updateMagShots_" + weaponname ); + waittillframeend; + if ( isDefined( self.hitsthismag[ weaponname ] ) && self.hitsthismag[ weaponname ] == 0 ) + { + if ( !sessionmodeiszombiesgame() ) + { + weaponclass = getweaponclass( weaponname ); + maps/mp/_challenges::fullclipnomisses( weaponclass, weaponname ); + } + self.hitsthismag[ weaponname ] = weaponclipsize( weaponname ); + } +} + +trackweaponfire( curweapon ) +{ + shotsfired = 1; + if ( isDefined( self.laststandparams ) && self.laststandparams.laststandstarttime == getTime() ) + { + self.hits = 0; + return; + } + pixbeginevent( "trackWeaponFire" ); + self addweaponstat( curweapon, "shots", shotsfired ); + self addweaponstat( curweapon, "hits", self.hits ); + if ( isDefined( level.add_client_stat ) ) + { + self [[ level.add_client_stat ]]( "total_shots", shotsfired ); + self [[ level.add_client_stat ]]( "hits", self.hits ); + } + else + { + self addplayerstat( "total_shots", shotsfired ); + self addplayerstat( "hits", self.hits ); + self addplayerstat( "misses", int( max( 0, shotsfired - self.hits ) ) ); + } + self incrementplayerstat( "total_shots", shotsfired ); + self incrementplayerstat( "hits", self.hits ); + self incrementplayerstat( "misses", int( max( 0, shotsfired - self.hits ) ) ); + self maps/mp/_bb::bbaddtostat( "shots", shotsfired ); + self maps/mp/_bb::bbaddtostat( "hits", self.hits ); + self.hits = 0; + pixendevent(); +} + +checkhit( sweapon ) +{ + switch( weaponclass( sweapon ) ) + { + case "mg": + case "pistol": + case "rifle": + case "smg": + self.hits++; + break; + case "pistol spread": + case "spread": + self.hits = 1; + break; + default: + } + waittillframeend; + if ( isDefined( self.hitsthismag ) && isDefined( self.hitsthismag[ sweapon ] ) ) + { + self thread checkhitsthismag( sweapon ); + } + if ( sweapon != "bazooka_mp" || isstrstart( sweapon, "t34" ) && isstrstart( sweapon, "panzer" ) ) + { + self addweaponstat( sweapon, "hits", 1 ); + } + } +} + +watchgrenadeusage() +{ + self endon( "death" ); + self endon( "disconnect" ); + self.throwinggrenade = 0; + self.gotpullbacknotify = 0; + self thread beginothergrenadetracking(); + self thread watchforthrowbacks(); + self thread watchforgrenadeduds(); + self thread watchforgrenadelauncherduds(); + for ( ;; ) + { + self waittill( "grenade_pullback", weaponname ); + self addweaponstat( weaponname, "shots", 1 ); + self.hasdonecombat = 1; + self.throwinggrenade = 1; + self.gotpullbacknotify = 1; + if ( weaponname == "satchel_charge_mp" ) + { + self thread beginsatcheltracking(); + } + self thread begingrenadetracking(); + } +} + +watchmissileusage() +{ + self endon( "death" ); + self endon( "disconnect" ); + level endon( "game_ended" ); + for ( ;; ) + { + self waittill( "missile_fire", missile, weapon_name ); + self.hasdonecombat = 1; +/# + assert( isDefined( missile ) ); +#/ + level.missileentities[ level.missileentities.size ] = missile; + missile thread watchmissiledeath(); + } +} + +watchmissiledeath() +{ + self waittill( "death" ); + arrayremovevalue( level.missileentities, self ); +} + +dropweaponstoground( origin, radius ) +{ + weapons = getdroppedweapons(); + i = 0; + while ( i < weapons.size ) + { + if ( distancesquared( origin, weapons[ i ].origin ) < ( radius * radius ) ) + { + trace = bullettrace( weapons[ i ].origin, weapons[ i ].origin + vectorScale( ( 0, 0, 1 ), 2000 ), 0, weapons[ i ] ); + weapons[ i ].origin = trace[ "position" ]; + } + i++; + } +} + +dropgrenadestoground( origin, radius ) +{ + grenades = getentarray( "grenade", "classname" ); + i = 0; + while ( i < grenades.size ) + { + if ( distancesquared( origin, grenades[ i ].origin ) < ( radius * radius ) ) + { + grenades[ i ] launch( vectorScale( ( 0, 0, 1 ), 5 ) ); + } + i++; + } +} + +watchgrenadecancel() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "grenade_fire" ); + self waittill( "weapon_change" ); + self.throwinggrenade = 0; + self.gotpullbacknotify = 0; +} + +begingrenadetracking() +{ + self endon( "death" ); + self endon( "disconnect" ); + starttime = getTime(); + self thread watchgrenadecancel(); + self waittill( "grenade_fire", grenade, weaponname ); +/# + assert( isDefined( grenade ) ); +#/ + level.missileentities[ level.missileentities.size ] = grenade; + grenade thread watchmissiledeath(); + if ( grenade maps/mp/gametypes_zm/_weaponobjects::ishacked() ) + { + return; + } + bbprint( "mpequipmentuses", "gametime %d spawnid %d weaponname %s", getTime(), getplayerspawnid( self ), weaponname ); + if ( ( getTime() - starttime ) > 1000 ) + { + grenade.iscooked = 1; + } + switch( weaponname ) + { + case "frag_grenade_zm": + case "sticky_grenade_zm": + self addweaponstat( weaponname, "used", 1 ); + case "explosive_bolt_zm": + grenade.originalowner = self; + break; + } + if ( weaponname == "sticky_grenade_zm" || weaponname == "frag_grenade_zm" ) + { + grenade setteam( self.pers[ "team" ] ); + grenade setowner( self ); + } + self.throwinggrenade = 0; + } +} + +beginothergrenadetracking() +{ +} + +checkstucktoplayer( deleteonteamchange, awardscoreevent, weaponname ) +{ + self endon( "death" ); + self waittill( "stuck_to_player", player ); + if ( isDefined( player ) ) + { + if ( deleteonteamchange ) + { + self thread stucktoplayerteamchange( player ); + } + if ( awardscoreevent && isDefined( self.originalowner ) ) + { + if ( self.originalowner isenemyplayer( player ) ) + { + } + } + self.stucktoplayer = player; + } +} + +checkhatchetbounce() +{ + self endon( "stuck_to_player" ); + self endon( "death" ); + self waittill( "grenade_bounce" ); + self.bounced = 1; +} + +stucktoplayerteamchange( player ) +{ + self endon( "death" ); + player endon( "disconnect" ); + originalteam = player.pers[ "team" ]; + while ( 1 ) + { + player waittill( "joined_team" ); + if ( player.pers[ "team" ] != originalteam ) + { + self detonate(); + return; + } + } +} + +beginsatcheltracking() +{ + self endon( "death" ); + self endon( "disconnect" ); + self waittill_any( "grenade_fire", "weapon_change" ); + self.throwinggrenade = 0; +} + +watchforthrowbacks() +{ + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "grenade_fire", grenade, weapname ); + if ( self.gotpullbacknotify ) + { + self.gotpullbacknotify = 0; + continue; + } + else if ( !issubstr( weapname, "frag_" ) ) + { + continue; + } + else + { + grenade.threwback = 1; + grenade.originalowner = self; + } + } +} + +registergrenadelauncherduddvar( dvarstring, defaultvalue, minvalue, maxvalue ) +{ + dvarstring = "scr_" + dvarstring + "_grenadeLauncherDudTime"; + if ( getDvar( dvarstring ) == "" ) + { + setdvar( dvarstring, defaultvalue ); + } + if ( getDvarInt( dvarstring ) > maxvalue ) + { + setdvar( dvarstring, maxvalue ); + } + else + { + if ( getDvarInt( dvarstring ) < minvalue ) + { + setdvar( dvarstring, minvalue ); + } + } + level.grenadelauncherdudtimedvar = dvarstring; + level.grenadelauncherdudtimemin = minvalue; + level.grenadelauncherdudtimemax = maxvalue; + level.grenadelauncherdudtime = getDvarInt( level.grenadelauncherdudtimedvar ); +} + +registerthrowngrenadeduddvar( dvarstring, defaultvalue, minvalue, maxvalue ) +{ + dvarstring = "scr_" + dvarstring + "_thrownGrenadeDudTime"; + if ( getDvar( dvarstring ) == "" ) + { + setdvar( dvarstring, defaultvalue ); + } + if ( getDvarInt( dvarstring ) > maxvalue ) + { + setdvar( dvarstring, maxvalue ); + } + else + { + if ( getDvarInt( dvarstring ) < minvalue ) + { + setdvar( dvarstring, minvalue ); + } + } + level.throwngrenadedudtimedvar = dvarstring; + level.throwngrenadedudtimemin = minvalue; + level.throwngrenadedudtimemax = maxvalue; + level.throwngrenadedudtime = getDvarInt( level.throwngrenadedudtimedvar ); +} + +registerkillstreakdelay( dvarstring, defaultvalue, minvalue, maxvalue ) +{ + dvarstring = "scr_" + dvarstring + "_killstreakDelayTime"; + if ( getDvar( dvarstring ) == "" ) + { + setdvar( dvarstring, defaultvalue ); + } + if ( getDvarInt( dvarstring ) > maxvalue ) + { + setdvar( dvarstring, maxvalue ); + } + else + { + if ( getDvarInt( dvarstring ) < minvalue ) + { + setdvar( dvarstring, minvalue ); + } + } + level.killstreakrounddelay = getDvarInt( dvarstring ); +} + +turngrenadeintoadud( weapname, isthrowngrenade, player ) +{ + if ( level.grenadelauncherdudtime >= ( maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() / 1000 ) && !isthrowngrenade ) + { + if ( issubstr( weapname, "gl_" ) || weapname == "china_lake_mp" ) + { + timeleft = int( level.grenadelauncherdudtime - ( maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() / 1000 ) ); + if ( !timeleft ) + { + timeleft = 1; + } + player iprintlnbold( &"MP_LAUNCHER_UNAVAILABLE_FOR_N", " " + timeleft + " ", &"EXE_SECONDS" ); + self makegrenadedud(); + } + } + else + { + if ( level.throwngrenadedudtime >= ( maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() / 1000 ) && isthrowngrenade ) + { + if ( weapname == "frag_grenade_mp" || weapname == "sticky_grenade_mp" ) + { + if ( isDefined( player.suicide ) && player.suicide ) + { + return; + } + timeleft = int( level.throwngrenadedudtime - ( maps/mp/gametypes_zm/_globallogic_utils::gettimepassed() / 1000 ) ); + if ( !timeleft ) + { + timeleft = 1; + } + player iprintlnbold( &"MP_GRENADE_UNAVAILABLE_FOR_N", " " + timeleft + " ", &"EXE_SECONDS" ); + self makegrenadedud(); + } + } + } +} + +watchforgrenadeduds() +{ + self endon( "spawned_player" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + grenade turngrenadeintoadud( weapname, 1, self ); + } +} + +watchforgrenadelauncherduds() +{ + self endon( "spawned_player" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "grenade_launcher_fire", grenade, weapname ); + grenade turngrenadeintoadud( weapname, 0, self ); + } +} + +getdamageableents( pos, radius, dolos, startradius ) +{ + ents = []; + if ( !isDefined( dolos ) ) + { + dolos = 0; + } + if ( !isDefined( startradius ) ) + { + startradius = 0; + } + players = level.players; + i = 0; + while ( i < players.size ) + { + if ( !isalive( players[ i ] ) || players[ i ].sessionstate != "playing" ) + { + i++; + continue; + } + else + { + playerpos = players[ i ].origin + vectorScale( ( 0, 0, 1 ), 32 ); + distsq = distancesquared( pos, playerpos ); + if ( distsq < ( radius * radius ) || !dolos && weapondamagetracepassed( pos, playerpos, startradius, undefined ) ) + { + newent = spawnstruct(); + newent.isplayer = 1; + newent.isadestructable = 0; + newent.isadestructible = 0; + newent.isactor = 0; + newent.entity = players[ i ]; + newent.damagecenter = playerpos; + ents[ ents.size ] = newent; + } + } + i++; + } + grenades = getentarray( "grenade", "classname" ); + i = 0; + while ( i < grenades.size ) + { + entpos = grenades[ i ].origin; + distsq = distancesquared( pos, entpos ); + if ( distsq < ( radius * radius ) || !dolos && weapondamagetracepassed( pos, entpos, startradius, grenades[ i ] ) ) + { + newent = spawnstruct(); + newent.isplayer = 0; + newent.isadestructable = 0; + newent.isadestructible = 0; + newent.isactor = 0; + newent.entity = grenades[ i ]; + newent.damagecenter = entpos; + ents[ ents.size ] = newent; + } + i++; + } + destructibles = getentarray( "destructible", "targetname" ); + i = 0; + while ( i < destructibles.size ) + { + entpos = destructibles[ i ].origin; + distsq = distancesquared( pos, entpos ); + if ( distsq < ( radius * radius ) || !dolos && weapondamagetracepassed( pos, entpos, startradius, destructibles[ i ] ) ) + { + newent = spawnstruct(); + newent.isplayer = 0; + newent.isadestructable = 0; + newent.isadestructible = 1; + newent.isactor = 0; + newent.entity = destructibles[ i ]; + newent.damagecenter = entpos; + ents[ ents.size ] = newent; + } + i++; + } + destructables = getentarray( "destructable", "targetname" ); + i = 0; + while ( i < destructables.size ) + { + entpos = destructables[ i ].origin; + distsq = distancesquared( pos, entpos ); + if ( distsq < ( radius * radius ) || !dolos && weapondamagetracepassed( pos, entpos, startradius, destructables[ i ] ) ) + { + newent = spawnstruct(); + newent.isplayer = 0; + newent.isadestructable = 1; + newent.isadestructible = 0; + newent.isactor = 0; + newent.entity = destructables[ i ]; + newent.damagecenter = entpos; + ents[ ents.size ] = newent; + } + i++; + } + return ents; +} + +weapondamagetracepassed( from, to, startradius, ignore ) +{ + trace = weapondamagetrace( from, to, startradius, ignore ); + return trace[ "fraction" ] == 1; +} + +weapondamagetrace( from, to, startradius, ignore ) +{ + midpos = undefined; + diff = to - from; + if ( lengthsquared( diff ) < ( startradius * startradius ) ) + { + midpos = to; + } + dir = vectornormalize( diff ); + midpos = from + ( dir[ 0 ] * startradius, dir[ 1 ] * startradius, dir[ 2 ] * startradius ); + trace = bullettrace( midpos, to, 0, ignore ); + if ( getDvarInt( #"0A1C40B1" ) != 0 ) + { + if ( trace[ "fraction" ] == 1 ) + { + thread debugline( midpos, to, ( 0, 0, 1 ) ); + } + else + { + thread debugline( midpos, trace[ "position" ], ( 1, 0,9, 0,8 ) ); + thread debugline( trace[ "position" ], to, ( 1, 0,4, 0,3 ) ); + } + } + return trace; +} + +damageent( einflictor, eattacker, idamage, smeansofdeath, sweapon, damagepos, damagedir ) +{ + if ( self.isplayer ) + { + self.damageorigin = damagepos; + self.entity thread [[ level.callbackplayerdamage ]]( einflictor, eattacker, idamage, 0, smeansofdeath, sweapon, damagepos, damagedir, "none", 0, 0 ); + } + else if ( self.isactor ) + { + self.damageorigin = damagepos; + self.entity thread [[ level.callbackactordamage ]]( einflictor, eattacker, idamage, 0, smeansofdeath, sweapon, damagepos, damagedir, "none", 0, 0 ); + } + else if ( self.isadestructible ) + { + self.damageorigin = damagepos; + self.entity dodamage( idamage, damagepos, eattacker, einflictor, 0, smeansofdeath, 0, sweapon ); + } + else + { + if ( self.isadestructable || sweapon == "claymore_mp" && sweapon == "airstrike_mp" ) + { + return; + } + self.entity damage_notify_wrapper( idamage, eattacker, ( 0, 0, 1 ), ( 0, 0, 1 ), "mod_explosive", "", "" ); + } +} + +debugline( a, b, color ) +{ +/# + i = 0; + while ( i < 600 ) + { + line( a, b, color ); + wait 0,05; + i++; +#/ + } +} + +onweapondamage( eattacker, einflictor, sweapon, meansofdeath, damage ) +{ + self endon( "death" ); + self endon( "disconnect" ); + switch( sweapon ) + { + case "concussion_grenade_mp": + radius = 512; + if ( self == eattacker ) + { + radius *= 0,5; + } + scale = 1 - ( distance( self.origin, einflictor.origin ) / radius ); + if ( scale < 0 ) + { + scale = 0; + } + time = 2 + ( 4 * scale ); + wait 0,05; + if ( self hasperk( "specialty_stunprotection" ) ) + { + time *= 0,1; + } + self thread playconcussionsound( time ); + if ( self mayapplyscreeneffect() ) + { + self shellshock( "concussion_grenade_mp", time, 0 ); + } + self.concussionendtime = getTime() + ( time * 1000 ); + break; + default: + maps/mp/gametypes_zm/_shellshock::shellshockondamage( meansofdeath, damage ); + break; + } +} + +playconcussionsound( duration ) +{ + self endon( "death" ); + self endon( "disconnect" ); + concussionsound = spawn( "script_origin", ( 0, 0, 1 ) ); + concussionsound.origin = self.origin; + concussionsound linkto( self ); + concussionsound thread deleteentonownerdeath( self ); + concussionsound playsound( "" ); + concussionsound playloopsound( "" ); + if ( duration > 0,5 ) + { + wait ( duration - 0,5 ); + } + concussionsound playsound( "" ); + concussionsound stoploopsound( 0,5 ); + wait 0,5; + concussionsound notify( "delete" ); + concussionsound delete(); +} + +deleteentonownerdeath( owner ) +{ + self endon( "delete" ); + owner waittill( "death" ); + self delete(); +} + +monitor_dog_special_grenades() +{ +} + +isprimaryweapon( weaponname ) +{ + return isDefined( level.primary_weapon_array[ weaponname ] ); +} + +issidearm( weaponname ) +{ + return isDefined( level.side_arm_array[ weaponname ] ); +} + +isinventory( weaponname ) +{ + return isDefined( level.inventory_array[ weaponname ] ); +} + +isgrenade( weaponname ) +{ + return isDefined( level.grenade_array[ weaponname ] ); +} + +isexplosivebulletweapon( weaponname ) +{ + if ( weaponname != "chopper_minigun_mp" && weaponname != "cobra_20mm_mp" || weaponname == "littlebird_guard_minigun_mp" && weaponname == "cobra_20mm_comlink_mp" ) + { + return 1; + } + return 0; +} + +getweaponclass_array( current ) +{ + if ( isprimaryweapon( current ) ) + { + return level.primary_weapon_array; + } + else + { + if ( issidearm( current ) ) + { + return level.side_arm_array; + } + else + { + if ( isgrenade( current ) ) + { + return level.grenade_array; + } + else + { + return level.inventory_array; + } + } + } +} + +updatestowedweapon() +{ + self endon( "spawned" ); + self endon( "killed_player" ); + self endon( "disconnect" ); + self.tag_stowed_back = undefined; + self.tag_stowed_hip = undefined; + team = self.pers[ "team" ]; + class = self.pers[ "class" ]; + while ( 1 ) + { + self waittill( "weapon_change", newweapon ); + self.weapon_array_primary = []; + self.weapon_array_sidearm = []; + self.weapon_array_grenade = []; + self.weapon_array_inventory = []; + weaponslist = self getweaponslist(); + idx = 0; + while ( idx < weaponslist.size ) + { + switch( weaponslist[ idx ] ) + { + case "m202_flash_mp": + case "m220_tow_mp": + case "m32_mp": + case "minigun_mp": + case "mp40_blinged_mp": + case "zipline_mp": + idx++; + continue; + default: + } + if ( isprimaryweapon( weaponslist[ idx ] ) ) + { + self.weapon_array_primary[ self.weapon_array_primary.size ] = weaponslist[ idx ]; + idx++; + continue; + } + else if ( issidearm( weaponslist[ idx ] ) ) + { + self.weapon_array_sidearm[ self.weapon_array_sidearm.size ] = weaponslist[ idx ]; + idx++; + continue; + } + else if ( isgrenade( weaponslist[ idx ] ) ) + { + self.weapon_array_grenade[ self.weapon_array_grenade.size ] = weaponslist[ idx ]; + idx++; + continue; + } + else if ( isinventory( weaponslist[ idx ] ) ) + { + self.weapon_array_inventory[ self.weapon_array_inventory.size ] = weaponslist[ idx ]; + idx++; + continue; + } + else + { + if ( isweaponprimary( weaponslist[ idx ] ) ) + { + self.weapon_array_primary[ self.weapon_array_primary.size ] = weaponslist[ idx ]; + } + } + idx++; + } + detach_all_weapons(); + stow_on_back(); + stow_on_hip(); + } + } + } +} + +forcestowedweaponupdate() +{ + detach_all_weapons(); + stow_on_back(); + stow_on_hip(); +} + +detachcarryobjectmodel() +{ + if ( isDefined( self.carryobject ) && isDefined( self.carryobject maps/mp/gametypes_zm/_gameobjects::getvisiblecarriermodel() ) ) + { + if ( isDefined( self.tag_stowed_back ) ) + { + self detach( self.tag_stowed_back, "tag_stowed_back" ); + self.tag_stowed_back = undefined; + } + } +} + +detach_all_weapons() +{ + if ( isDefined( self.tag_stowed_back ) ) + { + clear_weapon = 1; + if ( isDefined( self.carryobject ) ) + { + carriermodel = self.carryobject maps/mp/gametypes_zm/_gameobjects::getvisiblecarriermodel(); + if ( isDefined( carriermodel ) && carriermodel == self.tag_stowed_back ) + { + self detach( self.tag_stowed_back, "tag_stowed_back" ); + clear_weapon = 0; + } + } + if ( clear_weapon ) + { + self clearstowedweapon(); + } + self.tag_stowed_back = undefined; + } + if ( isDefined( self.tag_stowed_hip ) ) + { + detach_model = getweaponmodel( self.tag_stowed_hip ); + self detach( detach_model, "tag_stowed_hip_rear" ); + self.tag_stowed_hip = undefined; + } +} + +non_stowed_weapon( weapon ) +{ + if ( self hasweapon( "knife_ballistic_mp" ) && weapon != "knife_ballistic_mp" ) + { + return 1; + } + if ( self hasweapon( "knife_held_mp" ) && weapon != "knife_held_mp" ) + { + return 1; + } + return 0; +} + +stow_on_back( current ) +{ + current = self getcurrentweapon(); + self.tag_stowed_back = undefined; + weaponoptions = 0; + index_weapon = ""; + if ( isDefined( self.carryobject ) && isDefined( self.carryobject maps/mp/gametypes_zm/_gameobjects::getvisiblecarriermodel() ) ) + { + self.tag_stowed_back = self.carryobject maps/mp/gametypes_zm/_gameobjects::getvisiblecarriermodel(); + self attach( self.tag_stowed_back, "tag_stowed_back", 1 ); + return; + } + else + { + if ( non_stowed_weapon( current ) || self.hasriotshield ) + { + return; + } + else + { + idx = 0; + while ( idx < self.weapon_array_primary.size ) + { + temp_index_weapon = self.weapon_array_primary[ idx ]; +/# + assert( isDefined( temp_index_weapon ), "Primary weapon list corrupted." ); +#/ + if ( temp_index_weapon == current ) + { + idx++; + continue; + } + else if ( current == "none" ) + { + idx++; + continue; + } + else if ( !issubstr( current, "gl_" ) && !issubstr( temp_index_weapon, "gl_" ) && !issubstr( current, "mk_" ) && !issubstr( temp_index_weapon, "mk_" ) && !issubstr( current, "dualoptic_" ) && !issubstr( temp_index_weapon, "dualoptic_" ) || issubstr( current, "ft_" ) && issubstr( temp_index_weapon, "ft_" ) ) + { + index_weapon_tok = strtok( temp_index_weapon, "_" ); + current_tok = strtok( current, "_" ); + i = 0; + while ( i < index_weapon_tok.size ) + { + if ( !issubstr( current, index_weapon_tok[ i ] ) || index_weapon_tok.size != current_tok.size ) + { + i = 0; + break; + } + else + { + i++; + } + } + if ( i == index_weapon_tok.size ) + { + idx++; + continue; + } + } + else + { + index_weapon = temp_index_weapon; +/# + assert( isDefined( self.curclass ), "Player missing current class" ); +#/ + if ( issubstr( index_weapon, self.pers[ "primaryWeapon" ] ) && issubstr( self.curclass, "CUSTOM" ) ) + { + self.tag_stowed_back = getweaponmodel( index_weapon, self getloadoutitem( self.class_num, "primarycamo" ) ); + } + else + { + stowedmodelindex = getweaponstowedmodel( index_weapon ); + self.tag_stowed_back = getweaponmodel( index_weapon, stowedmodelindex ); + } + if ( issubstr( self.curclass, "CUSTOM" ) ) + { + weaponoptions = self calcweaponoptions( self.class_num, 0 ); + } + } + idx++; + } + } + } + if ( !isDefined( self.tag_stowed_back ) ) + { + return; + } + self setstowedweapon( index_weapon ); +} + +stow_on_hip() +{ + current = self getcurrentweapon(); + self.tag_stowed_hip = undefined; + idx = 0; + while ( idx < self.weapon_array_inventory.size ) + { + if ( self.weapon_array_inventory[ idx ] == current ) + { + idx++; + continue; + } + else if ( !self getweaponammostock( self.weapon_array_inventory[ idx ] ) ) + { + idx++; + continue; + } + else + { + self.tag_stowed_hip = self.weapon_array_inventory[ idx ]; + } + idx++; + } + if ( !isDefined( self.tag_stowed_hip ) ) + { + return; + } + if ( self.tag_stowed_hip != "satchel_charge_mp" || self.tag_stowed_hip == "claymore_mp" && self.tag_stowed_hip == "bouncingbetty_mp" ) + { + self.tag_stowed_hip = undefined; + return; + } + weapon_model = getweaponmodel( self.tag_stowed_hip ); + self attach( weapon_model, "tag_stowed_hip_rear", 1 ); +} + +stow_inventory( inventories, current ) +{ + if ( isDefined( self.inventory_tag ) ) + { + detach_model = getweaponmodel( self.inventory_tag ); + self detach( detach_model, "tag_stowed_hip_rear" ); + self.inventory_tag = undefined; + } + if ( !isDefined( inventories[ 0 ] ) || self getweaponammostock( inventories[ 0 ] ) == 0 ) + { + return; + } + if ( inventories[ 0 ] != current ) + { + self.inventory_tag = inventories[ 0 ]; + weapon_model = getweaponmodel( self.inventory_tag ); + self attach( weapon_model, "tag_stowed_hip_rear", 1 ); + } +} + +weapons_get_dvar_int( dvar, def ) +{ + return int( weapons_get_dvar( dvar, def ) ); +} + +weapons_get_dvar( dvar, def ) +{ + if ( getDvar( dvar ) != "" ) + { + return getDvarFloat( dvar ); + } + else + { + setdvar( dvar, def ); + return def; + } +} + +player_is_driver() +{ + if ( !isalive( self ) ) + { + return 0; + } + if ( self isremotecontrolling() ) + { + return 0; + } + vehicle = self getvehicleoccupied(); + if ( isDefined( vehicle ) ) + { + seat = vehicle getoccupantseat( self ); + if ( isDefined( seat ) && seat == 0 ) + { + return 1; + } + } + return 0; +} + +loadout_get_class_num() +{ +/# + assert( isplayer( self ) ); +#/ +/# + assert( isDefined( self.class ) ); +#/ + if ( isDefined( level.classtoclassnum[ self.class ] ) ) + { + return level.classtoclassnum[ self.class ]; + } + class_num = int( self.class[ self.class.size - 1 ] ) - 1; + if ( class_num == -1 ) + { + class_num = 9; + } + return class_num; +} + +loadout_get_offhand_weapon( stat ) +{ + if ( isDefined( level.givecustomloadout ) ) + { + return "weapon_null_mp"; + } + class_num = self loadout_get_class_num(); + index = 0; + if ( isDefined( level.tbl_weaponids[ index ] ) && isDefined( level.tbl_weaponids[ index ][ "reference" ] ) ) + { + return level.tbl_weaponids[ index ][ "reference" ] + "_mp"; + } + return "weapon_null_mp"; +} + +loadout_get_offhand_count( stat ) +{ + if ( isDefined( level.givecustomloadout ) ) + { + return 0; + } + class_num = self loadout_get_class_num(); + count = 0; + return count; +} + +scavenger_think() +{ + self endon( "death" ); + self waittill( "scavenger", player ); + primary_weapons = player getweaponslistprimaries(); + offhand_weapons_and_alts = array_exclude( player getweaponslist( 1 ), primary_weapons ); + arrayremovevalue( offhand_weapons_and_alts, "knife_mp" ); + player playsound( "fly_equipment_pickup_npc" ); + player playlocalsound( "fly_equipment_pickup_plr" ); + player.scavenger_icon.alpha = 1; + player.scavenger_icon fadeovertime( 2,5 ); + player.scavenger_icon.alpha = 0; + scavenger_lethal_proc = 1; + scavenger_tactical_proc = 1; + if ( !isDefined( player.scavenger_lethal_proc ) ) + { + player.scavenger_lethal_proc = 0; + player.scavenger_tactical_proc = 0; + } + loadout_primary = player loadout_get_offhand_weapon( "primarygrenade" ); + loadout_primary_count = player loadout_get_offhand_count( "primarygrenadecount" ); + loadout_secondary = player loadout_get_offhand_weapon( "specialgrenade" ); + loadout_secondary_count = player loadout_get_offhand_count( "specialgrenadeCount" ); + i = 0; + while ( i < offhand_weapons_and_alts.size ) + { + weapon = offhand_weapons_and_alts[ i ]; + if ( ishackweapon( weapon ) ) + { + break; + i++; + continue; + } + else switch( weapon ) + { + case "bouncingbetty_mp": + case "claymore_mp": + case "frag_grenade_mp": + case "hatchet_mp": + case "satchel_charge_mp": + case "sticky_grenade_mp": + if ( isDefined( player.grenadetypeprimarycount ) && player.grenadetypeprimarycount < 1 ) + { + break; + i++; + continue; + } + else + { + if ( player getweaponammostock( weapon ) != loadout_primary_count ) + { + if ( player.scavenger_lethal_proc < scavenger_lethal_proc ) + { + player.scavenger_lethal_proc++; + break; + i++; + continue; + } + else player.scavenger_lethal_proc = 0; + player.scavenger_tactical_proc = 0; + } + case "concussion_grenade_mp": + case "emp_grenade_mp": + case "flash_grenade_mp": + case "nightingale_mp": + case "pda_hack_mp": + case "proximity_grenade_mp": + case "sensor_grenade_mp": + case "tabun_gas_mp": + case "trophy_system_mp": + case "willy_pete_mp": + if ( isDefined( player.grenadetypesecondarycount ) && player.grenadetypesecondarycount < 1 ) + { + break; + i++; + continue; + } + else + { + if ( weapon == loadout_secondary && player getweaponammostock( weapon ) != loadout_secondary_count ) + { + if ( player.scavenger_tactical_proc < scavenger_tactical_proc ) + { + player.scavenger_tactical_proc++; + break; + i++; + continue; + } + else player.scavenger_tactical_proc = 0; + player.scavenger_lethal_proc = 0; + } + maxammo = weaponmaxammo( weapon ); + stock = player getweaponammostock( weapon ); + if ( isDefined( level.customloadoutscavenge ) ) + { + maxammo = self [[ level.customloadoutscavenge ]]( weapon ); + } + else if ( weapon == loadout_primary ) + { + maxammo = loadout_primary_count; + } + else + { + if ( weapon == loadout_secondary ) + { + maxammo = loadout_secondary_count; + } + } + if ( stock < maxammo ) + { + ammo = stock + 1; + if ( ammo > maxammo ) + { + ammo = maxammo; + } + player setweaponammostock( weapon, ammo ); + player thread maps/mp/_challenges::scavengedgrenade(); + } + break; + i++; + continue; + default: + if ( islauncherweapon( weapon ) ) + { + stock = player getweaponammostock( weapon ); + start = player getfractionstartammo( weapon ); + clip = weaponclipsize( weapon ); + clip *= getdvarfloatdefault( "scavenger_clip_multiplier", 2 ); + clip = int( clip ); + maxammo = weaponmaxammo( weapon ); + if ( stock < ( maxammo - clip ) ) + { + ammo = stock + clip; + player setweaponammostock( weapon, ammo ); + break; + } + else + { + player setweaponammostock( weapon, maxammo ); + } + } + break; + i++; + continue; +} +} +} +i++; +} +i = 0; +while ( i < primary_weapons.size ) +{ +weapon = primary_weapons[ i ]; +if ( ishackweapon( weapon ) || weapon == "kniferang_mp" ) +{ +i++; +continue; +} +else +{ +stock = player getweaponammostock( weapon ); +start = player getfractionstartammo( weapon ); +clip = weaponclipsize( weapon ); +clip *= getdvarfloatdefault( "scavenger_clip_multiplier", 2 ); +clip = int( clip ); +maxammo = weaponmaxammo( weapon ); +if ( stock < ( maxammo - clip ) ) +{ +ammo = stock + clip; +player setweaponammostock( weapon, ammo ); +i++; +continue; +} +else +{ +player setweaponammostock( weapon, maxammo ); +} +} +i++; +} +} + +scavenger_hud_create() +{ + if ( level.wagermatch ) + { + return; + } + self.scavenger_icon = newclienthudelem( self ); + self.scavenger_icon.horzalign = "center"; + self.scavenger_icon.vertalign = "middle"; + self.scavenger_icon.x = -16; + self.scavenger_icon.y = 16; + self.scavenger_icon.alpha = 0; + width = 32; + height = 16; + if ( self issplitscreen() ) + { + width = int( width * 0,5 ); + height = int( height * 0,5 ); + self.scavenger_icon.x = -8; + } + self.scavenger_icon setshader( "hud_scavenger_pickup", width, height ); +} + +dropscavengerfordeath( attacker ) +{ + if ( sessionmodeiszombiesgame() ) + { + return; + } + if ( level.wagermatch ) + { + return; + } + if ( !isDefined( attacker ) ) + { + return; + } + if ( attacker == self ) + { + return; + } + if ( level.gametype == "hack" ) + { + item = self dropscavengeritem( "scavenger_item_hack_mp" ); + } + else + { + item = self dropscavengeritem( "scavenger_item_mp" ); + } + item thread scavenger_think(); +} + +addlimitedweapon( weapon_name, owner, num_drops ) +{ + limited_info = spawnstruct(); + limited_info.weapon = weapon_name; + limited_info.drops = num_drops; + owner.limited_info = limited_info; +} + +shoulddroplimitedweapon( weapon_name, owner ) +{ + limited_info = owner.limited_info; + if ( !isDefined( limited_info ) ) + { + return 1; + } + if ( limited_info.weapon != weapon_name ) + { + return 1; + } + if ( limited_info.drops <= 0 ) + { + return 0; + } + return 1; +} + +droplimitedweapon( weapon_name, owner, item ) +{ + limited_info = owner.limited_info; + if ( !isDefined( limited_info ) ) + { + return; + } + if ( limited_info.weapon != weapon_name ) + { + return; + } + limited_info.drops -= 1; + owner.limited_info = undefined; + item thread limitedpickup( limited_info ); +} + +limitedpickup( limited_info ) +{ + self endon( "death" ); + self waittill( "trigger", player, item ); + if ( !isDefined( item ) ) + { + return; + } + player.limited_info = limited_info; +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/_zm_gametype.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/_zm_gametype.gsc new file mode 100644 index 0000000..d706792 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/_zm_gametype.gsc @@ -0,0 +1,2053 @@ +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_game_module; +#include maps/mp/zombies/_zm_pers_upgrades; +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/gametypes_zm/_spawning; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/gametypes_zm/_hud; +#include maps/mp/zombies/_zm_audio_announcer; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/gametypes_zm/_globallogic_ui; +#include maps/mp/gametypes_zm/_hud_message; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/gametypes_zm/_globallogic_defaults; +#include maps/mp/gametypes_zm/_gameobjects; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/gametypes_zm/_callbacksetup; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +main() +{ + maps/mp/gametypes_zm/_globallogic::init(); + maps/mp/gametypes_zm/_callbacksetup::setupcallbacks(); + globallogic_setupdefault_zombiecallbacks(); + menu_init(); + registerroundlimit( 1, 1 ); + registertimelimit( 0, 0 ); + registerscorelimit( 0, 0 ); + registerroundwinlimit( 0, 0 ); + registernumlives( 1, 1 ); + maps/mp/gametypes_zm/_weapons::registergrenadelauncherduddvar( level.gametype, 10, 0, 1440 ); + maps/mp/gametypes_zm/_weapons::registerthrowngrenadeduddvar( level.gametype, 0, 0, 1440 ); + maps/mp/gametypes_zm/_weapons::registerkillstreakdelay( level.gametype, 0, 0, 1440 ); + maps/mp/gametypes_zm/_globallogic::registerfriendlyfiredelay( level.gametype, 15, 0, 1440 ); + level.takelivesondeath = 1; + level.teambased = 1; + level.disableprematchmessages = 1; + level.disablemomentum = 1; + level.overrideteamscore = 0; + level.overrideplayerscore = 0; + level.displayhalftimetext = 0; + level.displayroundendtext = 0; + level.allowannouncer = 0; + level.endgameonscorelimit = 0; + level.endgameontimelimit = 0; + level.resetplayerscoreeveryround = 1; + level.doprematch = 0; + level.nopersistence = 1; + level.scoreroundbased = 0; + level.forceautoassign = 1; + level.dontshowendreason = 1; + level.forceallallies = 0; + level.allow_teamchange = 0; + setdvar( "scr_disable_team_selection", 1 ); + makedvarserverinfo( "scr_disable_team_selection", 1 ); + setmatchflag( "hud_zombie", 1 ); + setdvar( "scr_disable_weapondrop", 1 ); + setdvar( "scr_xpscale", 0 ); + level.onstartgametype = ::onstartgametype; + level.onspawnplayer = ::blank; + level.onspawnplayerunified = ::onspawnplayerunified; + level.onroundendgame = ::onroundendgame; + level.mayspawn = ::mayspawn; + set_game_var( "ZM_roundLimit", 1 ); + set_game_var( "ZM_scoreLimit", 1 ); + set_game_var( "_team1_num", 0 ); + set_game_var( "_team2_num", 0 ); + map_name = level.script; + mode = getDvar( "ui_gametype" ); + if ( isDefined( mode ) && mode == "" && isDefined( level.default_game_mode ) ) + { + mode = level.default_game_mode; + } + set_gamemode_var_once( "mode", mode ); + set_game_var_once( "side_selection", 1 ); + location = getDvar( "ui_zm_mapstartlocation" ); + if ( location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + set_gamemode_var_once( "location", location ); + set_gamemode_var_once( "randomize_mode", getDvarInt( #"5D1D04D4" ) ); + set_gamemode_var_once( "randomize_location", getDvarInt( #"D446AE4D" ) ); + set_gamemode_var_once( "team_1_score", 0 ); + set_gamemode_var_once( "team_2_score", 0 ); + set_gamemode_var_once( "current_round", 0 ); + set_gamemode_var_once( "rules_read", 0 ); + set_game_var_once( "switchedsides", 0 ); + gametype = getDvar( "ui_gametype" ); + game[ "dialog" ][ "gametype" ] = gametype + "_start"; + game[ "dialog" ][ "gametype_hardcore" ] = gametype + "_start"; + game[ "dialog" ][ "offense_obj" ] = "generic_boost"; + game[ "dialog" ][ "defense_obj" ] = "generic_boost"; + set_gamemode_var( "pre_init_zombie_spawn_func", undefined ); + set_gamemode_var( "post_init_zombie_spawn_func", undefined ); + set_gamemode_var( "match_end_notify", undefined ); + set_gamemode_var( "match_end_func", undefined ); + setscoreboardcolumns( "score", "kills", "downs", "revives", "headshots" ); + onplayerconnect_callback( ::onplayerconnect_check_for_hotjoin ); +} + +game_objects_allowed( mode, location ) +{ + allowed[ 0 ] = mode; + entities = getentarray(); + _a153 = entities; + _k153 = getFirstArrayKey( _a153 ); + while ( isDefined( _k153 ) ) + { + entity = _a153[ _k153 ]; + if ( isDefined( entity.script_gameobjectname ) ) + { + isallowed = maps/mp/gametypes_zm/_gameobjects::entity_is_allowed( entity, allowed ); + if ( isDefined( entity.script_noteworthy ) ) + { + isvalidlocation = entity.script_noteworthy == location; + } + if ( !isallowed || !isvalidlocation && !is_classic() ) + { + if ( isDefined( entity.spawnflags ) && entity.spawnflags == 1 ) + { + if ( isDefined( entity.classname ) && entity.classname != "trigger_multiple" ) + { + entity connectpaths(); + } + } + entity delete(); + break; + } + else + { + if ( isDefined( entity.script_vector ) ) + { + entity moveto( entity.origin + entity.script_vector, 0,05 ); + entity waittill( "movedone" ); + if ( isDefined( entity.spawnflags ) && entity.spawnflags == 1 ) + { + entity disconnectpaths(); + } + break; + } + else + { + if ( isDefined( entity.spawnflags ) && entity.spawnflags == 1 ) + { + if ( isDefined( entity.classname ) && entity.classname != "trigger_multiple" ) + { + entity connectpaths(); + } + } + } + } + } + _k153 = getNextArrayKey( _a153, _k153 ); + } +} + +post_init_gametype() +{ + if ( isDefined( level.gamemode_map_postinit ) ) + { + if ( isDefined( level.gamemode_map_postinit[ level.scr_zm_ui_gametype ] ) ) + { + [[ level.gamemode_map_postinit[ level.scr_zm_ui_gametype ] ]](); + } + } +} + +post_gametype_main( mode ) +{ + set_game_var( "ZM_roundWinLimit", get_game_var( "ZM_roundLimit" ) * 0,5 ); + level.roundlimit = get_game_var( "ZM_roundLimit" ); + if ( isDefined( level.gamemode_map_preinit ) ) + { + if ( isDefined( level.gamemode_map_preinit[ mode ] ) ) + { + [[ level.gamemode_map_preinit[ mode ] ]](); + } + } +} + +globallogic_setupdefault_zombiecallbacks() +{ + level.spawnplayer = ::maps/mp/gametypes_zm/_globallogic_spawn::spawnplayer; + level.spawnplayerprediction = ::maps/mp/gametypes_zm/_globallogic_spawn::spawnplayerprediction; + level.spawnclient = ::maps/mp/gametypes_zm/_globallogic_spawn::spawnclient; + level.spawnspectator = ::maps/mp/gametypes_zm/_globallogic_spawn::spawnspectator; + level.spawnintermission = ::maps/mp/gametypes_zm/_globallogic_spawn::spawnintermission; + level.onplayerscore = ::blank; + level.onteamscore = ::blank; + level.wavespawntimer = ::wavespawntimer; + level.onspawnplayer = ::blank; + level.onspawnplayerunified = ::blank; + level.onspawnspectator = ::onspawnspectator; + level.onspawnintermission = ::onspawnintermission; + level.onrespawndelay = ::blank; + level.onforfeit = ::blank; + level.ontimelimit = ::blank; + level.onscorelimit = ::blank; + level.ondeadevent = ::ondeadevent; + level.ononeleftevent = ::blank; + level.giveteamscore = ::blank; + level.giveplayerscore = ::blank; + level.gettimelimit = ::maps/mp/gametypes_zm/_globallogic_defaults::default_gettimelimit; + level.getteamkillpenalty = ::blank; + level.getteamkillscore = ::blank; + level.iskillboosting = ::blank; + level._setteamscore = ::maps/mp/gametypes_zm/_globallogic_score::_setteamscore; + level._setplayerscore = ::blank; + level._getteamscore = ::blank; + level._getplayerscore = ::blank; + level.onprecachegametype = ::blank; + level.onstartgametype = ::blank; + level.onplayerconnect = ::blank; + level.onplayerdisconnect = ::onplayerdisconnect; + level.onplayerdamage = ::blank; + level.onplayerkilled = ::blank; + level.onplayerkilledextraunthreadedcbs = []; + level.onteamoutcomenotify = ::maps/mp/gametypes_zm/_hud_message::teamoutcomenotifyzombie; + level.onoutcomenotify = ::blank; + level.onteamwageroutcomenotify = ::blank; + level.onwageroutcomenotify = ::blank; + level.onendgame = ::onendgame; + level.onroundendgame = ::blank; + level.onmedalawarded = ::blank; + level.autoassign = ::maps/mp/gametypes_zm/_globallogic_ui::menuautoassign; + level.spectator = ::maps/mp/gametypes_zm/_globallogic_ui::menuspectator; + level.class = ::maps/mp/gametypes_zm/_globallogic_ui::menuclass; + level.allies = ::menuallieszombies; + level.teammenu = ::maps/mp/gametypes_zm/_globallogic_ui::menuteam; + level.callbackactorkilled = ::blank; + level.callbackvehicledamage = ::blank; +} + +setup_standard_objects( location ) +{ + structs = getstructarray( "game_mode_object" ); + _a290 = structs; + _k290 = getFirstArrayKey( _a290 ); + while ( isDefined( _k290 ) ) + { + struct = _a290[ _k290 ]; + if ( isDefined( struct.script_noteworthy ) && struct.script_noteworthy != location ) + { + } + else + { + if ( isDefined( struct.script_string ) ) + { + keep = 0; + tokens = strtok( struct.script_string, " " ); + _a300 = tokens; + _k300 = getFirstArrayKey( _a300 ); + while ( isDefined( _k300 ) ) + { + token = _a300[ _k300 ]; + if ( token == level.scr_zm_ui_gametype && token != "zstandard" ) + { + keep = 1; + } + else + { + if ( token == "zstandard" ) + { + keep = 1; + } + } + _k300 = getNextArrayKey( _a300, _k300 ); + } + if ( !keep ) + { + break; + } + } + else + { + barricade = spawn( "script_model", struct.origin ); + barricade.angles = struct.angles; + barricade setmodel( struct.script_parameters ); + } + } + _k290 = getNextArrayKey( _a290, _k290 ); + } + objects = getentarray(); + _a322 = objects; + _k322 = getFirstArrayKey( _a322 ); + while ( isDefined( _k322 ) ) + { + object = _a322[ _k322 ]; + if ( !object is_survival_object() ) + { + } + else + { + if ( isDefined( object.spawnflags ) && object.spawnflags == 1 && object.classname != "trigger_multiple" ) + { + object connectpaths(); + } + object delete(); + } + _k322 = getNextArrayKey( _a322, _k322 ); + } + if ( isDefined( level._classic_setup_func ) ) + { + [[ level._classic_setup_func ]](); + } +} + +is_survival_object() +{ + if ( !isDefined( self.script_parameters ) ) + { + return 0; + } + tokens = strtok( self.script_parameters, " " ); + remove = 0; + _a352 = tokens; + _k352 = getFirstArrayKey( _a352 ); + while ( isDefined( _k352 ) ) + { + token = _a352[ _k352 ]; + if ( token == "survival_remove" ) + { + remove = 1; + } + _k352 = getNextArrayKey( _a352, _k352 ); + } + return remove; +} + +game_module_player_damage_callback( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + self.last_damage_from_zombie_or_player = 0; + if ( isDefined( eattacker ) ) + { + if ( isplayer( eattacker ) && eattacker == self ) + { + return; + } + if ( isDefined( eattacker.is_zombie ) || eattacker.is_zombie && isplayer( eattacker ) ) + { + self.last_damage_from_zombie_or_player = 1; + } + } + if ( isDefined( self._being_shellshocked ) || self._being_shellshocked && self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return; + } + if ( isplayer( eattacker ) && isDefined( eattacker._encounters_team ) && eattacker._encounters_team != self._encounters_team ) + { + if ( isDefined( self.hasriotshield ) && self.hasriotshield && isDefined( vdir ) ) + { + if ( isDefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) + { + if ( self maps/mp/zombies/_zm::player_shield_facing_attacker( vdir, 0,2 ) && isDefined( self.player_shield_apply_damage ) ) + { + return; + } + } + else + { + if ( !isDefined( self.riotshieldentity ) ) + { + if ( !self maps/mp/zombies/_zm::player_shield_facing_attacker( vdir, -0,2 ) && isDefined( self.player_shield_apply_damage ) ) + { + return; + } + } + } + } + if ( isDefined( level._game_module_player_damage_grief_callback ) ) + { + self [[ level._game_module_player_damage_grief_callback ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + if ( isDefined( level._effect[ "butterflies" ] ) ) + { + if ( isDefined( sweapon ) && weapontype( sweapon ) == "grenade" ) + { + playfx( level._effect[ "butterflies" ], self.origin + vectorScale( ( 1, 1, 1 ), 40 ) ); + } + else + { + playfx( level._effect[ "butterflies" ], vpoint, vdir ); + } + } + self thread do_game_mode_shellshock(); + self playsound( "zmb_player_hit_ding" ); + } +} + +do_game_mode_shellshock() +{ + self endon( "disconnect" ); + self._being_shellshocked = 1; + self shellshock( "grief_stab_zm", 0,75 ); + wait 0,75; + self._being_shellshocked = 0; +} + +add_map_gamemode( mode, preinit_func, precache_func, main_func ) +{ + if ( !isDefined( level.gamemode_map_location_init ) ) + { + level.gamemode_map_location_init = []; + } + if ( !isDefined( level.gamemode_map_location_main ) ) + { + level.gamemode_map_location_main = []; + } + if ( !isDefined( level.gamemode_map_preinit ) ) + { + level.gamemode_map_preinit = []; + } + if ( !isDefined( level.gamemode_map_postinit ) ) + { + level.gamemode_map_postinit = []; + } + if ( !isDefined( level.gamemode_map_precache ) ) + { + level.gamemode_map_precache = []; + } + if ( !isDefined( level.gamemode_map_main ) ) + { + level.gamemode_map_main = []; + } + level.gamemode_map_preinit[ mode ] = preinit_func; + level.gamemode_map_main[ mode ] = main_func; + level.gamemode_map_precache[ mode ] = precache_func; + level.gamemode_map_location_precache[ mode ] = []; + level.gamemode_map_location_main[ mode ] = []; +} + +add_map_location_gamemode( mode, location, precache_func, main_func ) +{ + if ( !isDefined( level.gamemode_map_location_precache[ mode ] ) ) + { +/# + println( "*** ERROR : " + mode + " has not been added to the map using add_map_gamemode." ); +#/ + return; + } + level.gamemode_map_location_precache[ mode ][ location ] = precache_func; + level.gamemode_map_location_main[ mode ][ location ] = main_func; +} + +rungametypeprecache( gamemode ) +{ + if ( !isDefined( level.gamemode_map_location_main ) || !isDefined( level.gamemode_map_location_main[ gamemode ] ) ) + { + return; + } + if ( isDefined( level.gamemode_map_precache ) ) + { + if ( isDefined( level.gamemode_map_precache[ gamemode ] ) ) + { + [[ level.gamemode_map_precache[ gamemode ] ]](); + } + } + if ( isDefined( level.gamemode_map_location_precache ) ) + { + if ( isDefined( level.gamemode_map_location_precache[ gamemode ] ) ) + { + loc = getDvar( "ui_zm_mapstartlocation" ); + if ( loc == "" && isDefined( level.default_start_location ) ) + { + loc = level.default_start_location; + } + if ( isDefined( level.gamemode_map_location_precache[ gamemode ][ loc ] ) ) + { + [[ level.gamemode_map_location_precache[ gamemode ][ loc ] ]](); + } + } + } + if ( isDefined( level.precachecustomcharacters ) ) + { + self [[ level.precachecustomcharacters ]](); + } +} + +rungametypemain( gamemode, mode_main_func, use_round_logic ) +{ + if ( !isDefined( level.gamemode_map_location_main ) || !isDefined( level.gamemode_map_location_main[ gamemode ] ) ) + { + return; + } + level thread game_objects_allowed( get_gamemode_var( "mode" ), get_gamemode_var( "location" ) ); + if ( isDefined( level.gamemode_map_main ) ) + { + if ( isDefined( level.gamemode_map_main[ gamemode ] ) ) + { + level thread [[ level.gamemode_map_main[ gamemode ] ]](); + } + } + if ( isDefined( level.gamemode_map_location_main ) ) + { + if ( isDefined( level.gamemode_map_location_main[ gamemode ] ) ) + { + loc = getDvar( "ui_zm_mapstartlocation" ); + if ( loc == "" && isDefined( level.default_start_location ) ) + { + loc = level.default_start_location; + } + if ( isDefined( level.gamemode_map_location_main[ gamemode ][ loc ] ) ) + { + level thread [[ level.gamemode_map_location_main[ gamemode ][ loc ] ]](); + } + } + } + if ( isDefined( mode_main_func ) ) + { + if ( isDefined( use_round_logic ) && use_round_logic ) + { + level thread round_logic( mode_main_func ); + } + else + { + level thread non_round_logic( mode_main_func ); + } + } + level thread game_end_func(); +} + +round_logic( mode_logic_func ) +{ + level.skit_vox_override = 1; + if ( isDefined( level.flag[ "start_zombie_round_logic" ] ) ) + { + flag_wait( "start_zombie_round_logic" ); + } + flag_wait( "start_encounters_match_logic" ); + if ( !isDefined( game[ "gamemode_match" ][ "rounds" ] ) ) + { + game[ "gamemode_match" ][ "rounds" ] = []; + } + set_gamemode_var_once( "current_round", 0 ); + set_gamemode_var_once( "team_1_score", 0 ); + set_gamemode_var_once( "team_2_score", 0 ); + if ( isDefined( is_encounter() ) && is_encounter() ) + { + [[ level._setteamscore ]]( "allies", get_gamemode_var( "team_2_score" ) ); + [[ level._setteamscore ]]( "axis", get_gamemode_var( "team_1_score" ) ); + } + flag_set( "pregame" ); + waittillframeend; + level.gameended = 0; + cur_round = get_gamemode_var( "current_round" ); + set_gamemode_var( "current_round", cur_round + 1 ); + game[ "gamemode_match" ][ "rounds" ][ cur_round ] = spawnstruct(); + game[ "gamemode_match" ][ "rounds" ][ cur_round ].mode = getDvar( "ui_gametype" ); + level thread [[ mode_logic_func ]](); + flag_wait( "start_encounters_match_logic" ); + level.gamestarttime = getTime(); + level.gamelengthtime = undefined; + level thread createtimer(); + level notify( "clear_hud_elems" ); + level waittill( "game_module_ended", winner ); + game[ "gamemode_match" ][ "rounds" ][ cur_round ].winner = winner; + level thread kill_all_zombies(); + level.gameendtime = getTime(); + level.gamelengthtime = level.gameendtime - level.gamestarttime; + level.gameended = 1; + if ( winner == "A" ) + { + score = get_gamemode_var( "team_1_score" ); + set_gamemode_var( "team_1_score", score + 1 ); + } + else + { + score = get_gamemode_var( "team_2_score" ); + set_gamemode_var( "team_2_score", score + 1 ); + } + if ( isDefined( is_encounter() ) && is_encounter() ) + { + [[ level._setteamscore ]]( "allies", get_gamemode_var( "team_2_score" ) ); + [[ level._setteamscore ]]( "axis", get_gamemode_var( "team_1_score" ) ); + if ( get_gamemode_var( "team_1_score" ) == get_gamemode_var( "team_2_score" ) ) + { + level thread maps/mp/zombies/_zm_audio::zmbvoxcrowdonteam( "win" ); + level thread maps/mp/zombies/_zm_audio_announcer::announceroundwinner( "tied" ); + } + else + { + level thread maps/mp/zombies/_zm_audio::zmbvoxcrowdonteam( "win", winner, "lose" ); + level thread maps/mp/zombies/_zm_audio_announcer::announceroundwinner( winner ); + } + } + level thread delete_corpses(); + level delay_thread( 5, ::revive_laststand_players ); + level notify( "clear_hud_elems" ); + while ( startnextzmround( winner ) ) + { + level clientnotify( "gme" ); + while ( 1 ) + { + wait 1; + } + } + level.match_is_ending = 1; + if ( isDefined( is_encounter() ) && is_encounter() ) + { + matchwonteam = ""; + if ( get_gamemode_var( "team_1_score" ) > get_gamemode_var( "team_2_score" ) ) + { + matchwonteam = "A"; + } + else + { + matchwonteam = "B"; + } + level thread maps/mp/zombies/_zm_audio::zmbvoxcrowdonteam( "win", matchwonteam, "lose" ); + level thread maps/mp/zombies/_zm_audio_announcer::announcematchwinner( matchwonteam ); + level create_final_score(); + track_encounters_win_stats( matchwonteam ); + } + maps/mp/zombies/_zm::intermission(); + level.can_revive_game_module = undefined; + level notify( "end_game" ); +} + +end_rounds_early( winner ) +{ + level.forcedend = 1; + cur_round = get_gamemode_var( "current_round" ); + set_gamemode_var( "ZM_roundLimit", cur_round ); + if ( isDefined( winner ) ) + { + level notify( "game_module_ended" ); + } + else + { + level notify( "end_game" ); + } +} + +checkzmroundswitch() +{ + if ( !isDefined( level.zm_roundswitch ) || !level.zm_roundswitch ) + { + return 0; + } +/# + assert( get_gamemode_var( "current_round" ) > 0 ); +#/ + return 1; + return 0; +} + +create_hud_scoreboard() +{ + level endon( "end_game" ); + level thread module_hud_full_screen_overlay(); + level thread module_hud_team_1_score(); + level thread module_hud_team_2_score(); + level thread module_hud_round_num(); + respawn_spectators_and_freeze_players(); + waittill_any_or_timeout( 6, "clear_hud_elems" ); + wait 2,1; +} + +respawn_spectators_and_freeze_players() +{ + players = get_players(); + _a785 = players; + _k785 = getFirstArrayKey( _a785 ); + while ( isDefined( _k785 ) ) + { + player = _a785[ _k785 ]; + if ( player.sessionstate == "spectator" ) + { + if ( isDefined( player.spectate_hud ) ) + { + player.spectate_hud destroy(); + } + player [[ level.spawnplayer ]](); + } + player freeze_player_controls( 1 ); + _k785 = getNextArrayKey( _a785, _k785 ); + } +} + +module_hud_team_1_score() +{ + level._encounters_score_1 = newhudelem(); + level._encounters_score_1.x = 0; + level._encounters_score_1.y = 260; + level._encounters_score_1.alignx = "center"; + level._encounters_score_1.horzalign = "center"; + level._encounters_score_1.vertalign = "top"; + level._encounters_score_1.font = "default"; + level._encounters_score_1.fontscale = 2,3; + level._encounters_score_1.color = ( 1, 1, 1 ); + level._encounters_score_1.foreground = 1; + level._encounters_score_1 settext( "Team CIA: " + get_gamemode_var( "team_1_score" ) ); + level._encounters_score_1.alpha = 0; + level._encounters_score_1.sort = 11; + level._encounters_score_1 fadeovertime( 2 ); + level._encounters_score_1.alpha = 1; + level waittill_any_or_timeout( 6, "clear_hud_elems" ); + level._encounters_score_1 fadeovertime( 2 ); + level._encounters_score_1.alpha = 0; + wait 2,1; + level._encounters_score_1 destroy(); +} + +module_hud_team_2_score() +{ + level._encounters_score_2 = newhudelem(); + level._encounters_score_2.x = 0; + level._encounters_score_2.y = 290; + level._encounters_score_2.alignx = "center"; + level._encounters_score_2.horzalign = "center"; + level._encounters_score_2.vertalign = "top"; + level._encounters_score_2.font = "default"; + level._encounters_score_2.fontscale = 2,3; + level._encounters_score_2.color = ( 1, 1, 1 ); + level._encounters_score_2.foreground = 1; + level._encounters_score_2 settext( "Team CDC: " + get_gamemode_var( "team_2_score" ) ); + level._encounters_score_2.alpha = 0; + level._encounters_score_2.sort = 12; + level._encounters_score_2 fadeovertime( 2 ); + level._encounters_score_2.alpha = 1; + level waittill_any_or_timeout( 6, "clear_hud_elems" ); + level._encounters_score_2 fadeovertime( 2 ); + level._encounters_score_2.alpha = 0; + wait 2,1; + level._encounters_score_2 destroy(); +} + +module_hud_round_num() +{ + level._encounters_round_num = newhudelem(); + level._encounters_round_num.x = 0; + level._encounters_round_num.y = 60; + level._encounters_round_num.alignx = "center"; + level._encounters_round_num.horzalign = "center"; + level._encounters_round_num.vertalign = "top"; + level._encounters_round_num.font = "default"; + level._encounters_round_num.fontscale = 2,3; + level._encounters_round_num.color = ( 1, 1, 1 ); + level._encounters_round_num.foreground = 1; + level._encounters_round_num settext( "Round: ^5" + get_gamemode_var( "current_round" ) + " / " + get_game_var( "ZM_roundLimit" ) ); + level._encounters_round_num.alpha = 0; + level._encounters_round_num.sort = 13; + level._encounters_round_num fadeovertime( 2 ); + level._encounters_round_num.alpha = 1; + level waittill_any_or_timeout( 6, "clear_hud_elems" ); + level._encounters_round_num fadeovertime( 2 ); + level._encounters_round_num.alpha = 0; + wait 2,1; + level._encounters_round_num destroy(); +} + +createtimer() +{ + flag_waitopen( "pregame" ); + elem = newhudelem(); + elem.hidewheninmenu = 1; + elem.horzalign = "center"; + elem.vertalign = "top"; + elem.alignx = "center"; + elem.aligny = "middle"; + elem.x = 0; + elem.y = 0; + elem.foreground = 1; + elem.font = "default"; + elem.fontscale = 1,5; + elem.color = ( 1, 1, 1 ); + elem.alpha = 2; + elem thread maps/mp/gametypes_zm/_hud::fontpulseinit(); + if ( isDefined( level.timercountdown ) && level.timercountdown ) + { + elem settenthstimer( level.timelimit * 60 ); + } + else + { + elem settenthstimerup( 0,1 ); + } + level.game_module_timer = elem; + level waittill( "game_module_ended" ); + elem destroy(); +} + +revive_laststand_players() +{ + if ( isDefined( level.match_is_ending ) && level.match_is_ending ) + { + return; + } + players = get_players(); + _a917 = players; + _k917 = getFirstArrayKey( _a917 ); + while ( isDefined( _k917 ) ) + { + player = _a917[ _k917 ]; + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + player thread maps/mp/zombies/_zm_laststand::auto_revive( player ); + } + _k917 = getNextArrayKey( _a917, _k917 ); + } +} + +team_icon_winner( elem ) +{ + og_x = elem.x; + og_y = elem.y; + elem.sort = 1; + elem scaleovertime( 0,75, 150, 150 ); + elem moveovertime( 0,75 ); + elem.horzalign = "center"; + elem.vertalign = "middle"; + elem.x = 0; + elem.y = 0; + elem.alpha = 0,7; + wait 0,75; +} + +delete_corpses() +{ + corpses = getcorpsearray(); + x = 0; + while ( x < corpses.size ) + { + corpses[ x ] delete(); + x++; + } +} + +track_encounters_win_stats( matchwonteam ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ]._encounters_team == matchwonteam ) + { + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( "wins" ); + players[ i ] maps/mp/zombies/_zm_stats::add_client_stat( "losses", -1 ); + players[ i ] adddstat( "skill_rating", 1 ); + players[ i ] setdstat( "skill_variance", 1 ); + players[ i ] maps/mp/zombies/_zm_stats::add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "wins", 1 ); + players[ i ] maps/mp/zombies/_zm_stats::add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "losses", -1 ); + } + else + { + players[ i ] setdstat( "skill_rating", 0 ); + players[ i ] setdstat( "skill_variance", 1 ); + } + players[ i ] updatestatratio( "wlratio", "wins", "losses" ); + i++; + } +} + +module_hud_full_screen_overlay() +{ + fadetoblack = newhudelem(); + fadetoblack.x = 0; + fadetoblack.y = 0; + fadetoblack.horzalign = "fullscreen"; + fadetoblack.vertalign = "fullscreen"; + fadetoblack setshader( "black", 640, 480 ); + fadetoblack.color = ( 1, 1, 1 ); + fadetoblack.alpha = 1; + fadetoblack.foreground = 1; + fadetoblack.sort = 0; + if ( is_encounter() || getDvar( "ui_gametype" ) == "zcleansed" ) + { + level waittill_any_or_timeout( 25, "start_fullscreen_fade_out" ); + } + else + { + level waittill_any_or_timeout( 25, "start_zombie_round_logic" ); + } + fadetoblack fadeovertime( 2 ); + fadetoblack.alpha = 0; + wait 2,1; + fadetoblack destroy(); +} + +create_final_score() +{ + level endon( "end_game" ); + level thread module_hud_team_winer_score(); + wait 2; + level thread module_hud_full_screen_overlay(); + wait 8; +} + +module_hud_team_winer_score() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] thread create_module_hud_team_winer_score(); + if ( isDefined( players[ i ]._team_hud ) && isDefined( players[ i ]._team_hud[ "team" ] ) ) + { + players[ i ] thread team_icon_winner( players[ i ]._team_hud[ "team" ] ); + } + if ( isDefined( level.lock_player_on_team_score ) && level.lock_player_on_team_score ) + { + players[ i ] freezecontrols( 1 ); + players[ i ] takeallweapons(); + players[ i ] setclientuivisibilityflag( "hud_visible", 0 ); + players[ i ].sessionstate = "spectator"; + players[ i ].spectatorclient = -1; + players[ i ].maxhealth = players[ i ].health; + players[ i ].shellshocked = 0; + players[ i ].inwater = 0; + players[ i ].friendlydamage = undefined; + players[ i ].hasspawned = 1; + players[ i ].spawntime = getTime(); + players[ i ].afk = 0; + players[ i ] detachall(); + } + i++; + } + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "match_over" ); +} + +create_module_hud_team_winer_score() +{ + self._team_winer_score = newclienthudelem( self ); + self._team_winer_score.x = 0; + self._team_winer_score.y = 70; + self._team_winer_score.alignx = "center"; + self._team_winer_score.horzalign = "center"; + self._team_winer_score.vertalign = "middle"; + self._team_winer_score.font = "default"; + self._team_winer_score.fontscale = 15; + self._team_winer_score.color = ( 1, 1, 1 ); + self._team_winer_score.foreground = 1; + if ( self._encounters_team == "B" && get_gamemode_var( "team_2_score" ) > get_gamemode_var( "team_1_score" ) ) + { + self._team_winer_score settext( &"ZOMBIE_MATCH_WON" ); + } + else + { + if ( self._encounters_team == "B" && get_gamemode_var( "team_2_score" ) < get_gamemode_var( "team_1_score" ) ) + { + self._team_winer_score.color = ( 1, 1, 1 ); + self._team_winer_score settext( &"ZOMBIE_MATCH_LOST" ); + } + } + if ( self._encounters_team == "A" && get_gamemode_var( "team_1_score" ) > get_gamemode_var( "team_2_score" ) ) + { + self._team_winer_score settext( &"ZOMBIE_MATCH_WON" ); + } + else + { + if ( self._encounters_team == "A" && get_gamemode_var( "team_1_score" ) < get_gamemode_var( "team_2_score" ) ) + { + self._team_winer_score.color = ( 1, 1, 1 ); + self._team_winer_score settext( &"ZOMBIE_MATCH_LOST" ); + } + } + self._team_winer_score.alpha = 0; + self._team_winer_score.sort = 12; + self._team_winer_score fadeovertime( 2 ); + self._team_winer_score.alpha = 1; + wait 10; + self._team_winer_score fadeovertime( 2 ); + self._team_winer_score.alpha = 0; + wait 2,1; + self._team_winer_score destroy(); +} + +non_round_logic( mode_logic_func ) +{ + level thread [[ mode_logic_func ]](); +} + +game_end_func() +{ + if ( !isDefined( get_gamemode_var( "match_end_notify" ) ) && !isDefined( get_gamemode_var( "match_end_func" ) ) ) + { + return; + } + level waittill( get_gamemode_var( "match_end_notify" ), winning_team ); + level thread [[ get_gamemode_var( "match_end_func" ) ]]( winning_team ); +} + +setup_classic_gametype() +{ + ents = getentarray(); + _a1111 = ents; + _k1111 = getFirstArrayKey( _a1111 ); + while ( isDefined( _k1111 ) ) + { + ent = _a1111[ _k1111 ]; + if ( isDefined( ent.script_parameters ) ) + { + parameters = strtok( ent.script_parameters, " " ); + should_remove = 0; + _a1117 = parameters; + _k1117 = getFirstArrayKey( _a1117 ); + while ( isDefined( _k1117 ) ) + { + parm = _a1117[ _k1117 ]; + if ( parm == "survival_remove" ) + { + should_remove = 1; + } + _k1117 = getNextArrayKey( _a1117, _k1117 ); + } + if ( should_remove ) + { + ent delete(); + } + } + _k1111 = getNextArrayKey( _a1111, _k1111 ); + } + structs = getstructarray( "game_mode_object" ); + _a1147 = structs; + _k1147 = getFirstArrayKey( _a1147 ); + while ( isDefined( _k1147 ) ) + { + struct = _a1147[ _k1147 ]; + if ( !isDefined( struct.script_string ) ) + { + } + else tokens = strtok( struct.script_string, " " ); + spawn_object = 0; + _a1155 = tokens; + _k1155 = getFirstArrayKey( _a1155 ); + while ( isDefined( _k1155 ) ) + { + parm = _a1155[ _k1155 ]; + if ( parm == "survival" ) + { + spawn_object = 1; + } + _k1155 = getNextArrayKey( _a1155, _k1155 ); + } + if ( !spawn_object ) + { + } + else + { + barricade = spawn( "script_model", struct.origin ); + barricade.angles = struct.angles; + barricade setmodel( struct.script_parameters ); + } + _k1147 = getNextArrayKey( _a1147, _k1147 ); + } + unlink_meat_traversal_nodes(); +} + +zclassic_main() +{ + level thread setup_classic_gametype(); + level thread maps/mp/zombies/_zm::round_start(); +} + +unlink_meat_traversal_nodes() +{ + meat_town_nodes = getnodearray( "meat_town_barrier_traversals", "targetname" ); + meat_tunnel_nodes = getnodearray( "meat_tunnel_barrier_traversals", "targetname" ); + meat_farm_nodes = getnodearray( "meat_farm_barrier_traversals", "targetname" ); + nodes = arraycombine( meat_town_nodes, meat_tunnel_nodes, 1, 0 ); + traversal_nodes = arraycombine( nodes, meat_farm_nodes, 1, 0 ); + _a1193 = traversal_nodes; + _k1193 = getFirstArrayKey( _a1193 ); + while ( isDefined( _k1193 ) ) + { + node = _a1193[ _k1193 ]; + end_node = getnode( node.target, "targetname" ); + unlink_nodes( node, end_node ); + _k1193 = getNextArrayKey( _a1193, _k1193 ); + } +} + +canplayersuicide() +{ + return self hasperk( "specialty_scavenger" ); +} + +onplayerdisconnect() +{ + if ( isDefined( level.game_mode_custom_onplayerdisconnect ) ) + { + level [[ level.game_mode_custom_onplayerdisconnect ]]( self ); + } + level thread maps/mp/zombies/_zm::check_quickrevive_for_hotjoin( 1 ); + self maps/mp/zombies/_zm_laststand::add_weighted_down(); + level maps/mp/zombies/_zm::checkforalldead( self ); +} + +ondeadevent( team ) +{ + thread maps/mp/gametypes_zm/_globallogic::endgame( level.zombie_team, "" ); +} + +onspawnintermission() +{ + spawnpointname = "info_intermission"; + spawnpoints = getentarray( spawnpointname, "classname" ); + if ( spawnpoints.size < 1 ) + { +/# + println( "NO " + spawnpointname + " SPAWNPOINTS IN MAP" ); +#/ + return; + } + spawnpoint = spawnpoints[ randomint( spawnpoints.size ) ]; + if ( isDefined( spawnpoint ) ) + { + self spawn( spawnpoint.origin, spawnpoint.angles ); + } +} + +onspawnspectator( origin, angles ) +{ +} + +mayspawn() +{ + if ( isDefined( level.custommayspawnlogic ) ) + { + return self [[ level.custommayspawnlogic ]](); + } + if ( self.pers[ "lives" ] == 0 ) + { + level notify( "player_eliminated" ); + self notify( "player_eliminated" ); + return 0; + } + return 1; +} + +onstartgametype() +{ + setclientnamemode( "auto_change" ); + level.displayroundendtext = 0; + maps/mp/gametypes_zm/_spawning::create_map_placed_influencers(); + if ( !isoneround() ) + { + level.displayroundendtext = 1; + if ( isscoreroundbased() ) + { + maps/mp/gametypes_zm/_globallogic_score::resetteamscores(); + } + } +} + +displayroundend( round_winner ) +{ + players = get_players(); + _a1318 = players; + _k1318 = getFirstArrayKey( _a1318 ); + while ( isDefined( _k1318 ) ) + { + player = _a1318[ _k1318 ]; + player thread module_hud_round_end( round_winner ); + if ( isDefined( player._team_hud ) && isDefined( player._team_hud[ "team" ] ) ) + { + player thread team_icon_winner( player._team_hud[ "team" ] ); + } + player delay_thread( 5, ::freeze_player_controls, 1 ); + _k1318 = getNextArrayKey( _a1318, _k1318 ); + } + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "round_end" ); + level thread maps/mp/zombies/_zm_audio::zmbvoxcrowdonteam( "clap" ); + level thread play_sound_2d( "zmb_air_horn" ); + wait 5; +} + +module_hud_round_end( round_winner ) +{ + self endon( "disconnect" ); + self._team_winner_round = newclienthudelem( self ); + self._team_winner_round.x = 0; + self._team_winner_round.y = 50; + self._team_winner_round.alignx = "center"; + self._team_winner_round.horzalign = "center"; + self._team_winner_round.vertalign = "middle"; + self._team_winner_round.font = "default"; + self._team_winner_round.fontscale = 15; + self._team_winner_round.color = ( 1, 1, 1 ); + self._team_winner_round.foreground = 1; + if ( self._encounters_team == round_winner ) + { + self._team_winner_round.color = ( 1, 1, 1 ); + self._team_winner_round settext( "YOU WIN" ); + } + else + { + self._team_winner_round.color = ( 1, 1, 1 ); + self._team_winner_round settext( "YOU LOSE" ); + } + self._team_winner_round.alpha = 0; + self._team_winner_round.sort = 12; + self._team_winner_round fadeovertime( 1 ); + self._team_winner_round.alpha = 1; + wait 4; + self._team_winner_round fadeovertime( 1 ); + self._team_winner_round.alpha = 0; + wait 1,1; + self._team_winner_round destroy(); +} + +displayroundswitch() +{ + level._round_changing_sides = newhudelem(); + level._round_changing_sides.x = 0; + level._round_changing_sides.y = 60; + level._round_changing_sides.alignx = "center"; + level._round_changing_sides.horzalign = "center"; + level._round_changing_sides.vertalign = "middle"; + level._round_changing_sides.font = "default"; + level._round_changing_sides.fontscale = 2,3; + level._round_changing_sides.color = ( 1, 1, 1 ); + level._round_changing_sides.foreground = 1; + level._round_changing_sides.sort = 12; + fadetoblack = newhudelem(); + fadetoblack.x = 0; + fadetoblack.y = 0; + fadetoblack.horzalign = "fullscreen"; + fadetoblack.vertalign = "fullscreen"; + fadetoblack setshader( "black", 640, 480 ); + fadetoblack.color = ( 1, 1, 1 ); + fadetoblack.alpha = 1; + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "side_switch" ); + level._round_changing_sides settext( "CHANGING SIDES" ); + level._round_changing_sides fadeovertime( 1 ); + level._round_changing_sides.alpha = 1; + wait 2; + fadetoblack fadeovertime( 1 ); + level._round_changing_sides fadeovertime( 1 ); + level._round_changing_sides.alpha = 0; + fadetoblack.alpha = 0; + wait 1,1; + level._round_changing_sides destroy(); + fadetoblack destroy(); +} + +module_hud_create_team_name() +{ + if ( !is_encounter() ) + { + return; + } + if ( !isDefined( self._team_hud ) ) + { + self._team_hud = []; + } + if ( isDefined( self._team_hud[ "team" ] ) ) + { + self._team_hud[ "team" ] destroy(); + } + elem = newclienthudelem( self ); + elem.hidewheninmenu = 1; + elem.alignx = "center"; + elem.aligny = "middle"; + elem.horzalign = "center"; + elem.vertalign = "middle"; + elem.x = 0; + elem.y = 0; + if ( isDefined( level.game_module_team_name_override_og_x ) ) + { + elem.og_x = level.game_module_team_name_override_og_x; + } + else + { + elem.og_x = 85; + } + elem.og_y = -40; + elem.foreground = 1; + elem.font = "default"; + elem.color = ( 1, 1, 1 ); + elem.sort = 1; + elem.alpha = 0,7; + elem setshader( game[ "icons" ][ self.team ], 150, 150 ); + self._team_hud[ "team" ] = elem; +} + +startnextzmround( winner ) +{ + if ( !isonezmround() ) + { + if ( !waslastzmround() ) + { + displayroundend( winner ); + create_hud_scoreboard(); + if ( checkzmroundswitch() ) + { + displayroundswitch(); + } + setmatchtalkflag( "DeadChatWithDead", level.voip.deadchatwithdead ); + setmatchtalkflag( "DeadChatWithTeam", level.voip.deadchatwithteam ); + setmatchtalkflag( "DeadHearTeamLiving", level.voip.deadhearteamliving ); + setmatchtalkflag( "DeadHearAllLiving", level.voip.deadhearallliving ); + setmatchtalkflag( "EveryoneHearsEveryone", level.voip.everyonehearseveryone ); + setmatchtalkflag( "DeadHearKiller", level.voip.deadhearkiller ); + setmatchtalkflag( "KillersHearVictim", level.voip.killershearvictim ); + game[ "state" ] = "playing"; + level.allowbattlechatter = getgametypesetting( "allowBattleChatter" ); + if ( isDefined( level.zm_switchsides_on_roundswitch ) && level.zm_switchsides_on_roundswitch ) + { + set_game_var( "switchedsides", !get_game_var( "switchedsides" ) ); + } + map_restart( 1 ); + return 1; + } + } + return 0; +} + +start_round() +{ + flag_clear( "start_encounters_match_logic" ); + if ( !isDefined( level._module_round_hud ) ) + { + level._module_round_hud = newhudelem(); + level._module_round_hud.x = 0; + level._module_round_hud.y = 70; + level._module_round_hud.alignx = "center"; + level._module_round_hud.horzalign = "center"; + level._module_round_hud.vertalign = "middle"; + level._module_round_hud.font = "default"; + level._module_round_hud.fontscale = 2,3; + level._module_round_hud.color = ( 1, 1, 1 ); + level._module_round_hud.foreground = 1; + level._module_round_hud.sort = 0; + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] freeze_player_controls( 1 ); + i++; + } + level._module_round_hud.alpha = 1; + label = &"Next Round Starting In ^2"; + level._module_round_hud.label = label; + level._module_round_hud settimer( 3 ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "countdown" ); + level thread maps/mp/zombies/_zm_audio::zmbvoxcrowdonteam( "clap" ); + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "round_start" ); + level notify( "start_fullscreen_fade_out" ); + wait 2; + level._module_round_hud fadeovertime( 1 ); + level._module_round_hud.alpha = 0; + wait 1; + level thread play_sound_2d( "zmb_air_horn" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] freeze_player_controls( 0 ); + players[ i ] sprintuprequired(); + i++; + } + flag_set( "start_encounters_match_logic" ); + flag_clear( "pregame" ); + level._module_round_hud destroy(); +} + +isonezmround() +{ + if ( get_game_var( "ZM_roundLimit" ) == 1 ) + { + return 1; + } + return 0; +} + +waslastzmround() +{ + if ( isDefined( level.forcedend ) && level.forcedend ) + { + return 1; + } + if ( !hitzmroundlimit() || hitzmscorelimit() && hitzmroundwinlimit() ) + { + return 1; + } + return 0; +} + +hitzmroundlimit() +{ + if ( get_game_var( "ZM_roundLimit" ) <= 0 ) + { + return 0; + } + return getzmroundsplayed() >= get_game_var( "ZM_roundLimit" ); +} + +hitzmroundwinlimit() +{ + if ( !isDefined( get_game_var( "ZM_roundWinLimit" ) ) || get_game_var( "ZM_roundWinLimit" ) <= 0 ) + { + return 0; + } + if ( get_gamemode_var( "team_1_score" ) >= get_game_var( "ZM_roundWinLimit" ) || get_gamemode_var( "team_2_score" ) >= get_game_var( "ZM_roundWinLimit" ) ) + { + return 1; + } + if ( get_gamemode_var( "team_1_score" ) >= get_game_var( "ZM_roundWinLimit" ) || get_gamemode_var( "team_2_score" ) >= get_game_var( "ZM_roundWinLimit" ) ) + { + if ( get_gamemode_var( "team_1_score" ) != get_gamemode_var( "team_2_score" ) ) + { + return 1; + } + } + return 0; +} + +hitzmscorelimit() +{ + if ( get_game_var( "ZM_scoreLimit" ) <= 0 ) + { + return 0; + } + if ( is_encounter() ) + { + if ( get_gamemode_var( "team_1_score" ) >= get_game_var( "ZM_scoreLimit" ) || get_gamemode_var( "team_2_score" ) >= get_game_var( "ZM_scoreLimit" ) ) + { + return 1; + } + } + return 0; +} + +getzmroundsplayed() +{ + return get_gamemode_var( "current_round" ); +} + +onspawnplayerunified() +{ + onspawnplayer( 0 ); +} + +onspawnplayer( predictedspawn ) +{ + if ( !isDefined( predictedspawn ) ) + { + predictedspawn = 0; + } + pixbeginevent( "ZSURVIVAL:onSpawnPlayer" ); + self.usingobj = undefined; + self.is_zombie = 0; + if ( isDefined( level.custom_spawnplayer ) && isDefined( self.player_initialized ) && self.player_initialized ) + { + self [[ level.custom_spawnplayer ]](); + return; + } + if ( isDefined( level.customspawnlogic ) ) + { +/# + println( "ZM >> USE CUSTOM SPAWNING" ); +#/ + self [[ level.customspawnlogic ]]( predictedspawn ); + if ( predictedspawn ) + { + return; + } + } + else /# + println( "ZM >> USE STANDARD SPAWNING" ); +#/ + if ( flag( "begin_spawning" ) ) + { + spawnpoint = maps/mp/zombies/_zm::check_for_valid_spawn_near_team( self, 1 ); +/# + if ( !isDefined( spawnpoint ) ) + { + println( "ZM >> WARNING UNABLE TO FIND RESPAWN POINT NEAR TEAM - USING INITIAL SPAWN POINTS" ); +#/ + } + } + if ( !isDefined( spawnpoint ) ) + { + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = ( level.scr_zm_ui_gametype + "_" ) + location; + spawnpoints = []; + structs = getstructarray( "initial_spawn", "script_noteworthy" ); + while ( isDefined( structs ) ) + { + _a1722 = structs; + _k1722 = getFirstArrayKey( _a1722 ); + while ( isDefined( _k1722 ) ) + { + struct = _a1722[ _k1722 ]; + while ( isDefined( struct.script_string ) ) + { + tokens = strtok( struct.script_string, " " ); + _a1728 = tokens; + _k1728 = getFirstArrayKey( _a1728 ); + while ( isDefined( _k1728 ) ) + { + token = _a1728[ _k1728 ]; + if ( token == match_string ) + { + spawnpoints[ spawnpoints.size ] = struct; + } + _k1728 = getNextArrayKey( _a1728, _k1728 ); + } + } + _k1722 = getNextArrayKey( _a1722, _k1722 ); + } + } + if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 ) + { + spawnpoints = getstructarray( "initial_spawn_points", "targetname" ); + } +/# + assert( isDefined( spawnpoints ), "Could not find initial spawn points!" ); +#/ + spawnpoint = maps/mp/zombies/_zm::getfreespawnpoint( spawnpoints, self ); + } + if ( predictedspawn ) + { + self predictspawnpoint( spawnpoint.origin, spawnpoint.angles ); + return; + } + else + { + self spawn( spawnpoint.origin, spawnpoint.angles, "zsurvival" ); + } + self.entity_num = self getentitynumber(); + self thread maps/mp/zombies/_zm::onplayerspawned(); + self thread maps/mp/zombies/_zm::player_revive_monitor(); + self freezecontrols( 1 ); + self.spectator_respawn = spawnpoint; + self.score = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "score" ); + self.pers[ "participation" ] = 0; +/# + if ( getDvarInt( "zombie_cheat" ) >= 1 ) + { + self.score = 100000; +#/ + } + self.score_total = self.score; + self.old_score = self.score; + self.player_initialized = 0; + self.zombification_time = 0; + self.enabletext = 1; + self thread maps/mp/zombies/_zm_blockers::rebuild_barrier_reward_reset(); + if ( isDefined( level.host_ended_game ) && !level.host_ended_game ) + { + self freeze_player_controls( 0 ); + self enableweapons(); + } + if ( isDefined( level.game_mode_spawn_player_logic ) ) + { + spawn_in_spectate = [[ level.game_mode_spawn_player_logic ]](); + if ( spawn_in_spectate ) + { + self delay_thread( 0,05, ::maps/mp/zombies/_zm::spawnspectator ); + } + } + pixendevent(); +} + +get_player_spawns_for_gametype() +{ + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = ( level.scr_zm_ui_gametype + "_" ) + location; + player_spawns = []; + structs = getstructarray( "player_respawn_point", "targetname" ); + _a1834 = structs; + _k1834 = getFirstArrayKey( _a1834 ); + while ( isDefined( _k1834 ) ) + { + struct = _a1834[ _k1834 ]; + if ( isDefined( struct.script_string ) ) + { + tokens = strtok( struct.script_string, " " ); + _a1839 = tokens; + _k1839 = getFirstArrayKey( _a1839 ); + while ( isDefined( _k1839 ) ) + { + token = _a1839[ _k1839 ]; + if ( token == match_string ) + { + player_spawns[ player_spawns.size ] = struct; + } + _k1839 = getNextArrayKey( _a1839, _k1839 ); + } + } + else player_spawns[ player_spawns.size ] = struct; + _k1834 = getNextArrayKey( _a1834, _k1834 ); + } + return player_spawns; +} + +onendgame( winningteam ) +{ +} + +onroundendgame( roundwinner ) +{ + if ( game[ "roundswon" ][ "allies" ] == game[ "roundswon" ][ "axis" ] ) + { + winner = "tie"; + } + else if ( game[ "roundswon" ][ "axis" ] > game[ "roundswon" ][ "allies" ] ) + { + winner = "axis"; + } + else + { + winner = "allies"; + } + return winner; +} + +menu_init() +{ + game[ "menu_team" ] = "team_marinesopfor"; + game[ "menu_changeclass_allies" ] = "changeclass"; + game[ "menu_initteam_allies" ] = "initteam_marines"; + game[ "menu_changeclass_axis" ] = "changeclass"; + game[ "menu_initteam_axis" ] = "initteam_opfor"; + game[ "menu_class" ] = "class"; + game[ "menu_changeclass" ] = "changeclass"; + game[ "menu_changeclass_offline" ] = "changeclass"; + game[ "menu_wager_side_bet" ] = "sidebet"; + game[ "menu_wager_side_bet_player" ] = "sidebet_player"; + game[ "menu_changeclass_wager" ] = "changeclass_wager"; + game[ "menu_changeclass_custom" ] = "changeclass_custom"; + game[ "menu_changeclass_barebones" ] = "changeclass_barebones"; + game[ "menu_controls" ] = "ingame_controls"; + game[ "menu_options" ] = "ingame_options"; + game[ "menu_leavegame" ] = "popup_leavegame"; + game[ "menu_restartgamepopup" ] = "restartgamepopup"; + precachemenu( game[ "menu_controls" ] ); + precachemenu( game[ "menu_options" ] ); + precachemenu( game[ "menu_leavegame" ] ); + precachemenu( game[ "menu_restartgamepopup" ] ); + precachemenu( "scoreboard" ); + precachemenu( game[ "menu_team" ] ); + precachemenu( game[ "menu_changeclass_allies" ] ); + precachemenu( game[ "menu_initteam_allies" ] ); + precachemenu( game[ "menu_changeclass_axis" ] ); + precachemenu( game[ "menu_class" ] ); + precachemenu( game[ "menu_changeclass" ] ); + precachemenu( game[ "menu_initteam_axis" ] ); + precachemenu( game[ "menu_changeclass_offline" ] ); + precachemenu( game[ "menu_changeclass_wager" ] ); + precachemenu( game[ "menu_changeclass_custom" ] ); + precachemenu( game[ "menu_changeclass_barebones" ] ); + precachemenu( game[ "menu_wager_side_bet" ] ); + precachemenu( game[ "menu_wager_side_bet_player" ] ); + precachestring( &"MP_HOST_ENDED_GAME" ); + precachestring( &"MP_HOST_ENDGAME_RESPONSE" ); + level thread menu_onplayerconnect(); +} + +menu_onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread menu_onmenuresponse(); + } +} + +menu_onmenuresponse() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "menuresponse", menu, response ); + if ( response == "back" ) + { + self closemenu(); + self closeingamemenu(); + if ( level.console ) + { + if ( game[ "menu_changeclass" ] != menu && game[ "menu_changeclass_offline" ] != menu || menu == game[ "menu_team" ] && menu == game[ "menu_controls" ] ) + { + if ( self.pers[ "team" ] == "allies" ) + { + self openmenu( game[ "menu_class" ] ); + } + if ( self.pers[ "team" ] == "axis" ) + { + self openmenu( game[ "menu_class" ] ); + } + } + } + continue; + } + else if ( response == "changeteam" && level.allow_teamchange == "1" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_team" ] ); + } + if ( response == "changeclass_marines" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_changeclass_allies" ] ); + continue; + } + else if ( response == "changeclass_opfor" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_changeclass_axis" ] ); + continue; + } + else if ( response == "changeclass_wager" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_changeclass_wager" ] ); + continue; + } + else if ( response == "changeclass_custom" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_changeclass_custom" ] ); + continue; + } + else if ( response == "changeclass_barebones" ) + { + self closemenu(); + self closeingamemenu(); + self openmenu( game[ "menu_changeclass_barebones" ] ); + continue; + } + else if ( response == "changeclass_marines_splitscreen" ) + { + self openmenu( "changeclass_marines_splitscreen" ); + } + if ( response == "changeclass_opfor_splitscreen" ) + { + self openmenu( "changeclass_opfor_splitscreen" ); + } + if ( response == "endgame" ) + { + if ( self issplitscreen() ) + { + level.skipvote = 1; + if ( isDefined( level.gameended ) && !level.gameended ) + { + self maps/mp/zombies/_zm_laststand::add_weighted_down(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "deaths" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "deaths" ); + self maps/mp/zombies/_zm_pers_upgrades::pers_upgrade_jugg_player_death_stat(); + level.host_ended_game = 1; + maps/mp/zombies/_zm_game_module::freeze_players( 1 ); + level notify( "end_game" ); + } + } + continue; + } + else if ( response == "restart_level_zm" ) + { + self maps/mp/zombies/_zm_laststand::add_weighted_down(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "deaths" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "deaths" ); + self maps/mp/zombies/_zm_pers_upgrades::pers_upgrade_jugg_player_death_stat(); + missionfailed(); + } + if ( response == "killserverpc" ) + { + level thread maps/mp/gametypes_zm/_globallogic::killserverpc(); + continue; + } + else if ( response == "endround" ) + { + if ( isDefined( level.gameended ) && !level.gameended ) + { + self maps/mp/gametypes_zm/_globallogic::gamehistoryplayerquit(); + self maps/mp/zombies/_zm_laststand::add_weighted_down(); + self closemenu(); + self closeingamemenu(); + level.host_ended_game = 1; + maps/mp/zombies/_zm_game_module::freeze_players( 1 ); + level notify( "end_game" ); + } + else + { + self closemenu(); + self closeingamemenu(); + self iprintln( &"MP_HOST_ENDGAME_RESPONSE" ); + } + continue; + } + else if ( menu == game[ "menu_team" ] && level.allow_teamchange == "1" ) + { + switch( response ) + { + case "allies": + self [[ level.allies ]](); + break; + case "axis": + self [[ level.teammenu ]]( response ); + break; + case "autoassign": + self [[ level.autoassign ]]( 1 ); + break; + case "spectator": + self [[ level.spectator ]](); + break; + } + continue; + } + else + { + if ( game[ "menu_changeclass" ] != menu && game[ "menu_changeclass_offline" ] != menu && game[ "menu_changeclass_wager" ] != menu || menu == game[ "menu_changeclass_custom" ] && menu == game[ "menu_changeclass_barebones" ] ) + { + self closemenu(); + self closeingamemenu(); + if ( level.rankedmatch && issubstr( response, "custom" ) ) + { + } + self.selectedclass = 1; + self [[ level.class ]]( response ); + } + } + } +} + +menuallieszombies() +{ + self maps/mp/gametypes_zm/_globallogic_ui::closemenus(); + if ( !level.console && level.allow_teamchange == "0" && isDefined( self.hasdonecombat ) && self.hasdonecombat ) + { + return; + } + if ( self.pers[ "team" ] != "allies" ) + { + if ( level.ingraceperiod || !isDefined( self.hasdonecombat ) && !self.hasdonecombat ) + { + self.hasspawned = 0; + } + if ( self.sessionstate == "playing" ) + { + self.switching_teams = 1; + self.joining_team = "allies"; + self.leaving_team = self.pers[ "team" ]; + self suicide(); + } + self.pers[ "team" ] = "allies"; + self.team = "allies"; + self.class = undefined; + self updateobjectivetext(); + if ( level.teambased ) + { + self.sessionteam = "allies"; + } + else + { + self.sessionteam = "none"; + self.ffateam = "allies"; + } + self setclientscriptmainmenu( game[ "menu_class" ] ); + self notify( "joined_team" ); + level notify( "joined_team" ); + self notify( "end_respawn" ); + } +} + +custom_spawn_init_func() +{ + array_thread( level.zombie_spawners, ::add_spawn_function, ::maps/mp/zombies/_zm_spawner::zombie_spawn_init ); + array_thread( level.zombie_spawners, ::add_spawn_function, level._zombies_round_spawn_failsafe ); +} + +kill_all_zombies() +{ + ai = getaiarray( level.zombie_team ); + _a2190 = ai; + _k2190 = getFirstArrayKey( _a2190 ); + while ( isDefined( _k2190 ) ) + { + zombie = _a2190[ _k2190 ]; + if ( isDefined( zombie ) ) + { + zombie dodamage( zombie.maxhealth * 2, zombie.origin, zombie, zombie, "none", "MOD_SUICIDE" ); + wait 0,05; + } + _k2190 = getNextArrayKey( _a2190, _k2190 ); + } +} + +init() +{ + flag_init( "pregame" ); + flag_set( "pregame" ); + level thread onplayerconnect(); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connected", player ); + player thread onplayerspawned(); + if ( isDefined( level.game_module_onplayerconnect ) ) + { + player [[ level.game_module_onplayerconnect ]](); + } + } +} + +onplayerspawned() +{ + level endon( "end_game" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill_either( "spawned_player", "fake_spawned_player" ); + if ( isDefined( level.match_is_ending ) && level.match_is_ending ) + { + return; + } + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + self thread maps/mp/zombies/_zm_laststand::auto_revive( self ); + } + if ( isDefined( level.custom_player_fake_death_cleanup ) ) + { + self [[ level.custom_player_fake_death_cleanup ]](); + } + self setstance( "stand" ); + self.zmbdialogqueue = []; + self.zmbdialogactive = 0; + self.zmbdialoggroups = []; + self.zmbdialoggroup = ""; + if ( is_encounter() ) + { + if ( self.team == "axis" ) + { + self.characterindex = 0; + self._encounters_team = "A"; + self._team_name = &"ZOMBIE_RACE_TEAM_1"; + break; + } + else + { + self.characterindex = 1; + self._encounters_team = "B"; + self._team_name = &"ZOMBIE_RACE_TEAM_2"; + } + } + self takeallweapons(); + if ( isDefined( level.givecustomcharacters ) ) + { + self [[ level.givecustomcharacters ]](); + } + self giveweapon( "knife_zm" ); + if ( isDefined( level.onplayerspawned_restore_previous_weapons ) && isDefined( level.isresetting_grief ) && level.isresetting_grief ) + { + weapons_restored = self [[ level.onplayerspawned_restore_previous_weapons ]](); + } + if ( isDefined( weapons_restored ) && !weapons_restored ) + { + self give_start_weapon( 1 ); + } + weapons_restored = 0; + if ( isDefined( level._team_loadout ) ) + { + self giveweapon( level._team_loadout ); + self switchtoweapon( level._team_loadout ); + } + if ( isDefined( level.gamemode_post_spawn_logic ) ) + { + self [[ level.gamemode_post_spawn_logic ]](); + } + } +} + +wait_for_players() +{ + level endon( "end_race" ); + if ( getDvarInt( "party_playerCount" ) == 1 ) + { + flag_wait( "start_zombie_round_logic" ); + return; + } + while ( !flag_exists( "start_zombie_round_logic" ) ) + { + wait 0,05; + } + while ( !flag( "start_zombie_round_logic" ) && isDefined( level._module_connect_hud ) ) + { + level._module_connect_hud.alpha = 0; + level._module_connect_hud.sort = 12; + level._module_connect_hud fadeovertime( 1 ); + level._module_connect_hud.alpha = 1; + wait 1,5; + level._module_connect_hud fadeovertime( 1 ); + level._module_connect_hud.alpha = 0; + wait 1,5; + } + if ( isDefined( level._module_connect_hud ) ) + { + level._module_connect_hud destroy(); + } +} + +onplayerconnect_check_for_hotjoin() +{ +/# + if ( getDvarInt( #"EA6D219A" ) > 0 ) + { + return; +#/ + } + map_logic_exists = level flag_exists( "start_zombie_round_logic" ); + map_logic_started = flag( "start_zombie_round_logic" ); + if ( map_logic_exists && map_logic_started ) + { + self thread hide_gump_loading_for_hotjoiners(); + } +} + +hide_gump_loading_for_hotjoiners() +{ + self endon( "disconnect" ); + self.rebuild_barrier_reward = 1; + self.is_hotjoining = 1; + num = self getsnapshotackindex(); + while ( num == self getsnapshotackindex() ) + { + wait 0,25; + } + wait 0,5; + self maps/mp/zombies/_zm::spawnspectator(); + self.is_hotjoining = 0; + self.is_hotjoin = 1; + if ( is_true( level.intermission ) || is_true( level.host_ended_game ) ) + { + setclientsysstate( "levelNotify", "zi", self ); + self setclientthirdperson( 0 ); + self resetfov(); + self.health = 100; + self thread [[ level.custom_intermission ]](); + } +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/zclassic.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/zclassic.gsc new file mode 100644 index 0000000..73fcf52 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/zclassic.gsc @@ -0,0 +1,28 @@ +#include maps/mp/zombies/_zm_stats; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +main() +{ + maps/mp/gametypes_zm/_zm_gametype::main(); + level.onprecachegametype = ::onprecachegametype; + level.onstartgametype = ::onstartgametype; + level._game_module_custom_spawn_init_func = ::maps/mp/gametypes_zm/_zm_gametype::custom_spawn_init_func; + level._game_module_stat_update_func = ::maps/mp/zombies/_zm_stats::survival_classic_custom_stat_update; + maps/mp/gametypes_zm/_zm_gametype::post_gametype_main( "zclassic" ); +} + +onprecachegametype() +{ + level.playersuicideallowed = 1; + level.canplayersuicide = ::canplayersuicide; + level.suicide_weapon = "death_self_zm"; + precacheitem( "death_self_zm" ); + maps/mp/gametypes_zm/_zm_gametype::rungametypeprecache( "zclassic" ); +} + +onstartgametype() +{ + maps/mp/gametypes_zm/_zm_gametype::rungametypemain( "zclassic", ::maps/mp/gametypes_zm/_zm_gametype::zclassic_main ); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/zcleansed.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/zcleansed.gsc new file mode 100644 index 0000000..f9a2193 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/zcleansed.gsc @@ -0,0 +1,2145 @@ +#include maps/mp/_visionset_mgr; +#include maps/mp/zombies/_zm_weap_cymbal_monkey; +#include maps/mp/zombies/_zm_magicbox; +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/zombies/_zm_audio_announcer; +#include maps/mp/zombies/_zm; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/gametypes_zm/_hud; +#include maps/mp/_utility; + +main() +{ + level.using_zombie_powerups = 1; + level._game_mode_powerup_zombie_grab = ::zcleansed_zombie_powerup_grab; + level._zombiemode_powerup_grab = ::zcleansed_powerup_grab; + level._powerup_timeout_custom_time = ::zcleansed_powerup_custom_time_logic; + level._powerup_grab_check = ::powerup_can_player_grab; + setdvar( "aim_target_player_enabled", 1 ); + maps/mp/gametypes_zm/_zm_gametype::main(); + setscoreboardcolumns( "none", "score", "kills", "downs", "headshots" ); + level.cymbal_monkey_dual_view = 1; + level.onprecachegametype = ::onprecachegametype; + level.onstartgametype = ::onstartgametype; + level.custom_end_screen = ::custom_end_screen; + level._game_module_custom_spawn_init_func = ::maps/mp/gametypes_zm/_zm_gametype::custom_spawn_init_func; + level._game_module_state_update_func = ::maps/mp/zombies/_zm_stats::survival_classic_custom_stat_update; + level._effect[ "human_disappears" ] = loadfx( "maps/zombie/fx_zmb_returned_spawn_puff" ); + level._effect[ "zombie_disappears" ] = loadfx( "maps/zombie/fx_zmb_returned_spawn_puff" ); + level.human_finish_bonus_points = 250; + level.human_bonus_points = 10; + level.zombie_penalty_points = 5; + level.human_bonus_period = 1; + level.zombie_penalty_period = 10; + level.zombie_player_kill_points = 50; + level.human_player_kill_points = 50; + level.human_player_suicide_penalty = 0; + level.score_rank_bonus = array( 1,5, 0,75, 0,5, 0,25 ); + if ( isDefined( level.should_use_cia ) && level.should_use_cia ) + { + level.characterindex = 0; + } + else + { + level.characterindex = 1; + } + level.graceperiodfunc = ::waitforhumanselection; + level.customalivecheck = ::cleansed_alive_check; + level thread onplayerconnect(); + maps/mp/gametypes_zm/_zm_gametype::post_gametype_main( "zcleansed" ); + init_cleansed_powerup_fx(); +} + +onprecachegametype() +{ + level.playersuicideallowed = 1; + level.canplayersuicide = ::canplayersuicide; + level.suicide_weapon = "death_self_zm"; + precacheitem( "death_self_zm" ); + precachemodel( "zombie_pickup_perk_bottle" ); + precache_trophy(); + precacheshader( "faction_cdc" ); + precacheshader( "faction_cia" ); + init_default_zcleansed_powerups(); + maps/mp/zombies/_zm_turned::init(); + level thread maps/mp/gametypes_zm/_zm_gametype::init(); + maps/mp/gametypes_zm/_zm_gametype::rungametypeprecache( "zcleansed" ); + init_cleansed_powerups(); +} + +init_default_zcleansed_powerups() +{ + maps/mp/zombies/_zm_powerups::include_zombie_powerup( "the_cure" ); + maps/mp/zombies/_zm_powerups::include_zombie_powerup( "blue_monkey" ); + maps/mp/zombies/_zm_powerups::add_zombie_powerup( "the_cure", "zombie_pickup_perk_bottle", &"ZOMBIE_POWERUP_MAX_AMMO", ::maps/mp/zombies/_zm_powerups::func_should_never_drop, 0, 0, 1 ); + maps/mp/zombies/_zm_powerups::add_zombie_powerup( "blue_monkey", "weapon_zombie_monkey_bomb", &"ZOMBIE_POWERUP_MAX_AMMO", ::maps/mp/zombies/_zm_powerups::func_should_never_drop, 1, 0, 0 ); +} + +init_cleansed_powerup_fx() +{ + level._effect[ "powerup_on_caution" ] = loadfx( "misc/fx_zombie_powerup_on_blue" ); +} + +onstartgametype() +{ + maps/mp/gametypes_zm/_zm_gametype::setup_classic_gametype(); + level thread makefindfleshstructs(); + flag_init( "start_supersprint" ); + level.custom_player_fake_death = ::empty; + level.custom_player_fake_death_cleanup = ::empty; + level.overrideplayerdamage = ::cleanseddamagechecks; + level.playerlaststand_func = ::cleansed_player_laststand; + level.onendgame = ::cleansedonendgame; + level.ontimelimit = ::cleansedontimelimit; + level.powerup_player_valid = ::cleansed_alive_check; + level.nml_zombie_spawners = level.zombie_spawners; + level.dodge_score_highlight = 1; + level.dodge_show_revive_icon = 1; + level.custom_max_zombies = 6; + level.custom_zombie_health = 200; + level.nml_dogs_enabled = 0; + level.timercountdown = 1; + level.initial_spawn = 1; + level.nml_reaction_interval = 2000; + level.nml_min_reaction_dist_sq = 1024; + level.nml_max_reaction_dist_sq = 5760000; + level.min_humans = 1; + level.no_end_game_check = 1; + level.zombie_health = level.zombie_vars[ "zombie_health_start" ]; + level._get_game_module_players = undefined; + level.powerup_drop_count = 0; + level.is_zombie_level = 1; + level.player_becomes_zombie = ::onzombifyplayer; + level.player_kills_player = ::player_kills_player; + set_zombie_var( "zombify_player", 1 ); + set_zombie_var( "penalty_died", 1 ); + set_zombie_var( "penalty_downed", 1 ); + while ( isDefined( level._zcleansed_weapon_progression ) ) + { + i = 0; + while ( i < level._zcleansed_weapon_progression.size ) + { + addguntoprogression( level._zcleansed_weapon_progression[ i ] ); + i++; + } + } + maps/mp/gametypes_zm/_zm_gametype::rungametypemain( "zcleansed", ::zcleansed_logic ); +} + +turnedlog( text ) +{ +/# + println( "TURNEDLOG: " + text + "\n" ); +#/ +} + +cleansed_player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ +/# +#/ + self maps/mp/zombies/_zm_score::player_downed_penalty(); + if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self ) + { + if ( isDefined( self.hide_owner ) && self.hide_owner ) + { + attacker notify( "invisible_player_killed" ); + } + } + if ( isDefined( self.is_zombie ) && self.is_zombie && deathanimduration == 0 ) + { + self stopsounds(); + } +} + +cleansed_alive_check( player ) +{ + if ( !player maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( player.nuked ) && !player.nuked && isDefined( player.is_in_process_of_zombify ) || player.is_in_process_of_zombify && isDefined( player.is_in_process_of_humanify ) && player.is_in_process_of_humanify ) + { + return 0; + } + return 1; +} + +cleanseddamagechecks( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( self.is_in_process_of_zombify ) || self.is_in_process_of_zombify && isDefined( self.is_in_process_of_humanify ) && self.is_in_process_of_humanify ) + { + return 0; + } + if ( isDefined( self.nuked ) && self.nuked && eattacker != self.nuker && eattacker != self ) + { + return 0; + } + if ( isDefined( eattacker ) && isplayer( eattacker ) && eattacker != self ) + { + if ( eattacker.team == self.team ) + { + return 0; + } + if ( isDefined( eattacker.is_zombie ) ) + { + if ( isDefined( self.is_zombie ) ) + { + if ( eattacker.is_zombie == self.is_zombie ) + { + return 0; + } + } + } + if ( !cleansed_alive_check( eattacker ) ) + { + return 0; + } + if ( isDefined( self.nuked ) && self.nuked && isDefined( self.nuker ) && eattacker != self.nuker ) + { + return 0; + } + if ( isDefined( self.is_zombie ) && self.is_zombie && sweapon == "cymbal_monkey_zm" && smeansofdeath != "MOD_IMPACT" ) + { + level notify( "killed_by_decoy" ); + return self.health + 666; + } +/# +#/ + self.last_player_attacker = eattacker; + eattacker thread maps/mp/gametypes_zm/_weapons::checkhit( sweapon ); + if ( !eattacker.is_zombie && eattacker maps/mp/zombies/_zm_powerups::is_insta_kill_active() ) + { + return self.health + 666; + } + } + self playsoundtoplayer( "evt_player_swiped", self ); + return self maps/mp/zombies/_zm::player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); +} + +custom_end_screen() +{ + players = get_players(); + winner = players[ 0 ]; + _a266 = players; + _k266 = getFirstArrayKey( _a266 ); + while ( isDefined( _k266 ) ) + { + player = _a266[ _k266 ]; + if ( isDefined( winner ) && player.score > winner.score ) + { + winner = player; + } + _k266 = getNextArrayKey( _a266, _k266 ); + } + if ( isDefined( level.last_human_standing ) ) + { + i = 0; + while ( i < players.size ) + { + players[ i ].bonus_msg_hud = newclienthudelem( players[ i ] ); + players[ i ].bonus_msg_hud.alignx = "center"; + players[ i ].bonus_msg_hud.aligny = "middle"; + players[ i ].bonus_msg_hud.horzalign = "center"; + players[ i ].bonus_msg_hud.vertalign = "middle"; + players[ i ].bonus_msg_hud.y -= 130; + if ( players[ i ] issplitscreen() ) + { + players[ i ].bonus_msg_hud.y += 70; + } + players[ i ].bonus_msg_hud.foreground = 1; + players[ i ].bonus_msg_hud.fontscale = 5; + players[ i ].bonus_msg_hud.alpha = 0; + players[ i ].bonus_msg_hud.color = ( 0, 0, 0 ); + players[ i ].bonus_msg_hud.hidewheninmenu = 1; + players[ i ].bonus_msg_hud.font = "default"; + players[ i ].bonus_msg_hud settext( &"ZOMBIE_CLEANSED_SURVIVING_HUMAN_BONUS", level.last_human_standing.name ); + players[ i ].bonus_msg_hud changefontscaleovertime( 0,25 ); + players[ i ].bonus_msg_hud fadeovertime( 0,25 ); + players[ i ].bonus_msg_hud.alpha = 1; + players[ i ].bonus_msg_hud.fontscale = 2; + i++; + } + wait 3,25; + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].bonus_msg_hud ) ) + { + players[ i ].bonus_msg_hud changefontscaleovertime( 0,5 ); + players[ i ].bonus_msg_hud fadeovertime( 0,5 ); + players[ i ].bonus_msg_hud.alpha = 0; + players[ i ].bonus_msg_hud.fontscale = 5; + } + i++; + } + wait 0,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].bonus_msg_hud ) ) + { + players[ i ].bonus_msg_hud destroy(); + } + players[ i ].game_over_hud = newclienthudelem( players[ i ] ); + players[ i ].game_over_hud.alignx = "center"; + players[ i ].game_over_hud.aligny = "middle"; + players[ i ].game_over_hud.horzalign = "center"; + players[ i ].game_over_hud.vertalign = "middle"; + players[ i ].game_over_hud.y -= 130; + players[ i ].game_over_hud.foreground = 1; + players[ i ].game_over_hud.fontscale = 3; + players[ i ].game_over_hud.alpha = 0; + players[ i ].game_over_hud.color = ( 0, 0, 0 ); + players[ i ].game_over_hud.hidewheninmenu = 1; + players[ i ].game_over_hud settext( &"ZOMBIE_GAME_OVER" ); + players[ i ].game_over_hud fadeovertime( 1 ); + players[ i ].game_over_hud.alpha = 1; + if ( players[ i ] issplitscreen() ) + { + players[ i ].game_over_hud.fontscale = 2; + players[ i ].game_over_hud.y += 40; + } + players[ i ].survived_hud = newclienthudelem( players[ i ] ); + players[ i ].survived_hud.alignx = "center"; + players[ i ].survived_hud.aligny = "middle"; + players[ i ].survived_hud.horzalign = "center"; + players[ i ].survived_hud.vertalign = "middle"; + players[ i ].survived_hud.y -= 100; + players[ i ].survived_hud.foreground = 1; + players[ i ].survived_hud.fontscale = 2; + players[ i ].survived_hud.alpha = 0; + players[ i ].survived_hud.color = ( 0, 0, 0 ); + players[ i ].survived_hud.hidewheninmenu = 1; + if ( players[ i ] issplitscreen() ) + { + players[ i ].survived_hud.fontscale = 1,5; + players[ i ].survived_hud.y += 40; + } + winner_text = &"ZOMBIE_CLEANSED_WIN"; + loser_text = &"ZOMBIE_CLEANSED_LOSE"; + if ( isDefined( level.host_ended_game ) && level.host_ended_game ) + { + players[ i ].survived_hud settext( &"MP_HOST_ENDED_GAME" ); + } + else + { + if ( players[ i ] == winner ) + { + players[ i ].survived_hud settext( winner_text ); + break; + } + else + { + players[ i ].survived_hud settext( loser_text ); + } + } + players[ i ].survived_hud fadeovertime( 1 ); + players[ i ].survived_hud.alpha = 1; + i++; + } +} + +allow_player_movement( allowed ) +{ + level.player_movement_suppressed = !allowed; + _a389 = get_players(); + _k389 = getFirstArrayKey( _a389 ); + while ( isDefined( _k389 ) ) + { + player = _a389[ _k389 ]; + if ( isDefined( player.in_zombify_call ) && !player.in_zombify_call ) + { + player freezecontrols( level.player_movement_suppressed ); + } + _k389 = getNextArrayKey( _a389, _k389 ); + } +} + +watch_game_start() +{ + level.start_audio_allowed = 1; + level waittill( "cleansed_game_started" ); + level.start_audio_allowed = 0; +} + +listen_to_the_doctor_pregame() +{ + thread watch_game_start(); + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_start_single_0", undefined, undefined, 1, 4 ); + wait 4; + if ( level.start_audio_allowed ) + { + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_start_2", undefined, undefined, 1, 8 ); + wait 8; + } + if ( level.start_audio_allowed ) + { + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_start_3", undefined, undefined, 1, 8 ); + wait 4; + } + if ( level.start_audio_allowed ) + { + level waittill( "cleansed_game_started" ); + } +} + +listen_to_the_doctor_started() +{ + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_cure_found_line", undefined, undefined, 1, 8 ); + wait 8; +} + +listen_to_the_doctor_monkeys() +{ + level endon( "end_game" ); + while ( 1 ) + { + level waittill( "killed_by_decoy", killer, killee ); + while ( !isplayer( killee ) ) + { + continue; + } + if ( isDefined( level.playing_turned_kill_vo ) && level.playing_turned_kill_vo ) + { + continue; + } + if ( isDefined( killer.heard_dr_monkey_killer ) && !killer.heard_dr_monkey_killer ) + { + level.playing_turned_kill_vo = 1; + killer.heard_dr_monkey_killer = 1; + killer thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "dr_monkey_killer", undefined, undefined, 0 ); + } + if ( isDefined( killee.heard_dr_monkey_killee ) && !killee.heard_dr_monkey_killee ) + { + level.playing_turned_kill_vo = 1; + killee.heard_dr_monkey_killee = 1; + wait 0,25; + killee thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "dr_monkey_killee", undefined, undefined, 0 ); + } + if ( isDefined( level.playing_turned_kill_vo ) && level.playing_turned_kill_vo ) + { + wait 8; + level.playing_turned_kill_vo = 0; + } + } +} + +listen_to_the_doctor_human_deaths() +{ + level endon( "end_game" ); + while ( 1 ) + { + level waittill( "killed_by_zombie", killer, killee ); + wait 0,05; + if ( isDefined( level.playing_turned_kill_vo ) && level.playing_turned_kill_vo ) + { + continue; + } + if ( !isDefined( killee.vo_human_killed_chance ) ) + { + killee.vo_human_killed_chance = 24; + } + if ( randomint( 100 ) < killee.vo_human_killed_chance ) + { + level.playing_turned_kill_vo = 1; + killee thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "dr_human_killed", undefined, undefined, 0 ); + killee.vo_human_killed_chance = int( killee.vo_human_killed_chance * 0,5 ); + } + if ( isDefined( level.playing_turned_kill_vo ) && level.playing_turned_kill_vo ) + { + wait 4; + level.playing_turned_kill_vo = 0; + } + } +} + +listen_to_the_doctor_zombie_deaths() +{ + level endon( "end_game" ); + while ( 1 ) + { + level waittill( "killed_by_human", killer, killee ); + wait 0,05; + if ( isDefined( level.playing_turned_kill_vo ) && level.playing_turned_kill_vo ) + { + continue; + } + if ( !isDefined( killer.vo_human_killer_chance ) ) + { + killer.vo_human_killer_chance = 24; + } + if ( randomint( 100 ) < killer.vo_human_killer_chance ) + { + killer.vo_human_killer_chance = int( killer.vo_human_killer_chance * 0,5 ); + level.playing_turned_kill_vo = 1; + killer thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "dr_human_killer", undefined, undefined, 0 ); + } + if ( isDefined( level.playing_turned_kill_vo ) && level.playing_turned_kill_vo ) + { + wait 4; + level.playing_turned_kill_vo = 0; + } + } +} + +listen_to_the_doctor_endgame() +{ + wait 5; + while ( maps/mp/gametypes_zm/_globallogic_utils::gettimeremaining() > 12000 ) + { + wait 1; + } + r = randomint( 3 ); + if ( r == 0 ) + { + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_countdown0", undefined, undefined, 1, 4 ); + } + else if ( r == 1 ) + { + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_countdown1", undefined, undefined, 1, 4 ); + } + else + { + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_countdown2", undefined, undefined, 1, 4 ); + } + while ( maps/mp/gametypes_zm/_globallogic_utils::gettimeremaining() > 500 ) + { + wait 1; + } + level maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_ending", undefined, undefined, 1, 4 ); +} + +anysplitscreen() +{ + _a542 = get_players(); + _k542 = getFirstArrayKey( _a542 ); + while ( isDefined( _k542 ) ) + { + player = _a542[ _k542 ]; + if ( player issplitscreen() ) + { + return 1; + } + _k542 = getNextArrayKey( _a542, _k542 ); + } + return 0; +} + +listen_to_the_doctor() +{ + listen_to_the_doctor_pregame(); + if ( !anysplitscreen() ) + { + listen_to_the_doctor_started(); + thread listen_to_the_doctor_human_deaths(); + thread listen_to_the_doctor_zombie_deaths(); + thread listen_to_the_doctor_monkeys(); + } + thread listen_to_the_doctor_endgame(); +} + +watch_survival_time() +{ + level endon( "end_game" ); + level notify( "new_human_suviving" ); + level endon( "new_human_suviving" ); + self endon( "zombify" ); + wait 10; + if ( !isDefined( self.vo_human_survival_chance ) ) + { + self.vo_human_survival_chance = 24; + } + while ( 1 ) + { + if ( isDefined( level.playing_turned_kill_vo ) && !level.playing_turned_kill_vo ) + { + if ( randomint( 100 ) < self.vo_human_survival_chance ) + { + self.vo_human_survival_chance = int( self.vo_human_survival_chance * 0,25 ); + level.playing_turned_kill_vo = 1; + self thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "dr_survival", undefined, undefined, 0 ); + wait 4; + level.playing_turned_kill_vo = 0; + } + } + wait 5; + } +} + +zcleansed_logic() +{ + setdvar( "player_lastStandBleedoutTime", "0.05" ); + setmatchtalkflag( "DeadChatWithDead", 1 ); + setmatchtalkflag( "DeadChatWithTeam", 1 ); + setmatchtalkflag( "DeadHearTeamLiving", 1 ); + setmatchtalkflag( "DeadHearAllLiving", 1 ); + setmatchtalkflag( "EveryoneHearsEveryone", 1 ); + level.zombie_include_powerups[ "carpenter" ] = 0; + level.noroundnumber = 1; + level._supress_survived_screen = 1; + doors = getentarray( "zombie_door", "targetname" ); + _a614 = doors; + _k614 = getFirstArrayKey( _a614 ); + while ( isDefined( _k614 ) ) + { + door = _a614[ _k614 ]; + door setinvisibletoall(); + _k614 = getNextArrayKey( _a614, _k614 ); + } + level thread maps/mp/zombies/_zm_blockers::open_all_zbarriers(); + level thread delay_box_hide(); + flag_wait( "initial_players_connected" ); + level.gamestarttime = getTime(); + level.gamelengthtime = undefined; + level.custom_spawnplayer = ::respawn_cleansed_player; + allow_player_movement( 0 ); + setup_players(); + flag_wait( "initial_blackscreen_passed" ); + level thread listen_to_the_doctor(); + level thread playturnedmusic(); + level notify( "start_fullscreen_fade_out" ); + wait 1,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] thread create_match_start_message( &"ZOMBIE_FIND_THE_CURE", 3 ); + i++; + } + allow_player_movement( 1 ); + spawn_initial_cure_powerup(); + waitforhumanselection(); + level notify( "cleansed_game_started" ); + level thread leaderwatch(); + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] thread create_match_start_message( &"ZOMBIE_MOST_TIME_AS_HUMAN_TO_WIN", 3 ); + i++; + } + wait 1,2; + flag_clear( "pregame" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] thread destroystartmsghud(); + i++; + } + registertimelimit( 0, 1440 ); + level.discardtime = getTime() - level.starttime; + level thread watch_for_end_game(); + wait_for_round_end(); + allow_player_movement( 0 ); + wait_network_frame(); + award_round_end_bonus(); + level notify( "end_game" ); +} + +wait_for_round_end() +{ + level endon( "early_game_end" ); + level endon( "normal_game_end" ); + while ( maps/mp/gametypes_zm/_globallogic_utils::gettimeremaining() > 0 ) + { + wait 1; + } +} + +end_game_early() +{ +/# + iprintlnbold( "SOLO GAME - RELEASE ONLY" ); + return; +#/ + level.forcedend = 1; + level notify( "early_game_end" ); + level notify( "end_game" ); +} + +watch_for_end_game() +{ + level waittill( "end_game" ); + registertimelimit( 0, 0 ); + setgameendtime( 0 ); +} + +cleansedontimelimit() +{ + level notify( "normal_game_end" ); +} + +cleansedonendgame( winningteam ) +{ +} + +create_match_start_message( text, duration ) +{ + level endon( "end_game" ); + self endon( "disconnect" ); + self notify( "kill_match_start_message" ); + self endon( "kill_match_start_message" ); + if ( !isDefined( self.match_start_msg_hud ) ) + { + self.match_start_msg_hud = newclienthudelem( self ); + self.match_start_msg_hud.alignx = "center"; + self.match_start_msg_hud.aligny = "middle"; + self.match_start_msg_hud.horzalign = "center"; + self.match_start_msg_hud.vertalign = "middle"; + self.match_start_msg_hud.y -= 130; + self.match_start_msg_hud.fontscale = 5; + self.match_start_msg_hud.foreground = 1; + if ( self issplitscreen() ) + { + self.match_start_msg_hud.y += 70; + } + self.match_start_msg_hud.color = ( 0, 0, 0 ); + self.match_start_msg_hud.hidewheninmenu = 1; + self.match_start_msg_hud.font = "default"; + } + self.match_start_msg_hud settext( text ); + self.match_start_msg_hud changefontscaleovertime( 0,25 ); + self.match_start_msg_hud fadeovertime( 0,25 ); + self.match_start_msg_hud.alpha = 1; + self.match_start_msg_hud.fontscale = 2; + if ( self issplitscreen() ) + { + self.match_start_msg_hud.fontscale = 1,5; + } + wait duration; + if ( !isDefined( self.match_start_msg_hud ) ) + { + return; + } + self.match_start_msg_hud changefontscaleovertime( 0,5 ); + self.match_start_msg_hud fadeovertime( 0,5 ); + self.match_start_msg_hud.alpha = 0; +} + +destroystartmsghud() +{ + level endon( "end_game" ); + self endon( "disconnect" ); + if ( !isDefined( self.match_start_msg_hud ) ) + { + return; + } + self.match_start_msg_hud destroy(); + self.match_start_msg_hud = undefined; +} + +delay_box_hide() +{ + wait 2; + start_chest = getstruct( "start_chest", "script_noteworthy" ); + if ( isDefined( start_chest ) ) + { + start_chest maps/mp/zombies/_zm_magicbox::hide_chest(); + } +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connected", player ); + player thread onplayerlaststand(); + player thread onplayerdisconnect(); + player thread setup_player(); + player thread rewardsthink(); + } +} + +onplayerlaststand() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "player_downed" ); + self takeallweapons(); + } +} + +onplayerdisconnect() +{ + level endon( "end_game" ); + self waittill( "disconnect" ); + if ( get_players().size <= 1 ) + { + end_game_early(); + } + else + { + while ( isDefined( level.ingraceperiod ) && !level.ingraceperiod ) + { + thread checkzombiehumanratio(); + wait 2; + players = get_players(); + _a836 = players; + _k836 = getFirstArrayKey( _a836 ); + while ( isDefined( _k836 ) ) + { + player = _a836[ _k836 ]; + player.nuked = undefined; + _k836 = getNextArrayKey( _a836, _k836 ); + } + } + } +} + +zombie_ramp_up() +{ + self notify( "zombie_ramp_up" ); + self endon( "zombie_ramp_up" ); + self endon( "death_or_disconnect" ); + self endon( "humanify" ); + if ( isDefined( level.cleansed_zombie_round ) ) + { + self.maxhealth = maps/mp/zombies/_zm::ai_zombie_health( level.cleansed_zombie_round ); + } + else + { + self.maxhealth = maps/mp/zombies/_zm::ai_zombie_health( 2 ); + } + self.health = self.maxhealth; +} + +precache_trophy() +{ +} + +create_trophy() +{ +} + +give_trophy() +{ + if ( !self.has_trophy ) + { + self setclientfield( "player_eyes_special", 1 ); + self setclientfield( "player_has_eyes", 0 ); + wait_network_frame(); + if ( cleansed_alive_check( self ) ) + { + self setclientfield( "player_has_eyes", self.is_zombie ); + } + self.has_trophy = 1; + } +} + +remove_trophy() +{ + if ( self.has_trophy ) + { + self setclientfield( "player_eyes_special", 0 ); + self setclientfield( "player_has_eyes", 0 ); + wait_network_frame(); + if ( cleansed_alive_check( self ) ) + { + self setclientfield( "player_has_eyes", self.is_zombie ); + } + self.has_trophy = 0; + } +} + +enthrone( player ) +{ + player endon( "dethrone" ); + player endon( "disconnect" ); + while ( 1 ) + { + if ( cleansed_alive_check( player ) && player.is_zombie ) + { + if ( !player.has_trophy ) + { + player give_trophy(); + } + } + else + { + if ( player.has_trophy ) + { + player remove_trophy(); + } + } + wait 0,1; + } +} + +dethrone( player ) +{ + player notify( "dethrone" ); + player remove_trophy(); +} + +cleansed_set_leader( leader ) +{ + if ( isDefined( leader ) && isDefined( level.cleansed_leader ) ) + { + if ( level.cleansed_leader != leader ) + { + dethrone( level.cleansed_leader ); + level.cleansed_leader = leader; + level thread enthrone( level.cleansed_leader ); + } + return; + } + if ( isDefined( leader ) && !isDefined( level.cleansed_leader ) ) + { + level.cleansed_leader = leader; + level thread enthrone( level.cleansed_leader ); + return; + } + if ( !isDefined( leader ) && isDefined( level.cleansed_leader ) ) + { + if ( isDefined( level.cleansed_leader ) ) + { + dethrone( level.cleansed_leader ); + } + level.cleansed_leader = leader; + return; + } +} + +leaderwatch() +{ + level endon( "early_game_end" ); + level endon( "normal_game_end" ); + create_trophy(); + cleansed_set_leader( undefined ); + while ( 1 ) + { + hiscore = -1; + leader = undefined; + players = get_players(); + _a991 = players; + _k991 = getFirstArrayKey( _a991 ); + while ( isDefined( _k991 ) ) + { + player = _a991[ _k991 ]; + if ( player.score > hiscore ) + { + hiscore = player.score; + } + _k991 = getNextArrayKey( _a991, _k991 ); + } + _a997 = players; + _k997 = getFirstArrayKey( _a997 ); + while ( isDefined( _k997 ) ) + { + player = _a997[ _k997 ]; + if ( player.score >= hiscore ) + { + if ( isDefined( leader ) ) + { + leader = undefined; + break; + } + else + { + leader = player; + } + _k997 = getNextArrayKey( _a997, _k997 ); + } + } + cleansed_set_leader( leader ); + wait 0,25; + } +} + +cover_transition() +{ + self thread fadetoblackforxsec( 0, 0,15, 0,05, 0,1 ); + wait 0,1; +} + +disappear_in_flash( washuman ) +{ + playsoundatposition( "zmb_bolt", self.origin ); + if ( washuman ) + { + playfx( level._effect[ "human_disappears" ], self.origin ); + } + else + { + playfx( level._effect[ "zombie_disappears" ], self.origin ); + } + self ghost(); +} + +humanifyplayer( for_killing ) +{ +/# +#/ + self freezecontrols( 1 ); + self thread cover_transition(); + self disappear_in_flash( 1 ); + self.team = self.prevteam; + self.pers[ "team" ] = self.prevteam; + self.sessionteam = self.prevteam; + self turnedhuman(); + for_killing waittill_notify_or_timeout( "respawned", 0,75 ); + wait_network_frame(); + checkzombiehumanratio( self ); + self.last_player_attacker = undefined; + self freezecontrols( level.player_movement_suppressed ); + self thread watch_survival_time(); +/# +#/ +} + +onzombifyplayer() +{ +/# +#/ + if ( isDefined( self.in_zombify_call ) && self.in_zombify_call ) + { + return; + } + self.in_zombify_call = 1; + while ( isDefined( level.in_zombify_call ) && level.in_zombify_call ) + { + wait 0,1; + } + level.in_zombify_call = 1; + self freezecontrols( 1 ); + if ( isDefined( self.last_player_attacker ) && isplayer( self.last_player_attacker ) && isDefined( self.last_player_attacker.is_zombie ) && self.last_player_attacker.is_zombie ) + { + } + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { +/# +#/ + self check_for_drops( 0 ); + } + else + { + if ( isDefined( self.last_player_attacker ) && isplayer( self.last_player_attacker ) && isDefined( self.last_player_attacker.is_zombie ) && self.last_player_attacker.is_zombie ) + { +/# +#/ + self check_for_drops( 1 ); + self.team = level.zombie_team; + self.pers[ "team" ] = level.zombie_team; + self.sessionteam = level.zombie_team; + self.last_player_attacker thread humanifyplayer( self ); + self.player_was_turned_by = self.last_player_attacker; + } + else + { +/# +#/ + self check_for_drops( 1 ); + self player_suicide(); + checkzombiehumanratio( undefined, self ); + } + } + self setclientfield( "player_has_eyes", 0 ); + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + } + self notify( "zombified" ); + self disappear_in_flash( 0 ); + self cover_transition(); + self notify( "clear_red_flashing_overlay" ); + self.zombification_time = getTime() / 1000; + self.last_player_attacker = undefined; + self maps/mp/zombies/_zm_laststand::laststand_enable_player_weapons(); + self.ignoreme = 1; + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + } + self.revivetrigger = undefined; + self reviveplayer(); + self maps/mp/zombies/_zm_turned::turn_to_zombie(); + self freezecontrols( level.player_movement_suppressed ); + self thread zombie_ramp_up(); + level.in_zombify_call = 0; + self.in_zombify_call = 0; +/# +#/ +} + +playerfakedeath( vdir ) +{ + if ( isDefined( self.is_zombie ) && !self.is_zombie ) + { + self endon( "disconnect" ); + level endon( "game_module_ended" ); + level notify( "fake_death" ); + self notify( "fake_death" ); + self enableinvulnerability(); + self takeallweapons(); + self freezecontrols( 1 ); + self.ignoreme = 1; + origin = self.origin; + xyspeed = ( 0, 0, 0 ); + angles = self getplayerangles(); + angles = ( angles[ 0 ], angles[ 1 ], angles[ 2 ] + randomfloatrange( -5, 5 ) ); + if ( isDefined( vdir ) && length( vdir ) > 0 ) + { + xyspeedmag = 40 + randomint( 12 ) + randomint( 12 ); + xyspeed = xyspeedmag * vectornormalize( ( vdir[ 0 ], vdir[ 1 ], 0 ) ); + } + linker = spawn( "script_origin", ( 0, 0, 0 ) ); + linker.origin = origin; + linker.angles = angles; + self._fall_down_anchor = linker; + self playerlinkto( linker ); + self playsoundtoplayer( "zmb_player_death_fall", self ); + origin = playerphysicstrace( origin, origin + xyspeed ); + origin += vectorScale( ( 0, 0, 0 ), 52 ); + lerptime = 0,5; + linker moveto( origin, lerptime, lerptime ); + linker rotateto( angles, lerptime, lerptime ); + self freezecontrols( 1 ); + linker waittill( "movedone" ); + self giveweapon( "death_throe_zm" ); + self switchtoweapon( "death_throe_zm" ); + bounce = randomint( 4 ) + 8; + origin = ( origin + ( 0, 0, bounce ) ) - ( xyspeed * 0,1 ); + lerptime = bounce / 50; + linker moveto( origin, lerptime, 0, lerptime ); + linker waittill( "movedone" ); + origin = ( origin + ( 0, 0, bounce * -1 ) ) + ( xyspeed * 0,1 ); + lerptime /= 2; + linker moveto( origin, lerptime, lerptime ); + linker waittill( "movedone" ); + linker moveto( origin, 5, 0 ); + wait 5; + linker delete(); + self.ignoreme = 0; + self takeweapon( "death_throe_zm" ); + self disableinvulnerability(); + self freezecontrols( 0 ); + } +} + +onspawnzombie() +{ +} + +makefindfleshstructs() +{ + structs = getstructarray( "spawn_location", "script_noteworthy" ); + _a1250 = structs; + _k1250 = getFirstArrayKey( _a1250 ); + while ( isDefined( _k1250 ) ) + { + struct = _a1250[ _k1250 ]; + struct.script_string = "find_flesh"; + _k1250 = getNextArrayKey( _a1250, _k1250 ); + } +} + +setup_players() +{ +/# + while ( getDvarInt( #"99BF96D1" ) != 0 ) + { + _a1261 = level._turned_zombie_respawnpoints; + _k1261 = getFirstArrayKey( _a1261 ); + while ( isDefined( _k1261 ) ) + { + spawnpoint = _a1261[ _k1261 ]; + text = ""; + color = ( 0, 0, 0 ); + if ( !isDefined( spawnpoint.angles ) ) + { + text = "No Angles Defined"; + color = ( 0, 0, 0 ); + spawnpoint.angles = ( 0, 0, 0 ); + } + _k1261 = getNextArrayKey( _a1261, _k1261 ); +#/ + } + } +} + +setup_player() +{ + hotjoined = flag( "initial_players_connected" ); + flag_wait( "initial_players_connected" ); + wait 0,05; + self ghost(); + self freezecontrols( 1 ); + self.ignoreme = 0; + self.score = 0; + self.characterindex = level.characterindex; + self takeallweapons(); + self giveweapon( "knife_zm" ); + self give_start_weapon( 1 ); + self.prevteam = self.team; + self.no_revive_trigger = 1; + self.human_score = 0; + self thread player_score_update(); + self.is_zombie = 0; + self.has_trophy = 0; + self.home_team = self.team; + if ( self.home_team == "axis" ) + { + self.home_team = "team3"; + } + self thread wait_turn_to_zombie( hotjoined ); +} + +wait_turn_to_zombie( hot ) +{ + if ( hot ) + { + self thread fadetoblackforxsec( 0, 1,25, 0,05, 0,25 ); + wait 1; + } + self.is_zombie = 0; + self turn_to_zombie(); + self freezecontrols( level.player_movement_suppressed ); +} + +addguntoprogression( gunname ) +{ + if ( !isDefined( level.gunprogression ) ) + { + level.gunprogression = []; + } + level.gunprogression[ level.gunprogression.size ] = gunname; +} + +check_spawn_cymbal_monkey( origin, weapon ) +{ + chance = -0,05; + if ( !self hasweapon( "cymbal_monkey_zm" ) || self getweaponammoclip( "cymbal_monkey_zm" ) < 1 ) + { + if ( weapon == "cymbal_monkey_zm" || randomfloat( 1 ) < chance ) + { + self notify( "awarded_cymbal_monkey" ); + level.spawned_cymbal_monkey = spawn_cymbalmonkey( origin ); + level.spawned_cymbal_monkey thread delete_spawned_monkey_on_turned( self ); + return 1; + } + } + return 0; +} + +delete_spawned_monkey_on_turned( player ) +{ + wait 1; + while ( isDefined( self ) && isDefined( player.is_zombie ) && !player.is_zombie ) + { + wait_network_frame(); + } + if ( isDefined( self ) ) + { + self maps/mp/zombies/_zm_powerups::powerup_delete(); + self notify( "powerup_timedout" ); + } +} + +rewardsthink() +{ + self endon( "_zombie_game_over" ); + self endon( "disconnect" ); + while ( isDefined( self ) ) + { + self waittill( "killed_a_zombie_player", einflictor, target, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + if ( isDefined( self.is_zombie ) && !self.is_zombie ) + { + if ( self check_spawn_cymbal_monkey( target.origin, sweapon ) ) + { + target.suppress_drops = 1; + } + } + } +} + +shotgunloadout() +{ + self endon( "_zombie_game_over" ); + self endon( "disconnect" ); + self endon( "bled_out" ); + self endon( "zombify" ); + level.cymbal_monkey_clone_weapon = "rottweil72_zm"; + if ( !self hasweapon( "rottweil72_zm" ) ) + { + self giveweapon( "rottweil72_zm" ); + self switchtoweapon( "rottweil72_zm" ); + } + if ( isDefined( self.is_zombie ) && !self.is_zombie && !self hasweapon( level.start_weapon ) ) + { + if ( !self hasweapon( "knife_zm" ) ) + { + self giveweapon( "knife_zm" ); + } + self give_start_weapon( 0 ); + } + if ( self hasweapon( "rottweil72_zm" ) ) + { + self setweaponammoclip( "rottweil72_zm", 2 ); + self setweaponammostock( "rottweil72_zm", 0 ); + } + if ( self hasweapon( level.start_weapon ) ) + { + self givemaxammo( level.start_weapon ); + } + if ( self hasweapon( self get_player_lethal_grenade() ) ) + { + self getweaponammoclip( self get_player_lethal_grenade() ); + } + else + { + self giveweapon( self get_player_lethal_grenade() ); + } + self setweaponammoclip( self get_player_lethal_grenade(), 2 ); + if ( isDefined( self.random_human ) && !self.random_human ) + { + } +} + +gunprogressionthink() +{ + self endon( "_zombie_game_over" ); + self endon( "disconnect" ); + self endon( "bled_out" ); + self endon( "zombify" ); + counter = 0; + if ( isDefined( level.gunprogression ) && !isDefined( level.cymbal_monkey_clone_weapon ) ) + { + level.cymbal_monkey_clone_weapon = level.gunprogression[ 0 ]; + } + last = level.start_weapon; + if ( !self hasweapon( self get_player_lethal_grenade() ) ) + { + self giveweapon( self get_player_lethal_grenade() ); + } + self setweaponammoclip( self get_player_lethal_grenade(), 2 ); + if ( isDefined( self.random_human ) && !self.random_human ) + { + } + self disableweaponcycling(); + while ( isDefined( self.is_zombie ) && !self.is_zombie ) + { + if ( !isDefined( level.gunprogression[ counter ] ) ) + { + } + else + { + self disableweaponcycling(); + self giveweapon( level.gunprogression[ counter ] ); + self switchtoweapon( level.gunprogression[ counter ] ); + self waittill_notify_or_timeout( "weapon_change_complete", 0,5 ); + if ( isDefined( last ) && self hasweapon( last ) ) + { + self takeweapon( last ); + } + last = level.gunprogression[ counter ]; + while ( 1 ) + { + self waittill( "killed_a_zombie_player", einflictor, target, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + if ( isDefined( sweapon ) && level.gunprogression[ counter ] == sweapon ) + { + counter++; + continue; + } + else + { + } + } + counter++; + } + } + self giveweapon( level.start_weapon ); + self switchtoweapon( level.start_weapon ); + self waittill( "weapon_change_complete" ); + if ( isDefined( last ) && self hasweapon( last ) ) + { + self takeweapon( last ); + } + while ( 1 ) + { + self waittill( "killed_a_zombie_player", einflictor, target, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + if ( isDefined( sweapon ) && level.start_weapon == sweapon ) + { + self notify( "gun_game_achievement" ); + return; + } + else } +} + +waitforhumanselection() +{ + level waittill( "initial_human_selected" ); +} + +checkzombiehumanratio( playertomove, playertoignore ) +{ + zombiecount = 0; + humancount = 0; + zombieexist = 0; + humanexist = 0; + earliestzombie = undefined; + earliestzombietime = 99999999; + if ( get_players().size <= 1 ) + { + end_game_early(); + } + while ( isDefined( level.checking_human_zombie_ratio ) && level.checking_human_zombie_ratio ) + { + wait 0,05; + } + level.checking_human_zombie_ratio = 1; + if ( isDefined( playertomove ) ) + { + someonebecominghuman = 0; + players = get_players(); + _a1561 = players; + _k1561 = getFirstArrayKey( _a1561 ); + while ( isDefined( _k1561 ) ) + { + player = _a1561[ _k1561 ]; + if ( isDefined( player.is_in_process_of_humanify ) && player.is_in_process_of_humanify ) + { + someonebecominghuman = 1; + } + _k1561 = getNextArrayKey( _a1561, _k1561 ); + } + if ( isDefined( someonebecominghuman ) && !someonebecominghuman ) + { + playertomove turn_to_human(); + } + level.checking_human_zombie_ratio = 0; + return; + } + players = get_players(); + _a1580 = players; + _k1580 = getFirstArrayKey( _a1580 ); + while ( isDefined( _k1580 ) ) + { + player = _a1580[ _k1580 ]; + if ( isDefined( playertoignore ) && playertoignore == player ) + { + } + else + { + if ( isDefined( player.is_zombie ) && !player.is_zombie && isDefined( player.is_in_process_of_zombify ) && !player.is_in_process_of_zombify ) + { + humancount++; + humanexist = 1; + break; + } + else + { + zombiecount++; + zombieexist = 1; + if ( isDefined( player.zombification_time ) && player.zombification_time < earliestzombietime ) + { + earliestzombie = player; + earliestzombietime = player.zombification_time; + } + } + } + _k1580 = getNextArrayKey( _a1580, _k1580 ); + } + if ( humancount > 1 ) + { + players = get_players( "allies" ); + if ( isDefined( players ) && players.size > 0 ) + { + player = random( players ); + player thread cover_transition(); + player disappear_in_flash( 1 ); +/# +#/ + player turn_to_zombie(); + zombiecount++; + } + } + if ( !humanexist ) + { + players = get_players( level.zombie_team ); + if ( isDefined( players ) && players.size > 0 ) + { + player = random( players ); + player thread cover_transition(); + player disappear_in_flash( 0 ); + player.random_human = 1; +/# +#/ + player turn_to_human(); + player.random_human = 0; + zombiecount--; + + } + } + level.checking_human_zombie_ratio = 0; +} + +get_player_rank() +{ + level.player_score_sort = []; + players = get_players(); + _a1650 = players; + _k1650 = getFirstArrayKey( _a1650 ); + while ( isDefined( _k1650 ) ) + { + player = _a1650[ _k1650 ]; + index = 0; + while ( index < level.player_score_sort.size && player.score < level.player_score_sort[ index ].score ) + { + index++; + } + arrayinsert( level.player_score_sort, player, index ); + _k1650 = getNextArrayKey( _a1650, _k1650 ); + } + index = 0; + while ( index < level.player_score_sort.size ) + { + if ( self == level.player_score_sort[ index ] ) + { + return index; + } + index++; + } +/# + assertmsg( "This should not happen" ); +#/ + return 0; +} + +player_add_score( bonus ) +{ + mult = 1; + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + mult = level.zombie_vars[ level.zombie_team ][ "zombie_point_scalar" ]; + } + else + { + mult = level.zombie_vars[ "allies" ][ "zombie_point_scalar" ]; + } + self maps/mp/zombies/_zm_score::add_to_player_score( bonus * mult ); +} + +player_sub_score( penalty ) +{ + penalty = int( min( self.score, penalty ) ); + self maps/mp/zombies/_zm_score::add_to_player_score( penalty * -1 ); +} + +player_suicide() +{ + self player_sub_score( level.human_player_suicide_penalty ); +/# + if ( get_players().size < 2 ) + { + self.intermission = 0; + thread spawn_initial_cure_powerup(); +#/ + } +} + +player_kills_player( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + score_multiplier = 1; + if ( isDefined( eattacker.is_zombie ) && !eattacker.is_zombie && isDefined( level.zombie_player_kill_points ) ) + { + level notify( "killed_by_human" ); + eattacker player_add_score( int( score_multiplier * level.zombie_player_kill_points ) ); + eattacker maps/mp/zombies/_zm_stats::add_global_stat( "PLAYER_KILLS", 1 ); + if ( smeansofdeath == "MOD_GRENADE" || smeansofdeath == "MOD_GRENADE_SPLASH" ) + { + eattacker maps/mp/zombies/_zm_stats::increment_client_stat( "grenade_kills" ); + eattacker maps/mp/zombies/_zm_stats::increment_player_stat( "grenade_kills" ); + } + } + if ( isDefined( eattacker.is_zombie ) && eattacker.is_zombie && isDefined( level.human_player_kill_points ) ) + { + level notify( "killed_by_zombie" ); + eattacker player_add_score( int( score_multiplier * level.human_player_kill_points ) ); + eattacker maps/mp/zombies/_zm_stats::add_global_stat( "PLAYER_RETURNS", 1 ); + } +} + +award_round_end_bonus() +{ + level notify( "stop_player_scores" ); + wait 0,25; + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "dr_time_line", undefined, undefined, 1 ); + while ( maps/mp/zombies/_zm_laststand::player_any_player_in_laststand() || isDefined( level.in_zombify_call ) && level.in_zombify_call ) + { + wait 0,25; + } + hiscore = -1; + _a1751 = get_players(); + _k1751 = getFirstArrayKey( _a1751 ); + while ( isDefined( _k1751 ) ) + { + player = _a1751[ _k1751 ]; + if ( isDefined( player.is_zombie ) && !player.is_zombie ) + { + player player_add_score( level.human_finish_bonus_points ); + level.last_human_standing = player; + } + if ( player.score > hiscore ) + { + hiscore = player.score; + } + _k1751 = getNextArrayKey( _a1751, _k1751 ); + } + _a1762 = get_players(); + _k1762 = getFirstArrayKey( _a1762 ); + while ( isDefined( _k1762 ) ) + { + player = _a1762[ _k1762 ]; + if ( player.score >= hiscore ) + { + player.team = player.prevteam; + player.pers[ "team" ] = player.prevteam; + player.sessionteam = player.prevteam; + player maps/mp/zombies/_zm_stats::increment_client_stat( "wins" ); + player maps/mp/zombies/_zm_stats::add_client_stat( "losses", -1 ); + player adddstat( "skill_rating", 1 ); + player setdstat( "skill_variance", 1 ); + player maps/mp/zombies/_zm_stats::add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "wins", 1 ); + player maps/mp/zombies/_zm_stats::add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "losses", -1 ); + } + else + { + player.team = level.zombie_team; + player.pers[ "team" ] = level.zombie_team; + player.sessionteam = level.zombie_team; + player setdstat( "skill_rating", 0 ); + player setdstat( "skill_variance", 1 ); + } + _k1762 = getNextArrayKey( _a1762, _k1762 ); + } +} + +player_score_update() +{ + self endon( "_zombie_game_over" ); + self endon( "disconnect" ); + level endon( "stop_player_scores" ); + waittime = 0,05; + while ( 1 ) + { + self waittill_any_or_timeout( waittime, "zombify", "humanify" ); + if ( isDefined( self._can_score ) && !self._can_score ) + { + continue; + } + if ( isDefined( level.hostmigrationtimer ) && level.hostmigrationtimer ) + { + continue; + } + if ( isDefined( level.ingraceperiod ) && !level.ingraceperiod ) + { + if ( !cleansed_alive_check( self ) ) + { + waittime = 0,05; + break; + } + else if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + waittime = level.zombie_penalty_period; + self player_sub_score( level.zombie_penalty_points ); + break; + } + else + { + waittime = level.human_bonus_period; + self player_add_score( level.human_bonus_points ); + } + } + } +} + +respawn_cleansed_player() +{ + spawnpoint = self maps/mp/zombies/_zm_turned::getspawnpoint(); + self.sessionstate = "playing"; + self allowspectateteam( "freelook", 0 ); + self spawn( spawnpoint.origin, spawnpoint.angles ); + self notify( "stop_flame_damage" ); + self reviveplayer(); + self.nuked = 0; + self.nuker = undefined; + self.suppress_drops = 0; + self.is_burning = 0; + self.is_zombie = 0; + self.ignoreme = 0; + self freezecontrols( level.player_movement_suppressed ); + self notify( "respawned" ); +} + +zcleansed_zombie_powerup_grab( powerup, zombie_player ) +{ + if ( !cleansed_alive_check( zombie_player ) ) + { + return 0; + } + switch( powerup.powerup_name ) + { + case "the_cure": + level notify( "initial_human_selected" ); + zombie_player freezecontrols( 1 ); + zombie_player disappear_in_flash( 0 ); + zombie_player turn_to_human(); + players = get_players(); + _a1885 = players; + _k1885 = getFirstArrayKey( _a1885 ); + while ( isDefined( _k1885 ) ) + { + player = _a1885[ _k1885 ]; + if ( player.is_zombie ) + { + player thread zombie_ramp_up(); + } + _k1885 = getNextArrayKey( _a1885, _k1885 ); + } + default: + if ( isDefined( level.cleansed_powerups[ powerup.powerup_name ] ) ) + { + if ( isDefined( level.cleansed_powerups[ powerup.powerup_name ].callback ) ) + { + powerup thread [[ level.cleansed_powerups[ powerup.powerup_name ].callback ]]( zombie_player ); + } + } + } + } +} + +zcleansed_powerup_grab( powerup, player ) +{ + if ( !cleansed_alive_check( player ) ) + { + return 0; + } + switch( powerup.powerup_name ) + { + case "blue_monkey": + player maps/mp/zombies/_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); + player setweaponammoclip( "cymbal_monkey_zm", 1 ); + player notify( "powerup_blue_monkey" ); + break; + default: + if ( isDefined( level.cleansed_powerups[ powerup.powerup_name ] ) ) + { + if ( isDefined( level.cleansed_powerups[ powerup.powerup_name ].callback ) ) + { + powerup thread [[ level.cleansed_powerups[ powerup.powerup_name ].callback ]]( player ); + } + } + } +} + +zcleansed_powerup_custom_time_logic( powerup ) +{ + if ( powerup.powerup_name == "the_cure" ) + { + return 0; + } + return 15; +} + +spawn_initial_cure_powerup() +{ + struct = random( level._turned_powerup_spawnpoints ); + maps/mp/zombies/_zm_powerups::specific_powerup_drop( "the_cure", struct.origin ); +} + +spawn_cymbalmonkey( origin ) +{ + monkey = maps/mp/zombies/_zm_powerups::specific_powerup_drop( "blue_monkey", origin ); + return monkey; +} + +check_for_drops( washuman ) +{ + if ( !isDefined( level.cleansed_kills_for_drops ) ) + { + level.cleansed_kills_for_drops = 0; + } + if ( isDefined( self.nuked ) || self.nuked && isDefined( self.suppress_drops ) && self.suppress_drops ) + { + return; + } + level.cleansed_kills_for_drops++; + chance = ( level.cleansed_kills_for_drops - 2 ) / level.cleansed_kills_for_drops; + if ( chance > 0 ) + { + r = randomfloatrange( 0, 1 ); + if ( r < chance ) + { + self thread drop_powerup( washuman ); + level.cleansed_kills_for_drops = 0; + } + } +} + +add_cleansed_powerup( name, powerupmodel, text, team, zombie_death_frequency, human_death_frequency, callback ) +{ + if ( !isDefined( level.cleansed_powerups ) ) + { + level.cleansed_powerups = []; + } + precachemodel( powerupmodel ); + if ( !isDefined( level.zombie_powerups[ name ] ) ) + { + maps/mp/zombies/_zm_powerups::include_zombie_powerup( name ); + maps/mp/zombies/_zm_powerups::add_zombie_powerup( name, powerupmodel, text, ::maps/mp/zombies/_zm_powerups::func_should_never_drop, 0, team == 2, team == 1 ); + if ( !isDefined( level.statless_powerups ) ) + { + level.statless_powerups = []; + } + level.statless_powerups[ name ] = 1; + } + powerup = spawnstruct(); + powerup.name = name; + powerup.model = powerupmodel; + powerup.team = team; + powerup.callback = callback; + powerup.zfrequency = zombie_death_frequency; + powerup.hfrequency = human_death_frequency; + level.cleansed_powerups[ name ] = powerup; +} + +init_cleansed_powerups() +{ + level._effect[ "powerup_on_solo" ] = loadfx( "misc/fx_zombie_powerup_on_blue" ); + add_cleansed_powerup( "green_nuke", "zombie_bomb", &"ZOMBIE_THIS_IS_A_BUG", 0, 0,4, 0, ::turned_powerup_green_nuke ); + add_cleansed_powerup( "green_double", "zombie_x2_icon", &"ZOMBIE_THIS_IS_A_BUG", 0, 1, 0, ::turned_powerup_green_double ); + add_cleansed_powerup( "green_insta", "zombie_skull", &"ZOMBIE_THIS_IS_A_BUG", 0, 0,1, 0, ::turned_powerup_green_insta ); + add_cleansed_powerup( "green_ammo", "zombie_ammocan", &"ZOMBIE_POWERUP_MAX_AMMO", 0, 1, 0, ::turned_powerup_green_ammo ); + add_cleansed_powerup( "green_monkey", "weapon_zombie_monkey_bomb", &"ZOMBIE_THIS_IS_A_BUG", 0, 0,4, 0, ::turned_powerup_green_monkey ); + add_cleansed_powerup( "red_nuke", "zombie_bomb", &"ZOMBIE_THIS_IS_A_BUG", 1, 0, 0,4, ::turned_powerup_red_nuke ); + add_cleansed_powerup( "red_ammo", "zombie_ammocan", &"ZOMBIE_THIS_IS_A_BUG", 1, 0, 1, ::turned_powerup_red_ammo ); + add_cleansed_powerup( "red_double", "zombie_x2_icon", &"ZOMBIE_THIS_IS_A_BUG", 1, 0, 1, ::turned_powerup_red_double ); + add_cleansed_powerup( "yellow_double", "zombie_x2_icon", &"ZOMBIE_THIS_IS_A_BUG", 2, 0,1, 0,1, ::turned_powerup_yellow_double ); + add_cleansed_powerup( "yellow_nuke", "zombie_bomb", &"ZOMBIE_THIS_IS_A_BUG", 2, 0,01, 0,01, ::turned_powerup_yellow_nuke ); + level.cleansed_powerup_history_depth = []; + level.cleansed_powerup_history_depth[ 0 ] = 2; + level.cleansed_powerup_history_depth[ 1 ] = 1; + level.cleansed_powerup_history = []; + level.cleansed_powerup_history[ 0 ] = []; + level.cleansed_powerup_history[ 1 ] = []; + level.cleansed_powerup_history_last = []; + level.cleansed_powerup_history_last[ 0 ] = 0; + level.cleansed_powerup_history_last[ 1 ] = 0; + i = 0; + while ( i < level.cleansed_powerup_history_depth[ 0 ] ) + { + level.cleansed_powerup_history[ 0 ][ i ] = "none"; + level.cleansed_powerup_history[ 1 ][ i ] = "none"; + i++; + } +} + +pick_a_powerup( washuman ) +{ + total = 0; + _a2062 = level.cleansed_powerups; + _k2062 = getFirstArrayKey( _a2062 ); + while ( isDefined( _k2062 ) ) + { + powerup = _a2062[ _k2062 ]; + powerup.recent = 0; + i = 0; + while ( i < level.cleansed_powerup_history_depth[ washuman ] ) + { + if ( level.cleansed_powerup_history[ washuman ][ i ] == powerup.name ) + { + powerup.recent = 1; + } + i++; + } + if ( powerup.recent ) + { + } + else if ( washuman ) + { + total += powerup.hfrequency; + } + else + { + total += powerup.zfrequency; + } + _k2062 = getNextArrayKey( _a2062, _k2062 ); + } + if ( total == 0 ) + { + return undefined; + } + r = randomfloat( total ); + _a2081 = level.cleansed_powerups; + _k2081 = getFirstArrayKey( _a2081 ); + while ( isDefined( _k2081 ) ) + { + powerup = _a2081[ _k2081 ]; + if ( powerup.recent ) + { + } + else + { + if ( washuman ) + { + r -= powerup.hfrequency; + } + else + { + r -= powerup.zfrequency; + } + if ( r <= 0 ) + { + level.cleansed_powerup_history[ washuman ][ level.cleansed_powerup_history_last[ washuman ] ] = powerup.name; + level.cleansed_powerup_history_last[ washuman ]++; + if ( level.cleansed_powerup_history_last[ washuman ] >= level.cleansed_powerup_history_depth[ washuman ] ) + { + level.cleansed_powerup_history_last[ washuman ] = 0; + } + return powerup; + } + } + _k2081 = getNextArrayKey( _a2081, _k2081 ); + } + return undefined; +} + +drop_powerup( washuman ) +{ + powerup = pick_a_powerup( washuman ); + if ( isDefined( powerup ) ) + { + origin = self.origin; + wait 0,25; + maps/mp/zombies/_zm_powerups::specific_powerup_drop( powerup.name, origin ); + } +} + +powerup_can_player_grab( player ) +{ + if ( !cleansed_alive_check( player ) ) + { + return 0; + } + if ( isDefined( level.cleansed_powerups[ self.powerup_name ] ) ) + { + if ( level.cleansed_powerups[ self.powerup_name ].team == 0 && isDefined( player.is_zombie ) && player.is_zombie ) + { + return 0; + } + if ( level.cleansed_powerups[ self.powerup_name ].team == 1 && isDefined( player.is_zombie ) && !player.is_zombie ) + { + return 0; + } + } + else + { + if ( self.zombie_grabbable && isDefined( player.is_zombie ) && !player.is_zombie ) + { + return 0; + } + if ( !self.zombie_grabbable && isDefined( player.is_zombie ) && player.is_zombie ) + { + return 0; + } + } + return 1; +} + +player_nuke_fx() +{ + self endon( "death" ); + self endon( "respawned" ); + self endon( "stop_flame_damage" ); + if ( isDefined( level._effect ) && isDefined( level._effect[ "character_fire_death_torso" ] ) ) + { + if ( !self.isdog ) + { + playfxontag( level._effect[ "character_fire_death_torso" ], self, "J_SpineLower" ); + } + } + if ( isDefined( level._effect ) && isDefined( level._effect[ "character_fire_death_sm" ] ) ) + { + wait 1; + tagarray = []; + tagarray[ 0 ] = "J_Elbow_LE"; + tagarray[ 1 ] = "J_Elbow_RI"; + tagarray[ 2 ] = "J_Knee_RI"; + tagarray[ 3 ] = "J_Knee_LE"; + tagarray = array_randomize( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); + wait 1; + tagarray[ 0 ] = "J_Wrist_RI"; + tagarray[ 1 ] = "J_Wrist_LE"; + if ( isDefined( self.a ) || !isDefined( self.a.gib_ref ) && self.a.gib_ref != "no_legs" ) + { + tagarray[ 2 ] = "J_Ankle_RI"; + tagarray[ 3 ] = "J_Ankle_LE"; + } + tagarray = array_randomize( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 1 ] ); + } +} + +player_nuke( player ) +{ + nuke_time = 2; + self.isdog = 0; + self.nuked = 1; + self.nuker = player; + self freezecontrols( 1 ); + maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, nuke_time / 2, nuke_time ); + self thread player_nuke_fx(); + wait nuke_time; + if ( isDefined( self ) ) + { + if ( isDefined( player ) ) + { + self dodamage( self.health + 666, player.origin, player, player, "none", "MOD_EXPLOSIVE", 0, "nuke_zm" ); + return; + } + else + { + self.nuked = undefined; + self dodamage( self.health + 666, self.origin, self, self, "none", "MOD_EXPLOSIVE", 0, "nuke_zm" ); + } + } +} + +turned_powerup_green_nuke( player ) +{ + location = self.origin; + playfx( level.zombie_powerups[ "nuke" ].fx, location ); + level thread maps/mp/zombies/_zm_powerups::nuke_flash(); + players = get_players(); + _a2219 = players; + _k2219 = getFirstArrayKey( _a2219 ); + while ( isDefined( _k2219 ) ) + { + target = _a2219[ _k2219 ]; + if ( !cleansed_alive_check( target ) ) + { + } + else if ( isDefined( target.is_zombie ) && target.is_zombie ) + { + target thread player_nuke( player ); + break; + } + _k2219 = getNextArrayKey( _a2219, _k2219 ); + } +} + +turned_powerup_green_double( player ) +{ + level thread maps/mp/zombies/_zm_powerups::double_points_powerup( self, player ); +} + +turned_powerup_green_insta( player ) +{ + level thread maps/mp/zombies/_zm_powerups::insta_kill_powerup( self, player ); +} + +turned_powerup_green_ammo( player ) +{ + level thread maps/mp/zombies/_zm_powerups::full_ammo_powerup( self, player ); + weapon = player getcurrentweapon(); + player givestartammo( weapon ); +} + +turned_powerup_green_monkey( player ) +{ + player maps/mp/zombies/_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); + player setweaponammoclip( "cymbal_monkey_zm", 1 ); + player notify( "powerup_green_monkey" ); +} + +turned_powerup_red_nuke( player ) +{ + location = self.origin; + playfx( level.zombie_powerups[ "nuke" ].fx, location ); + level thread maps/mp/zombies/_zm_powerups::nuke_flash(); + players = get_players(); + _a2267 = players; + _k2267 = getFirstArrayKey( _a2267 ); + while ( isDefined( _k2267 ) ) + { + target = _a2267[ _k2267 ]; + if ( !cleansed_alive_check( target ) ) + { + } + else if ( isDefined( target.is_zombie ) && target.is_zombie ) + { + } + else + { + target thread player_nuke( player ); + } + _k2267 = getNextArrayKey( _a2267, _k2267 ); + } +} + +turned_powerup_red_ammo( player ) +{ + level thread maps/mp/zombies/_zm_powerups::empty_clip_powerup( self ); +} + +turned_powerup_red_double( player ) +{ + level thread maps/mp/zombies/_zm_powerups::double_points_powerup( self, player ); +} + +turned_powerup_yellow_double( player ) +{ + level thread maps/mp/zombies/_zm_powerups::double_points_powerup( self, player ); +} + +turned_powerup_yellow_nuke( player ) +{ + location = self.origin; + playfx( level.zombie_powerups[ "nuke" ].fx, location ); + level thread maps/mp/zombies/_zm_powerups::nuke_flash(); + players = get_players(); + _a2304 = players; + _k2304 = getFirstArrayKey( _a2304 ); + while ( isDefined( _k2304 ) ) + { + target = _a2304[ _k2304 ]; + if ( !cleansed_alive_check( target ) ) + { + } + else + { + if ( isDefined( target.team != player.team ) && target.team != player.team ) + { + target thread player_nuke( player ); + } + } + _k2304 = getNextArrayKey( _a2304, _k2304 ); + } +} + +playturnedmusic() +{ + ent = spawn( "script_origin", ( 0, 0, 0 ) ); + ent thread stopturnedmusic(); + playsoundatposition( "mus_zmb_gamemode_start", ( 0, 0, 0 ) ); + wait 5; + ent playloopsound( "mus_zmb_gamemode_loop", 5 ); +} + +stopturnedmusic() +{ + level waittill( "end_game" ); + self stoploopsound( 1,5 ); + wait 1; + self delete(); +} diff --git a/zm_transit_dr_patch/maps/mp/gametypes_zm/zturned.gsc b/zm_transit_dr_patch/maps/mp/gametypes_zm/zturned.gsc new file mode 100644 index 0000000..07dc9e8 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/gametypes_zm/zturned.gsc @@ -0,0 +1,26 @@ +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +main() +{ + maps/mp/gametypes_zm/_zm_gametype::main(); + level.onprecachegametype = ::onprecachegametype; + level.onstartgametype = ::onstartgametype; + level._game_module_player_damage_callback = ::maps/mp/gametypes_zm/_zm_gametype::game_module_player_damage_callback; + level._game_module_custom_spawn_init_func = ::maps/mp/gametypes_zm/_zm_gametype::custom_spawn_init_func; + maps/mp/gametypes_zm/_zm_gametype::post_gametype_main( "zturned" ); +} + +onprecachegametype() +{ + precacheshellshock( "tabun_gas_mp" ); + level thread maps/mp/gametypes_zm/_zm_gametype::init(); + maps/mp/gametypes_zm/_zm_gametype::rungametypeprecache( "zturned" ); +} + +onstartgametype() +{ + maps/mp/gametypes_zm/_zm_gametype::setup_classic_gametype(); + maps/mp/gametypes_zm/_zm_gametype::rungametypemain( "zturned" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_ambush.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_ambush.gsc new file mode 100644 index 0000000..138b202 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_ambush.gsc @@ -0,0 +1,295 @@ +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_game_module; +#include maps/mp/zm_transit_bus; +#include maps/mp/zm_transit_utility; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +main() +{ + level.numroundssincelastambushround = 0; + level.numbusstopssincelastambushround = 0; + level.numambushrounds = 0; + level.ambushpercentageperstop = 10; + level.ambushpercentageperround = 25; + flag_init( "ambush_round", 0 ); + flag_init( "ambush_safe_area_active", 0 ); + initambusheffects(); + thread ambushroundkeeper(); +/# + adddebugcommand( "devgui_cmd "Zombies:1/Bus:14/Ambush Round:6/Always:1" "zombie_devgui ambush_round always"\n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Bus:14/Ambush Round:6/Never:2" "zombie_devgui ambush_round never"\n" ); +#/ +} + +initambusheffects() +{ + level._effect[ "ambush_bus_fire" ] = loadfx( "env/fire/fx_fire_md" ); +} + +shouldstartambushround() +{ +/# + if ( level.ambushpercentageperstop == 100 ) + { + return 1; + } + if ( getDvarInt( "zombie_cheat" ) == 2 ) + { + return 0; +#/ + } + if ( level.numbusstopssincelastambushround < 2 ) + { + } + randint = randomintrange( 0, 100 ); + percentchance = level.numbusstopssincelastambushround * level.ambushpercentageperstop; + if ( randint < percentchance ) + { + } + percentchance = level.numroundssincelastambushround * level.ambushpercentageperround; + if ( randint < percentchance ) + { + } + if ( maps/mp/zm_transit_bus::busgasempty() ) + { + return 1; + } + return 0; +} + +isambushroundactive() +{ + if ( flag_exists( "ambush_round" ) ) + { + return flag( "ambush_round" ); + } +} + +is_ambush_round_spawning_active() +{ + if ( flag_exists( "ambush_safe_area_active" ) ) + { + return flag( "ambush_safe_area_active" ); + } +} + +ambushstartround() +{ + flag_set( "ambush_round" ); + ambushroundthink(); +} + +ambushendround() +{ + level.the_bus.issafe = 1; + maps/mp/zm_transit_bus::busgasadd( 60 ); + level.numbusstopssincelastambushround = 0; + level.numroundssincelastambushround = 0; + flag_clear( "ambush_round" ); +} + +cancelambushround() +{ + flag_clear( "ambush_round" ); + flag_clear( "ambush_safe_area_active" ); + maps/mp/zm_transit_utility::try_resume_zombie_spawning(); + bbprint( "zombie_events", "category %s type %s round %d", "DOG", "stop", level.round_number ); + level.the_bus notify( "ambush_round_fail_safe" ); +} + +ambushroundspawning() +{ + level.numambushrounds++; + wait 6; + level.the_bus.issafe = 0; +} + +limitedambushspawn() +{ + if ( level.numambushrounds < 3 ) + { + dogcount = level.dog_targets.size * 6; + } + else + { + dogcount = level.dog_targets.size * 8; + } + setupdogspawnlocs(); + level thread ambushroundspawnfailsafe( 20 ); + while ( get_current_zombie_count() > 0 ) + { + wait 1; + } + level notify( "end_ambushWaitFunction" ); +} + +ambushroundthink() +{ + module = maps/mp/zombies/_zm_game_module::get_game_module( level.game_module_nml_index ); + if ( isDefined( module.hub_start_func ) ) + { + level thread [[ module.hub_start_func ]]( "nml" ); + level notify( "game_mode_started" ); + } + level thread ambushroundspawning(); + ambushwaitfunction(); + ambushendround(); +} + +ambushwaitfunction() +{ +} + +ambushpointfailsafe() +{ + level.the_bus endon( "ambush_point" ); + level.the_bus waittill( "reached_stop_point" ); + cancelambushround(); +} + +ambushroundspawnfailsafe( timer ) +{ + ambushroundtimelimit = timer; + currentambushtime = 0; + while ( currentambushtime < ambushroundtimelimit ) + { + if ( !flag( "ambush_round" ) ) + { + return; + } + wait 1; + currentambushtime++; + } + level notify( "end_ambushWaitFunction" ); + wait 5; + dogs = getaispeciesarray( "all", "zombie_dog" ); + i = 0; + while ( i < dogs.size ) + { + if ( isDefined( dogs[ i ].marked_for_death ) && dogs[ i ].marked_for_death ) + { + i++; + continue; + } + else + { + if ( is_magic_bullet_shield_enabled( dogs[ i ] ) ) + { + i++; + continue; + } + else + { + dogs[ i ] dodamage( dogs[ i ].health + 666, dogs[ i ].origin ); + } + } + i++; + } +} + +ambushdoghealthincrease() +{ + switch( level.numambushrounds ) + { + case 1: + level.dog_health = 400; + break; + case 2: + level.dog_health = 900; + break; + case 3: + level.dog_health = 1300; + break; + case 4: + level.dog_health = 1600; + break; + default: + level.dog_health = 1600; + break; + } +} + +ambushroundaftermath() +{ + power_up_origin = level.the_bus gettagorigin( "tag_body" ); + if ( isDefined( power_up_origin ) ) + { + level thread maps/mp/zombies/_zm_powerups::specific_powerup_drop( "full_ammo", power_up_origin ); + } +} + +ambushroundeffects() +{ + wait 2; + level thread ambushlightningeffect( "tag_body" ); + wait 0,5; + level thread ambushlightningeffect( "tag_wheel_back_left" ); + wait 0,5; + level thread ambushlightningeffect( "tag_wheel_back_right" ); + wait 0,5; + level thread ambushlightningeffect( "tag_wheel_front_left" ); + wait 0,5; + level thread ambushlightningeffect( "tag_wheel_front_right" ); + wait 1,5; + fxent0 = spawnandlinkfxtotag( level._effect[ "ambush_bus_fire" ], level.the_bus, "tag_body" ); + fxent1 = spawnandlinkfxtotag( level._effect[ "ambush_bus_fire" ], level.the_bus, "tag_wheel_back_left" ); + fxent2 = spawnandlinkfxtotag( level._effect[ "ambush_bus_fire" ], level.the_bus, "tag_wheel_back_right" ); + fxent3 = spawnandlinkfxtotag( level._effect[ "ambush_bus_fire" ], level.the_bus, "tag_wheel_front_left" ); + fxent4 = spawnandlinkfxtotag( level._effect[ "ambush_bus_fire" ], level.the_bus, "tag_wheel_front_right" ); + level waittill( "end_ambushWaitFunction" ); + fxent0 delete(); + fxent1 delete(); + fxent2 delete(); + fxent3 delete(); + fxent4 delete(); +} + +ambushlightningeffect( tag ) +{ + fxentlighting = spawnandlinkfxtotag( level._effect[ "lightning_dog_spawn" ], level.the_bus, tag ); + wait 5; + fxentlighting delete(); +} + +setupdogspawnlocs() +{ + level.enemy_dog_locations = []; + currentzone = undefined; + ambush_zones = getentarray( "ambush_volume", "script_noteworthy" ); + i = 0; + while ( i < ambush_zones.size ) + { + touching = 0; + b = 0; + while ( b < level.the_bus.bounds_origins.size && !touching ) + { + bounds = level.the_bus.bounds_origins[ b ]; + touching = bounds istouching( ambush_zones[ i ] ); + b++; + } + if ( touching ) + { + currentzone = ambush_zones[ i ]; + break; + } + else + { + i++; + } + } +/# + assert( isDefined( currentzone ), "Bus needs to be in an ambush zone for an ambush round: " + level.the_bus.origin ); +#/ + level.enemy_dog_locations = getstructarray( currentzone.target, "targetname" ); +} + +ambushroundkeeper() +{ + while ( 1 ) + { + level waittill( "between_round_over" ); + level.numroundssincelastambushround++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_classic.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_classic.gsc new file mode 100644 index 0000000..801a5c7 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_classic.gsc @@ -0,0 +1,616 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/zombies/_zm; +#include maps/mp/zm_transit_distance_tracking; +#include maps/mp/zm_transit; +#include maps/mp/zm_transit_power; +#include maps/mp/zm_transit_ai_screecher; +#include maps/mp/zm_transit_bus; +#include maps/mp/zm_transit_buildables; +#include maps/mp/zm_transit_utility; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +precache() +{ + maps/mp/zombies/_zm_ai_screecher::precache(); + maps/mp/zombies/_zm_ai_avogadro::precache(); + maps/mp/zm_transit_buildables::include_buildables(); + maps/mp/zm_transit_buildables::init_buildables(); + maps/mp/zm_transit_sq::init(); + maps/mp/zombies/_zm_equip_turbine::init(); + maps/mp/zombies/_zm_equip_turret::init(); + maps/mp/zombies/_zm_equip_electrictrap::init(); + precachemodel( "zm_collision_transit_town_classic" ); + precachemodel( "p_glo_tools_chest_tall" ); + precachemodel( "fxanim_zom_bus_interior_mod" ); + precachemodel( "p6_anim_zm_barricade_board_collision" ); + precachemodel( "p6_anim_zm_barricade_board_bus_collision" ); + registerclientfield( "vehicle", "the_bus_spawned", 1, 1, "int" ); + registerclientfield( "vehicle", "bus_flashing_lights", 1, 1, "int" ); + registerclientfield( "vehicle", "bus_head_lights", 1, 1, "int" ); + registerclientfield( "vehicle", "bus_brake_lights", 1, 1, "int" ); + registerclientfield( "vehicle", "bus_turn_signal_left", 1, 1, "int" ); + registerclientfield( "vehicle", "bus_turn_signal_right", 1, 1, "int" ); + registerclientfield( "allplayers", "screecher_sq_lights", 1, 1, "int" ); + registerclientfield( "allplayers", "screecher_maxis_lights", 1, 1, "int" ); + registerclientfield( "allplayers", "sq_tower_sparks", 1, 1, "int" ); + onplayerconnect_callback( ::maps/mp/zm_transit_bus::onplayerconnect ); + onplayerconnect_callback( ::onplayerconnect_bank_deposit_box ); + onplayerconnect_callback( ::maps/mp/zm_transit_ai_screecher::portal_player_watcher ); +} + +main() +{ + level.ta_vaultfee = 100; + level.ta_tellerfee = 100; + if ( !isDefined( level.custom_ai_type ) ) + { + level.custom_ai_type = []; + } + level.custom_ai_type[ level.custom_ai_type.size ] = ::maps/mp/zombies/_zm_ai_screecher::init; + level.custom_ai_type[ level.custom_ai_type.size ] = ::maps/mp/zombies/_zm_ai_avogadro::init; + level.enemy_location_override_func = ::maps/mp/zm_transit_bus::enemy_location_override; + level.adjust_enemyoverride_func = ::maps/mp/zm_transit_bus::adjust_enemyoverride; + level.closest_player_override = ::closest_player_transit; + door_triggers = getentarray( "electric_door", "script_noteworthy" ); + _a80 = door_triggers; + _k80 = getFirstArrayKey( _a80 ); + while ( isDefined( _k80 ) ) + { + trigger = _a80[ _k80 ]; + if ( isDefined( trigger.script_flag ) && trigger.script_flag == "OnPowDoorWH" ) + { + } + else + { + trigger.power_door_ignore_flag_wait = 1; + } + _k80 = getNextArrayKey( _a80, _k80 ); + } + door_triggers = getentarray( "local_electric_door", "script_noteworthy" ); + _a91 = door_triggers; + _k91 = getFirstArrayKey( _a91 ); + while ( isDefined( _k91 ) ) + { + trigger = _a91[ _k91 ]; + if ( isDefined( trigger.script_flag ) && trigger.script_flag == "OnPowDoorWH" ) + { + } + else + { + trigger.power_door_ignore_flag_wait = 1; + } + _k91 = getNextArrayKey( _a91, _k91 ); + } + level.zm_traversal_override = ::zm_traversal_override; + level.the_bus = getent( "the_bus", "targetname" ); + level thread init_bus(); + level thread maps/mp/zm_transit_sq::start_transit_sidequest(); + level thread inert_zombies_init(); + level thread maps/mp/zm_transit_power::initializepower(); + level thread maps/mp/zm_transit_ambush::main(); + level thread maps/mp/zm_transit::falling_death_init(); + level.check_valid_spawn_override = ::maps/mp/zm_transit::transit_respawn_override; + level.zombie_check_suppress_gibs = ::maps/mp/zm_transit_bus::shouldsuppressgibs; + level thread transit_vault_breach_init(); + level thread maps/mp/zm_transit_distance_tracking::zombie_tracking_init(); + level thread solo_tombstone_removal(); + level thread collapsing_bridge_init(); + level thread bank_deposit_box(); + level thread bus_roof_damage_init(); + level thread diner_hatch_access(); + level thread maps/mp/zombies/_zm_buildables::think_buildables(); + setdvar( "r_rimIntensity_debug", 1 ); + setdvar( "r_rimIntensity", 3,5 ); + level thread zm_traversal_override_ignores(); + level thread maps/mp/zombies/_zm::post_main(); + level.spectator_respawn_custom_score = ::callback_spectator_respawn_custom_score; + level thread triggerweaponslockerwatch(); + level.custom_pap_deny_vo_func = ::transit_custom_deny_vox; + level.custom_generic_deny_vo_func = ::transit_custom_deny_vox; + level.custom_player_death_vo_func = ::transit_custom_death_vox; + level.custom_powerup_vo_response = ::transit_custom_powerup_vo_response; + level.zombie_vars[ "zombie_intermission_time" ] = 12; +} + +zm_traversal_override_ignores() +{ +} + +zm_traversal_override( traversealias ) +{ + suffix = ""; + sndalias = undefined; + chance = 0; + sndchance = 0; + if ( isDefined( self.isscreecher ) && !self.isscreecher && isDefined( self.is_avogadro ) && !self.is_avogadro ) + { + if ( isDefined( self.traversestartnode ) && isDefined( self.traversestartnode.script_string ) && self.traversestartnode.script_string == "ignore_traverse_override" ) + { + return traversealias; + } + switch( traversealias ) + { + case "jump_down_48": + if ( isDefined( self.has_legs ) && self.has_legs ) + { + suffix = "_stumble"; + chance = 0; + } + break; + case "jump_down_127": + case "jump_down_190": + case "jump_down_222": + case "jump_down_90": + if ( isDefined( self.has_legs ) && self.has_legs ) + { + suffix = "_stumble"; + chance = 30; + } + break; + case "jump_up_127": + case "jump_up_190": + case "jump_up_222": + case "jump_up_48": + sndalias = "vox_zmba_zombie_pickup_" + randomint( 2 ); + suffix = "_grabbed"; + chance = 6; + sndchance = 3; + break; + } + if ( chance != 0 && randomint( 100 ) <= chance ) + { + if ( isDefined( sndalias ) && randomint( 100 ) <= sndchance ) + { + playsoundatposition( sndalias, self.origin ); + } + traversealias += suffix; + } + } + return traversealias; +} + +init_bus() +{ + flag_wait( "start_zombie_round_logic" ); + level.the_bus thread maps/mp/zm_transit_bus::bussetup(); +} + +closest_player_transit( origin, players ) +{ + if ( isDefined( level.the_bus ) || level.the_bus.numaliveplayersridingbus > 0 && isDefined( level.calc_closest_player_using_paths ) && !level.calc_closest_player_using_paths ) + { + player = getclosest( origin, players ); + } + else + { + player = get_closest_player_using_paths( origin, players ); + } + return player; +} + +transit_vault_breach_init() +{ + vault_doors = getentarray( "town_bunker_door", "targetname" ); + array_thread( vault_doors, ::transit_vault_breach ); +} + +transit_vault_breach() +{ + if ( isDefined( self ) ) + { + self.damage_state = 0; + if ( isDefined( self.target ) ) + { + clip = getent( self.target, "targetname" ); + clip linkto( self ); + self.clip = clip; + } + self thread vault_breach_think(); + } + else + { + return; + } +} + +vault_breach_think() +{ + level endon( "intermission" ); + self.health = 99999; + self setcandamage( 1 ); + self.damage_state = 0; + self.clip.health = 99999; + self.clip setcandamage( 1 ); + while ( 1 ) + { + self thread track_clip_damage(); + self waittill( "damage", amount, attacker, direction, point, dmg_type, modelname, tagname, partname, weaponname ); + if ( isDefined( weaponname ) && weaponname != "emp_grenade_zm" || weaponname == "ray_gun_zm" && weaponname == "ray_gun_upgraded_zm" ) + { + continue; + } + if ( isDefined( amount ) && amount <= 1 ) + { + continue; + } + if ( isplayer( attacker ) && dmg_type != "MOD_PROJECTILE" && dmg_type != "MOD_PROJECTILE_SPLASH" && dmg_type != "MOD_EXPLOSIVE" && dmg_type != "MOD_EXPLOSIVE_SPLASH" || dmg_type == "MOD_GRENADE" && dmg_type == "MOD_GRENADE_SPLASH" ) + { + if ( self.damage_state == 0 ) + { + self.damage_state = 1; + } + playfxontag( level._effect[ "def_explosion" ], self, "tag_origin" ); + self playsound( "exp_vault_explode" ); + self bunkerdoorrotate( 1 ); + if ( isDefined( self.script_flag ) ) + { + flag_set( self.script_flag ); + } + if ( isDefined( self.clip ) ) + { + self.clip connectpaths(); + } + wait 1; + playsoundatposition( "zmb_cha_ching_loud", self.origin ); + return; + } + } +} + +track_clip_damage() +{ + self endon( "damage" ); + self.clip waittill( "damage", amount, attacker, direction, point, dmg_type ); + self notify( "damage" ); +} + +bunkerdoorrotate( open, time ) +{ + if ( !isDefined( time ) ) + { + time = 0,2; + } + rotate = self.script_float; + if ( !open ) + { + rotate *= -1; + } + if ( isDefined( self.script_angles ) ) + { + self notsolid(); + self rotateto( self.script_angles, time, 0, 0 ); + self thread maps/mp/zombies/_zm_blockers::door_solid_thread(); + } +} + +collapsing_bridge_init() +{ + time = 1,5; + trig = getent( "bridge_trig", "targetname" ); + if ( !isDefined( trig ) ) + { + return; + } + bridge = getentarray( trig.target, "targetname" ); + if ( !isDefined( bridge ) ) + { + return; + } + trig waittill( "trigger", who ); + trig playsound( "evt_bridge_collapse_start" ); + trig thread play_delayed_sound( time ); + i = 0; + while ( i < bridge.size ) + { + if ( isDefined( bridge[ i ].script_angles ) ) + { + rot_angle = bridge[ i ].script_angles; + } + else + { + rot_angle = ( 0, 0, 0 ); + } + earthquake( randomfloatrange( 0,5, 1 ), 1,5, bridge[ i ].origin, 1000 ); + exploder( 150 ); + bridge[ i ] rotateto( rot_angle, time, 0, 0 ); + i++; + } + wait 1; + if ( !isDefined( level.collapse_vox_said ) ) + { + level thread automatonspeak( "inform", "bridge_collapse" ); + level.collapse_vox_said = 1; + } +} + +play_delayed_sound( time ) +{ + wait time; + self playsound( "evt_bridge_collapse_end" ); +} + +bank_deposit_box() +{ + level.bank_deposit_max_amount = 250000; + level.bank_deposit_ddl_increment_amount = 1000; + deposit_trig = spawn( "trigger_radius_use", ( 588, 441,5, 6 ), 0, 4, 32 ); + deposit_trig sethintstring( &"ZOMBIE_BANK_DEPOSIT_PROMPT", level.bank_deposit_ddl_increment_amount ); + deposit_trig setcursorhint( "HINT_NOICON" ); + deposit_trig triggerignoreteam(); + deposit_trig thread bank_deposit_box_think( 1 ); + level.deposit_trig = deposit_trig; + withdraw_trig = spawn( "trigger_radius_use", ( 588, 450, 6 ), 0, 4, 32 ); + withdraw_trig sethintstring( &"ZOMBIE_BANK_WITHDRAW_PROMPT", level.bank_deposit_ddl_increment_amount, level.ta_vaultfee ); + withdraw_trig setcursorhint( "HINT_NOICON" ); + withdraw_trig triggerignoreteam(); + withdraw_trig thread bank_deposit_box_think( 0 ); + level.withdraw_trig = withdraw_trig; +} + +onplayerconnect_bank_deposit_box() +{ + account_val = self maps/mp/zombies/_zm_stats::get_map_stat( "depositBox" ); + if ( account_val >= level.bank_deposit_max_amount ) + { + level.deposit_trig setinvisibletoplayer( self ); + } +} + +bank_deposit_box_think( is_deposit ) +{ + account_max = level.bank_deposit_max_amount / level.bank_deposit_ddl_increment_amount; + account_increment = int( level.bank_deposit_ddl_increment_amount / 1000 ); + online_game = sessionmodeisonlinegame(); + for ( ;; ) + { + while ( 1 ) + { + self waittill( "trigger", player ); + while ( !is_player_valid( player ) ) + { + continue; + } + account_val = player maps/mp/zombies/_zm_stats::get_map_stat( "depositBox" ); + if ( !online_game ) + { + if ( !isDefined( player.account_val ) ) + { + player.account_val = 0; + } + account_val = player.account_val; + } + account_deposit_expected = account_val + account_increment; + if ( isDefined( is_deposit ) && is_deposit && player.score >= level.bank_deposit_ddl_increment_amount && account_deposit_expected <= account_max ) + { + player playsoundtoplayer( "zmb_vault_bank_deposit", player ); + player.score -= level.bank_deposit_ddl_increment_amount; + player maps/mp/zombies/_zm_stats::set_map_stat( "depositBox", account_val + account_increment ); + if ( !online_game ) + { + player.account_val += account_increment; + } + if ( account_deposit_expected >= account_max ) + { + level.deposit_trig setinvisibletoplayer( player ); + } + break; + } + else + { + if ( isDefined( is_deposit ) && !is_deposit && account_val >= account_increment ) + { + player playsoundtoplayer( "zmb_vault_bank_deposit", player ); + player.score += level.bank_deposit_ddl_increment_amount; + player maps/mp/zombies/_zm_stats::set_map_stat( "depositBox", account_val - account_increment ); + if ( !online_game ) + { + player.account_val -= account_increment; + } + player thread do_player_general_vox( "general", "exert_laugh", 10, 50 ); + player thread player_withdraw_fee(); + break; + } + else + { + player thread do_player_general_vox( "general", "exert_sigh", 10, 50 ); + } + } + } + } +} + +player_withdraw_fee() +{ + self endon( "disconnect" ); + wait_network_frame(); + self.score -= level.ta_vaultfee; + level.deposit_trig setvisibletoplayer( self ); +} + +bus_roof_damage_init() +{ + trigs = getentarray( "bus_knock_off", "targetname" ); + array_thread( trigs, ::bus_roof_damage ); +} + +bus_roof_damage() +{ + while ( 1 ) + { + self waittill( "trigger", who ); + if ( isplayer( who ) ) + { + if ( who getstance() == "stand" ) + { + who dodamage( 1, who.origin ); + } + } + else + { + if ( isDefined( who.marked_for_death ) && !who.marked_for_death && isDefined( who.has_legs ) && who.has_legs ) + { + who dodamage( who.health + 100, who.origin ); + who.marked_for_death = 1; + level.zombie_total++; + } + } + wait 0,1; + } +} + +diner_hatch_access() +{ + diner_hatch = getent( "diner_hatch", "targetname" ); + diner_hatch_col = getent( "diner_hatch_collision", "targetname" ); + diner_hatch_mantle = getent( "diner_hatch_mantle", "targetname" ); + if ( !isDefined( diner_hatch ) || !isDefined( diner_hatch_col ) ) + { + return; + } + diner_hatch hide(); + diner_hatch_mantle.start_origin = diner_hatch_mantle.origin; + diner_hatch_mantle.origin += vectorScale( ( 0, 0, 0 ), 500 ); + player = wait_for_buildable( "dinerhatch" ); + diner_hatch show(); + diner_hatch_col delete(); + diner_hatch_mantle.origin = diner_hatch_mantle.start_origin; + player maps/mp/zombies/_zm_buildables::track_placed_buildables( "dinerhatch" ); +} + +inert_zombies_init() +{ + inert_spawn_location = getstructarray( "inert_location", "script_noteworthy" ); + if ( isDefined( inert_spawn_location ) ) + { + array_thread( inert_spawn_location, ::spawn_inert_zombies ); + } +} + +spawn_inert_zombies() +{ + if ( !isDefined( self.angles ) ) + { + self.angles = ( 0, 0, 0 ); + } + wait 0,1; + if ( isDefined( level.zombie_spawners ) ) + { + spawner = random( level.zombie_spawners ); + ai = spawn_zombie( spawner ); + } + if ( isDefined( ai ) ) + { + ai forceteleport( self.origin, self.angles ); + ai.start_inert = 1; + } +} + +sparking_power_lines() +{ + lines = getentarray( "power_line_sparking", "targetname" ); +} + +callback_spectator_respawn_custom_score() +{ + difference = 1500 - self.score; + money_required = 1; + if ( difference >= 1000 ) + { + money_required = 2; + } + if ( !sessionmodeisonlinegame() ) + { + if ( !isDefined( self.account_val ) ) + { + self.account_val = 0; + } + if ( self.account_val >= money_required ) + { + self.account_val -= money_required; + } + else + { + self.account_val = 0; + } + } + else account_val = self maps/mp/zombies/_zm_stats::get_map_stat( "depositBox" ); + if ( account_val >= money_required ) + { + self set_map_stat( "depositBox", account_val - money_required ); + } + else + { + self set_map_stat( "depositBox", 0 ); + } +} + +transit_custom_deny_vox( door_buy ) +{ + switch( self.characterindex ) + { + case 0: + alias = randomintrange( 2, 5 ); + if ( isDefined( door_buy ) && door_buy ) + { + alias = undefined; + } + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "door_deny", undefined, alias ); + break; + case 1: + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + break; + case 2: + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + break; + case 3: + x = randomint( 100 ); + if ( x > 66 ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + } + else if ( x > 33 ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_box", undefined, 0 ); + } + else + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon", undefined, 0 ); + } + break; + } +} + +transit_custom_death_vox() +{ + if ( self.characterindex != 2 ) + { + return 0; + } + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "pain_high" ); + return 1; +} + +transit_custom_powerup_vo_response( powerup_player, powerup ) +{ + dist = 250000; + players = get_players(); + _a746 = players; + _k746 = getFirstArrayKey( _a746 ); + while ( isDefined( _k746 ) ) + { + player = _a746[ _k746 ]; + if ( player == powerup_player ) + { + } + else if ( distancesquared( player.origin, powerup_player.origin ) < dist ) + { + player do_player_general_vox( "general", "exert_laugh", 10, 5 ); + } + _k746 = getNextArrayKey( _a746, _k746 ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_distance_tracking.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_distance_tracking.gsc new file mode 100644 index 0000000..d23755f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_distance_tracking.gsc @@ -0,0 +1,161 @@ +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +zombie_tracking_init() +{ + level.zombie_respawned_health = []; + if ( !isDefined( level.zombie_tracking_dist ) ) + { + level.zombie_tracking_dist = 1500; + } + if ( !isDefined( level.zombie_tracking_wait ) ) + { + level.zombie_tracking_wait = 10; + } + for ( ;; ) + { + while ( 1 ) + { + zombies = get_round_enemy_array(); + if ( !isDefined( zombies ) || isDefined( level.ignore_distance_tracking ) && level.ignore_distance_tracking ) + { + wait level.zombie_tracking_wait; + } + } + else i = 0; + while ( i < zombies.size ) + { + if ( isDefined( zombies[ i ] ) && isDefined( zombies[ i ].ignore_distance_tracking ) && !zombies[ i ].ignore_distance_tracking ) + { + zombies[ i ] thread delete_zombie_noone_looking( level.zombie_tracking_dist ); + } + i++; + } + wait level.zombie_tracking_wait; + } +} + +delete_zombie_noone_looking( how_close ) +{ + self endon( "death" ); + if ( !isDefined( how_close ) ) + { + how_close = 1000; + } + distance_squared_check = how_close * how_close; + too_far_dist = distance_squared_check * 3; + if ( isDefined( level.zombie_tracking_too_far_dist ) ) + { + too_far_dist = level.zombie_tracking_too_far_dist * level.zombie_tracking_too_far_dist; + } + self.inview = 0; + self.player_close = 0; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ].sessionstate == "spectator" ) + { + i++; + continue; + } + else if ( isDefined( level.only_track_targeted_players ) ) + { + if ( !isDefined( self.favoriteenemy ) || self.favoriteenemy != players[ i ] ) + { + i++; + continue; + } + } + else + { + can_be_seen = self player_can_see_me( players[ i ] ); + if ( can_be_seen && distancesquared( self.origin, players[ i ].origin ) < too_far_dist ) + { + self.inview++; + } + if ( distancesquared( self.origin, players[ i ].origin ) < distance_squared_check ) + { + self.player_close++; + } + } + i++; + } + wait 0,1; + if ( self.inview == 0 && self.player_close == 0 ) + { + if ( !isDefined( self.animname ) || isDefined( self.animname ) && self.animname != "zombie" ) + { + return; + } + if ( isDefined( self.electrified ) && self.electrified == 1 ) + { + return; + } + if ( isDefined( self.in_the_ground ) && self.in_the_ground == 1 ) + { + return; + } + zombies = getaiarray( "axis" ); + if ( isDefined( self.damagemod ) && self.damagemod == "MOD_UNKNOWN" && self.health < self.maxhealth ) + { + if ( isDefined( self.exclude_distance_cleanup_adding_to_total ) && !self.exclude_distance_cleanup_adding_to_total && isDefined( self.isscreecher ) && !self.isscreecher ) + { + level.zombie_total++; + level.zombie_respawned_health[ level.zombie_respawned_health.size ] = self.health; + } + } + else + { + if ( ( zombies.size + level.zombie_total ) > 24 || ( zombies.size + level.zombie_total ) <= 24 && self.health >= self.maxhealth ) + { + if ( isDefined( self.exclude_distance_cleanup_adding_to_total ) && !self.exclude_distance_cleanup_adding_to_total && isDefined( self.isscreecher ) && !self.isscreecher ) + { + level.zombie_total++; + if ( self.health < level.zombie_health ) + { + level.zombie_respawned_health[ level.zombie_respawned_health.size ] = self.health; + } + } + } + } + self maps/mp/zombies/_zm_spawner::reset_attack_spot(); + self notify( "zombie_delete" ); + self delete(); + recalc_zombie_array(); + } +} + +player_can_see_me( player ) +{ + playerangles = player getplayerangles(); + playerforwardvec = anglesToForward( playerangles ); + playerunitforwardvec = vectornormalize( playerforwardvec ); + banzaipos = self.origin; + playerpos = player getorigin(); + playertobanzaivec = banzaipos - playerpos; + playertobanzaiunitvec = vectornormalize( playertobanzaivec ); + forwarddotbanzai = vectordot( playerunitforwardvec, playertobanzaiunitvec ); + if ( forwarddotbanzai >= 1 ) + { + anglefromcenter = 0; + } + else if ( forwarddotbanzai <= -1 ) + { + anglefromcenter = 180; + } + else + { + anglefromcenter = acos( forwarddotbanzai ); + } + playerfov = getDvarFloat( "cg_fov" ); + banzaivsplayerfovbuffer = getDvarFloat( "g_banzai_player_fov_buffer" ); + if ( banzaivsplayerfovbuffer <= 0 ) + { + banzaivsplayerfovbuffer = 0,2; + } + playercanseeme = anglefromcenter <= ( ( playerfov * 0,5 ) * ( 1 - banzaivsplayerfovbuffer ) ); + return playercanseeme; +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_dr.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_dr.gsc new file mode 100644 index 0000000..4d16f1a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_dr.gsc @@ -0,0 +1,885 @@ +#include maps/mp/gametypes_zm/_globallogic_utils; +#include maps/mp/zombies/_zm_devgui; +#include maps/mp/zombies/_zm_zonemgr; +#include maps/mp/zm_transit_lava; +#include maps/mp/gametypes_zm/_spawning; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zm_transit_dr_ffotd; +#include maps/mp/_visionset_mgr; +#include maps/mp/zm_transit_utility; +#include maps/mp/zombies/_zm_game_module; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/_utility; +#include common_scripts/utility; + +gamemode_callback_setup() +{ + maps/mp/zm_transit_dr_gamemodes::init(); +} + +encounter_init() +{ + precacheshader( "sun_moon_zombie" ); + level.precachecustomcharacters = ::precache_team_characters; + level.givecustomcharacters = ::give_team_characters; +} + +zclassic_init() +{ + level._zcleansed_weapon_progression = array( "rpd_zm", "srm1216_zm", "judge_zm", "qcw05_zm", "kard_zm" ); + survival_init(); +} + +zclassic_preinit() +{ + zclassic_init(); +} + +zcleansed_preinit() +{ + level._zcleansed_weapon_progression = array( "judge_zm", "srm1216_zm", "hk416_zm", "qcw05_zm", "kard_zm" ); + level.cymbal_monkey_clone_weapon = "srm1216_zm"; + survival_init(); +} + +survival_init() +{ + level.force_team_characters = 1; + level.should_use_cia = 0; + if ( randomint( 100 ) > 50 ) + { + level.should_use_cia = 1; + } + level.precachecustomcharacters = ::precache_team_characters; + level.givecustomcharacters = ::give_team_characters; + flag_wait( "start_zombie_round_logic" ); + level.custom_intermission = ::transit_standard_intermission; +} + +transit_standard_intermission() +{ + self closemenu(); + self closeingamemenu(); + level endon( "stop_intermission" ); + self endon( "disconnect" ); + self endon( "death" ); + self notify( "_zombie_game_over" ); + self.score = self.score_total; + self.sessionstate = "intermission"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + maps/mp/_visionset_mgr::vsmgr_deactivate( "overlay", "zm_transit_burn", self ); + self stopshellshock(); + points = getstructarray( "intermission", "targetname" ); + point = undefined; + if ( !isDefined( points ) || points.size == 0 ) + { + points = getentarray( "info_intermission", "classname" ); + if ( points.size < 1 ) + { +/# + println( "NO info_intermission POINTS IN MAP" ); +#/ + return; + } + } + self.game_over_bg = newclienthudelem( self ); + self.game_over_bg.x = 0; + self.game_over_bg.y = 0; + self.game_over_bg.horzalign = "fullscreen"; + self.game_over_bg.vertalign = "fullscreen"; + self.game_over_bg.foreground = 1; + self.game_over_bg.sort = 1; + self.game_over_bg setshader( "black", 640, 480 ); + self.game_over_bg.alpha = 1; + org = undefined; + while ( 1 ) + { + _a156 = points; + _k156 = getFirstArrayKey( _a156 ); + while ( isDefined( _k156 ) ) + { + struct = _a156[ _k156 ]; + if ( isDefined( struct.script_string ) && struct.script_string == level.scr_zm_map_start_location ) + { + point = struct; + } + _k156 = getNextArrayKey( _a156, _k156 ); + } + if ( !isDefined( point ) ) + { + point = points[ 0 ]; + } + if ( !isDefined( org ) ) + { + self spawn( point.origin, point.angles ); + } + if ( isDefined( point.target ) ) + { + if ( !isDefined( org ) ) + { + org = spawn( "script_model", self.origin + vectorScale( ( 0, 0, -1 ), 60 ) ); + org setmodel( "tag_origin" ); + } + org.origin = point.origin; + org.angles = point.angles; + j = 0; + while ( j < get_players().size ) + { + player = get_players()[ j ]; + player camerasetposition( org ); + player camerasetlookat(); + player cameraactivate( 1 ); + j++; + } + speed = 20; + if ( isDefined( point.speed ) ) + { + speed = point.speed; + } + target_point = getstruct( point.target, "targetname" ); + dist = distance( point.origin, target_point.origin ); + time = dist / speed; + q_time = time * 0,25; + if ( q_time > 1 ) + { + q_time = 1; + } + self.game_over_bg fadeovertime( q_time ); + self.game_over_bg.alpha = 0; + org moveto( target_point.origin, time, q_time, q_time ); + org rotateto( target_point.angles, time, q_time, q_time ); + wait ( time - q_time ); + self.game_over_bg fadeovertime( q_time ); + self.game_over_bg.alpha = 1; + wait q_time; + continue; + } + else + { + self.game_over_bg fadeovertime( 1 ); + self.game_over_bg.alpha = 0; + wait 5; + self.game_over_bg thread fade_up_over_time( 1 ); + } + } +} + +zturned_preinit() +{ + encounter_init(); +} + +createfx_callback() +{ + ents = getentarray(); + i = 0; + while ( i < ents.size ) + { + if ( ents[ i ].classname != "info_player_start" ) + { + ents[ i ] delete(); + } + i++; + } +} + +main() +{ + level thread maps/mp/zm_transit_dr_ffotd::main_start(); + level.level_createfx_callback_thread = ::createfx_callback; + level.default_game_mode = "zcleansed"; + level.default_start_location = "diner"; + level._get_random_encounter_func = ::maps/mp/zm_transit_utility::get_random_encounter_match; + setup_rex_starts(); + maps/mp/zm_transit_dr_fx::main(); + maps/mp/zombies/_zm::init_fx(); + maps/mp/animscripts/zm_death::precache_gib_fx(); + level.zombiemode = 1; + level._no_water_risers = 1; + if ( !isDefined( level.zombie_surfing_kills ) ) + { + level.zombie_surfing_kills = 1; + level.zombie_surfing_kill_count = 6; + } + maps/mp/_sticky_grenade::init(); + level.level_specific_stats_init = ::init_transit_dr_stats; + maps/mp/zombies/_load::main(); + init_clientflags(); + registerclientfield( "allplayers", "playerinfog", 1, 1, "int" ); + level.custom_breadcrumb_store_func = ::transit_breadcrumb_store_func; + if ( getDvar( "createfx" ) == "1" ) + { + return; + } + precacheshellshock( "lava" ); + precacheshellshock( "lava_small" ); + precache_survival_barricade_assets(); + include_game_modules(); + maps/mp/gametypes_zm/_spawning::level_use_unified_spawning( 1 ); + level.givecustomloadout = ::givecustomloadout; + initcharacterstartindex(); + level.initial_round_wait_func = ::initial_round_wait_func; + level.zombie_init_done = ::zombie_init_done; + level.zombiemode_using_pack_a_punch = 1; + level.zombiemode_reusing_pack_a_punch = 1; + level.pap_interaction_height = 47; + level.zombiemode_using_doubletap_perk = 1; + level.zombiemode_using_juggernaut_perk = 1; + level.zombiemode_using_marathon_perk = 1; + level.zombiemode_using_revive_perk = 1; + level.zombiemode_using_sleightofhand_perk = 1; + level.register_offhand_weapons_for_level_defaults_override = ::offhand_weapon_overrride; + level._zombie_custom_add_weapons = ::custom_add_weapons; + level._allow_melee_weapon_switching = 1; + level.uses_gumps = 1; + setdvar( "aim_target_fixed_actor_size", 1 ); + include_weapons(); + include_powerups(); + level thread maps/mp/zm_transit_lava::lava_damage_init(); + level.zm_transit_burn_max_duration = 2; + setup_zombie_init(); + maps/mp/zombies/_zm::init(); + maps/mp/zombies/_zm_weap_cymbal_monkey::init(); + if ( !isDefined( level.vsmgr_prio_overlay_zm_transit_burn ) ) + { + level.vsmgr_prio_overlay_zm_transit_burn = 20; + } + maps/mp/_visionset_mgr::vsmgr_register_info( "overlay", "zm_transit_burn", 1, level.vsmgr_prio_overlay_zm_transit_burn, 15, 1, ::maps/mp/_visionset_mgr::vsmgr_duration_lerp_thread_per_player, 0 ); + level maps/mp/zm_transit_dr_achievement::init(); + precacheitem( "death_throe_zm" ); + level.zones = []; + level.zone_manager_init_func = ::transit_zone_init; + init_zones[ 0 ] = "zone_gas"; + level thread maps/mp/zombies/_zm_zonemgr::manage_zones( init_zones ); + level.zombie_ai_limit = 24; + setdvar( "zombiemode_path_minz_bias", 13 ); + level thread maps/mp/zm_transit_dr_ffotd::main_end(); + flag_wait( "start_zombie_round_logic" ); + level notify( "players_done_connecting" ); +/# + execdevgui( "devgui_zombie_transit_dr" ); + level.custom_devgui = ::zombie_transit_dr_devgui; +#/ + level thread set_transit_wind(); + level.speed_change_round = 15; + level.speed_change_max = 5; +} + +setup_rex_starts() +{ + add_gametype( "zcleansed", ::dummy, "zcleansed", ::dummy ); + add_gameloc( "diner", ::dummy, "diner", ::dummy ); +} + +dummy() +{ +} + +init_clientflags() +{ +} + +set_player_in_fog( onoff ) +{ + if ( onoff ) + { + self setclientfield( "playerinfog", 1 ); + } + else + { + self setclientfield( "playerinfog", 0 ); + } +} + +transit_breadcrumb_store_func( store_crumb ) +{ + if ( isDefined( self.isonbus ) && self.isonbus ) + { + return 0; + } + return store_crumb; +} + +post_first_init() +{ + while ( !isDefined( anim.notfirsttime ) ) + { + wait 0,5; + } + anim.meleerange = 36; + anim.meleerangesq = anim.meleerange * anim.meleerange; +} + +set_transit_wind() +{ + setdvar( "enable_global_wind", 1 ); + setdvar( "wind_global_vector", "-120 -115 -120" ); + setdvar( "wind_global_low_altitude", 0 ); + setdvar( "wind_global_hi_altitude", 2000 ); + setdvar( "wind_global_low_strength_percent", 0,5 ); +} + +precache_team_characters() +{ + precachemodel( "c_zom_player_cdc_dlc1_fb" ); + precachemodel( "c_zom_hazmat_viewhands" ); + precachemodel( "c_zom_player_cia_dlc1_fb" ); + precachemodel( "c_zom_suit_viewhands" ); +} + +precache_survival_barricade_assets() +{ + survival_barricades = getstructarray( "game_mode_object" ); + i = 0; + while ( i < survival_barricades.size ) + { + if ( isDefined( survival_barricades[ i ].script_string ) && survival_barricades[ i ].script_string == "survival" ) + { + if ( isDefined( survival_barricades[ i ].script_parameters ) ) + { + precachemodel( survival_barricades[ i ].script_parameters ); + } + } + i++; + } +} + +initcharacterstartindex() +{ + level.characterstartindex = 0; +/# + forcecharacter = getDvarInt( #"FEE4CB69" ); + if ( forcecharacter != 0 ) + { + level.characterstartindex = forcecharacter - 1; +#/ + } +} + +give_team_characters() +{ + self detachall(); + self set_player_is_female( 0 ); + if ( !isDefined( self.characterindex ) ) + { + self.characterindex = 1; + } + self setmodel( "c_zom_player_cdc_dlc1_fb" ); + self.voice = "american"; + self.skeleton = "base"; + self setviewmodel( "c_zom_hazmat_viewhands" ); + self.characterindex = 1; + self setmovespeedscale( 1 ); + self setsprintduration( 4 ); + self setsprintcooldown( 0 ); +} + +setup_personality_character_exerts() +{ + level.exert_sounds[ 1 ][ "burp" ][ 0 ] = "vox_plr_0_exert_burp_0"; + level.exert_sounds[ 1 ][ "burp" ][ 1 ] = "vox_plr_0_exert_burp_1"; + level.exert_sounds[ 1 ][ "burp" ][ 2 ] = "vox_plr_0_exert_burp_2"; + level.exert_sounds[ 1 ][ "burp" ][ 3 ] = "vox_plr_0_exert_burp_3"; + level.exert_sounds[ 1 ][ "burp" ][ 4 ] = "vox_plr_0_exert_burp_4"; + level.exert_sounds[ 1 ][ "burp" ][ 5 ] = "vox_plr_0_exert_burp_5"; + level.exert_sounds[ 1 ][ "burp" ][ 6 ] = "vox_plr_0_exert_burp_6"; + level.exert_sounds[ 2 ][ "burp" ][ 0 ] = "vox_plr_1_exert_burp_0"; + level.exert_sounds[ 2 ][ "burp" ][ 1 ] = "vox_plr_1_exert_burp_1"; + level.exert_sounds[ 2 ][ "burp" ][ 2 ] = "vox_plr_1_exert_burp_2"; + level.exert_sounds[ 2 ][ "burp" ][ 3 ] = "vox_plr_1_exert_burp_3"; + level.exert_sounds[ 3 ][ "burp" ][ 0 ] = "vox_plr_2_exert_burp_0"; + level.exert_sounds[ 3 ][ "burp" ][ 1 ] = "vox_plr_2_exert_burp_1"; + level.exert_sounds[ 3 ][ "burp" ][ 2 ] = "vox_plr_2_exert_burp_2"; + level.exert_sounds[ 3 ][ "burp" ][ 3 ] = "vox_plr_2_exert_burp_3"; + level.exert_sounds[ 3 ][ "burp" ][ 4 ] = "vox_plr_2_exert_burp_4"; + level.exert_sounds[ 3 ][ "burp" ][ 5 ] = "vox_plr_2_exert_burp_5"; + level.exert_sounds[ 3 ][ "burp" ][ 6 ] = "vox_plr_2_exert_burp_6"; + level.exert_sounds[ 4 ][ "burp" ][ 0 ] = "vox_plr_3_exert_burp_0"; + level.exert_sounds[ 4 ][ "burp" ][ 1 ] = "vox_plr_3_exert_burp_1"; + level.exert_sounds[ 4 ][ "burp" ][ 2 ] = "vox_plr_3_exert_burp_2"; + level.exert_sounds[ 4 ][ "burp" ][ 3 ] = "vox_plr_3_exert_burp_3"; + level.exert_sounds[ 4 ][ "burp" ][ 4 ] = "vox_plr_3_exert_burp_4"; + level.exert_sounds[ 4 ][ "burp" ][ 5 ] = "vox_plr_3_exert_burp_5"; + level.exert_sounds[ 4 ][ "burp" ][ 6 ] = "vox_plr_3_exert_burp_6"; + level.exert_sounds[ 1 ][ "hitmed" ][ 0 ] = "vox_plr_0_exert_pain_medium_0"; + level.exert_sounds[ 1 ][ "hitmed" ][ 1 ] = "vox_plr_0_exert_pain_medium_1"; + level.exert_sounds[ 1 ][ "hitmed" ][ 2 ] = "vox_plr_0_exert_pain_medium_2"; + level.exert_sounds[ 1 ][ "hitmed" ][ 3 ] = "vox_plr_0_exert_pain_medium_3"; + level.exert_sounds[ 2 ][ "hitmed" ][ 0 ] = "vox_plr_1_exert_pain_medium_0"; + level.exert_sounds[ 2 ][ "hitmed" ][ 1 ] = "vox_plr_1_exert_pain_medium_1"; + level.exert_sounds[ 2 ][ "hitmed" ][ 2 ] = "vox_plr_1_exert_pain_medium_2"; + level.exert_sounds[ 2 ][ "hitmed" ][ 3 ] = "vox_plr_1_exert_pain_medium_3"; + level.exert_sounds[ 3 ][ "hitmed" ][ 0 ] = "vox_plr_2_exert_pain_medium_0"; + level.exert_sounds[ 3 ][ "hitmed" ][ 1 ] = "vox_plr_2_exert_pain_medium_1"; + level.exert_sounds[ 3 ][ "hitmed" ][ 2 ] = "vox_plr_2_exert_pain_medium_2"; + level.exert_sounds[ 3 ][ "hitmed" ][ 3 ] = "vox_plr_2_exert_pain_medium_3"; + level.exert_sounds[ 4 ][ "hitmed" ][ 0 ] = "vox_plr_3_exert_pain_medium_0"; + level.exert_sounds[ 4 ][ "hitmed" ][ 1 ] = "vox_plr_3_exert_pain_medium_1"; + level.exert_sounds[ 4 ][ "hitmed" ][ 2 ] = "vox_plr_3_exert_pain_medium_2"; + level.exert_sounds[ 4 ][ "hitmed" ][ 3 ] = "vox_plr_3_exert_pain_medium_3"; + level.exert_sounds[ 1 ][ "hitlrg" ][ 0 ] = "vox_plr_0_exert_pain_high_0"; + level.exert_sounds[ 1 ][ "hitlrg" ][ 1 ] = "vox_plr_0_exert_pain_high_1"; + level.exert_sounds[ 1 ][ "hitlrg" ][ 2 ] = "vox_plr_0_exert_pain_high_2"; + level.exert_sounds[ 1 ][ "hitlrg" ][ 3 ] = "vox_plr_0_exert_pain_high_3"; + level.exert_sounds[ 2 ][ "hitlrg" ][ 0 ] = "vox_plr_1_exert_pain_high_0"; + level.exert_sounds[ 2 ][ "hitlrg" ][ 1 ] = "vox_plr_1_exert_pain_high_1"; + level.exert_sounds[ 2 ][ "hitlrg" ][ 2 ] = "vox_plr_1_exert_pain_high_2"; + level.exert_sounds[ 2 ][ "hitlrg" ][ 3 ] = "vox_plr_1_exert_pain_high_3"; + level.exert_sounds[ 3 ][ "hitlrg" ][ 0 ] = "vox_plr_2_exert_pain_high_0"; + level.exert_sounds[ 3 ][ "hitlrg" ][ 1 ] = "vox_plr_2_exert_pain_high_1"; + level.exert_sounds[ 3 ][ "hitlrg" ][ 2 ] = "vox_plr_2_exert_pain_high_2"; + level.exert_sounds[ 3 ][ "hitlrg" ][ 3 ] = "vox_plr_2_exert_pain_high_3"; + level.exert_sounds[ 4 ][ "hitlrg" ][ 0 ] = "vox_plr_3_exert_pain_high_0"; + level.exert_sounds[ 4 ][ "hitlrg" ][ 1 ] = "vox_plr_3_exert_pain_high_1"; + level.exert_sounds[ 4 ][ "hitlrg" ][ 2 ] = "vox_plr_3_exert_pain_high_2"; + level.exert_sounds[ 4 ][ "hitlrg" ][ 3 ] = "vox_plr_3_exert_pain_high_3"; +} + +givecustomloadout( takeallweapons, alreadyspawned ) +{ + self giveweapon( "knife_zm" ); + self give_start_weapon( 1 ); +} + +transit_intermission() +{ + self closemenu(); + self closeingamemenu(); + level endon( "stop_intermission" ); + self endon( "disconnect" ); + self endon( "death" ); + self notify( "_zombie_game_over" ); + self.score = self.score_total; + self.sessionstate = "intermission"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + maps/mp/_visionset_mgr::vsmgr_deactivate( "overlay", "zm_transit_burn", self ); + self stopshellshock(); + self.game_over_bg = newclienthudelem( self ); + self.game_over_bg.x = 0; + self.game_over_bg.y = 0; + self.game_over_bg.horzalign = "fullscreen"; + self.game_over_bg.vertalign = "fullscreen"; + self.game_over_bg.foreground = 1; + self.game_over_bg.sort = 1; + self.game_over_bg setshader( "black", 640, 480 ); + self.game_over_bg.alpha = 1; + if ( !isDefined( level.the_bus ) ) + { + self.game_over_bg fadeovertime( 1 ); + self.game_over_bg.alpha = 0; + wait 5; + self.game_over_bg thread maps/mp/zombies/_zm::fade_up_over_time( 1 ); + } + else + { + zonestocheck = []; + zonestocheck[ zonestocheck.size ] = "zone_amb_bridge"; + zonestocheck[ zonestocheck.size ] = "zone_trans_11"; + zonestocheck[ zonestocheck.size ] = "zone_town_west"; + zonestocheck[ zonestocheck.size ] = "zone_town_west2"; + zonestocheck[ zonestocheck.size ] = "zone_tow"; + near_bridge = 0; + _a800 = zonestocheck; + _k800 = getFirstArrayKey( _a800 ); + while ( isDefined( _k800 ) ) + { + zone = _a800[ _k800 ]; + if ( level.the_bus maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_amb_bridge" ) ) + { + near_bridge = 1; + } + _k800 = getNextArrayKey( _a800, _k800 ); + } + if ( near_bridge ) + { + trig = getent( "bridge_trig", "targetname" ); + trig notify( "trigger" ); + } + org = spawn( "script_model", level.the_bus gettagorigin( "tag_camera" ) ); + org setmodel( "tag_origin" ); + org.angles = level.the_bus gettagangles( "tag_camera" ); + org linkto( level.the_bus ); + self setorigin( org.origin ); + self.angles = org.angles; + if ( !flag( "OnPriDoorYar" ) || !flag( "OnPriDoorYar2" ) ) + { + flag_set( "OnPriDoorYar" ); + wait_network_frame(); + } + if ( !level.the_bus.ismoving ) + { + level.the_bus.gracetimeatdestination = 0,1; + level.the_bus notify( "depart_early" ); + } + players = get_players(); + j = 0; + while ( j < players.size ) + { + player = players[ j ]; + player camerasetposition( org ); + player camerasetlookat(); + player cameraactivate( 1 ); + j++; + } + self.game_over_bg fadeovertime( 1 ); + self.game_over_bg.alpha = 0; + wait 12; + self.game_over_bg fadeovertime( 1 ); + self.game_over_bg.alpha = 1; + wait 1; + } +} + +transit_zone_init() +{ + flag_init( "always_on" ); + flag_set( "always_on" ); + add_adjacent_zone( "zone_roadside_west", "zone_din", "always_on" ); + add_adjacent_zone( "zone_roadside_west", "zone_gas", "always_on" ); + add_adjacent_zone( "zone_roadside_east", "zone_gas", "always_on" ); + add_adjacent_zone( "zone_roadside_east", "zone_gar", "always_on" ); + add_adjacent_zone( "zone_gas", "zone_din", "always_on" ); + add_adjacent_zone( "zone_gas", "zone_gar", "always_on" ); +} + +include_powerups() +{ + gametype = getDvar( "ui_gametype" ); + include_powerup( "nuke" ); + include_powerup( "insta_kill" ); + include_powerup( "double_points" ); + include_powerup( "full_ammo" ); + if ( gametype != "zgrief" ) + { + include_powerup( "carpenter" ); + } +} + +claymore_safe_to_plant() +{ + if ( self maps/mp/zm_transit_lava::object_touching_lava() ) + { + return 0; + } + if ( self.owner maps/mp/zm_transit_lava::object_touching_lava() ) + { + return 0; + } + return 1; +} + +grenade_safe_to_throw( player, weapname ) +{ + return 1; +} + +grenade_safe_to_bounce( player, weapname ) +{ + if ( !is_offhand_weapon( weapname ) && !is_grenade_launcher( weapname ) ) + { + return 1; + } + if ( self maps/mp/zm_transit_lava::object_touching_lava() ) + { + return 0; + } + return 1; +} + +offhand_weapon_overrride() +{ + register_lethal_grenade_for_level( "frag_grenade_zm" ); + level.zombie_lethal_grenade_player_init = "frag_grenade_zm"; + register_tactical_grenade_for_level( "cymbal_monkey_zm" ); + level.zombie_tactical_grenade_player_init = undefined; + level.grenade_safe_to_throw = ::grenade_safe_to_throw; + level.grenade_safe_to_bounce = ::grenade_safe_to_bounce; + level.zombie_placeable_mine_player_init = undefined; + level.claymore_safe_to_plant = ::claymore_safe_to_plant; + register_melee_weapon_for_level( "knife_zm" ); + register_melee_weapon_for_level( "bowie_knife_zm" ); + level.zombie_melee_weapon_player_init = "knife_zm"; + level.zombie_equipment_player_init = undefined; +} + +include_weapons() +{ + gametype = getDvar( "ui_gametype" ); + include_weapon( "knife_zm", 0 ); + include_weapon( "frag_grenade_zm", 0 ); + include_weapon( "m1911_zm", 0 ); + include_weapon( "m1911_upgraded_zm", 0 ); + include_weapon( "python_zm" ); + include_weapon( "python_upgraded_zm", 0 ); + include_weapon( "judge_zm" ); + include_weapon( "judge_upgraded_zm", 0 ); + include_weapon( "kard_zm" ); + include_weapon( "kard_upgraded_zm", 0 ); + include_weapon( "fiveseven_zm" ); + include_weapon( "fiveseven_upgraded_zm", 0 ); + include_weapon( "beretta93r_zm", 0 ); + include_weapon( "beretta93r_upgraded_zm", 0 ); + include_weapon( "fivesevendw_zm" ); + include_weapon( "fivesevendw_upgraded_zm", 0 ); + include_weapon( "ak74u_zm", 0 ); + include_weapon( "ak74u_upgraded_zm", 0 ); + include_weapon( "mp5k_zm", 0 ); + include_weapon( "mp5k_upgraded_zm", 0 ); + include_weapon( "qcw05_zm" ); + include_weapon( "qcw05_upgraded_zm", 0 ); + include_weapon( "870mcs_zm", 0 ); + include_weapon( "870mcs_upgraded_zm", 0 ); + include_weapon( "rottweil72_zm", 0 ); + include_weapon( "rottweil72_upgraded_zm", 0 ); + include_weapon( "saiga12_zm" ); + include_weapon( "saiga12_upgraded_zm", 0 ); + include_weapon( "srm1216_zm" ); + include_weapon( "srm1216_upgraded_zm", 0 ); + include_weapon( "m14_zm", 0 ); + include_weapon( "m14_upgraded_zm", 0 ); + include_weapon( "saritch_zm" ); + include_weapon( "saritch_upgraded_zm", 0 ); + include_weapon( "m16_zm", 0 ); + include_weapon( "m16_gl_upgraded_zm", 0 ); + include_weapon( "xm8_zm" ); + include_weapon( "xm8_upgraded_zm", 0 ); + include_weapon( "type95_zm" ); + include_weapon( "type95_upgraded_zm", 0 ); + include_weapon( "tar21_zm" ); + include_weapon( "tar21_upgraded_zm", 0 ); + include_weapon( "galil_zm" ); + include_weapon( "galil_upgraded_zm", 0 ); + include_weapon( "fnfal_zm" ); + include_weapon( "fnfal_upgraded_zm", 0 ); + include_weapon( "dsr50_zm" ); + include_weapon( "dsr50_upgraded_zm", 0 ); + include_weapon( "barretm82_zm" ); + include_weapon( "barretm82_upgraded_zm", 0 ); + include_weapon( "rpd_zm" ); + include_weapon( "rpd_upgraded_zm", 0 ); + include_weapon( "hamr_zm" ); + include_weapon( "hamr_upgraded_zm", 0 ); + include_weapon( "usrpg_zm" ); + include_weapon( "usrpg_upgraded_zm", 0 ); + include_weapon( "m32_zm" ); + include_weapon( "m32_upgraded_zm", 0 ); + include_weapon( "hk416_zm" ); + include_weapon( "hk416_upgraded_zm", 0 ); + include_weapon( "cymbal_monkey_zm" ); + if ( gametype != "zgrief" ) + { + include_weapon( "ray_gun_zm" ); + include_weapon( "ray_gun_upgraded_zm", 0 ); + add_limited_weapon( "ray_gun_zm", 4 ); + add_limited_weapon( "ray_gun_upgraded_zm", 4 ); + } + add_limited_weapon( "m1911_zm", 0 ); +} + +less_than_normal() +{ + return 0,5; +} + +custom_add_weapons() +{ + add_zombie_weapon( "m1911_zm", "m1911_upgraded_zm", &"ZOMBIE_WEAPON_M1911", 50, "", "", undefined ); + add_zombie_weapon( "python_zm", "python_upgraded_zm", &"ZOMBIE_WEAPON_PYTHON", 50, "wpck_python", "", undefined, 1 ); + add_zombie_weapon( "judge_zm", "judge_upgraded_zm", &"ZOMBIE_WEAPON_JUDGE", 50, "wpck_judge", "", undefined, 1 ); + add_zombie_weapon( "kard_zm", "kard_upgraded_zm", &"ZOMBIE_WEAPON_KARD", 50, "wpck_kap", "", undefined, 1 ); + add_zombie_weapon( "fiveseven_zm", "fiveseven_upgraded_zm", &"ZOMBIE_WEAPON_FIVESEVEN", 50, "wpck_57", "", undefined, 1 ); + add_zombie_weapon( "beretta93r_zm", "beretta93r_upgraded_zm", &"ZOMBIE_WEAPON_BERETTA93r", 1000, "", "", undefined ); + add_zombie_weapon( "fivesevendw_zm", "fivesevendw_upgraded_zm", &"ZOMBIE_WEAPON_FIVESEVENDW", 50, "wpck_duel57", "", undefined, 1 ); + add_zombie_weapon( "ak74u_zm", "ak74u_upgraded_zm", &"ZOMBIE_WEAPON_AK74U", 1200, "smg", "", undefined ); + add_zombie_weapon( "mp5k_zm", "mp5k_upgraded_zm", &"ZOMBIE_WEAPON_MP5K", 1000, "smg", "", undefined ); + add_zombie_weapon( "qcw05_zm", "qcw05_upgraded_zm", &"ZOMBIE_WEAPON_QCW05", 50, "wpck_chicom", "", undefined, 1 ); + add_zombie_weapon( "870mcs_zm", "870mcs_upgraded_zm", &"ZOMBIE_WEAPON_870MCS", 1500, "shotgun", "", undefined ); + add_zombie_weapon( "rottweil72_zm", "rottweil72_upgraded_zm", &"ZOMBIE_WEAPON_ROTTWEIL72", 500, "shotgun", "", undefined ); + add_zombie_weapon( "saiga12_zm", "saiga12_upgraded_zm", &"ZOMBIE_WEAPON_SAIGA12", 50, "wpck_saiga12", "", undefined, 1 ); + add_zombie_weapon( "srm1216_zm", "srm1216_upgraded_zm", &"ZOMBIE_WEAPON_SRM1216", 50, "wpck_m1216", "", undefined, 1 ); + add_zombie_weapon( "m14_zm", "m14_upgraded_zm", &"ZOMBIE_WEAPON_M14", 500, "rifle", "", undefined ); + add_zombie_weapon( "saritch_zm", "saritch_upgraded_zm", &"ZOMBIE_WEAPON_SARITCH", 50, "wpck_sidr", "", undefined, 1 ); + add_zombie_weapon( "m16_zm", "m16_gl_upgraded_zm", &"ZOMBIE_WEAPON_M16", 1200, "burstrifle", "", undefined ); + add_zombie_weapon( "xm8_zm", "xm8_upgraded_zm", &"ZOMBIE_WEAPON_XM8", 50, "wpck_m8a1", "", undefined, 1 ); + add_zombie_weapon( "type95_zm", "type95_upgraded_zm", &"ZOMBIE_WEAPON_TYPE95", 50, "wpck_type25", "", undefined, 1 ); + add_zombie_weapon( "tar21_zm", "tar21_upgraded_zm", &"ZOMBIE_WEAPON_TAR21", 50, "wpck_x95l", "", undefined, 1 ); + add_zombie_weapon( "galil_zm", "galil_upgraded_zm", &"ZOMBIE_WEAPON_GALIL", 50, "wpck_galil", "", undefined, 1 ); + add_zombie_weapon( "fnfal_zm", "fnfal_upgraded_zm", &"ZOMBIE_WEAPON_FNFAL", 50, "wpck_fal", "", undefined, 1 ); + add_zombie_weapon( "dsr50_zm", "dsr50_upgraded_zm", &"ZOMBIE_WEAPON_DR50", 50, "wpck_dsr50", "", undefined, 1 ); + add_zombie_weapon( "barretm82_zm", "barretm82_upgraded_zm", &"ZOMBIE_WEAPON_BARRETM82", 50, "sniper", "", undefined ); + add_zombie_weapon( "rpd_zm", "rpd_upgraded_zm", &"ZOMBIE_WEAPON_RPD", 50, "wpck_rpd", "", undefined, 1 ); + add_zombie_weapon( "hamr_zm", "hamr_upgraded_zm", &"ZOMBIE_WEAPON_HAMR", 50, "wpck_hamr", "", undefined, 1 ); + add_zombie_weapon( "frag_grenade_zm", undefined, &"ZOMBIE_WEAPON_FRAG_GRENADE", 250, "grenade", "", 250 ); + add_zombie_weapon( "usrpg_zm", "usrpg_upgraded_zm", &"ZOMBIE_WEAPON_USRPG", 50, "wpck_rpg", "", undefined, 1 ); + add_zombie_weapon( "m32_zm", "m32_upgraded_zm", &"ZOMBIE_WEAPON_M32", 50, "wpck_m32", "", undefined, 1 ); + add_zombie_weapon( "cymbal_monkey_zm", undefined, &"ZOMBIE_WEAPON_SATCHEL_2000", 2000, "wpck_monkey", "", undefined, 1 ); + add_zombie_weapon( "ray_gun_zm", "ray_gun_upgraded_zm", &"ZOMBIE_WEAPON_RAYGUN", 10000, "wpck_ray", "", undefined, 1 ); + add_zombie_weapon( "hk416_zm", "hk416_upgraded_zm", &"ZOMBIE_WEAPON_HK416", 100, "", "", undefined ); +} + +include_game_modules() +{ +} + +initial_round_wait_func() +{ + flag_wait( "initial_blackscreen_passed" ); +} + +zombie_init_done() +{ + self.allowpain = 0; +} + +setup_zombie_init() +{ + zombies = getentarray( "zombie_spawner", "script_noteworthy" ); +} + +assign_lowest_unused_character_index() +{ + charindexarray = []; + charindexarray[ 0 ] = 0; + charindexarray[ 1 ] = 1; + charindexarray[ 2 ] = 2; + charindexarray[ 3 ] = 3; + players = get_players(); + if ( players.size == 1 ) + { + charindexarray = array_randomize( charindexarray ); + return charindexarray[ 0 ]; + } + else + { + if ( players.size == 2 ) + { + _a1250 = players; + _k1250 = getFirstArrayKey( _a1250 ); + while ( isDefined( _k1250 ) ) + { + player = _a1250[ _k1250 ]; + if ( isDefined( player.characterindex ) ) + { + if ( player.characterindex == 2 || player.characterindex == 0 ) + { + if ( randomint( 100 ) > 50 ) + { + return 1; + } + return 3; + } + else + { + if ( player.characterindex == 3 || player.characterindex == 1 ) + { + if ( randomint( 100 ) > 50 ) + { + return 0; + } + return 2; + } + } + } + _k1250 = getNextArrayKey( _a1250, _k1250 ); + } + } + else _a1276 = players; + _k1276 = getFirstArrayKey( _a1276 ); + while ( isDefined( _k1276 ) ) + { + player = _a1276[ _k1276 ]; + if ( isDefined( player.characterindex ) ) + { + arrayremovevalue( charindexarray, player.characterindex, 0 ); + } + _k1276 = getNextArrayKey( _a1276, _k1276 ); + } + if ( charindexarray.size > 0 ) + { + return charindexarray[ 0 ]; + } + } + return 0; +} + +zombie_transit_dr_devgui( cmd ) +{ +/# + cmd_strings = strtok( cmd, " " ); + switch( cmd_strings[ 0 ] ) + { + case "blue_monkey": + case "green_ammo": + case "green_double": + case "green_insta": + case "green_monkey": + case "green_nuke": + case "red_ammo": + case "red_double": + case "red_nuke": + case "yellow_double": + case "yellow_nuke": + maps/mp/zombies/_zm_devgui::zombie_devgui_give_powerup( cmd_strings[ 0 ], 1 ); + break; + case "less_time": + less_time(); + break; + case "more_time": + more_time(); + break; + default: + } +#/ + } +} + +less_time() +{ +/# + level.time_to_add = 30000; + if ( !isDefined( level.time_to_remove ) ) + { + level.time_to_remove = 60000; + } + else + { + level.time_to_remove *= 2; + } + if ( maps/mp/gametypes_zm/_globallogic_utils::gettimeremaining() < level.time_to_remove ) + { + level.time_to_remove = maps/mp/gametypes_zm/_globallogic_utils::gettimeremaining() / 2; + } + level.discardtime -= level.time_to_remove; +#/ +} + +more_time() +{ +/# + level.time_to_remove = 30000; + if ( !isDefined( level.time_to_add ) ) + { + level.time_to_add = 60000; + } + else + { + level.time_to_add *= 2; + } + level.discardtime += level.time_to_add; +#/ +} + +init_transit_dr_stats() +{ + self maps/mp/zm_transit_dr_achievement::init_player_achievement_stats(); +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_dr_achievement.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_dr_achievement.gsc new file mode 100644 index 0000000..8930803 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_dr_achievement.gsc @@ -0,0 +1,62 @@ +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + level.achievement_sound_func = ::achievement_sound_func; + onplayerconnect_callback( ::onplayerconnect ); +} + +achievement_sound_func( achievement_name_lower ) +{ + self thread do_player_general_vox( "general", "achievement" ); +} + +init_player_achievement_stats() +{ + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zm_dlc1_polyarmory", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zm_dlc1_monkey_see_monkey_doom", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zm_dlc1_i_see_live_people", 0 ); +} + +onplayerconnect() +{ + if ( gamemodeismode( level.gamemode_public_match ) ) + { + self thread achievement_polyarmory(); + self thread achievement_monkey_see_monkey_doom(); + self thread achievement_i_see_live_people(); + } +} + +achievement_polyarmory() +{ + level endon( "end_game" ); + self endon( "disconnect" ); + self waittill( "gun_game_achievement" ); +/# +#/ + self giveachievement_wrapper( "ZM_DLC1_POLYARMORY" ); +} + +achievement_monkey_see_monkey_doom() +{ + level endon( "end_game" ); + self endon( "disconnect" ); + self waittill( "powerup_blue_monkey" ); +/# +#/ + self giveachievement_wrapper( "ZM_DLC1_MONKEY_SEE_MONKEY_DOOM" ); +} + +achievement_i_see_live_people() +{ + level endon( "end_game" ); + self endon( "disconnect" ); + self waittill( "invisible_player_killed" ); +/# +#/ + self giveachievement_wrapper( "ZM_DLC1_I_SEE_LIVE_PEOPLE" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_dr_ffotd.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_dr_ffotd.gsc new file mode 100644 index 0000000..62d32bd --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_dr_ffotd.gsc @@ -0,0 +1,11 @@ +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +main_start() +{ +} + +main_end() +{ +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_dr_fx.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_dr_fx.gsc new file mode 100644 index 0000000..1fd55fe --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_dr_fx.gsc @@ -0,0 +1,121 @@ +#include maps/mp/_utility; + +main() +{ + precache_createfx_fx(); + precache_scripted_fx(); + maps/mp/createfx/zm_transit_fx::main(); + maps/mp/createart/zm_transit_art::main(); +} + +precache_scripted_fx() +{ + level._effect[ "switch_sparks" ] = loadfx( "env/electrical/fx_elec_wire_spark_burst" ); + level._effect[ "maxis_sparks" ] = loadfx( "maps/zombie/fx_zmb_race_trail_grief" ); + level._effect[ "richtofen_sparks" ] = loadfx( "maps/zombie/fx_zmb_race_trail_neutral" ); + level._effect[ "sq_common_lightning" ] = loadfx( "maps/zombie/fx_zmb_tranzit_sq_lightning_orb" ); + level._effect[ "zapper_light_ready" ] = loadfx( "maps/zombie/fx_zombie_zapper_light_green" ); + level._effect[ "zapper_light_notready" ] = loadfx( "maps/zombie/fx_zombie_zapper_light_red" ); + level._effect[ "lght_marker" ] = loadfx( "maps/zombie/fx_zmb_tranzit_marker" ); + level._effect[ "lght_marker_flare" ] = loadfx( "maps/zombie/fx_zmb_tranzit_marker_fl" ); + level._effect[ "poltergeist" ] = loadfx( "misc/fx_zombie_couch_effect" ); + level._effect[ "zomb_gib" ] = loadfx( "maps/zombie/fx_zmb_tranzit_lava_torso_explo" ); + level._effect[ "fx_headlight" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_headlight" ); + level._effect[ "fx_headlight_lenflares" ] = loadfx( "lens_flares/fx_lf_zmb_tranzit_bus_headlight" ); + level._effect[ "fx_brakelight" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_brakelights" ); + level._effect[ "fx_emergencylight" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_flashing_lights" ); + level._effect[ "fx_turn_signal_right" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_turnsignal_right" ); + level._effect[ "fx_turn_signal_left" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_turnsignal_left" ); + level._effect[ "fx_zbus_trans_fog" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_fog_intersect" ); + level._effect[ "bus_lava_driving" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_fire_driving" ); + level._effect[ "bus_hatch_bust" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bus_hatch_bust" ); + level._effect[ "elec_md" ] = loadfx( "electrical/fx_elec_player_md" ); + level._effect[ "elec_sm" ] = loadfx( "electrical/fx_elec_player_sm" ); + level._effect[ "elec_torso" ] = loadfx( "electrical/fx_elec_player_torso" ); + level._effect[ "blue_eyes" ] = loadfx( "maps/zombie/fx_zombie_eye_single_blue" ); + level._effect[ "lava_burning" ] = loadfx( "env/fire/fx_fire_lava_player_torso" ); + level._effect[ "mc_trafficlight" ] = loadfx( "maps/zombie/fx_zmb_morsecode_traffic_loop" ); + level._effect[ "mc_towerlight" ] = loadfx( "maps/zombie/fx_zmb_morsecode_loop" ); +} + +precache_createfx_fx() +{ + level._effect[ "fx_insects_swarm_md_light" ] = loadfx( "bio/insects/fx_insects_swarm_md_light" ); + level._effect[ "fx_zmb_tranzit_flourescent_flicker" ] = loadfx( "maps/zombie/fx_zmb_tranzit_flourescent_flicker" ); + level._effect[ "fx_zmb_tranzit_flourescent_glow" ] = loadfx( "maps/zombie/fx_zmb_tranzit_flourescent_glow" ); + level._effect[ "fx_zmb_tranzit_flourescent_glow_lg" ] = loadfx( "maps/zombie/fx_zmb_tranzit_flourescent_glow_lg" ); + level._effect[ "fx_zmb_tranzit_flourescent_dbl_glow" ] = loadfx( "maps/zombie/fx_zmb_tranzit_flourescent_dbl_glow" ); + level._effect[ "fx_zmb_tranzit_depot_map_flicker" ] = loadfx( "maps/zombie/fx_zmb_tranzit_depot_map_flicker" ); + level._effect[ "fx_zmb_tranzit_light_bulb_xsm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_bulb_xsm" ); + level._effect[ "fx_zmb_tranzit_light_glow" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_glow" ); + level._effect[ "fx_zmb_tranzit_light_glow_xsm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_glow_xsm" ); + level._effect[ "fx_zmb_tranzit_light_glow_fog" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_glow_fog" ); + level._effect[ "fx_zmb_tranzit_light_depot_cans" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_depot_cans" ); + level._effect[ "fx_zmb_tranzit_light_desklamp" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_desklamp" ); + level._effect[ "fx_zmb_tranzit_light_town_cans" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_town_cans" ); + level._effect[ "fx_zmb_tranzit_light_town_cans_sm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_town_cans_sm" ); + level._effect[ "fx_zmb_tranzit_light_street_tinhat" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_street_tinhat" ); + level._effect[ "fx_zmb_tranzit_street_lamp" ] = loadfx( "maps/zombie/fx_zmb_tranzit_street_lamp" ); + level._effect[ "fx_zmb_tranzit_truck_light" ] = loadfx( "maps/zombie/fx_zmb_tranzit_truck_light" ); + level._effect[ "fx_zmb_tranzit_spark_int_runner" ] = loadfx( "maps/zombie/fx_zmb_tranzit_spark_int_runner" ); + level._effect[ "fx_zmb_tranzit_spark_ext_runner" ] = loadfx( "maps/zombie/fx_zmb_tranzit_spark_ext_runner" ); + level._effect[ "fx_zmb_tranzit_spark_blue_lg_loop" ] = loadfx( "maps/zombie/fx_zmb_tranzit_spark_blue_lg_loop" ); + level._effect[ "fx_zmb_tranzit_spark_blue_sm_loop" ] = loadfx( "maps/zombie/fx_zmb_tranzit_spark_blue_sm_loop" ); + level._effect[ "fx_zmb_tranzit_bar_glow" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bar_glow" ); + level._effect[ "fx_zmb_tranzit_transformer_on" ] = loadfx( "maps/zombie/fx_zmb_tranzit_transformer_on" ); + level._effect[ "fx_zmb_fog_closet" ] = loadfx( "fog/fx_zmb_fog_closet" ); + level._effect[ "fx_zmb_fog_low_300x300" ] = loadfx( "fog/fx_zmb_fog_low_300x300" ); + level._effect[ "fx_zmb_fog_thick_600x600" ] = loadfx( "fog/fx_zmb_fog_thick_600x600" ); + level._effect[ "fx_zmb_fog_thick_1200x600" ] = loadfx( "fog/fx_zmb_fog_thick_1200x600" ); + level._effect[ "fx_zmb_fog_transition_600x600" ] = loadfx( "fog/fx_zmb_fog_transition_600x600" ); + level._effect[ "fx_zmb_fog_transition_1200x600" ] = loadfx( "fog/fx_zmb_fog_transition_1200x600" ); + level._effect[ "fx_zmb_fog_transition_right_border" ] = loadfx( "fog/fx_zmb_fog_transition_right_border" ); + level._effect[ "fx_zmb_tranzit_smk_interior_md" ] = loadfx( "maps/zombie/fx_zmb_tranzit_smk_interior_md" ); + level._effect[ "fx_zmb_tranzit_smk_interior_heavy" ] = loadfx( "maps/zombie/fx_zmb_tranzit_smk_interior_heavy" ); + level._effect[ "fx_zmb_ash_ember_1000x1000" ] = loadfx( "maps/zombie/fx_zmb_ash_ember_1000x1000" ); + level._effect[ "fx_zmb_ash_ember_2000x1000" ] = loadfx( "maps/zombie/fx_zmb_ash_ember_2000x1000" ); + level._effect[ "fx_zmb_ash_rising_md" ] = loadfx( "maps/zombie/fx_zmb_ash_rising_md" ); + level._effect[ "fx_zmb_ash_windy_heavy_sm" ] = loadfx( "maps/zombie/fx_zmb_ash_windy_heavy_sm" ); + level._effect[ "fx_zmb_ash_windy_heavy_md" ] = loadfx( "maps/zombie/fx_zmb_ash_windy_heavy_md" ); + level._effect[ "fx_zmb_lava_detail" ] = loadfx( "maps/zombie/fx_zmb_lava_detail" ); + level._effect[ "fx_zmb_lava_edge_100" ] = loadfx( "maps/zombie/fx_zmb_lava_edge_100" ); + level._effect[ "fx_zmb_lava_50x50_sm" ] = loadfx( "maps/zombie/fx_zmb_lava_50x50_sm" ); + level._effect[ "fx_zmb_lava_100x100" ] = loadfx( "maps/zombie/fx_zmb_lava_100x100" ); + level._effect[ "fx_zmb_lava_river" ] = loadfx( "maps/zombie/fx_zmb_lava_river" ); + level._effect[ "fx_zmb_lava_creek" ] = loadfx( "maps/zombie/fx_zmb_lava_creek" ); + level._effect[ "fx_zmb_lava_crevice_glow_50" ] = loadfx( "maps/zombie/fx_zmb_lava_crevice_glow_50" ); + level._effect[ "fx_zmb_lava_crevice_glow_100" ] = loadfx( "maps/zombie/fx_zmb_lava_crevice_glow_100" ); + level._effect[ "fx_zmb_lava_crevice_smoke_100" ] = loadfx( "maps/zombie/fx_zmb_lava_crevice_smoke_100" ); + level._effect[ "fx_zmb_lava_smoke_tall" ] = loadfx( "maps/zombie/fx_zmb_lava_smoke_tall" ); + level._effect[ "fx_zmb_lava_smoke_pit" ] = loadfx( "maps/zombie/fx_zmb_lava_smoke_pit" ); + level._effect[ "fx_zmb_tranzit_bowling_sign_fog" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bowling_sign_fog" ); + level._effect[ "fx_zmb_tranzit_lava_distort" ] = loadfx( "maps/zombie/fx_zmb_tranzit_lava_distort" ); + level._effect[ "fx_zmb_tranzit_lava_distort_sm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_lava_distort_sm" ); + level._effect[ "fx_zmb_tranzit_lava_distort_detail" ] = loadfx( "maps/zombie/fx_zmb_tranzit_lava_distort_detail" ); + level._effect[ "fx_zmb_tranzit_fire_med" ] = loadfx( "maps/zombie/fx_zmb_tranzit_fire_med" ); + level._effect[ "fx_zmb_tranzit_fire_lrg" ] = loadfx( "maps/zombie/fx_zmb_tranzit_fire_lrg" ); + level._effect[ "fx_zmb_tranzit_smk_column_lrg" ] = loadfx( "maps/zombie/fx_zmb_tranzit_smk_column_lrg" ); + level._effect[ "fx_zmb_papers_windy_slow" ] = loadfx( "maps/zombie/fx_zmb_papers_windy_slow" ); + level._effect[ "fx_zmb_tranzit_god_ray_short_warm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_short_warm" ); + level._effect[ "fx_zmb_tranzit_god_ray_vault" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_vault" ); + level._effect[ "fx_zmb_tranzit_key_glint" ] = loadfx( "maps/zombie/fx_zmb_tranzit_key_glint" ); + level._effect[ "fx_zmb_tranzit_god_ray_interior_med" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_interior_med" ); + level._effect[ "fx_zmb_tranzit_god_ray_interior_long" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_interior_long" ); + level._effect[ "fx_zmb_tranzit_god_ray_depot_cool" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_depot_cool" ); + level._effect[ "fx_zmb_tranzit_god_ray_depot_warm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_depot_warm" ); + level._effect[ "fx_zmb_tranzit_god_ray_tunnel_warm" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_tunnel_warm" ); + level._effect[ "fx_zmb_tranzit_god_ray_pwr_station" ] = loadfx( "maps/zombie/fx_zmb_tranzit_god_ray_pwr_station" ); + level._effect[ "fx_zmb_tranzit_light_safety" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_safety" ); + level._effect[ "fx_zmb_tranzit_light_safety_off" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_safety_off" ); + level._effect[ "fx_zmb_tranzit_light_safety_max" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_safety_max" ); + level._effect[ "fx_zmb_tranzit_light_safety_ric" ] = loadfx( "maps/zombie/fx_zmb_tranzit_light_safety_ric" ); + level._effect[ "fx_zmb_tranzit_bridge_dest" ] = loadfx( "maps/zombie/fx_zmb_tranzit_bridge_dest" ); + level._effect[ "fx_zmb_tranzit_power_pulse" ] = loadfx( "maps/zombie/fx_zmb_tranzit_power_pulse" ); + level._effect[ "fx_zmb_tranzit_power_on" ] = loadfx( "maps/zombie/fx_zmb_tranzit_power_on" ); + level._effect[ "fx_zmb_tranzit_power_rising" ] = loadfx( "maps/zombie/fx_zmb_tranzit_power_rising" ); + level._effect[ "fx_zmb_avog_storm" ] = loadfx( "maps/zombie/fx_zmb_avog_storm" ); + level._effect[ "fx_zmb_avog_storm_low" ] = loadfx( "maps/zombie/fx_zmb_avog_storm_low" ); + level._effect[ "glass_impact" ] = loadfx( "maps/zombie/fx_zmb_tranzit_window_dest_lg" ); + level._effect[ "fx_zmb_tranzit_spark_blue_lg_os" ] = loadfx( "maps/zombie/fx_zmb_tranzit_spark_blue_lg_os" ); + level._effect[ "spawn_cloud" ] = loadfx( "maps/zombie/fx_zmb_race_zombie_spawn_cloud" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_dr_gamemodes.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_dr_gamemodes.gsc new file mode 100644 index 0000000..e03b805 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_dr_gamemodes.gsc @@ -0,0 +1,15 @@ +#include maps/mp/zm_transit_turned_diner; +#include maps/mp/zm_transit_dr; +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/zm_transit_utility; +#include maps/mp/zombies/_zm_game_module; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + add_map_gamemode( "zcleansed", ::maps/mp/zm_transit_dr::zcleansed_preinit, undefined, undefined ); + add_map_gamemode( "zturned", ::maps/mp/zm_transit_dr::zturned_preinit, undefined, undefined ); + add_map_location_gamemode( "zcleansed", "diner", ::maps/mp/zm_transit_turned_diner::precache, ::maps/mp/zm_transit_turned_diner::main ); +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_lava.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_lava.gsc new file mode 100644 index 0000000..4b5bb0f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_lava.gsc @@ -0,0 +1,384 @@ +#include maps/mp/animscripts/zm_death; +#include maps/mp/_visionset_mgr; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +object_touching_lava() +{ + if ( !isDefined( level.lava ) ) + { + level.lava = getentarray( "lava_damage", "targetname" ); + } + if ( !isDefined( level.lava ) || level.lava.size < 1 ) + { + return 0; + } + if ( isDefined( self.lasttouching ) && self istouching( self.lasttouching ) ) + { + return 1; + } + i = 0; + while ( i < level.lava.size ) + { + if ( distancesquared( self.origin, level.lava[ i ].origin ) < 2250000 ) + { + if ( isDefined( level.lava[ i ].target ) ) + { + if ( self istouching( level.lava[ i ].volume ) ) + { + if ( isDefined( level.lava[ i ].script_float ) && level.lava[ i ].script_float <= 0,1 ) + { + return 0; + } + self.lasttouching = level.lava[ i ].volume; + return 1; + } + } + else + { + if ( self istouching( level.lava[ i ] ) ) + { + self.lasttouching = level.lava[ i ]; + return 1; + } + } + } + i++; + } + self.lasttouching = undefined; + return 0; +} + +lava_damage_init() +{ + lava = getentarray( "lava_damage", "targetname" ); + if ( !isDefined( lava ) ) + { + return; + } + array_thread( lava, ::lava_damage_think ); +} + +lava_damage_think() +{ + self._trap_type = ""; + if ( isDefined( self.script_noteworthy ) ) + { + self._trap_type = self.script_noteworthy; + } + if ( isDefined( self.target ) ) + { + self.volume = getent( self.target, "targetname" ); +/# + assert( isDefined( self.volume ), "No volume found for lava target " + self.target ); +#/ + } + while ( 1 ) + { + self waittill( "trigger", ent ); + if ( isDefined( ent.ignore_lava_damage ) && ent.ignore_lava_damage ) + { + continue; + } + while ( isDefined( ent.is_burning ) ) + { + continue; + } + if ( isDefined( self.target ) && !ent istouching( self.volume ) ) + { + continue; + } + if ( isplayer( ent ) ) + { + switch( self._trap_type ) + { + case "fire": + default: + if ( !isDefined( self.script_float ) || self.script_float >= 0,1 ) + { + ent thread player_lava_damage( self ); + } + break; + } + break; + continue; + } + else if ( !isDefined( ent.marked_for_death ) ) + { + switch( self._trap_type ) + { + case "fire": + default: + if ( !isDefined( self.script_float ) || self.script_float >= 0,1 ) + { + ent thread zombie_lava_damage( self ); + } + break; + break; + } + } +} +} + +player_lava_damage( trig ) +{ + self endon( "zombified" ); + self endon( "death" ); + self endon( "disconnect" ); + max_dmg = 15; + min_dmg = 5; + burn_time = 1; + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + return; + } + self thread player_stop_burning(); + if ( isDefined( trig.script_float ) ) + { + max_dmg *= trig.script_float; + min_dmg *= trig.script_float; + burn_time *= trig.script_float; + if ( burn_time >= 1,5 ) + { + burn_time = 1,5; + } + } + if ( !isDefined( self.is_burning ) && is_player_valid( self ) ) + { + self.is_burning = 1; + maps/mp/_visionset_mgr::vsmgr_activate( "overlay", "zm_transit_burn", self, burn_time, level.zm_transit_burn_max_duration ); + self notify( "burned" ); + if ( isDefined( trig.script_float ) && trig.script_float >= 0,1 ) + { + self thread player_burning_fx(); + } + if ( !self hasperk( "specialty_armorvest" ) || ( self.health - 100 ) < 1 ) + { + radiusdamage( self.origin, 10, max_dmg, min_dmg ); + wait 0,5; + self.is_burning = undefined; + return; + } + else + { + if ( self hasperk( "specialty_armorvest" ) ) + { + self dodamage( 15, self.origin ); + } + else + { + self dodamage( 1, self.origin ); + } + wait 0,5; + self.is_burning = undefined; + } + } +} + +player_stop_burning() +{ + self notify( "player_stop_burning" ); + self endon( "player_stop_burning" ); + self endon( "death_or_disconnect" ); + self waittill( "zombified" ); + self notify( "stop_flame_damage" ); + maps/mp/_visionset_mgr::vsmgr_deactivate( "overlay", "zm_transit_burn", self ); +} + +zombie_burning_fx() +{ + self endon( "death" ); + if ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + return; + } + self.is_on_fire = 1; + self thread maps/mp/animscripts/zm_death::on_fire_timeout(); + if ( isDefined( level._effect ) && isDefined( level._effect[ "lava_burning" ] ) ) + { + if ( !self.isdog ) + { + playfxontag( level._effect[ "lava_burning" ], self, "J_SpineLower" ); + self thread zombie_burning_audio(); + } + } + if ( isDefined( level._effect ) && isDefined( level._effect[ "character_fire_death_sm" ] ) ) + { + wait 1; + if ( randomint( 2 ) > 1 ) + { + tagarray = []; + tagarray[ 0 ] = "J_Elbow_LE"; + tagarray[ 1 ] = "J_Elbow_RI"; + tagarray[ 2 ] = "J_Knee_RI"; + tagarray[ 3 ] = "J_Knee_LE"; + tagarray = randomize_array( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); + return; + } + else + { + tagarray[ 0 ] = "J_Wrist_RI"; + tagarray[ 1 ] = "J_Wrist_LE"; + if ( !isDefined( self.a.gib_ref ) || self.a.gib_ref != "no_legs" ) + { + tagarray[ 2 ] = "J_Ankle_RI"; + tagarray[ 3 ] = "J_Ankle_LE"; + } + tagarray = randomize_array( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); + } + } +} + +zombie_burning_audio() +{ + self playloopsound( "zmb_fire_loop" ); + self waittill_either( "stop_flame_damage", "death" ); + if ( isDefined( self ) && isalive( self ) ) + { + self stoploopsound( 0,25 ); + } +} + +player_burning_fx() +{ + self endon( "death" ); + if ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + return; + } + if ( isDefined( self.no_burning_sfx ) && !self.no_burning_sfx ) + { + self thread player_burning_audio(); + } + self.is_on_fire = 1; + self thread maps/mp/animscripts/zm_death::on_fire_timeout(); + if ( isDefined( level._effect ) && isDefined( level._effect[ "character_fire_death_sm" ] ) ) + { + playfxontag( level._effect[ "character_fire_death_sm" ], self, "J_SpineLower" ); + } +} + +player_burning_audio() +{ + fire_ent = spawn( "script_model", self.origin ); + wait_network_frame(); + fire_ent linkto( self ); + fire_ent playloopsound( "evt_plr_fire_loop" ); + self waittill_any( "stop_flame_damage", "stop_flame_sounds", "death", "discoonect" ); + fire_ent delete(); +} + +zombie_lava_damage( trap ) +{ + self endon( "death" ); + zombie_dmg = 1; + if ( isDefined( self.script_float ) ) + { + zombie_dmg *= self.script_float; + } + switch( trap._trap_type ) + { + case "fire": + default: + if ( isDefined( self.animname ) || !isDefined( self.is_on_fire ) && !self.is_on_fire ) + { + if ( level.burning_zombies.size < 6 && zombie_dmg >= 1 ) + { + level.burning_zombies[ level.burning_zombies.size ] = self; + self playsound( "ignite" ); + self thread zombie_burning_fx(); + self thread zombie_burning_watch(); + self thread zombie_burning_dmg(); + self thread zombie_exploding_death( zombie_dmg, trap ); + wait randomfloat( 1,25 ); + } + } + if ( self.health > ( level.zombie_health / 2 ) && self.health > zombie_dmg ) + { + self dodamage( zombie_dmg, self.origin, trap ); + } + break; + } +} + +zombie_burning_watch() +{ + self waittill_any( "stop_flame_damage", "death" ); + arrayremovevalue( level.burning_zombies, self ); +} + +zombie_exploding_death( zombie_dmg, trap ) +{ + self endon( "stop_flame_damage" ); + if ( isDefined( self.isdog ) && self.isdog && isDefined( self.a.nodeath ) ) + { + return; + } + while ( isDefined( self ) && self.health >= zombie_dmg && isDefined( self.is_on_fire ) && self.is_on_fire ) + { + wait 0,5; + } + if ( isDefined( self ) && isDefined( self.is_on_fire ) && self.is_on_fire && isDefined( self.damageweapon ) && self.damageweapon != "tazer_knuckles_zm" || self.damageweapon == "jetgun_zm" && isDefined( self.knuckles_extinguish_flames ) && self.knuckles_extinguish_flames ) + { + return; + } + tag = "J_SpineLower"; + if ( isDefined( self.animname ) && self.animname == "zombie_dog" ) + { + tag = "tag_origin"; + } + if ( is_mature() ) + { + if ( isDefined( level._effect[ "zomb_gib" ] ) ) + { + playfx( level._effect[ "zomb_gib" ], self gettagorigin( tag ) ); + } + } + else + { + if ( isDefined( level._effect[ "spawn_cloud" ] ) ) + { + playfx( level._effect[ "spawn_cloud" ], self gettagorigin( tag ) ); + } + } + self radiusdamage( self.origin, 128, 30, 15, undefined, "MOD_EXPLOSIVE" ); + self ghost(); + if ( isDefined( self.isdog ) && self.isdog ) + { + self hide(); + } + else + { + self delay_thread( 1, ::self_delete ); + } +} + +zombie_burning_dmg() +{ + self endon( "death" ); + damageradius = 25; + damage = 2; + while ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + eyeorigin = self geteye(); + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( is_player_valid( players[ i ] ) ) + { + playereye = players[ i ] geteye(); + if ( distancesquared( eyeorigin, playereye ) < ( damageradius * damageradius ) ) + { + players[ i ] dodamage( damage, self.origin, self ); + players[ i ] notify( "burned" ); + } + } + i++; + } + wait 1; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_power.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_power.gsc new file mode 100644 index 0000000..ec16632 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_power.gsc @@ -0,0 +1,583 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_zonemgr; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/_visionset_mgr; +#include maps/mp/zm_transit_utility; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +initializepower() +{ + level thread electricswitch(); + level thread powerevent(); + registerclientfield( "toplayer", "power_rumble", 1, 1, "int" ); + if ( !isDefined( level.vsmgr_prio_visionset_zm_transit_power_high_low ) ) + { + level.vsmgr_prio_visionset_zm_transit_power_high_low = 20; + } + maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_power_high_low", 1, level.vsmgr_prio_visionset_zm_transit_power_high_low, 7, 1, ::vsmgr_lerp_power_up_down, 0 ); +} + +precache_models() +{ +} + +elecswitchbuildable() +{ + lever = getent( "powerswitch_p6_zm_buildable_pswitch_lever", "targetname" ); + hand = getent( "powerswitch_p6_zm_buildable_pswitch_hand", "targetname" ); + hand linkto( lever ); + hand hide(); + getent( "powerswitch_p6_zm_buildable_pswitch_body", "targetname" ) hide(); + lever hide(); + wait_for_buildable( "powerswitch" ); +} + +electricswitch() +{ + flag_init( "switches_on" ); + level thread wait_for_power(); + trig = getent( "powerswitch_buildable_trigger_power", "targetname" ); + trig setinvisibletoall(); + elecswitchbuildable(); + master_switch = getent( "powerswitch_p6_zm_buildable_pswitch_lever", "targetname" ); + while ( 1 ) + { + trig sethintstring( &"ZOMBIE_ELECTRIC_SWITCH" ); + trig setvisibletoall(); + trig waittill( "trigger", user ); + trig setinvisibletoall(); + master_switch rotateroll( -90, 0,3 ); + master_switch playsound( "zmb_switch_flip" ); + master_switch waittill( "rotatedone" ); + playfx( level._effect[ "switch_sparks" ], getstruct( "elec_switch_fx", "targetname" ).origin ); + master_switch playsound( "zmb_turn_on" ); + level.power_event_in_progress = 1; + level thread power_event_rumble_and_quake(); + flag_set( "switches_on" ); + clientnotify( "pwr" ); + level thread avogadro_show_vox( user ); + level waittill( "power_event_complete" ); + clientnotify( "pwr" ); + flag_set( "power_on" ); + level.power_event_in_progress = 0; + level thread bus_station_pa_vox(); + if ( isDefined( user ) ) + { + user maps/mp/zombies/_zm_stats::increment_client_stat( "power_turnedon", 0 ); + user maps/mp/zombies/_zm_stats::increment_player_stat( "power_turnedon" ); + } + trig sethintstring( &"ZOMBIE_ELECTRIC_SWITCH_OFF" ); + trig setvisibletoall(); + trig waittill( "trigger", user ); + trig setinvisibletoall(); + master_switch rotateroll( 90, 0,3 ); + master_switch playsound( "zmb_switch_flip" ); + master_switch waittill( "rotatedone" ); + level.power_event_in_progress = 1; + level thread power_event_rumble_and_quake(); + flag_clear( "switches_on" ); + level waittill( "power_event_complete" ); + clientnotify( "pwo" ); + flag_clear( "power_on" ); + level.power_event_in_progress = 0; + level.power_cycled = 1; + if ( isDefined( user ) ) + { + user maps/mp/zombies/_zm_stats::increment_client_stat( "power_turnedoff", 0 ); + user maps/mp/zombies/_zm_stats::increment_player_stat( "power_turnedoff" ); + } + } +} + +vsmgr_lerp_power_up_down( player, opt_param_1, opt_param_2 ) +{ + self vsmgr_set_state_active( player, opt_param_1 ); +} + +power_event_vision_set_post_event() +{ + self endon( "end_vision_set_power" ); + level endon( "end_game" ); + self endon( "disconnect" ); + if ( flag( "power_on" ) ) + { + return; + } + level waittill( "power_event_complete" ); + maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_power_high_low", self, 0 ); +} + +power_event_vision_set() +{ + self endon( "end_vision_set_power" ); + level endon( "end_game" ); + level endon( "power_event_complete" ); + self endon( "disconnect" ); + if ( flag( "power_on" ) ) + { + return; + } + duration = 2; + startgoal = 1; + endgoal = 0; + self power_event_vision_set_lerp( duration, startgoal, endgoal ); + while ( 1 ) + { + if ( randomint( 100 ) > 50 ) + { + duration = randomintrange( 2, 6 ) / 5; + startgoal = endgoal; + if ( startgoal > 0,6 ) + { + endgoal = randomfloatrange( 0, 0,5 ); + } + else + { + endgoal = 1; + } + self power_event_vision_set_lerp( duration, startgoal, endgoal ); + } + else if ( randomint( 100 ) > 75 ) + { + x = 2; + while ( x > 0 ) + { + duration = 0,2; + startgoal = endgoal; + if ( startgoal > 0,6 ) + { + endgoal = 0; + } + else + { + endgoal = 1; + } + self power_event_vision_set_lerp( duration, startgoal, endgoal ); + x--; + + } + } + else duration = 0,4; + startgoal = endgoal; + if ( startgoal > 0,6 ) + { + endgoal = randomfloatrange( 0, 0,5 ); + } + else + { + endgoal = randomfloatrange( 0,5, 1 ); + } + self power_event_vision_set_lerp( duration, startgoal, endgoal ); + wait 0,05; + } +} + +power_event_vision_set_lerp( duration, startgoal, endgoal ) +{ + self endon( "end_vision_set_power" ); + level endon( "end_game" ); + level endon( "power_event_complete" ); + self endon( "disconnect" ); + incs = int( duration / 0,05 ); + if ( incs == 0 ) + { + incs = 1; + } + incsgoal = ( endgoal - startgoal ) / incs; + currentgoal = startgoal; + i = 0; + while ( i < incs ) + { + currentgoal += incsgoal; + maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_power_high_low", self, currentgoal ); + wait 0,05; + i++; + } + maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_power_high_low", self, endgoal ); +} + +power_event_rumble_and_quake( power_on ) +{ + level endon( "end_game" ); + while ( isDefined( level.power_event_in_progress ) && level.power_event_in_progress ) + { + players = get_players(); + _a284 = players; + _k284 = getFirstArrayKey( _a284 ); + while ( isDefined( _k284 ) ) + { + player = _a284[ _k284 ]; + if ( !is_player_valid( player ) ) + { + } + else if ( player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) || player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_pcr", 1 ) ) + { + if ( isDefined( player.power_rumble_active ) && !player.power_rumble_active ) + { + player thread power_event_rumble_and_quake_player(); + } + } + else + { + if ( isDefined( player.power_rumble_active ) && player.power_rumble_active ) + { + player setclientfieldtoplayer( "power_rumble", 0 ); + player.power_rumble_active = 0; + } + } + _k284 = getNextArrayKey( _a284, _k284 ); + } + wait 1; + } + players = get_players(); + _a311 = players; + _k311 = getFirstArrayKey( _a311 ); + while ( isDefined( _k311 ) ) + { + player = _a311[ _k311 ]; + player setclientfieldtoplayer( "power_rumble", 0 ); + player notify( "end_vision_set_power" ); + maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_power_high_low", player ); + _k311 = getNextArrayKey( _a311, _k311 ); + } +} + +power_event_rumble_and_quake_player() +{ + self endon( "disconnect" ); + self.power_rumble_active = 1; + self setclientfieldtoplayer( "power_rumble", 1 ); + self thread power_event_vision_set(); + self thread power_event_vision_set_post_event(); + while ( !self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) && self maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_pcr", 1 ) && isDefined( level.power_event_in_progress ) && level.power_event_in_progress ) + { + wait 1; + } + self.power_rumble_active = 0; + self notify( "end_vision_set_power" ); + self setclientfieldtoplayer( "power_rumble", 0 ); +} + +avogadroreleasefromchamberevent() +{ + exploder( 500 ); + level.zones[ "zone_prr" ].is_spawning_allowed = 0; + level.zones[ "zone_pcr" ].is_spawning_allowed = 0; + level thread killzombiesinpowerstation(); + while ( !flag( "power_on" ) ) + { + waittime = randomfloatrange( 1,5, 4,5 ); + players = get_players(); + _a354 = players; + _k354 = getFirstArrayKey( _a354 ); + while ( isDefined( _k354 ) ) + { + player = _a354[ _k354 ]; + if ( player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) ) + { + player setelectrified( waittime - 1 ); + player shellshock( "electrocution", waittime ); + wait 0,05; + } + _k354 = getNextArrayKey( _a354, _k354 ); + } + waittime += 1,5; + level waittill_notify_or_timeout( "power_on", waittime ); + } + players = get_players(); + _a372 = players; + _k372 = getFirstArrayKey( _a372 ); + while ( isDefined( _k372 ) ) + { + player = _a372[ _k372 ]; + if ( player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) ) + { + player setelectrified( 0,25 ); + player shellshock( "electrocution", 1,5 ); + wait 0,05; + } + _k372 = getNextArrayKey( _a372, _k372 ); + } + level.zones[ "zone_prr" ].is_spawning_allowed = 1; + level.zones[ "zone_pcr" ].is_spawning_allowed = 1; + stop_exploder( 500 ); +} + +killzombiesinpowerstation() +{ + level endon( "power_on" ); + radiussq = 122500; + while ( 1 ) + { + zombies = getaiarray( level.zombie_team ); + _a401 = zombies; + _k401 = getFirstArrayKey( _a401 ); + while ( isDefined( _k401 ) ) + { + zombie = _a401[ _k401 ]; + if ( !isDefined( zombie ) ) + { + } + else if ( isDefined( zombie.is_avogadro ) && zombie.is_avogadro ) + { + } + else + { + if ( distancesquared( ( 11344, 7590, -729 ), zombie.origin ) < radiussq ) + { + break; + } + else + { + 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.has_been_damaged_by_player ) && !zombie.has_been_damaged_by_player ) + { + level.zombie_total++; + } + zombie dodamage( zombie.health + 100, zombie.origin ); + wait randomfloatrange( 0,05, 0,15 ); + } + } + } + _k401 = getNextArrayKey( _a401, _k401 ); + } + wait 1; + } +} + +wait_for_power() +{ + while ( 1 ) + { + flag_wait( "power_on" ); + maps/mp/zombies/_zm_perks::perk_unpause_all_perks(); + wait_network_frame(); + level setclientfield( "zombie_power_on", 1 ); + enable_morse_code(); + raisepowerplantgates(); + flag_waitopen( "power_on" ); + level setclientfield( "zombie_power_on", 0 ); + disable_morse_code(); + } +} + +raisepowerplantgates() +{ + gate1 = []; + gate2 = []; + gate1 = getentarray( "security_booth_gate", "targetname" ); + gate2 = getentarray( "security_booth_gate_2", "targetname" ); + while ( isDefined( gate1 ) ) + { + i = 0; + while ( i < gate1.size ) + { + gate1[ i ] thread raisegate( -90 ); + i++; + } + } + while ( isDefined( gate2 ) ) + { + i = 0; + while ( i < gate2.size ) + { + gate2[ i ] thread raisegate( 90 ); + i++; + } + } + level.the_bus notify( "OnPowerOn" ); +} + +raisegate( degrees ) +{ + self rotatepitch( degrees, 4 ); +} + +powerevent() +{ + reactor_core_mover = getent( "core_mover", "targetname" ); + reactor_core_audio = spawn( "script_origin", reactor_core_mover.origin ); + if ( !isDefined( reactor_core_mover ) ) + { + return; + } + thread blockstairs(); + thread linkentitiestocoremover( reactor_core_mover ); + while ( 1 ) + { + flag_wait( "switches_on" ); + thread dropreactordoors(); + thread raisereactordoors(); + power_event_time = 30; + reactor_core_mover playsound( "zmb_power_rise_start" ); + reactor_core_mover playloopsound( "zmb_power_rise_loop", 0,75 ); + reactor_core_mover thread coremove( power_event_time ); + if ( isDefined( level.avogadro ) && isDefined( level.avogadro.state ) && level.avogadro.state == "chamber" ) + { + level thread avogadroreleasefromchamberevent(); + } + wait power_event_time; + reactor_core_mover stoploopsound( 0,5 ); + reactor_core_audio playloopsound( "zmb_power_on_loop", 2 ); + reactor_core_mover playsound( "zmb_power_rise_stop" ); + level notify( "power_event_complete" ); + flag_waitopen( "switches_on" ); + thread dropreactordoors(); + thread raisereactordoors(); + playsoundatposition( "zmb_power_off_quad", ( 0, 0, 0 ) ); + reactor_core_mover playsound( "zmb_power_rise_start" ); + reactor_core_mover playloopsound( "zmb_power_rise_loop", 0,75 ); + reactor_core_mover thread coremove( power_event_time, 1 ); + wait power_event_time; + reactor_core_mover stoploopsound( 0,5 ); + reactor_core_audio stoploopsound( 0,5 ); + reactor_core_mover playsound( "zmb_power_rise_stop" ); + level notify( "power_event_complete" ); + } +} + +corerotate( time ) +{ + self rotateyaw( 180, time ); +} + +coremove( time, down ) +{ + if ( isDefined( down ) && down ) + { + self movez( -160, time ); + } + else + { + self movez( 160, time ); + } +} + +blockstairs() +{ + stairs_blocker = getent( "reactor_core_stairs_blocker", "targetname" ); + if ( !isDefined( stairs_blocker ) ) + { + return; + } + stairs_blocker movez( -128, 1 ); +} + +linkentitiestocoremover( reactor_core_mover ) +{ + core_entities = getentarray( "core_entity", "script_noteworthy" ); + i = 0; + while ( i < core_entities.size ) + { + next_ent = core_entities[ i ]; + if ( next_ent.classname == "trigger_use_touch" ) + { + next_ent enablelinkto(); + } + next_ent linkto( reactor_core_mover, "tag_origin" ); + i++; + } +} + +dropreactordoors() +{ + doors = getentarray( "reactor_core_door", "targetname" ); + if ( doors.size == 0 ) + { + return; + } + i = 0; + while ( i < doors.size ) + { + next_door = doors[ i ]; + next_door movez( -128, 1 ); + next_door disconnectpaths(); + i++; + } +} + +raisereactordoors() +{ + level waittill( "power_event_complete" ); + doors = getentarray( "reactor_core_door", "targetname" ); + if ( doors.size == 0 ) + { + return; + } + i = 0; + while ( i < doors.size ) + { + next_door = doors[ i ]; + next_door movez( 128, 1 ); + next_door connectpaths(); + i++; + } +} + +avogadro_show_vox( user ) +{ + wait 1; + if ( isDefined( user ) ) + { + user thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "power", "power_on" ); + } + wait 8; + players = get_players(); + players = array_randomize( players ); + _a655 = players; + _k655 = getFirstArrayKey( _a655 ); + while ( isDefined( _k655 ) ) + { + player = _a655[ _k655 ]; + if ( player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) || player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_pcr", 1 ) ) + { + player thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "power", "power_core" ); + break; + } + else + { + _k655 = getNextArrayKey( _a655, _k655 ); + } + } + wait 15; + players = get_players(); + players = array_randomize( players ); + _a668 = players; + _k668 = getFirstArrayKey( _a668 ); + while ( isDefined( _k668 ) ) + { + player = _a668[ _k668 ]; + if ( player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_prr", 1 ) || player maps/mp/zombies/_zm_zonemgr::entity_in_zone( "zone_pcr", 1 ) ) + { + player thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "avogadro_reveal" ); + return; + } + else + { + _k668 = getNextArrayKey( _a668, _k668 ); + } + } +} + +bus_station_pa_vox() +{ + level endon( "power_off" ); + while ( 1 ) + { + level.station_pa_vox = array_randomize( level.station_pa_vox ); + _a686 = level.station_pa_vox; + _k686 = getFirstArrayKey( _a686 ); + while ( isDefined( _k686 ) ) + { + line = _a686[ _k686 ]; + playsoundatposition( line, ( -6848, 5056, 56 ) ); + wait randomintrange( 12, 15 ); + _k686 = getNextArrayKey( _a686, _k686 ); + } + wait 1; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_turned_diner.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_turned_diner.gsc new file mode 100644 index 0000000..6bbc7c1 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_turned_diner.gsc @@ -0,0 +1,63 @@ +#include maps/mp/gametypes_zm/zcleansed; +#include maps/mp/zombies/_zm_game_module; +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +precache() +{ +} + +main() +{ + getspawnpoints(); + maps/mp/gametypes_zm/_zm_gametype::setup_standard_objects( "diner" ); + if ( getDvar( "ui_gametype" ) == "zcleansed" ) + { + maps/mp/zombies/_zm_game_module::set_current_game_module( level.game_module_cleansed_index ); + } + else + { + maps/mp/zombies/_zm_game_module::set_current_game_module( level.game_module_turned_index ); + } + setdvar( "aim_target_player_enabled", 1 ); + diner_front_door = getentarray( "auto2278", "targetname" ); + array_thread( diner_front_door, ::self_delete ); + diner_side_door = getentarray( "auto2278", "targetname" ); + array_thread( diner_side_door, ::self_delete ); + garage_all_door = getentarray( "auto2279", "targetname" ); + array_thread( garage_all_door, ::self_delete ); + level.cleansed_loadout = getgametypesetting( "cleansedLoadout" ); + if ( level.cleansed_loadout ) + { + level.humanify_custom_loadout = ::maps/mp/gametypes_zm/zcleansed::gunprogressionthink; + level.cleansed_zombie_round = 5; + } + else + { + level.humanify_custom_loadout = ::maps/mp/gametypes_zm/zcleansed::shotgunloadout; + level.cleansed_zombie_round = 2; + } + collision = spawn( "script_model", ( -5000, -6700, 0 ), 1 ); + collision setmodel( "zm_collision_transit_diner_survival" ); + collision disconnectpaths(); +} + +getspawnpoints() +{ + level._turned_zombie_respawnpoints = getstructarray( "initial_spawn_points", "targetname" ); + level._turned_powerup_spawnpoints = []; + level._turned_powerup_spawnpoints[ 0 ] = spawnstruct(); + level._turned_powerup_spawnpoints[ 0 ].origin = ( -6072, -7808, 8 ); + level._turned_powerup_spawnpoints[ 1 ] = spawnstruct(); + level._turned_powerup_spawnpoints[ 1 ].origin = ( -5408, -6824, -53,5431 ); + level._turned_powerup_spawnpoints[ 2 ] = spawnstruct(); + level._turned_powerup_spawnpoints[ 2 ].origin = ( -4760, -7144, -64 ); + level._turned_powerup_spawnpoints[ 3 ] = spawnstruct(); + level._turned_powerup_spawnpoints[ 3 ].origin = ( -4864, -7864, -62,35 ); +} + +onendgame() +{ +} diff --git a/zm_transit_dr_patch/maps/mp/zm_transit_utility.gsc b/zm_transit_dr_patch/maps/mp/zm_transit_utility.gsc new file mode 100644 index 0000000..b14d3d6 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zm_transit_utility.gsc @@ -0,0 +1,613 @@ +#include maps/mp/_compass; +#include maps/mp/zombies/_zm_zonemgr; +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +playercanafford( player, cost ) +{ + if ( !player usebuttonpressed() ) + { + return 0; + } + if ( player in_revive_trigger() ) + { + return 0; + } + if ( isDefined( cost ) ) + { + if ( player.score < cost ) + { + return 0; + } + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + } + return 1; +} + +setinvisibletoall() +{ + players = get_players(); + playerindex = 0; + while ( playerindex < players.size ) + { + self setinvisibletoplayer( players[ playerindex ] ); + playerindex++; + } +} + +spawnandlinkfxtotag( effect, ent, tag ) +{ + fxent = spawn( "script_model", ent gettagorigin( tag ) ); + fxent setmodel( "tag_origin" ); + fxent linkto( ent, tag ); + wait_network_frame(); + playfxontag( effect, fxent, "tag_origin" ); + return fxent; +} + +spawnandlinkfxtooffset( effect, ent, offsetorigin, offsetangles ) +{ + fxent = spawn( "script_model", ( 0, 0, 0 ) ); + fxent setmodel( "tag_origin" ); + fxent linkto( ent, "", offsetorigin, offsetangles ); + wait_network_frame(); + playfxontag( effect, fxent, "tag_origin" ); + return fxent; +} + +custom_weapon_wall_prices() +{ + if ( !isDefined( level.zombie_include_weapons ) ) + { + return; + } + weapon_spawns = []; + weapon_spawns = getentarray( "weapon_upgrade", "targetname" ); + i = 0; + while ( i < weapon_spawns.size ) + { + if ( !isDefined( level.zombie_weapons[ weapon_spawns[ i ].zombie_weapon_upgrade ] ) ) + { + i++; + continue; + } + else + { + if ( isDefined( weapon_spawns[ i ].script_int ) ) + { + cost = weapon_spawns[ i ].script_int; + level.zombie_weapons[ weapon_spawns[ i ].zombie_weapon_upgrade ].cost = cost; + } + } + i++; + } +} + +pause_zombie_spawning() +{ + if ( !isDefined( level.spawnpausecount ) ) + { + level.spawnpausecount = 0; + } + level.spawnpausecount++; + flag_clear( "spawn_zombies" ); +} + +try_resume_zombie_spawning() +{ + if ( !isDefined( level.spawnpausecount ) ) + { + level.spawnpausecount = 0; + } + level.spawnpausecount--; + + if ( level.spawnpausecount <= 0 ) + { + level.spawnpausecount = 0; + flag_set( "spawn_zombies" ); + } +} + +triggerweaponslockerwatch() +{ + unitrigger_stub = spawnstruct(); + unitrigger_stub.origin = ( 8236, -6844, 144 ); + unitrigger_stub.angles = vectorScale( ( 0, 0, 0 ), 30 ); + unitrigger_stub.script_length = 16; + unitrigger_stub.script_width = 32; + unitrigger_stub.script_height = 64; + unitrigger_stub.origin -= anglesToRight( unitrigger_stub.angles ) * ( unitrigger_stub.script_length / 2 ); + unitrigger_stub.targetname = "weapon_locker"; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.clientfieldname = "weapon_locker"; + maps/mp/zombies/_zm_unitrigger::unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.prompt_and_visibility_func = ::triggerweaponslockerthinkupdateprompt; + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::triggerweaponslockerthink ); +} + +triggerweaponslockerisvalidweapon( weaponname ) +{ + if ( is_offhand_weapon( weaponname ) || is_limited_weapon( weaponname ) ) + { + return 0; + } + return 1; +} + +triggerweaponslockerisvalidweaponpromptupdate( player, weaponname ) +{ + retrievingweapon = player maps/mp/zombies/_zm_stats::has_stored_weapondata(); + if ( !sessionmodeisonlinegame() ) + { + if ( isDefined( player.stored_weapon_data ) ) + { + retrievingweapon = 1; + } + } + if ( !retrievingweapon ) + { + if ( !triggerweaponslockerisvalidweapon( weaponname ) ) + { + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); + } + else + { + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_STORE" ); + } + } + else + { + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + } +} + +triggerweaponslockerthinkupdateprompt( player ) +{ + self triggerweaponslockerisvalidweaponpromptupdate( player, player getcurrentweapon() ); + return 1; +} + +triggerweaponslockerthink() +{ + self.parent_player thread triggerweaponslockerweaponchangethink( self ); + online_game = sessionmodeisonlinegame(); + while ( 1 ) + { + self waittill( "trigger", player ); + retrievingweapon = player maps/mp/zombies/_zm_stats::has_stored_weapondata(); + if ( !online_game ) + { + if ( isDefined( player.stored_weapon_data ) ) + { + retrievingweapon = 1; + } + } + if ( !retrievingweapon ) + { + curweapon = player getcurrentweapon(); + curweapon = player maps/mp/zombies/_zm_weapons::switch_from_alt_weapon( curweapon ); + while ( !triggerweaponslockerisvalidweapon( curweapon ) ) + { + continue; + } + weapondata = player maps/mp/zombies/_zm_weapons::get_player_weapondata( player ); + player maps/mp/zombies/_zm_stats::set_stored_weapondata( weapondata ); + if ( !online_game ) + { + player.stored_weapon_data = weapondata; + } +/# + assert( curweapon == weapondata[ "name" ], "weapon data does not match" ); +#/ + player takeweapon( curweapon ); + primaries = player getweaponslistprimaries(); + if ( isDefined( primaries[ 0 ] ) ) + { + player switchtoweapon( primaries[ 0 ] ); + } + else + { + player maps/mp/zombies/_zm_weapons::give_fallback_weapon(); + } + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + player playsoundtoplayer( "evt_fridge_locker_close", player ); + } + else + { + curweapon = player getcurrentweapon(); + primaries = player getweaponslistprimaries(); + weapondata = player maps/mp/zombies/_zm_stats::get_stored_weapondata(); + weapontogive = player maps/mp/zombies/_zm_stats::get_map_weaponlocker_stat( "name" ); + if ( !online_game ) + { + if ( isDefined( player.stored_weapon_data ) ) + { + weapondata = player.stored_weapon_data; + weapontogive = weapondata[ "name" ]; + } + } + curweap_base = maps/mp/zombies/_zm_weapons::get_base_weapon_name( curweapon, 1 ); + weap_base = maps/mp/zombies/_zm_weapons::get_base_weapon_name( weapontogive, 1 ); + while ( player has_weapon_or_upgrade( weap_base ) && weap_base != curweap_base ) + { + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); + wait 3; + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + } + if ( isDefined( player.weaponplusperkon ) && player.weaponplusperkon ) + { + maxweapons = 3; + } + else + { + maxweapons = 2; + } + if ( isDefined( primaries ) || primaries.size >= maxweapons && weapontogive == curweapon ) + { + curweapon = player maps/mp/zombies/_zm_weapons::switch_from_alt_weapon( curweapon ); + while ( !triggerweaponslockerisvalidweapon( curweapon ) ) + { + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_DENY" ); + wait 3; + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + } + curweapondata = player maps/mp/zombies/_zm_weapons::get_player_weapondata( player ); + player takeweapon( curweapondata[ "name" ] ); + player maps/mp/zombies/_zm_weapons::weapondata_give( weapondata ); + player maps/mp/zombies/_zm_stats::clear_stored_weapondata(); + player maps/mp/zombies/_zm_stats::set_stored_weapondata( curweapondata ); + if ( !online_game ) + { + player.stored_weapon_data = curweapondata; + } + player switchtoweapon( weapondata[ "name" ] ); + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + } + else + { + player maps/mp/zombies/_zm_stats::clear_stored_weapondata(); + if ( !online_game ) + { + player.stored_weapon_data = undefined; + } + player maps/mp/zombies/_zm_weapons::weapondata_give( weapondata ); + player switchtoweapon( weapondata[ "name" ] ); + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_STORE" ); + } + player playsoundtoplayer( "evt_fridge_locker_open", player ); + } + wait 0,5; + } +} + +oldtriggerweaponslockerthink() +{ + self.parent_player thread triggerweaponslockerweaponchangethink( self ); + while ( 1 ) + { + self waittill( "trigger", who ); + curweapon = who getcurrentweapon(); + weapontogive = who maps/mp/zombies/_zm_stats::get_map_weaponlocker_stat( "name" ); + clipammotogive = who maps/mp/zombies/_zm_stats::get_map_weaponlocker_stat( "clip" ); + lh_clipammotogive = who maps/mp/zombies/_zm_stats::get_map_weaponlocker_stat( "lh_clip" ); + stockammotogive = who maps/mp/zombies/_zm_stats::get_map_weaponlocker_stat( "stock" ); + retrievingweapon = 1; + if ( isstring( weapontogive ) || weapontogive == "" && isint( weapontogive ) && weapontogive == 0 ) + { + retrievingweapon = 0; + } + if ( !retrievingweapon && !triggerweaponslockerisvalidweapon( curweapon ) ) + { + continue; + } + juststoredweapon = 0; + if ( !retrievingweapon ) + { + weapontogive = undefined; + clipammotogive = undefined; + lh_clipammotogive = undefined; + stockammotogive = undefined; + } + primaries = who getweaponslistprimaries(); + if ( isDefined( who.weaponplusperkon ) && who.weaponplusperkon ) + { + maxweapons = 3; + } + else + { + maxweapons = 2; + } + haswallweapon = undefined; + if ( maps/mp/zombies/_zm_weapons::is_weapon_upgraded( weapontogive ) ) + { + if ( isDefined( weapontogive ) ) + { + haswallweapon = who maps/mp/zombies/_zm_weapons::has_weapon_or_upgrade( maps/mp/zombies/_zm_weapons::get_base_weapon_name( weapontogive ) ); + } + } + else + { + if ( isDefined( weapontogive ) ) + { + haswallweapon = who maps/mp/zombies/_zm_weapons::has_weapon_or_upgrade( weapontogive ); + } + } + if ( haswallweapon || isDefined( primaries ) && primaries.size < maxweapons ) + { + storedweapon = undefined; + storedammoclip = undefined; + storedammolhclip = undefined; + storedammostock = undefined; + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_STORE" ); + who playsoundtoplayer( "evt_fridge_locker_open", who ); + } + else + { + storedweapon = who getcurrentweapon(); + dual_wield_name = weapondualwieldweaponname( storedweapon ); + juststoredweapon = 1; + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "name", storedweapon ); + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "clip", who getweaponammoclip( storedweapon ) ); + if ( dual_wield_name != "none" ) + { + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "lh_clip", who getweaponammoclip( weapondualwieldweaponname( storedweapon ) ) ); + } + else + { + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "lh_clip", 0 ); + } + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "stock", who getweaponammostock( storedweapon ) ); + who takeweapon( storedweapon ); + if ( !isDefined( weapontogive ) ) + { + primaries = who getweaponslistprimaries(); + who switchtoweapon( primaries[ 0 ] ); + } + self sethintstring( &"ZOMBIE_WEAPON_LOCKER_GRAB" ); + who playsoundtoplayer( "evt_fridge_locker_close", who ); + } + if ( isDefined( weapontogive ) ) + { + dual_wield_name = weapondualwieldweaponname( weapontogive ); + if ( haswallweapon ) + { + curretclipammo = who getweaponammoclip( weapontogive ); + if ( isDefined( curretclipammo ) ) + { + stockammotogive += curretclipammo; + } + curretstockammo = who getweaponammostock( weapontogive ); + if ( isDefined( curretstockammo ) ) + { + stockammotogive += curretstockammo; + } + who setweaponammostock( weapontogive, stockammotogive ); + } + else + { + who giveweapon( weapontogive, 0 ); + who setweaponammoclip( weapontogive, clipammotogive ); + if ( dual_wield_name != "none" ) + { + who setweaponammoclip( weapondualwieldweaponname( weapontogive ), lh_clipammotogive ); + } + who setweaponammostock( weapontogive, stockammotogive ); + who switchtoweapon( weapontogive ); + who playsoundtoplayer( "evt_fridge_locker_open", who ); + if ( !is_offhand_weapon( weapontogive ) ) + { + who maps/mp/zombies/_zm_weapons::take_fallback_weapon(); + } + } + if ( !is_true( juststoredweapon ) ) + { + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "name", "" ); + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "clip", 0 ); + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "lh_clip", 0 ); + who maps/mp/zombies/_zm_stats::set_map_weaponlocker_stat( "stock", 0 ); + } + } + else + { + primaries = who getweaponslistprimaries(); + if ( primaries.size > 0 ) + { + who switchtoweapon( primaries[ 0 ] ); + } + } + wait 0,5; + } +} + +triggerweaponslockerweaponchangethink( trigger ) +{ + self endon( "disconnect" ); + self endon( "death" ); + trigger endon( "kill_trigger" ); + while ( 1 ) + { + self waittill( "weapon_change", newweapon ); + trigger triggerweaponslockerisvalidweaponpromptupdate( self, newweapon ); + } +} + +automatonspeak( category, type, response, force_variant, override ) +{ + if ( isDefined( level.automaton ) && !is_true( level.automaton.disabled_by_emp ) ) + { +/# + if ( getDvar( #"6DF184E8" ) == "" ) + { + iprintlnbold( "Automaton VO: " + type ); +#/ + } + if ( type != "leaving" && type != "leaving_warning" ) + { + level.automaton notify( "want_to_be_speaking" ); + level.automaton waittill( "startspeaking" ); + } + level.automaton maps/mp/zombies/_zm_audio::create_and_play_dialog( category, type, response, force_variant, override ); + } +} + +is_thedouche() +{ + return self.characterindex == 0; +} + +is_theconspiracytheorist() +{ + return self.characterindex == 1; +} + +is_thefarmersdaughter() +{ + return self.characterindex == 2; +} + +is_theelectricalengineer() +{ + return self.characterindex == 3; +} + +get_random_encounter_match( location ) +{ + match_pool = []; +/# + assert( match_pool.size > 0, "Could not find a random encounters match for " + location ); +#/ + return random( match_pool ); +} + +transit_breakable_glass_init() +{ + glass = getentarray( "transit_glass", "targetname" ); + if ( level.splitscreen && getDvarInt( "splitscreen_playerCount" ) > 2 ) + { + array_delete( glass ); + return; + } + array_thread( glass, ::transit_breakable_glass ); +} + +transit_breakable_glass() +{ + level endon( "intermission" ); + self.health = 99999; + self setcandamage( 1 ); + self.damage_state = 0; + while ( 1 ) + { + self waittill( "damage", amount, attacker, direction, point, dmg_type ); + if ( isplayer( attacker ) ) + { + if ( self.damage_state == 0 ) + { + self glass_gets_destroyed(); + self.damage_state = 1; + self playsound( "fly_glass_break" ); + } + } + } +} + +glass_gets_destroyed() +{ + if ( isDefined( level._effect[ "glass_impact" ] ) ) + { + playfx( level._effect[ "glass_impact" ], self.origin, anglesToForward( self.angles ) ); + } + wait 0,1; + if ( isDefined( self.model ) && self.damage_state == 0 ) + { + self setmodel( self.model + "_broken" ); + self.damage_state = 1; + return; + } + else + { + self delete(); + return; + } +} + +solo_tombstone_removal() +{ + if ( getnumexpectedplayers() > 1 ) + { + return; + } + level notify( "tombstone_removed" ); + level thread maps/mp/zombies/_zm_perks::perk_machine_removal( "specialty_scavenger" ); +} + +sparking_power_lines() +{ + lines = getentarray( "power_line_sparking", "targetname" ); +} + +disconnect_door_zones( zone_a, zone_b, flag_name ) +{ + level endon( "intermission" ); + level endon( "end_game" ); + while ( 1 ) + { + flag_wait( flag_name ); + azone = level.zones[ zone_a ].adjacent_zones[ zone_b ]; + azone maps/mp/zombies/_zm_zonemgr::door_close_disconnect( flag_name ); + } +} + +enable_morse_code() +{ + level clientnotify( "mc1" ); +} + +disable_morse_code() +{ + level clientnotify( "mc0" ); +} + +transit_pathnode_spawning() +{ + precachemodel( "collision_wall_128x128x10_standard" ); + precachemodel( "collision_wall_256x256x10_standard" ); + precachemodel( "collision_clip_64x64x256" ); + minimap_upperl = spawn( "script_origin", ( -12248, 9496, 552 ) ); + minimap_upperl.targetname = "minimap_corner"; + minimap_lowerr = spawn( "script_origin", ( 14472, -8496, -776 ) ); + minimap_lowerr.targetname = "minimap_corner"; + maps/mp/_compass::setupminimap( "compass_map_zm_transit" ); + flag_wait( "start_zombie_round_logic" ); + collision1 = spawn( "script_model", ( 2273, -126, 143 ) ); + collision1 setmodel( "collision_wall_128x128x10_standard" ); + collision1.angles = ( 0, 0, 0 ); + collision1 ghost(); + collision2 = spawn( "script_model", ( 2096, -126, 143 ) ); + collision2 setmodel( "collision_wall_128x128x10_standard" ); + collision2.angles = ( 0, 0, 0 ); + collision2 ghost(); + collision3 = spawn( "script_model", ( 1959, -126, 143 ) ); + collision3 setmodel( "collision_wall_128x128x10_standard" ); + collision3.angles = ( 0, 0, 0 ); + collision3 ghost(); + collision4 = spawn( "script_model", ( 12239, 8509, -688 ) ); + collision4 setmodel( "collision_wall_128x128x10_standard" ); + collision4.angles = ( 0, 0, 0 ); + collision4 ghost(); + collision5 = spawn( "script_model", ( 8320, -6679, 362 ) ); + collision5 setmodel( "collision_wall_256x256x10_standard" ); + collision5.angles = vectorScale( ( 0, 0, 0 ), 300 ); + collision5 ghost(); + collision5 = spawn( "script_model", ( 10068, 7272, -67 ) ); + collision5 setmodel( "collision_clip_64x64x256" ); + collision5.angles = ( 0, 0, 0 ); + collision5 ghost(); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_load.gsc b/zm_transit_dr_patch/maps/mp/zombies/_load.gsc new file mode 100644 index 0000000..95c5ec5 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_load.gsc @@ -0,0 +1,506 @@ +#include maps/mp/gametypes_zm/_spawnlogic; +#include maps/mp/animscripts/traverse/shared; +#include maps/mp/animscripts/utility; +#include maps/mp/zombies/_load; +#include maps/mp/_createfx; +#include maps/mp/_music; +#include maps/mp/_busing; +#include maps/mp/_script_gen; +#include maps/mp/_utility; +#include common_scripts/utility; + +main( bscriptgened, bcsvgened, bsgenabled ) +{ + if ( !isDefined( level.script_gen_dump_reasons ) ) + { + level.script_gen_dump_reasons = []; + } + if ( !isDefined( bsgenabled ) ) + { + level.script_gen_dump_reasons[ level.script_gen_dump_reasons.size ] = "First run"; + } + if ( !isDefined( bcsvgened ) ) + { + bcsvgened = 0; + } + level.bcsvgened = bcsvgened; + if ( !isDefined( bscriptgened ) ) + { + bscriptgened = 0; + } + else + { + bscriptgened = 1; + } + level.bscriptgened = bscriptgened; + level._loadstarted = 1; + struct_class_init(); + level.clientscripts = getDvar( "cg_usingClientScripts" ) != ""; + level._client_exploders = []; + level._client_exploder_ids = []; + if ( !isDefined( level.flag ) ) + { + level.flag = []; + level.flags_lock = []; + } + if ( !isDefined( level.timeofday ) ) + { + level.timeofday = "day"; + } + flag_init( "scriptgen_done" ); + level.script_gen_dump_reasons = []; + if ( !isDefined( level.script_gen_dump ) ) + { + level.script_gen_dump = []; + level.script_gen_dump_reasons[ 0 ] = "First run"; + } + if ( !isDefined( level.script_gen_dump2 ) ) + { + level.script_gen_dump2 = []; + } + if ( isDefined( level.createfxent ) && isDefined( level.script ) ) + { + script_gen_dump_addline( "maps\\mp\\createfx\\" + level.script + "_fx::main();", level.script + "_fx" ); + } + while ( isDefined( level.script_gen_dump_preload ) ) + { + i = 0; + while ( i < level.script_gen_dump_preload.size ) + { + script_gen_dump_addline( level.script_gen_dump_preload[ i ].string, level.script_gen_dump_preload[ i ].signature ); + i++; + } + } + if ( getDvar( "scr_RequiredMapAspectratio" ) == "" ) + { + setdvar( "scr_RequiredMapAspectratio", "1" ); + } + setdvar( "r_waterFogTest", 0 ); + precacherumble( "reload_small" ); + precacherumble( "reload_medium" ); + precacherumble( "reload_large" ); + precacherumble( "reload_clipin" ); + precacherumble( "reload_clipout" ); + precacherumble( "reload_rechamber" ); + precacherumble( "pullout_small" ); + precacherumble( "buzz_high" ); + precacherumble( "riotshield_impact" ); + registerclientsys( "levelNotify" ); + level.aitriggerspawnflags = getaitriggerflags(); + level.vehicletriggerspawnflags = getvehicletriggerflags(); + level.physicstracemaskphysics = 1; + level.physicstracemaskvehicle = 2; + level.physicstracemaskwater = 4; + level.createfx_enabled = getDvar( "createfx" ) != ""; + level thread start_intro_screen_zm(); + thread maps/mp/_interactive_objects::init(); + maps/mp/_audio::init(); + thread maps/mp/_busing::businit(); + thread maps/mp/_music::music_init(); + thread maps/mp/_fxanim::init(); + thread maps/mp/_serverfaceanim_mp::init(); + if ( level.createfx_enabled ) + { + setinitialplayersconnected(); + } + visionsetnight( "default_night" ); + setup_traversals(); + maps/mp/_art::main(); + setupexploders(); + parse_structs(); + thread footsteps(); +/# + level thread level_notify_listener(); + level thread client_notify_listener(); +#/ + thread maps/mp/_createfx::fx_init(); + if ( level.createfx_enabled ) + { + calculate_map_center(); + maps/mp/_createfx::createfx(); + } + if ( getDvar( #"F7B30924" ) == "1" ) + { + maps/mp/_global_fx::main(); + level waittill( "eternity" ); + } + thread maps/mp/_global_fx::main(); + maps/mp/_demo::init(); + p = 0; + while ( p < 6 ) + { + switch( p ) + { + case 0: + triggertype = "trigger_multiple"; + break; + case 1: + triggertype = "trigger_once"; + break; + case 2: + triggertype = "trigger_use"; + break; + case 3: + triggertype = "trigger_radius"; + break; + case 4: + triggertype = "trigger_lookat"; + break; + default: +/# + assert( p == 5 ); +#/ + triggertype = "trigger_damage"; + break; + } + triggers = getentarray( triggertype, "classname" ); + i = 0; + while ( i < triggers.size ) + { + if ( isDefined( triggers[ i ].script_prefab_exploder ) ) + { + triggers[ i ].script_exploder = triggers[ i ].script_prefab_exploder; + } + if ( isDefined( triggers[ i ].script_exploder ) ) + { + level thread maps/mp/zombies/_load::exploder_load( triggers[ i ] ); + } + i++; + } + p++; + } +} + +level_notify_listener() +{ + while ( 1 ) + { + val = getDvar( "level_notify" ); + if ( val != "" ) + { + level notify( val ); + setdvar( "level_notify", "" ); + } + wait 0,2; + } +} + +client_notify_listener() +{ + while ( 1 ) + { + val = getDvar( "client_notify" ); + if ( val != "" ) + { + clientnotify( val ); + setdvar( "client_notify", "" ); + } + wait 0,2; + } +} + +footsteps() +{ + maps/mp/animscripts/utility::setfootstepeffect( "asphalt", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "brick", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "carpet", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "cloth", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "concrete", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "dirt", loadfx( "bio/player/fx_footstep_sand" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "foliage", loadfx( "bio/player/fx_footstep_sand" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "gravel", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "grass", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "metal", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "mud", loadfx( "bio/player/fx_footstep_mud" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "paper", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "plaster", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "rock", loadfx( "bio/player/fx_footstep_dust" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "sand", loadfx( "bio/player/fx_footstep_sand" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "water", loadfx( "bio/player/fx_footstep_water" ) ); + maps/mp/animscripts/utility::setfootstepeffect( "wood", loadfx( "bio/player/fx_footstep_dust" ) ); +} + +parse_structs() +{ + i = 0; + while ( i < level.struct.size ) + { + if ( isDefined( level.struct[ i ].targetname ) ) + { + if ( level.struct[ i ].targetname == "flak_fire_fx" ) + { + level._effect[ "flak20_fire_fx" ] = loadfx( "weapon/tracer/fx_tracer_flak_single_noExp" ); + level._effect[ "flak38_fire_fx" ] = loadfx( "weapon/tracer/fx_tracer_quad_20mm_Flak38_noExp" ); + level._effect[ "flak_cloudflash_night" ] = loadfx( "weapon/flak/fx_flak_cloudflash_night" ); + level._effect[ "flak_burst_single" ] = loadfx( "weapon/flak/fx_flak_single_day_dist" ); + } + if ( level.struct[ i ].targetname == "fake_fire_fx" ) + { + level._effect[ "distant_muzzleflash" ] = loadfx( "weapon/muzzleflashes/heavy" ); + } + if ( level.struct[ i ].targetname == "spotlight_fx" ) + { + level._effect[ "spotlight_beam" ] = loadfx( "env/light/fx_ray_spotlight_md" ); + } + } + i++; + } +} + +exploder_load( trigger ) +{ + level endon( "killexplodertridgers" + trigger.script_exploder ); + trigger waittill( "trigger" ); + if ( isDefined( trigger.script_chance ) && randomfloat( 1 ) > trigger.script_chance ) + { + if ( isDefined( trigger.script_delay ) ) + { + wait trigger.script_delay; + } + else + { + wait 4; + } + level thread exploder_load( trigger ); + return; + } + maps/mp/_utility::exploder( trigger.script_exploder ); + level notify( "killexplodertridgers" + trigger.script_exploder ); +} + +setupexploders() +{ + ents = getentarray( "script_brushmodel", "classname" ); + smodels = getentarray( "script_model", "classname" ); + i = 0; + while ( i < smodels.size ) + { + ents[ ents.size ] = smodels[ i ]; + i++; + } + i = 0; + while ( i < ents.size ) + { + if ( isDefined( ents[ i ].script_prefab_exploder ) ) + { + ents[ i ].script_exploder = ents[ i ].script_prefab_exploder; + } + if ( isDefined( ents[ i ].script_exploder ) ) + { + if ( ents[ i ].model == "fx" || !isDefined( ents[ i ].targetname ) && ents[ i ].targetname != "exploderchunk" ) + { + ents[ i ] hide(); + i++; + continue; + } + else + { + if ( isDefined( ents[ i ].targetname ) && ents[ i ].targetname == "exploder" ) + { + ents[ i ] hide(); + ents[ i ] notsolid(); + i++; + continue; + } + else + { + if ( isDefined( ents[ i ].targetname ) && ents[ i ].targetname == "exploderchunk" ) + { + ents[ i ] hide(); + ents[ i ] notsolid(); + } + } + } + } + i++; + } + script_exploders = []; + potentialexploders = getentarray( "script_brushmodel", "classname" ); + i = 0; + while ( i < potentialexploders.size ) + { + if ( isDefined( potentialexploders[ i ].script_prefab_exploder ) ) + { + potentialexploders[ i ].script_exploder = potentialexploders[ i ].script_prefab_exploder; + } + if ( isDefined( potentialexploders[ i ].script_exploder ) ) + { + script_exploders[ script_exploders.size ] = potentialexploders[ i ]; + } + i++; + } + potentialexploders = getentarray( "script_model", "classname" ); + i = 0; + while ( i < potentialexploders.size ) + { + if ( isDefined( potentialexploders[ i ].script_prefab_exploder ) ) + { + potentialexploders[ i ].script_exploder = potentialexploders[ i ].script_prefab_exploder; + } + if ( isDefined( potentialexploders[ i ].script_exploder ) ) + { + script_exploders[ script_exploders.size ] = potentialexploders[ i ]; + } + i++; + } + potentialexploders = getentarray( "item_health", "classname" ); + i = 0; + while ( i < potentialexploders.size ) + { + if ( isDefined( potentialexploders[ i ].script_prefab_exploder ) ) + { + potentialexploders[ i ].script_exploder = potentialexploders[ i ].script_prefab_exploder; + } + if ( isDefined( potentialexploders[ i ].script_exploder ) ) + { + script_exploders[ script_exploders.size ] = potentialexploders[ i ]; + } + i++; + } + if ( !isDefined( level.createfxent ) ) + { + level.createfxent = []; + } + acceptabletargetnames = []; + acceptabletargetnames[ "exploderchunk visible" ] = 1; + acceptabletargetnames[ "exploderchunk" ] = 1; + acceptabletargetnames[ "exploder" ] = 1; + i = 0; + while ( i < script_exploders.size ) + { + exploder = script_exploders[ i ]; + ent = createexploder( exploder.script_fxid ); + ent.v = []; + ent.v[ "origin" ] = exploder.origin; + ent.v[ "angles" ] = exploder.angles; + ent.v[ "delay" ] = exploder.script_delay; + ent.v[ "firefx" ] = exploder.script_firefx; + ent.v[ "firefxdelay" ] = exploder.script_firefxdelay; + ent.v[ "firefxsound" ] = exploder.script_firefxsound; + ent.v[ "firefxtimeout" ] = exploder.script_firefxtimeout; + ent.v[ "earthquake" ] = exploder.script_earthquake; + ent.v[ "damage" ] = exploder.script_damage; + ent.v[ "damage_radius" ] = exploder.script_radius; + ent.v[ "soundalias" ] = exploder.script_soundalias; + ent.v[ "repeat" ] = exploder.script_repeat; + ent.v[ "delay_min" ] = exploder.script_delay_min; + ent.v[ "delay_max" ] = exploder.script_delay_max; + ent.v[ "target" ] = exploder.target; + ent.v[ "ender" ] = exploder.script_ender; + ent.v[ "type" ] = "exploder"; + if ( !isDefined( exploder.script_fxid ) ) + { + ent.v[ "fxid" ] = "No FX"; + } + else + { + ent.v[ "fxid" ] = exploder.script_fxid; + } + ent.v[ "exploder" ] = exploder.script_exploder; +/# + assert( isDefined( exploder.script_exploder ), "Exploder at origin " + exploder.origin + " has no script_exploder" ); +#/ + if ( !isDefined( ent.v[ "delay" ] ) ) + { + ent.v[ "delay" ] = 0; + } + if ( isDefined( exploder.target ) ) + { + org = getent( ent.v[ "target" ], "targetname" ).origin; + ent.v[ "angles" ] = vectorToAngle( org - ent.v[ "origin" ] ); + } + if ( exploder.classname == "script_brushmodel" || isDefined( exploder.model ) ) + { + ent.model = exploder; + ent.model.disconnect_paths = exploder.script_disconnectpaths; + } + if ( isDefined( exploder.targetname ) && isDefined( acceptabletargetnames[ exploder.targetname ] ) ) + { + ent.v[ "exploder_type" ] = exploder.targetname; + } + else + { + ent.v[ "exploder_type" ] = "normal"; + } + ent maps/mp/_createfx::post_entity_creation_function(); + i++; + } + level.createfxexploders = []; + i = 0; + while ( i < level.createfxent.size ) + { + ent = level.createfxent[ i ]; + if ( ent.v[ "type" ] != "exploder" ) + { + i++; + continue; + } + else + { + ent.v[ "exploder_id" ] = getexploderid( ent ); + if ( !isDefined( level.createfxexploders[ ent.v[ "exploder" ] ] ) ) + { + level.createfxexploders[ ent.v[ "exploder" ] ] = []; + } + level.createfxexploders[ ent.v[ "exploder" ] ][ level.createfxexploders[ ent.v[ "exploder" ] ].size ] = ent; + } + i++; + } +} + +setup_traversals() +{ + potential_traverse_nodes = getallnodes(); + i = 0; + while ( i < potential_traverse_nodes.size ) + { + node = potential_traverse_nodes[ i ]; + if ( node.type == "Begin" ) + { + node maps/mp/animscripts/traverse/shared::init_traverse(); + } + i++; + } +} + +calculate_map_center() +{ + if ( !isDefined( level.mapcenter ) ) + { + level.nodesmins = ( 0, 0, 0 ); + level.nodesmaxs = ( 0, 0, 0 ); + level.mapcenter = maps/mp/gametypes_zm/_spawnlogic::findboxcenter( level.nodesmins, level.nodesmaxs ); +/# + println( "map center: ", level.mapcenter ); +#/ + setmapcenter( level.mapcenter ); + } +} + +start_intro_screen_zm() +{ + if ( level.createfx_enabled ) + { + return; + } + if ( !isDefined( level.introscreen ) ) + { + level.introscreen = newhudelem(); + level.introscreen.x = 0; + level.introscreen.y = 0; + level.introscreen.horzalign = "fullscreen"; + level.introscreen.vertalign = "fullscreen"; + level.introscreen.foreground = 0; + level.introscreen setshader( "black", 640, 480 ); + wait 0,05; + } + level.introscreen.alpha = 1; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] freezecontrols( 1 ); + i++; + } + wait 1; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm.gsc new file mode 100644 index 0000000..915546d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm.gsc @@ -0,0 +1,5649 @@ +#include maps/mp/zombies/_zm_game_module; +#include maps/mp/zombies/_zm_ai_basic; +#include maps/mp/zombies/_zm_vulture; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/zombies/_zm_pers_upgrades_system; +#include maps/mp/zombies/_zm_ai_dogs; +#include maps/mp/zombies/_zm_melee_weapon; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_demo; +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/zombies/_zm_pers_upgrades; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_ffotd; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level.player_out_of_playable_area_monitor = 1; + level.player_too_many_weapons_monitor = 1; + level.player_too_many_weapons_monitor_func = ::player_too_many_weapons_monitor; + level.player_too_many_players_check = 1; + level.player_too_many_players_check_func = ::player_too_many_players_check; + level._use_choke_weapon_hints = 1; + level._use_choke_blockers = 1; + level.passed_introscreen = 0; + if ( !isDefined( level.custom_ai_type ) ) + { + level.custom_ai_type = []; + } + level.spawn_funcs = []; + level.spawn_funcs[ "allies" ] = []; + level.spawn_funcs[ "axis" ] = []; + level.spawn_funcs[ "team3" ] = []; + level thread maps/mp/zombies/_zm_ffotd::main_start(); + level.zombiemode = 1; + level.revivefeature = 0; + level.swimmingfeature = 0; + level.calc_closest_player_using_paths = 0; + level.zombie_melee_in_water = 1; + level.put_timed_out_zombies_back_in_queue = 1; + level.use_alternate_poi_positioning = 1; + level.zmb_laugh_alias = "zmb_laugh_richtofen"; + level.sndannouncerisrich = 1; + level.scr_zm_ui_gametype = getDvar( "ui_gametype" ); + level.scr_zm_ui_gametype_group = getDvar( "ui_zm_gamemodegroup" ); + level.scr_zm_map_start_location = getDvar( "ui_zm_mapstartlocation" ); + level.curr_gametype_affects_rank = 0; + gametype = tolower( getDvar( "g_gametype" ) ); + if ( gametype == "zclassic" || gametype == "zsurvival" ) + { + level.curr_gametype_affects_rank = 1; + } + level.grenade_multiattack_bookmark_count = 1; + level.rampage_bookmark_kill_times_count = 3; + level.rampage_bookmark_kill_times_msec = 6000; + level.rampage_bookmark_kill_times_delay = 6000; + level thread watch_rampage_bookmark(); + if ( !isDefined( level._zombies_round_spawn_failsafe ) ) + { + level._zombies_round_spawn_failsafe = ::round_spawn_failsafe; + } + level.zombie_visionset = "zombie_neutral"; + if ( getDvar( #"5DF80895" ) == "1" ) + { + level.zombie_anim_intro = 1; + } + else + { + level.zombie_anim_intro = 0; + } + precache_shaders(); + precache_models(); + precacherumble( "explosion_generic" ); + precacherumble( "dtp_rumble" ); + precacherumble( "slide_rumble" ); + precache_zombie_leaderboards(); + level._zombie_gib_piece_index_all = 0; + level._zombie_gib_piece_index_right_arm = 1; + level._zombie_gib_piece_index_left_arm = 2; + level._zombie_gib_piece_index_right_leg = 3; + level._zombie_gib_piece_index_left_leg = 4; + level._zombie_gib_piece_index_head = 5; + level._zombie_gib_piece_index_guts = 6; + if ( !isDefined( level.zombie_ai_limit ) ) + { + level.zombie_ai_limit = 24; + } + if ( !isDefined( level.zombie_actor_limit ) ) + { + level.zombie_actor_limit = 31; + } + maps/mp/_visionset_mgr::init(); + init_dvars(); + init_strings(); + init_levelvars(); + init_sounds(); + init_shellshocks(); + init_flags(); + init_client_flags(); + registerclientfield( "world", "zombie_power_on", 1, 1, "int" ); + if ( level.scr_zm_ui_gametype_group == "zclassic" && !level.createfx_enabled ) + { + registerclientfield( "allplayers", "navcard_held", 1, 4, "int" ); + level.navcards = []; + level.navcards[ 0 ] = "navcard_held_zm_transit"; + level.navcards[ 1 ] = "navcard_held_zm_highrise"; + level thread setup_player_navcard_hud(); + } + register_offhand_weapons_for_level_defaults(); + level thread drive_client_connected_notifies(); +/# + maps/mp/zombies/_zm_devgui::init(); +#/ + maps/mp/zombies/_zm_zonemgr::init(); + maps/mp/zombies/_zm_unitrigger::init(); + maps/mp/zombies/_zm_audio::init(); + maps/mp/zombies/_zm_blockers::init(); + maps/mp/zombies/_zm_bot::init(); + maps/mp/zombies/_zm_clone::init(); + maps/mp/zombies/_zm_buildables::init(); + maps/mp/zombies/_zm_equipment::init(); + maps/mp/zombies/_zm_laststand::init(); + maps/mp/zombies/_zm_magicbox::init(); + maps/mp/zombies/_zm_perks::init(); + maps/mp/zombies/_zm_playerhealth::init(); + maps/mp/zombies/_zm_power::init(); + maps/mp/zombies/_zm_powerups::init(); + maps/mp/zombies/_zm_score::init(); + maps/mp/zombies/_zm_spawner::init(); + maps/mp/zombies/_zm_gump::init(); + maps/mp/zombies/_zm_timer::init(); + maps/mp/zombies/_zm_traps::init(); + maps/mp/zombies/_zm_weapons::init(); + init_function_overrides(); + level thread last_stand_pistol_rank_init(); + level thread maps/mp/zombies/_zm_tombstone::init(); + level thread post_all_players_connected(); + init_utility(); + maps/mp/_utility::registerclientsys( "lsm" ); + maps/mp/zombies/_zm_stats::init(); + initializestattracking(); + if ( get_players().size <= 1 ) + { + incrementcounter( "global_solo_games", 1 ); + } + else if ( level.systemlink ) + { + incrementcounter( "global_systemlink_games", 1 ); + } + else if ( getDvarInt( "splitscreen_playerCount" ) == get_players().size ) + { + incrementcounter( "global_splitscreen_games", 1 ); + } + else + { + incrementcounter( "global_coop_games", 1 ); + } + onplayerconnect_callback( ::zm_on_player_connect ); + maps/mp/zombies/_zm_pers_upgrades::pers_upgrade_init(); + set_demo_intermission_point(); + level thread maps/mp/zombies/_zm_ffotd::main_end(); + level thread track_players_intersection_tracker(); + level thread onallplayersready(); + level thread startunitriggers(); + level thread maps/mp/gametypes_zm/_zm_gametype::post_init_gametype(); +} + +post_main() +{ + level thread init_custom_ai_type(); +} + +startunitriggers() +{ + flag_wait_any( "start_zombie_round_logic", "start_encounters_match_logic" ); + level thread maps/mp/zombies/_zm_unitrigger::main(); +} + +drive_client_connected_notifies() +{ + while ( 1 ) + { + level waittill( "connected", player ); + player reset_rampage_bookmark_kill_times(); + player callback( "on_player_connect" ); + } +} + +fade_out_intro_screen_zm( hold_black_time, fade_out_time, destroyed_afterwards ) +{ + if ( !isDefined( level.introscreen ) ) + { + level.introscreen = newhudelem(); + level.introscreen.x = 0; + level.introscreen.y = 0; + level.introscreen.horzalign = "fullscreen"; + level.introscreen.vertalign = "fullscreen"; + level.introscreen.foreground = 0; + level.introscreen setshader( "black", 640, 480 ); + wait 0,05; + } + level.introscreen.alpha = 1; + if ( isDefined( hold_black_time ) ) + { + wait hold_black_time; + } + else + { + wait 0,2; + } + if ( !isDefined( fade_out_time ) ) + { + fade_out_time = 1,5; + } + level.introscreen fadeovertime( fade_out_time ); + level.introscreen.alpha = 0; + wait 1,6; + level.passed_introscreen = 1; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] setclientuivisibilityflag( "hud_visible", 1 ); + if ( isDefined( level.host_ended_game ) && !level.host_ended_game ) + { + if ( isDefined( level.player_movement_suppressed ) ) + { + players[ i ] freezecontrols( level.player_movement_suppressed ); +/# + println( " Unfreeze controls 4" ); +#/ + i++; + continue; + } + else + { + if ( isDefined( players[ i ].hostmigrationcontrolsfrozen ) && !players[ i ].hostmigrationcontrolsfrozen ) + { + players[ i ] freezecontrols( 0 ); +/# + println( " Unfreeze controls 5" ); +#/ + } + } + } + i++; + } + if ( destroyed_afterwards == 1 ) + { + level.introscreen destroy(); + } + flag_set( "initial_blackscreen_passed" ); +} + +onallplayersready() +{ + timeout = getTime() + 5000; + while ( getnumexpectedplayers() == 0 && getTime() < timeout ) + { + wait 0,1; + } +/# + println( "ZM >> player_count_expected=" + getnumexpectedplayers() ); +#/ + player_count_actual = 0; + while ( getnumconnectedplayers() < getnumexpectedplayers() || player_count_actual != getnumexpectedplayers() ) + { + players = get_players(); + player_count_actual = 0; + i = 0; + while ( i < players.size ) + { + players[ i ] freezecontrols( 1 ); + if ( players[ i ].sessionstate == "playing" ) + { + player_count_actual++; + } + i++; + } +/# + println( "ZM >> Num Connected =" + getnumconnectedplayers() + " Expected : " + getnumexpectedplayers() ); +#/ + wait 0,1; + } + setinitialplayersconnected(); +/# + println( "ZM >> We have all players - START ZOMBIE LOGIC" ); +#/ + if ( getnumconnectedplayers() == 1 && getDvarInt( "scr_zm_enable_bots" ) == 1 ) + { + level thread add_bots(); + flag_set( "initial_players_connected" ); + } + else + { + players = get_players(); + if ( players.size == 1 ) + { + flag_set( "solo_game" ); + level.solo_lives_given = 0; + _a370 = players; + _k370 = getFirstArrayKey( _a370 ); + while ( isDefined( _k370 ) ) + { + player = _a370[ _k370 ]; + player.lives = 0; + _k370 = getNextArrayKey( _a370, _k370 ); + } + level maps/mp/zombies/_zm::zombiemode_solo_last_stand_pistol(); + } + flag_set( "initial_players_connected" ); + while ( !aretexturesloaded() ) + { + wait 0,05; + } + thread start_zombie_logic_in_x_sec( 3 ); + } + fade_out_intro_screen_zm( 5, 1,5, 1 ); +} + +start_zombie_logic_in_x_sec( time_to_wait ) +{ + wait time_to_wait; + flag_set( "start_zombie_round_logic" ); +} + +getallotherplayers() +{ + aliveplayers = []; + i = 0; + while ( i < level.players.size ) + { + if ( !isDefined( level.players[ i ] ) ) + { + i++; + continue; + } + else player = level.players[ i ]; + if ( player.sessionstate != "playing" || player == self ) + { + i++; + continue; + } + else + { + aliveplayers[ aliveplayers.size ] = player; + } + i++; + } + return aliveplayers; +} + +getfreespawnpoint( spawnpoints, player ) +{ + if ( !isDefined( spawnpoints ) ) + { +/# + iprintlnbold( "ZM >> No free spawn points in map" ); +#/ + return undefined; + } + if ( !isDefined( game[ "spawns_randomized" ] ) ) + { + game[ "spawns_randomized" ] = 1; + spawnpoints = array_randomize( spawnpoints ); + random_chance = randomint( 100 ); + if ( random_chance > 50 ) + { + set_game_var( "side_selection", 1 ); + } + else + { + set_game_var( "side_selection", 2 ); + } + } + side_selection = get_game_var( "side_selection" ); + if ( get_game_var( "switchedsides" ) ) + { + if ( side_selection == 2 ) + { + side_selection = 1; + } + else + { + if ( side_selection == 1 ) + { + side_selection = 2; + } + } + } + while ( isDefined( player ) && isDefined( player.team ) ) + { + i = 0; + while ( isDefined( spawnpoints ) && i < spawnpoints.size ) + { + if ( side_selection == 1 ) + { + if ( player.team != "allies" && isDefined( spawnpoints[ i ].script_int ) && spawnpoints[ i ].script_int == 1 ) + { + arrayremovevalue( spawnpoints, spawnpoints[ i ] ); + i = 0; + } + else + { + if ( player.team == "allies" && isDefined( spawnpoints[ i ].script_int ) && spawnpoints[ i ].script_int == 2 ) + { + arrayremovevalue( spawnpoints, spawnpoints[ i ] ); + i = 0; + } + else + { + i++; + } + } + continue; + } + else if ( player.team == "allies" && isDefined( spawnpoints[ i ].script_int ) && spawnpoints[ i ].script_int == 1 ) + { + arrayremovevalue( spawnpoints, spawnpoints[ i ] ); + i = 0; + continue; + } + else + { + if ( player.team != "allies" && isDefined( spawnpoints[ i ].script_int ) && spawnpoints[ i ].script_int == 2 ) + { + arrayremovevalue( spawnpoints, spawnpoints[ i ] ); + i = 0; + } + else + { + i++; + } + } + } + } + if ( !isDefined( self.playernum ) ) + { + if ( self.team == "allies" ) + { + self.playernum = get_game_var( "_team1_num" ); + set_game_var( "_team1_num", self.playernum + 1 ); + } + else + { + self.playernum = get_game_var( "_team2_num" ); + set_game_var( "_team2_num", self.playernum + 1 ); + } + } + j = 0; + while ( j < spawnpoints.size ) + { + while ( !isDefined( spawnpoints[ j ].en_num ) ) + { + m = 0; + while ( m < spawnpoints.size ) + { + spawnpoints[ m ].en_num = m; + m++; + } + } + if ( spawnpoints[ j ].en_num == self.playernum ) + { + return spawnpoints[ j ]; + } + j++; + } + return spawnpoints[ 0 ]; +} + +delete_in_createfx() +{ + exterior_goals = getstructarray( "exterior_goal", "targetname" ); + i = 0; + while ( i < exterior_goals.size ) + { + if ( !isDefined( exterior_goals[ i ].target ) ) + { + i++; + continue; + } + else + { + targets = getentarray( exterior_goals[ i ].target, "targetname" ); + j = 0; + while ( j < targets.size ) + { + targets[ j ] self_delete(); + j++; + } + } + i++; + } + if ( isDefined( level.level_createfx_callback_thread ) ) + { + level thread [[ level.level_createfx_callback_thread ]](); + } +} + +add_bots() +{ + host = gethostplayer(); + while ( !isDefined( host ) ) + { + wait 0,05; + host = gethostplayer(); + } + wait 4; + zbot_spawn(); + setdvar( "bot_AllowMovement", "1" ); + setdvar( "bot_PressAttackBtn", "1" ); + setdvar( "bot_PressMeleeBtn", "1" ); + while ( get_players().size < 2 ) + { + wait 0,05; + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] freezecontrols( 0 ); +/# + println( " Unfreeze controls 6" ); +#/ + i++; + } + level.numberbotsadded = 1; + flag_set( "start_zombie_round_logic" ); +} + +zbot_spawn() +{ + player = gethostplayer(); + spawnpoints = getstructarray( "initial_spawn_points", "targetname" ); + spawnpoint = getfreespawnpoint( spawnpoints ); + bot = addtestclient(); + if ( !isDefined( bot ) ) + { +/# + println( "Could not add test client" ); +#/ + return; + } + bot.pers[ "isBot" ] = 1; + bot.equipment_enabled = 0; + yaw = spawnpoint.angles[ 1 ]; + bot thread zbot_spawn_think( spawnpoint.origin, yaw ); + return bot; +} + +zbot_spawn_think( origin, yaw ) +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self setorigin( origin ); + angles = ( 0, yaw, 0 ); + self setplayerangles( angles ); + } +} + +post_all_players_connected() +{ + level thread end_game(); + flag_wait( "start_zombie_round_logic" ); +/# + execdevgui( "devgui_zombie" ); + println( "sessions: mapname=", level.script, " gametype zom isserver 1 player_count=", get_players().size ); +#/ + level thread clear_mature_blood(); + level thread round_end_monitor(); + if ( !level.zombie_anim_intro ) + { + if ( isDefined( level._round_start_func ) ) + { + level thread [[ level._round_start_func ]](); + } + } + level thread players_playing(); + disablegrenadesuicide(); + level.startinvulnerabletime = getDvarInt( "player_deathInvulnerableTime" ); + if ( !isDefined( level.music_override ) ) + { + level.music_override = 0; + } +} + +init_custom_ai_type() +{ + while ( isDefined( level.custom_ai_type ) ) + { + i = 0; + while ( i < level.custom_ai_type.size ) + { + [[ level.custom_ai_type[ i ] ]](); + i++; + } + } +} + +zombiemode_melee_miss() +{ + if ( isDefined( self.enemy.curr_pay_turret ) ) + { + self.enemy dodamage( getDvarInt( "ai_meleeDamage" ), self.origin, self, self, "none", "melee" ); + } +} + +player_track_ammo_count() +{ + self notify( "stop_ammo_tracking" ); + self endon( "disconnect" ); + self endon( "stop_ammo_tracking" ); + while ( 1 ) + { + wait 0,5; + weap = self getcurrentweapon(); + while ( isDefined( weap ) || weap == "none" && !can_track_ammo( weap ) ) + { + continue; + } + if ( self getammocount( weap ) > 5 || self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + continue; + } + if ( self getammocount( weap ) > 0 ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ammo_low" ); + } + else + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "ammo_out" ); + } + wait 20; + } +} + +can_track_ammo( weap ) +{ + if ( !isDefined( weap ) ) + { + return 0; + } + switch( weap ) + { + case "death_throe_zm": + case "equip_gasmask_zm": + case "humangun_upgraded_zm": + case "humangun_zm": + case "lower_equip_gasmask_zm": + case "none": + case "riotshield_zm": + case "screecher_arms_zm": + case "tazer_knuckles_upgraded_zm": + case "tazer_knuckles_zm": + case "zombie_bowie_flourish": + case "zombie_builder_zm": + case "zombie_fists_zm": + case "zombie_knuckle_crack": + case "zombie_sickle_flourish": + case "zombie_tazer_flourish": + return 0; + default: + if ( !is_zombie_perk_bottle( weap ) && !is_placeable_mine( weap ) && !is_equipment( weap ) && !issubstr( weap, "knife_ballistic_" ) || getsubstr( weap, 0, 3 ) == "gl_" && weap == level.revive_tool ) + { + return 0; + } + } + return 1; +} + +spawn_vo() +{ + wait 1; + players = get_players(); + if ( players.size > 1 ) + { + player = random( players ); + index = maps/mp/zombies/_zm_weapons::get_player_index( player ); + player thread spawn_vo_player( index, players.size ); + } +} + +spawn_vo_player( index, num ) +{ + sound = "plr_" + index + "_vox_" + num + "play"; + self playsoundwithnotify( sound, "sound_done" ); + self waittill( "sound_done" ); +} + +precache_shaders() +{ + precacheshader( "hud_chalk_1" ); + precacheshader( "hud_chalk_2" ); + precacheshader( "hud_chalk_3" ); + precacheshader( "hud_chalk_4" ); + precacheshader( "hud_chalk_5" ); + precacheshader( "zom_icon_community_pot" ); + precacheshader( "zom_icon_community_pot_strip" ); + precacheshader( "zom_icon_player_life" ); + precacheshader( "waypoint_revive" ); +} + +precache_models() +{ + precachemodel( "p_zom_win_bars_01_vert04_bend_180" ); + precachemodel( "p_zom_win_bars_01_vert01_bend_180" ); + precachemodel( "p_zom_win_bars_01_vert04_bend" ); + precachemodel( "p_zom_win_bars_01_vert01_bend" ); + precachemodel( "p_zom_win_cell_bars_01_vert04_bent" ); + precachemodel( "p_zom_win_cell_bars_01_vert01_bent" ); + precachemodel( "tag_origin" ); + precachemodel( "zombie_z_money_icon" ); + if ( isDefined( level.precachecustomcharacters ) ) + { + self [[ level.precachecustomcharacters ]](); + } +} + +init_shellshocks() +{ + level.player_killed_shellshock = "zombie_death"; + precacheshellshock( level.player_killed_shellshock ); + precacheshellshock( "pain" ); + precacheshellshock( "explosion" ); +} + +init_strings() +{ + precachestring( &"ZOMBIE_WEAPONCOSTAMMO" ); + precachestring( &"ZOMBIE_ROUND" ); + precachestring( &"SCRIPT_PLUS" ); + precachestring( &"ZOMBIE_GAME_OVER" ); + precachestring( &"ZOMBIE_SURVIVED_ROUND" ); + precachestring( &"ZOMBIE_SURVIVED_ROUNDS" ); + precachestring( &"ZOMBIE_SURVIVED_NOMANS" ); + precachestring( &"ZOMBIE_EXTRA_LIFE" ); + add_zombie_hint( "undefined", &"ZOMBIE_UNDEFINED" ); + add_zombie_hint( "default_treasure_chest_950", &"ZOMBIE_RANDOM_WEAPON_950" ); + add_zombie_hint( "default_buy_barrier_piece_10", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_10" ); + add_zombie_hint( "default_buy_barrier_piece_20", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_20" ); + add_zombie_hint( "default_buy_barrier_piece_50", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_50" ); + add_zombie_hint( "default_buy_barrier_piece_100", &"ZOMBIE_BUTTON_BUY_BACK_BARRIER_100" ); + add_zombie_hint( "default_reward_barrier_piece", &"ZOMBIE_BUTTON_REWARD_BARRIER" ); + add_zombie_hint( "default_reward_barrier_piece_10", &"ZOMBIE_BUTTON_REWARD_BARRIER_10" ); + add_zombie_hint( "default_reward_barrier_piece_20", &"ZOMBIE_BUTTON_REWARD_BARRIER_20" ); + add_zombie_hint( "default_reward_barrier_piece_30", &"ZOMBIE_BUTTON_REWARD_BARRIER_30" ); + add_zombie_hint( "default_reward_barrier_piece_40", &"ZOMBIE_BUTTON_REWARD_BARRIER_40" ); + add_zombie_hint( "default_reward_barrier_piece_50", &"ZOMBIE_BUTTON_REWARD_BARRIER_50" ); + add_zombie_hint( "default_buy_debris_100", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_100" ); + add_zombie_hint( "default_buy_debris_200", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_200" ); + add_zombie_hint( "default_buy_debris_250", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_250" ); + add_zombie_hint( "default_buy_debris_500", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_500" ); + add_zombie_hint( "default_buy_debris_750", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_750" ); + add_zombie_hint( "default_buy_debris_1000", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1000" ); + add_zombie_hint( "default_buy_debris_1250", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1250" ); + add_zombie_hint( "default_buy_debris_1500", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1500" ); + add_zombie_hint( "default_buy_debris_1750", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_1750" ); + add_zombie_hint( "default_buy_debris_2000", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_2000" ); + add_zombie_hint( "default_buy_debris_3000", &"ZOMBIE_BUTTON_BUY_CLEAR_DEBRIS_3000" ); + add_zombie_hint( "default_buy_door_close", &"ZOMBIE_BUTTON_BUY_CLOSE_DOOR" ); + add_zombie_hint( "default_buy_door_100", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_100" ); + add_zombie_hint( "default_buy_door_200", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_200" ); + add_zombie_hint( "default_buy_door_250", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_250" ); + add_zombie_hint( "default_buy_door_500", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_500" ); + add_zombie_hint( "default_buy_door_750", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_750" ); + add_zombie_hint( "default_buy_door_1000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1000" ); + add_zombie_hint( "default_buy_door_1250", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1250" ); + add_zombie_hint( "default_buy_door_1500", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1500" ); + add_zombie_hint( "default_buy_door_1750", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_1750" ); + add_zombie_hint( "default_buy_door_2000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_2000" ); + add_zombie_hint( "default_buy_door_2500", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_2500" ); + add_zombie_hint( "default_buy_door_3000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_3000" ); + add_zombie_hint( "default_buy_door_4000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_4000" ); + add_zombie_hint( "default_buy_door_8000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_8000" ); + add_zombie_hint( "default_buy_door_16000", &"ZOMBIE_BUTTON_BUY_OPEN_DOOR_16000" ); + add_zombie_hint( "default_buy_area_100", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_100" ); + add_zombie_hint( "default_buy_area_200", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_200" ); + add_zombie_hint( "default_buy_area_250", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_250" ); + add_zombie_hint( "default_buy_area_500", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_500" ); + add_zombie_hint( "default_buy_area_750", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_750" ); + add_zombie_hint( "default_buy_area_1000", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1000" ); + add_zombie_hint( "default_buy_area_1250", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1250" ); + add_zombie_hint( "default_buy_area_1500", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1500" ); + add_zombie_hint( "default_buy_area_1750", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_1750" ); + add_zombie_hint( "default_buy_area_2000", &"ZOMBIE_BUTTON_BUY_OPEN_AREA_2000" ); + add_zombie_hint( "powerup_fire_sale_cost", &"ZOMBIE_FIRE_SALE_COST" ); +} + +init_sounds() +{ + add_sound( "end_of_round", "mus_zmb_round_over" ); + add_sound( "end_of_game", "mus_zmb_game_over" ); + add_sound( "chalk_one_up", "mus_zmb_chalk" ); + add_sound( "purchase", "zmb_cha_ching" ); + add_sound( "no_purchase", "zmb_no_cha_ching" ); + add_sound( "playerzombie_usebutton_sound", "zmb_zombie_vocals_attack" ); + add_sound( "playerzombie_attackbutton_sound", "zmb_zombie_vocals_attack" ); + add_sound( "playerzombie_adsbutton_sound", "zmb_zombie_vocals_attack" ); + add_sound( "zombie_head_gib", "zmb_zombie_head_gib" ); + add_sound( "rebuild_barrier_piece", "zmb_repair_boards" ); + add_sound( "rebuild_barrier_metal_piece", "zmb_metal_repair" ); + add_sound( "rebuild_barrier_hover", "zmb_boards_float" ); + add_sound( "debris_hover_loop", "zmb_couch_loop" ); + add_sound( "break_barrier_piece", "zmb_break_boards" ); + add_sound( "grab_metal_bar", "zmb_bar_pull" ); + add_sound( "break_metal_bar", "zmb_bar_break" ); + add_sound( "drop_metal_bar", "zmb_bar_drop" ); + add_sound( "blocker_end_move", "zmb_board_slam" ); + add_sound( "barrier_rebuild_slam", "zmb_board_slam" ); + add_sound( "bar_rebuild_slam", "zmb_bar_repair" ); + add_sound( "zmb_rock_fix", "zmb_break_rock_barrier_fix" ); + add_sound( "zmb_vent_fix", "evt_vent_slat_repair" ); + add_sound( "door_slide_open", "zmb_door_slide_open" ); + add_sound( "door_rotate_open", "zmb_door_slide_open" ); + add_sound( "debris_move", "zmb_weap_wall" ); + add_sound( "open_chest", "zmb_lid_open" ); + add_sound( "music_chest", "zmb_music_box" ); + add_sound( "close_chest", "zmb_lid_close" ); + add_sound( "weapon_show", "zmb_weap_wall" ); + add_sound( "break_stone", "break_stone" ); +} + +init_levelvars() +{ + level.is_zombie_level = 1; + level.laststandpistol = "m1911_zm"; + level.default_laststandpistol = "m1911_zm"; + level.default_solo_laststandpistol = "m1911_upgraded_zm"; + level.start_weapon = "m1911_zm"; + level.first_round = 1; + level.round_number = getgametypesetting( "startRound" ); + level.enable_magic = getgametypesetting( "magic" ); + level.headshots_only = getgametypesetting( "headshotsonly" ); + level.player_starting_points = level.round_number * 500; + level.round_start_time = 0; + level.pro_tips_start_time = 0; + level.intermission = 0; + level.dog_intermission = 0; + level.zombie_total = 0; + level.total_zombies_killed = 0; + level.hudelem_count = 0; + level.zombie_spawn_locations = []; + level.zombie_rise_spawners = []; + level.current_zombie_array = []; + level.current_zombie_count = 0; + level.zombie_total_subtract = 0; + level.destructible_callbacks = []; + level.zombie_vars = []; + _a1004 = level.teams; + _k1004 = getFirstArrayKey( _a1004 ); + while ( isDefined( _k1004 ) ) + { + team = _a1004[ _k1004 ]; + level.zombie_vars[ team ] = []; + _k1004 = getNextArrayKey( _a1004, _k1004 ); + } + difficulty = 1; + column = int( difficulty ) + 1; + set_zombie_var( "zombie_health_increase", 100, 0, column ); + set_zombie_var( "zombie_health_increase_multiplier", 0,1, 1, column ); + set_zombie_var( "zombie_health_start", 150, 0, column ); + set_zombie_var( "zombie_spawn_delay", 2, 1, column ); + set_zombie_var( "zombie_new_runner_interval", 10, 0, column ); + set_zombie_var( "zombie_move_speed_multiplier", 8, 0, column ); + set_zombie_var( "zombie_move_speed_multiplier_easy", 2, 0, column ); + set_zombie_var( "zombie_max_ai", 24, 0, column ); + set_zombie_var( "zombie_ai_per_player", 6, 0, column ); + set_zombie_var( "below_world_check", -1000 ); + set_zombie_var( "spectators_respawn", 1 ); + set_zombie_var( "zombie_use_failsafe", 1 ); + set_zombie_var( "zombie_between_round_time", 10 ); + set_zombie_var( "zombie_intermission_time", 15 ); + set_zombie_var( "game_start_delay", 0, 0, column ); + set_zombie_var( "penalty_no_revive", 0,1, 1, column ); + set_zombie_var( "penalty_died", 0, 1, column ); + set_zombie_var( "penalty_downed", 0,05, 1, column ); + set_zombie_var( "starting_lives", 1, 0, column ); + set_zombie_var( "zombie_score_kill_4player", 50 ); + set_zombie_var( "zombie_score_kill_3player", 50 ); + set_zombie_var( "zombie_score_kill_2player", 50 ); + set_zombie_var( "zombie_score_kill_1player", 50 ); + set_zombie_var( "zombie_score_kill_4p_team", 30 ); + set_zombie_var( "zombie_score_kill_3p_team", 35 ); + set_zombie_var( "zombie_score_kill_2p_team", 45 ); + set_zombie_var( "zombie_score_kill_1p_team", 0 ); + set_zombie_var( "zombie_score_damage_normal", 10 ); + set_zombie_var( "zombie_score_damage_light", 10 ); + set_zombie_var( "zombie_score_bonus_melee", 80 ); + set_zombie_var( "zombie_score_bonus_head", 50 ); + set_zombie_var( "zombie_score_bonus_neck", 20 ); + set_zombie_var( "zombie_score_bonus_torso", 10 ); + set_zombie_var( "zombie_score_bonus_burn", 10 ); + set_zombie_var( "zombie_flame_dmg_point_delay", 500 ); + set_zombie_var( "zombify_player", 0 ); + if ( issplitscreen() ) + { + set_zombie_var( "zombie_timer_offset", 280 ); + } + level thread init_player_levelvars(); + level.gamedifficulty = getgametypesetting( "zmDifficulty" ); + if ( level.gamedifficulty == 0 ) + { + level.zombie_move_speed = level.round_number * level.zombie_vars[ "zombie_move_speed_multiplier_easy" ]; + } + else + { + level.zombie_move_speed = level.round_number * level.zombie_vars[ "zombie_move_speed_multiplier" ]; + } + if ( level.round_number == 1 ) + { + level.zombie_move_speed = 1; + } + else + { + i = 1; + while ( i <= level.round_number ) + { + timer = level.zombie_vars[ "zombie_spawn_delay" ]; + if ( timer > 0,08 ) + { + level.zombie_vars[ "zombie_spawn_delay" ] = timer * 0,95; + i++; + continue; + } + else + { + if ( timer < 0,08 ) + { + level.zombie_vars[ "zombie_spawn_delay" ] = 0,08; + } + } + i++; + } + } + level.speed_change_max = 0; + level.speed_change_num = 0; +} + +init_player_levelvars() +{ + flag_wait( "start_zombie_round_logic" ); + difficulty = 1; + column = int( difficulty ) + 1; + players = get_players(); + points = set_zombie_var( "zombie_score_start_" + players.size + "p", 3000, 0, column ); + points = set_zombie_var( "zombie_score_start_" + players.size + "p", 3000, 0, column ); +} + +init_dvars() +{ + if ( getDvar( "zombie_debug" ) == "" ) + { + setdvar( "zombie_debug", "0" ); + } + if ( getDvar( "scr_zm_enable_bots" ) == "" ) + { + setdvar( "scr_zm_enable_bots", "0" ); + } + if ( getDvar( "zombie_cheat" ) == "" ) + { + setdvar( "zombie_cheat", "0" ); + } + if ( level.script != "zombie_cod5_prototype" ) + { + setdvar( "magic_chest_movable", "1" ); + } + setdvar( "revive_trigger_radius", "75" ); + setdvar( "player_lastStandBleedoutTime", "45" ); + setdvar( "scr_deleteexplosivesonspawn", "0" ); +} + +init_function_overrides() +{ + level.callbackplayerdamage = ::callback_playerdamage; + level.overrideplayerdamage = ::player_damage_override; + level.callbackplayerkilled = ::player_killed_override; + level.playerlaststand_func = ::player_laststand; + level.callbackplayerlaststand = ::callback_playerlaststand; + level.prevent_player_damage = ::player_prevent_damage; + level.callbackactorkilled = ::actor_killed_override; + level.callbackactordamage = ::actor_damage_override_wrapper; + level.custom_introscreen = ::zombie_intro_screen; + level.custom_intermission = ::player_intermission; + level.global_damage_func = ::maps/mp/zombies/_zm_spawner::zombie_damage; + level.global_damage_func_ads = ::maps/mp/zombies/_zm_spawner::zombie_damage_ads; + level.reset_clientdvars = ::onplayerconnect_clientdvars; + level.zombie_last_stand = ::last_stand_pistol_swap; + level.zombie_last_stand_pistol_memory = ::last_stand_save_pistol_ammo; + level.zombie_last_stand_ammo_return = ::last_stand_restore_pistol_ammo; + level.player_becomes_zombie = ::zombify_player; +} + +callback_playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + self endon( "disconnect" ); + [[ ::maps/mp/zombies/_zm_laststand::playerlaststand ]]( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); +} + +codecallback_destructibleevent( event, param1, param2, param3 ) +{ + if ( event == "broken" ) + { + notify_type = param1; + attacker = param2; + weapon = param3; + if ( isDefined( level.destructible_callbacks[ notify_type ] ) ) + { + self thread [[ level.destructible_callbacks[ notify_type ] ]]( notify_type, attacker ); + } + self notify( event ); + } + else + { + if ( event == "breakafter" ) + { + piece = param1; + time = param2; + damage = param3; + self thread breakafter( time, damage, piece ); + } + } +} + +breakafter( time, damage, piece ) +{ + self notify( "breakafter" ); + self endon( "breakafter" ); + wait time; + self dodamage( damage, self.origin, undefined, undefined ); +} + +callback_playerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ +/# + println( "ZM Callback_PlayerDamage" + idamage + "\n" ); +#/ + if ( isDefined( eattacker ) && isplayer( eattacker ) && eattacker.sessionteam == self.sessionteam && !eattacker hasperk( "specialty_noname" ) && isDefined( self.is_zombie ) && !self.is_zombie ) + { + if ( self != eattacker ) + { +/# + println( "Exiting - players can't hurt each other." ); +#/ + return; + } + else + { + if ( smeansofdeath != "MOD_GRENADE_SPLASH" && smeansofdeath != "MOD_GRENADE" && smeansofdeath != "MOD_EXPLOSIVE" && smeansofdeath != "MOD_PROJECTILE" && smeansofdeath != "MOD_PROJECTILE_SPLASH" && smeansofdeath != "MOD_BURNED" && smeansofdeath != "MOD_SUICIDE" ) + { +/# + println( "Exiting - damage type verbotten." ); +#/ + return; + } + } + } + if ( is_classic() ) + { + if ( isDefined( level.pers_upgrade_insta_kill ) && level.pers_upgrade_insta_kill ) + { + if ( isDefined( smeansofdeath ) && smeansofdeath == "MOD_MELEE" ) + { + if ( isplayer( self ) && maps/mp/zombies/_zm_pers_upgrades::is_insta_kill_upgraded_and_active() ) + { + self notify( "pers_melee_swipe" ); + level.pers_melee_swipe_zombie_swiper = eattacker; + } + } + } + } + if ( isDefined( self.overrideplayerdamage ) ) + { + idamage = self [[ self.overrideplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + else + { + if ( isDefined( level.overrideplayerdamage ) ) + { + idamage = self [[ level.overrideplayerdamage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + } +/# + assert( isDefined( idamage ), "You must return a value from a damage override function." ); +#/ + if ( isDefined( self.magic_bullet_shield ) && self.magic_bullet_shield ) + { + maxhealth = self.maxhealth; + self.health += idamage; + self.maxhealth = maxhealth; + } + if ( isDefined( self.divetoprone ) && self.divetoprone == 1 ) + { + if ( smeansofdeath == "MOD_GRENADE_SPLASH" ) + { + dist = distance2d( vpoint, self.origin ); + if ( dist > 32 ) + { + dot_product = vectordot( anglesToForward( self.angles ), vdir ); + if ( dot_product > 0 ) + { + idamage = int( idamage * 0,5 ); + } + } + } + } +/# + println( "CB PD" ); +#/ + if ( isDefined( level.prevent_player_damage ) ) + { + if ( self [[ level.prevent_player_damage ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) ) + { + return; + } + } + idflags |= level.idflags_no_knockback; +/# + println( "Finishplayerdamage wrapper." ); +#/ + self finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); +} + +finishplayerdamagewrapper( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + self finishplayerdamage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); +} + +init_flags() +{ + flag_init( "solo_game" ); + flag_init( "start_zombie_round_logic" ); + flag_init( "start_encounters_match_logic" ); + flag_init( "spawn_point_override" ); + flag_init( "power_on" ); + flag_init( "crawler_round" ); + flag_init( "spawn_zombies", 1 ); + flag_init( "dog_round" ); + flag_init( "begin_spawning" ); + flag_init( "end_round_wait" ); + flag_init( "wait_and_revive" ); + flag_init( "instant_revive" ); + flag_init( "initial_blackscreen_passed" ); + flag_init( "initial_players_connected" ); +} + +init_client_flags() +{ + if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) + { + level._zombie_scriptmover_flag_board_horizontal_fx = 14; + level._zombie_scriptmover_flag_board_vertical_fx = 13; + } + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + level._zombie_scriptmover_flag_rock_fx = 12; + } + level._zombie_player_flag_cloak_weapon = 14; + registerclientfield( "toplayer", "dive2nuke_visionset", 1, 1, "int" ); + registerclientfield( "toplayer", "deadshot_perk", 1, 1, "int" ); + registerclientfield( "actor", "zombie_riser_fx", 1, 1, "int" ); + if ( isDefined( level._no_water_risers ) && !level._no_water_risers ) + { + registerclientfield( "actor", "zombie_riser_fx_water", 1, 1, "int" ); + } + if ( isDefined( level.risers_use_low_gravity_fx ) && level.risers_use_low_gravity_fx ) + { + registerclientfield( "actor", "zombie_riser_fx_lowg", 1, 1, "int" ); + } +} + +init_fx() +{ + level.createfx_callback_thread = ::delete_in_createfx; + level._effect[ "wood_chunk_destory" ] = loadfx( "impacts/fx_large_woodhit" ); + level._effect[ "fx_zombie_bar_break" ] = loadfx( "maps/zombie/fx_zombie_bar_break" ); + level._effect[ "fx_zombie_bar_break_lite" ] = loadfx( "maps/zombie/fx_zombie_bar_break_lite" ); + level._effect[ "edge_fog" ] = loadfx( "maps/zombie/fx_fog_zombie_amb" ); + level._effect[ "chest_light" ] = loadfx( "maps/zombie/fx_zmb_tranzit_marker_glow" ); + level._effect[ "eye_glow" ] = loadfx( "misc/fx_zombie_eye_single" ); + level._effect[ "headshot" ] = loadfx( "impacts/fx_flesh_hit" ); + level._effect[ "headshot_nochunks" ] = loadfx( "misc/fx_zombie_bloodsplat" ); + level._effect[ "bloodspurt" ] = loadfx( "misc/fx_zombie_bloodspurt" ); + level._effect[ "tesla_head_light" ] = loadfx( "maps/zombie/fx_zombie_tesla_neck_spurt" ); + level._effect[ "zombie_guts_explosion" ] = loadfx( "maps/zombie/fx_zmb_tranzit_torso_explo" ); + level._effect[ "rise_burst_water" ] = loadfx( "maps/zombie/fx_mp_zombie_hand_dirt_burst" ); + level._effect[ "rise_billow_water" ] = loadfx( "maps/zombie/fx_mp_zombie_body_dirt_billowing" ); + level._effect[ "rise_dust_water" ] = loadfx( "maps/zombie/fx_mp_zombie_body_dust_falling" ); + level._effect[ "rise_burst" ] = loadfx( "maps/zombie/fx_mp_zombie_hand_dirt_burst" ); + level._effect[ "rise_billow" ] = loadfx( "maps/zombie/fx_mp_zombie_body_dirt_billowing" ); + level._effect[ "rise_dust" ] = loadfx( "maps/zombie/fx_mp_zombie_body_dust_falling" ); + level._effect[ "fall_burst" ] = loadfx( "maps/zombie/fx_mp_zombie_hand_dirt_burst" ); + level._effect[ "fall_billow" ] = loadfx( "maps/zombie/fx_mp_zombie_body_dirt_billowing" ); + level._effect[ "fall_dust" ] = loadfx( "maps/zombie/fx_mp_zombie_body_dust_falling" ); + level._effect[ "character_fire_death_sm" ] = loadfx( "env/fire/fx_fire_zombie_md" ); + level._effect[ "character_fire_death_torso" ] = loadfx( "env/fire/fx_fire_zombie_torso" ); + level._effect[ "def_explosion" ] = loadfx( "explosions/fx_default_explosion" ); + level._effect[ "870mcs_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_870mcs" ); + level._effect[ "ak74u_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_ak74u" ); + level._effect[ "beretta93r_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_berreta93r" ); + level._effect[ "bowie_knife_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_bowie" ); + level._effect[ "claymore_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_claymore" ); + level._effect[ "m14_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_m14" ); + level._effect[ "m16_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_m16" ); + level._effect[ "mp5k_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_mp5k" ); + level._effect[ "rottweil72_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_olympia" ); + level._effect[ "sticky_grenade_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_semtex" ); + level._effect[ "tazer_knuckles_zm_fx" ] = loadfx( "maps/zombie/fx_zmb_wall_buy_taseknuck" ); + level._effect[ "upgrade_aquired" ] = loadfx( "maps/zombie/fx_zmb_tanzit_upgrade" ); +} + +zombie_intro_screen( string1, string2, string3, string4, string5 ) +{ + flag_wait( "start_zombie_round_logic" ); +} + +players_playing() +{ + players = get_players(); + level.players_playing = players.size; + wait 20; + players = get_players(); + level.players_playing = players.size; +} + +onplayerconnect_clientdvars() +{ + self setclientcompass( 0 ); + self setclientthirdperson( 0 ); + self resetfov(); + self setclientthirdpersonangle( 0 ); + self setclientammocounterhide( 1 ); + self setclientminiscoreboardhide( 1 ); + self setclienthudhardcore( 0 ); + self setclientplayerpushamount( 1 ); + self setdepthoffield( 0, 0, 512, 4000, 4, 0 ); + self setclientaimlockonpitchstrength( 0 ); + self maps/mp/zombies/_zm_laststand::player_getup_setup(); +} + +checkforalldead( excluded_player ) +{ + players = get_players(); + count = 0; + i = 0; + while ( i < players.size ) + { + if ( isDefined( excluded_player ) && excluded_player == players[ i ] ) + { + i++; + continue; + } + else + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ].sessionstate != "spectator" ) + { + count++; + } + } + i++; + } + if ( count == 0 && isDefined( level.no_end_game_check ) && !level.no_end_game_check ) + { + level notify( "end_game" ); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + self notify( "stop_onPlayerSpawned" ); + self endon( "stop_onPlayerSpawned" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + if ( isDefined( level.host_ended_game ) && !level.host_ended_game ) + { + self freezecontrols( 0 ); +/# + println( " Unfreeze controls 7" ); +#/ + } + self.hits = 0; + self init_player_offhand_weapons(); + lethal_grenade = self get_player_lethal_grenade(); + if ( !self hasweapon( lethal_grenade ) ) + { + self giveweapon( lethal_grenade ); + self setweaponammoclip( lethal_grenade, 0 ); + } + self recordplayerrevivezombies( self ); +/# + if ( getDvarInt( "zombie_cheat" ) >= 1 && getDvarInt( "zombie_cheat" ) <= 3 ) + { + self enableinvulnerability(); +#/ + } + self setactionslot( 3, "altMode" ); + self playerknockback( 0 ); + self setclientthirdperson( 0 ); + self resetfov(); + self setclientthirdpersonangle( 0 ); + self setdepthoffield( 0, 0, 512, 4000, 4, 0 ); + self cameraactivate( 0 ); + self.num_perks = 0; + self.on_lander_last_stand = undefined; + self setblur( 0, 0,1 ); + self.zmbdialogqueue = []; + self.zmbdialogactive = 0; + self.zmbdialoggroups = []; + self.zmbdialoggroup = ""; + if ( isDefined( level.player_out_of_playable_area_monitor ) && level.player_out_of_playable_area_monitor ) + { + self thread player_out_of_playable_area_monitor(); + } + if ( isDefined( level.player_too_many_weapons_monitor ) && level.player_too_many_weapons_monitor ) + { + self thread [[ level.player_too_many_weapons_monitor_func ]](); + } + if ( isDefined( level.player_too_many_players_check ) && level.player_too_many_players_check ) + { + level thread [[ level.player_too_many_players_check_func ]](); + } + self.disabled_perks = []; + if ( isDefined( self.player_initialized ) ) + { + if ( self.player_initialized == 0 ) + { + self.player_initialized = 1; + self giveweapon( self get_player_lethal_grenade() ); + self setweaponammoclip( self get_player_lethal_grenade(), 0 ); + self setclientammocounterhide( 0 ); + self setclientminiscoreboardhide( 0 ); + self.is_drinking = 0; + self thread player_zombie_breadcrumb(); + self thread player_monitor_travel_dist(); + self thread player_monitor_time_played(); + self thread player_track_ammo_count(); + self thread shock_onpain(); + self thread player_grenade_watcher(); + self maps/mp/zombies/_zm_laststand::revive_hud_create(); + if ( isDefined( level.zm_gamemodule_spawn_func ) ) + { + self thread [[ level.zm_gamemodule_spawn_func ]](); + } + self thread player_spawn_protection(); + if ( !isDefined( self.lives ) ) + { + self.lives = 0; + } + } + } + } +} + +player_spawn_protection() +{ + self endon( "disconnect" ); + x = 0; + while ( x < 60 ) + { + self.ignoreme = 1; + x++; + wait 0,05; + } + self.ignoreme = 0; +} + +spawn_life_brush( origin, radius, height ) +{ + life_brush = spawn( "trigger_radius", origin, 0, radius, height ); + life_brush.script_noteworthy = "life_brush"; + return life_brush; +} + +in_life_brush() +{ + life_brushes = getentarray( "life_brush", "script_noteworthy" ); + if ( !isDefined( life_brushes ) ) + { + return 0; + } + i = 0; + while ( i < life_brushes.size ) + { + if ( self istouching( life_brushes[ i ] ) ) + { + return 1; + } + i++; + } + return 0; +} + +spawn_kill_brush( origin, radius, height ) +{ + kill_brush = spawn( "trigger_radius", origin, 0, radius, height ); + kill_brush.script_noteworthy = "kill_brush"; + return kill_brush; +} + +in_kill_brush() +{ + kill_brushes = getentarray( "kill_brush", "script_noteworthy" ); + if ( !isDefined( kill_brushes ) ) + { + return 0; + } + i = 0; + while ( i < kill_brushes.size ) + { + if ( self istouching( kill_brushes[ i ] ) ) + { + return 1; + } + i++; + } + return 0; +} + +in_enabled_playable_area() +{ + playable_area = getentarray( "player_volume", "script_noteworthy" ); + if ( !isDefined( playable_area ) ) + { + return 0; + } + i = 0; + while ( i < playable_area.size ) + { + if ( maps/mp/zombies/_zm_zonemgr::zone_is_enabled( playable_area[ i ].targetname ) && self istouching( playable_area[ i ] ) ) + { + return 1; + } + i++; + } + return 0; +} + +get_player_out_of_playable_area_monitor_wait_time() +{ +/# + if ( isDefined( level.check_kill_thread_every_frame ) && level.check_kill_thread_every_frame ) + { + return 0,05; +#/ + } + return 3; +} + +player_out_of_playable_area_monitor() +{ + self notify( "stop_player_out_of_playable_area_monitor" ); + self endon( "stop_player_out_of_playable_area_monitor" ); + self endon( "disconnect" ); + level endon( "end_game" ); + while ( !isDefined( self.characterindex ) ) + { + wait 0,05; + } + wait ( 0,15 * self.characterindex ); + while ( 1 ) + { + while ( self.sessionstate == "spectator" ) + { + wait get_player_out_of_playable_area_monitor_wait_time(); + } + while ( is_true( level.hostmigration_occured ) ) + { + wait get_player_out_of_playable_area_monitor_wait_time(); + } + if ( !self in_life_brush() || self in_kill_brush() && !self in_enabled_playable_area() ) + { + if ( !isDefined( level.player_out_of_playable_area_monitor_callback ) || self [[ level.player_out_of_playable_area_monitor_callback ]]() ) + { +/# + while ( isDefined( level.kill_thread_test_mode ) && level.kill_thread_test_mode ) + { + iprintlnbold( "out of playable" ); + wait get_player_out_of_playable_area_monitor_wait_time(); + } + while ( !self isinmovemode( "ufo", "noclip" ) && isDefined( level.disable_kill_thread ) || level.disable_kill_thread && getDvarInt( "zombie_cheat" ) > 0 ) + { + wait get_player_out_of_playable_area_monitor_wait_time(); +#/ + } + self maps/mp/zombies/_zm_stats::increment_map_cheat_stat( "cheat_out_of_playable" ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_out_of_playable", 0 ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + self playlocalsound( level.zmb_laugh_alias ); + wait 0,5; + if ( get_players().size == 1 && flag( "solo_game" ) && isDefined( self.waiting_to_revive ) && self.waiting_to_revive ) + { + level notify( "end_game" ); + break; + } + else + { + self.lives = 0; + self dodamage( self.health + 1000, self.origin ); + self.bleedout_time = 0; + } + } + } + wait get_player_out_of_playable_area_monitor_wait_time(); + } +} + +get_player_too_many_weapons_monitor_wait_time() +{ + return 3; +} + +player_too_many_weapons_monitor_takeaway_simultaneous( primary_weapons_to_take ) +{ + self endon( "player_too_many_weapons_monitor_takeaway_sequence_done" ); + self waittill_any( "player_downed", "replace_weapon_powerup" ); + i = 0; + while ( i < primary_weapons_to_take.size ) + { + self takeweapon( primary_weapons_to_take[ i ] ); + i++; + } + self maps/mp/zombies/_zm_score::minus_to_player_score( self.score ); + self give_start_weapon( 0 ); + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + self decrement_is_drinking(); + } + else + { + if ( flag( "solo_game" ) ) + { + self.score_lost_when_downed = 0; + } + } + self notify( "player_too_many_weapons_monitor_takeaway_sequence_done" ); +} + +player_too_many_weapons_monitor_takeaway_sequence( primary_weapons_to_take ) +{ + self thread player_too_many_weapons_monitor_takeaway_simultaneous( primary_weapons_to_take ); + self endon( "player_downed" ); + self endon( "replace_weapon_powerup" ); + self increment_is_drinking(); + score_decrement = round_up_to_ten( int( self.score / ( primary_weapons_to_take.size + 1 ) ) ); + i = 0; + while ( i < primary_weapons_to_take.size ) + { + self playlocalsound( level.zmb_laugh_alias ); + self switchtoweapon( primary_weapons_to_take[ i ] ); + self maps/mp/zombies/_zm_score::minus_to_player_score( score_decrement ); + wait 3; + self takeweapon( primary_weapons_to_take[ i ] ); + i++; + } + self playlocalsound( level.zmb_laugh_alias ); + self maps/mp/zombies/_zm_score::minus_to_player_score( self.score ); + wait 1; + self give_start_weapon( 1 ); + self decrement_is_drinking(); + self notify( "player_too_many_weapons_monitor_takeaway_sequence_done" ); +} + +player_too_many_weapons_monitor() +{ + self notify( "stop_player_too_many_weapons_monitor" ); + self endon( "stop_player_too_many_weapons_monitor" ); + self endon( "disconnect" ); + level endon( "end_game" ); + scalar = self.characterindex; + if ( !isDefined( scalar ) ) + { + scalar = self getentitynumber(); + } + wait ( 0,15 * scalar ); + while ( 1 ) + { + while ( !self has_powerup_weapon() || self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && self.sessionstate == "spectator" ) + { + wait get_player_too_many_weapons_monitor_wait_time(); + } +/# + while ( getDvarInt( "zombie_cheat" ) > 0 ) + { + wait get_player_too_many_weapons_monitor_wait_time(); +#/ + } + weapon_limit = 2; + if ( self hasperk( "specialty_additionalprimaryweapon" ) ) + { + weapon_limit = 3; + } + primaryweapons = self getweaponslistprimaries(); + if ( primaryweapons.size > weapon_limit ) + { + self maps/mp/zombies/_zm_weapons::take_fallback_weapon(); + primaryweapons = self getweaponslistprimaries(); + } + primary_weapons_to_take = []; + i = 0; + while ( i < primaryweapons.size ) + { + if ( maps/mp/zombies/_zm_weapons::is_weapon_included( primaryweapons[ i ] ) || maps/mp/zombies/_zm_weapons::is_weapon_upgraded( primaryweapons[ i ] ) ) + { + primary_weapons_to_take[ primary_weapons_to_take.size ] = primaryweapons[ i ]; + } + i++; + } + if ( primary_weapons_to_take.size > weapon_limit ) + { + if ( !isDefined( level.player_too_many_weapons_monitor_callback ) || self [[ level.player_too_many_weapons_monitor_callback ]]( primary_weapons_to_take ) ) + { + self maps/mp/zombies/_zm_stats::increment_map_cheat_stat( "cheat_too_many_weapons" ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_too_many_weapons", 0 ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + self thread player_too_many_weapons_monitor_takeaway_sequence( primary_weapons_to_take ); + self waittill( "player_too_many_weapons_monitor_takeaway_sequence_done" ); + } + } + wait get_player_too_many_weapons_monitor_wait_time(); + } +} + +player_monitor_travel_dist() +{ + self endon( "disconnect" ); + self notify( "stop_player_monitor_travel_dist" ); + self endon( "stop_player_monitor_travel_dist" ); + prevpos = self.origin; + while ( 1 ) + { + wait 0,1; + self.pers[ "distance_traveled" ] += distance( self.origin, prevpos ); + prevpos = self.origin; + } +} + +player_monitor_time_played() +{ + self endon( "disconnect" ); + self notify( "stop_player_monitor_time_played" ); + self endon( "stop_player_monitor_time_played" ); + for ( ;; ) + { + wait 1; + maps/mp/zombies/_zm_stats::increment_client_stat( "time_played_total" ); + } +} + +reset_rampage_bookmark_kill_times() +{ + if ( !isDefined( self.rampage_bookmark_kill_times ) ) + { + self.rampage_bookmark_kill_times = []; + self.ignore_rampage_kill_times = 0; + } + i = 0; + while ( i < level.rampage_bookmark_kill_times_count ) + { + self.rampage_bookmark_kill_times[ i ] = 0; + i++; + } +} + +add_rampage_bookmark_kill_time() +{ + now = getTime(); + if ( now <= self.ignore_rampage_kill_times ) + { + return; + } + oldest_index = 0; + oldest_time = now + 1; + i = 0; + while ( i < level.rampage_bookmark_kill_times_count ) + { + if ( !self.rampage_bookmark_kill_times[ i ] ) + { + oldest_index = i; + break; + } + else if ( oldest_time > self.rampage_bookmark_kill_times[ i ] ) + { + oldest_index = i; + oldest_time = self.rampage_bookmark_kill_times[ i ]; + } + i++; + } + self.rampage_bookmark_kill_times[ oldest_index ] = now; +} + +watch_rampage_bookmark() +{ + while ( 1 ) + { + wait 0,05; + waittillframeend; + now = getTime(); + oldest_allowed = now - level.rampage_bookmark_kill_times_msec; + players = get_players(); + player_index = 0; + while ( player_index < players.size ) + { + player = players[ player_index ]; +/# + if ( isDefined( player.pers[ "isBot" ] ) && player.pers[ "isBot" ] ) + { + player_index++; + continue; +#/ + } + else + { + time_index = 0; + while ( time_index < level.rampage_bookmark_kill_times_count ) + { + if ( !player.rampage_bookmark_kill_times[ time_index ] ) + { + break; + } + else if ( oldest_allowed > player.rampage_bookmark_kill_times[ time_index ] ) + { + player.rampage_bookmark_kill_times[ time_index ] = 0; + break; + } + else + { + time_index++; + } + } + if ( time_index >= level.rampage_bookmark_kill_times_count ) + { + maps/mp/_demo::bookmark( "zm_player_rampage", getTime(), player ); + player reset_rampage_bookmark_kill_times(); + player.ignore_rampage_kill_times = now + level.rampage_bookmark_kill_times_delay; + } + } + player_index++; + } + } +} + +player_grenade_multiattack_bookmark_watcher( grenade ) +{ + self endon( "disconnect" ); + waittillframeend; + if ( !isDefined( grenade ) ) + { + return; + } + inflictorentnum = grenade getentitynumber(); + inflictorenttype = grenade getentitytype(); + inflictorbirthtime = 0; + if ( isDefined( grenade.birthtime ) ) + { + inflictorbirthtime = grenade.birthtime; + } + ret_val = grenade waittill_any_timeout( 15, "explode" ); + if ( !isDefined( self ) || isDefined( ret_val ) && ret_val == "timeout" ) + { + return; + } + self.grenade_multiattack_count = 0; + self.grenade_multiattack_ent = undefined; + waittillframeend; + if ( !isDefined( self ) ) + { + return; + } + count = level.grenade_multiattack_bookmark_count; + if ( isDefined( grenade.grenade_multiattack_bookmark_count ) && grenade.grenade_multiattack_bookmark_count ) + { + count = grenade.grenade_multiattack_bookmark_count; + } + bookmark_string = "zm_player_grenade_multiattack"; + if ( isDefined( grenade.use_grenade_special_long_bookmark ) && grenade.use_grenade_special_long_bookmark ) + { + bookmark_string = "zm_player_grenade_special_long"; + } + else + { + if ( isDefined( grenade.use_grenade_special_bookmark ) && grenade.use_grenade_special_bookmark ) + { + bookmark_string = "zm_player_grenade_special"; + } + } + if ( count <= self.grenade_multiattack_count && isDefined( self.grenade_multiattack_ent ) ) + { + adddemobookmark( level.bookmark[ bookmark_string ], getTime(), self getentitynumber(), 255, 0, inflictorentnum, inflictorenttype, inflictorbirthtime, 0, self.grenade_multiattack_ent getentitynumber() ); + } + self.grenade_multiattack_count = 0; +} + +player_grenade_watcher() +{ + self endon( "disconnect" ); + self notify( "stop_player_grenade_watcher" ); + self endon( "stop_player_grenade_watcher" ); + self.grenade_multiattack_count = 0; + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + if ( isDefined( grenade ) && isalive( grenade ) ) + { + grenade.team = self.team; + } + self thread player_grenade_multiattack_bookmark_watcher( grenade ); + if ( isDefined( level.grenade_watcher ) ) + { + self [[ level.grenade_watcher ]]( grenade, weapname ); + } + } +} + +player_prevent_damage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + if ( !isDefined( einflictor ) || !isDefined( eattacker ) ) + { + return 0; + } + if ( einflictor == self || eattacker == self ) + { + return 0; + } + if ( isDefined( einflictor ) && isDefined( einflictor.team ) ) + { + if ( isDefined( einflictor.damage_own_team ) && !einflictor.damage_own_team ) + { + if ( einflictor.team == self.team ) + { + return 1; + } + } + } + return 0; +} + +player_revive_monitor() +{ + self endon( "disconnect" ); + self notify( "stop_player_revive_monitor" ); + self endon( "stop_player_revive_monitor" ); + while ( 1 ) + { + self waittill( "player_revived", reviver ); + if ( isDefined( level.isresetting_grief ) && level.isresetting_grief ) + { + continue; + } + bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "revived", self.origin ); + if ( isDefined( reviver ) ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "revive_up" ); + points = self.score_lost_when_downed; +/# + println( "ZM >> LAST STAND - points = " + points ); +#/ + reviver maps/mp/zombies/_zm_score::player_add_points( "reviver", points ); + self.score_lost_when_downed = 0; + } + } +} + +laststand_giveback_player_perks() +{ + while ( isDefined( self.laststand_perks ) ) + { + lost_perk_index = int( -1 ); + if ( self.laststand_perks.size > 1 ) + { + lost_perk_index = randomint( self.laststand_perks.size - 1 ); + } + i = 0; + while ( i < self.laststand_perks.size ) + { + if ( self hasperk( self.laststand_perks[ i ] ) ) + { + i++; + continue; + } + else if ( i == lost_perk_index ) + { + i++; + continue; + } + else + { + maps/mp/zombies/_zm_perks::give_perk( self.laststand_perks[ i ] ); + } + i++; + } + } +} + +remote_revive_watch() +{ + self endon( "death" ); + self endon( "player_revived" ); + keep_checking = 1; + while ( keep_checking ) + { + self waittill( "remote_revive", reviver ); + if ( reviver.team == self.team ) + { + keep_checking = 0; + } + } + self maps/mp/zombies/_zm_laststand::remote_revive( reviver ); +} + +remove_deadshot_bottle() +{ + wait 0,05; + if ( isDefined( self.lastactiveweapon ) && self.lastactiveweapon == "zombie_perk_bottle_deadshot" ) + { + self.lastactiveweapon = "none"; + } +} + +take_additionalprimaryweapon() +{ + weapon_to_take = undefined; + if ( isDefined( self._retain_perks ) && self._retain_perks ) + { + return weapon_to_take; + } + primary_weapons_that_can_be_taken = []; + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + if ( maps/mp/zombies/_zm_weapons::is_weapon_included( primaryweapons[ i ] ) || maps/mp/zombies/_zm_weapons::is_weapon_upgraded( primaryweapons[ i ] ) ) + { + primary_weapons_that_can_be_taken[ primary_weapons_that_can_be_taken.size ] = primaryweapons[ i ]; + } + i++; + } + if ( primary_weapons_that_can_be_taken.size >= 3 ) + { + weapon_to_take = primary_weapons_that_can_be_taken[ primary_weapons_that_can_be_taken.size - 1 ]; + if ( weapon_to_take == self getcurrentweapon() ) + { + self switchtoweapon( primary_weapons_that_can_be_taken[ 0 ] ); + } + self takeweapon( weapon_to_take ); + } + return weapon_to_take; +} + +player_laststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ +/# + println( "ZM >> LAST STAND - player_laststand called" ); +#/ + b_alt_visionset = 0; + self allowjump( 0 ); + currweapon = self getcurrentweapon(); + statweapon = currweapon; + if ( is_alt_weapon( statweapon ) ) + { + statweapon = weaponaltweaponname( statweapon ); + } + self addweaponstat( statweapon, "deathsDuringUse", 1 ); + if ( isDefined( self.hasperkspecialtytombstone ) && self.hasperkspecialtytombstone ) + { + self.laststand_perks = maps/mp/zombies/_zm_tombstone::tombstone_save_perks( self ); + } + players = get_players(); + if ( players.size == 1 && flag( "solo_game" ) ) + { + if ( self.lives > 0 && self hasperk( "specialty_quickrevive" ) ) + { + self thread wait_and_revive(); + } + } + if ( self hasperk( "specialty_additionalprimaryweapon" ) ) + { + primary_weapons_that_can_be_taken = []; + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + if ( maps/mp/zombies/_zm_weapons::is_weapon_included( primaryweapons[ i ] ) || maps/mp/zombies/_zm_weapons::is_weapon_upgraded( primaryweapons[ i ] ) ) + { + primary_weapons_that_can_be_taken[ primary_weapons_that_can_be_taken.size ] = primaryweapons[ i ]; + } + i++; + } + if ( primary_weapons_that_can_be_taken.size >= 3 ) + { + weapon_to_take = primary_weapons_that_can_be_taken[ primary_weapons_that_can_be_taken.size - 1 ]; + self takeweapon( weapon_to_take ); + self.weapon_taken_by_losing_specialty_additionalprimaryweapon = weapon_to_take; + } + } + if ( isDefined( self.hasperkspecialtytombstone ) && self.hasperkspecialtytombstone ) + { + self [[ level.tombstone_laststand_func ]](); + self thread [[ level.tombstone_spawn_func ]](); + self.hasperkspecialtytombstone = undefined; + self notify( "specialty_scavenger_stop" ); + } + self clear_is_drinking(); + self thread remove_deadshot_bottle(); + self thread remote_revive_watch(); + self maps/mp/zombies/_zm_score::player_downed_penalty(); + self disableoffhandweapons(); + self thread last_stand_grenade_save_and_return(); + if ( smeansofdeath != "MOD_SUICIDE" && smeansofdeath != "MOD_FALLING" ) + { + if ( isDefined( self.intermission ) && !self.intermission ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "revive_down" ); + } + else + { + if ( isDefined( level.custom_player_death_vo_func ) && !( self [[ level.custom_player_death_vo_func ]]() ) ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "exert_death" ); + } + } + } + bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "downed", self.origin ); + if ( isDefined( level._zombie_minigun_powerup_last_stand_func ) ) + { + self thread [[ level._zombie_minigun_powerup_last_stand_func ]](); + } + if ( isDefined( level._zombie_tesla_powerup_last_stand_func ) ) + { + self thread [[ level._zombie_tesla_powerup_last_stand_func ]](); + } + if ( self hasperk( "specialty_grenadepulldeath" ) ) + { + b_alt_visionset = 1; + if ( isDefined( level.custom_laststand_func ) ) + { + self thread [[ level.custom_laststand_func ]](); + } + } + if ( isDefined( self.intermission ) && self.intermission ) + { + bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "died", self.origin ); + wait 0,5; + self stopsounds(); + level waittill( "forever" ); + } + if ( !b_alt_visionset ) + { + visionsetlaststand( "zombie_last_stand", 1 ); + } +} + +failsafe_revive_give_back_weapons( excluded_player ) +{ + i = 0; + while ( i < 10 ) + { + wait 0,05; + players = get_players(); + _a2497 = players; + _k2497 = getFirstArrayKey( _a2497 ); + while ( isDefined( _k2497 ) ) + { + player = _a2497[ _k2497 ]; + if ( excluded_player != player || !isDefined( player.reviveprogressbar ) && player maps/mp/zombies/_zm_laststand::is_reviving_any() ) + { + } + else + { +/# + iprintlnbold( "FAILSAFE CLEANING UP REVIVE HUD AND GUN" ); +#/ + player maps/mp/zombies/_zm_laststand::revive_give_back_weapons( "none" ); + if ( isDefined( player.reviveprogressbar ) ) + { + player.reviveprogressbar maps/mp/gametypes_zm/_hud_util::destroyelem(); + } + if ( isDefined( player.revivetexthud ) ) + { + player.revivetexthud destroy(); + } + } + _k2497 = getNextArrayKey( _a2497, _k2497 ); + } + i++; + } +} + +spawnspectator() +{ + self endon( "disconnect" ); + self endon( "spawned_spectator" ); + self notify( "spawned" ); + self notify( "end_respawn" ); + if ( level.intermission ) + { + return; + } + if ( isDefined( level.no_spectator ) && level.no_spectator ) + { + wait 3; + exitlevel(); + } + self.is_zombie = 1; + level thread failsafe_revive_give_back_weapons( self ); + self notify( "zombified" ); + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + self.revivetrigger = undefined; + } + self.zombification_time = getTime(); + resettimeout(); + self stopshellshock(); + self stoprumble( "damage_heavy" ); + self.sessionstate = "spectator"; + self.spectatorclient = -1; + self.maxhealth = self.health; + self.shellshocked = 0; + self.inwater = 0; + self.friendlydamage = undefined; + self.hasspawned = 1; + self.spawntime = getTime(); + self.afk = 0; +/# + println( "*************************Zombie Spectator***" ); +#/ + self detachall(); + if ( isDefined( level.custom_spectate_permissions ) ) + { + self [[ level.custom_spectate_permissions ]](); + } + else + { + self setspectatepermissions( 1 ); + } + self thread spectator_thread(); + self spawn( self.origin, self.angles ); + self notify( "spawned_spectator" ); +} + +setspectatepermissions( ison ) +{ + if ( ison ) + { + self allowspectateteam( "allies", self.team == "allies" ); + } + if ( ison ) + { + self allowspectateteam( "axis", self.team == "axis" ); + } + self allowspectateteam( "freelook", 0 ); + self allowspectateteam( "none", 0 ); +} + +spectator_thread() +{ + self endon( "disconnect" ); + self endon( "spawned_player" ); +} + +spectator_toggle_3rd_person() +{ + self endon( "disconnect" ); + self endon( "spawned_player" ); + third_person = 1; + self set_third_person( 1 ); +} + +set_third_person( value ) +{ + if ( value ) + { + self setclientthirdperson( 1 ); + self setclientthirdpersonangle( 354 ); + self setdepthoffield( 0, 128, 512, 4000, 6, 1,8 ); + } + else + { + self setclientthirdperson( 0 ); + self setclientthirdpersonangle( 0 ); + self setdepthoffield( 0, 0, 512, 4000, 4, 0 ); + } + self resetfov(); +} + +last_stand_revive() +{ + level endon( "between_round_over" ); + players = get_players(); + laststand_count = 0; + _a2687 = players; + _k2687 = getFirstArrayKey( _a2687 ); + while ( isDefined( _k2687 ) ) + { + player = _a2687[ _k2687 ]; + if ( !is_player_valid( player ) ) + { + laststand_count++; + } + _k2687 = getNextArrayKey( _a2687, _k2687 ); + } + while ( laststand_count == players.size ) + { + i = 0; + while ( i < players.size ) + { + if ( players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ].revivetrigger.beingrevived == 0 ) + { + players[ i ] maps/mp/zombies/_zm_laststand::auto_revive( players[ i ] ); + } + i++; + } + } +} + +last_stand_pistol_rank_init() +{ + level.pistol_values = []; + level.pistol_values[ level.pistol_values.size ] = "m1911_zm"; + level.pistol_values[ level.pistol_values.size ] = "cz75_zm"; + level.pistol_values[ level.pistol_values.size ] = "cz75dw_zm"; + level.pistol_values[ level.pistol_values.size ] = "python_zm"; + level.pistol_values[ level.pistol_values.size ] = "python_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "judge_zm"; + level.pistol_values[ level.pistol_values.size ] = "judge_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "kard_zm"; + level.pistol_values[ level.pistol_values.size ] = "kard_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "fiveseven_zm"; + level.pistol_values[ level.pistol_values.size ] = "fiveseven_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "beretta93r_zm"; + level.pistol_values[ level.pistol_values.size ] = "beretta93r_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "fivesevendw_zm"; + level.pistol_values[ level.pistol_values.size ] = "fivesevendw_upgraded_zm"; + level.pistol_value_solo_replace_below = level.pistol_values.size - 1; + level.pistol_values[ level.pistol_values.size ] = "cz75_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "cz75dw_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "m1911_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "ray_gun_zm"; + level.pistol_values[ level.pistol_values.size ] = "freezegun_zm"; + level.pistol_values[ level.pistol_values.size ] = "ray_gun_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "freezegun_upgraded_zm"; + level.pistol_values[ level.pistol_values.size ] = "microwavegundw_zm"; + level.pistol_values[ level.pistol_values.size ] = "microwavegundw_upgraded_zm"; +} + +last_stand_pistol_swap() +{ + if ( self has_powerup_weapon() ) + { + self.lastactiveweapon = "none"; + } + if ( !self hasweapon( self.laststandpistol ) ) + { + self giveweapon( self.laststandpistol ); + } + ammoclip = weaponclipsize( self.laststandpistol ); + doubleclip = ammoclip * 2; + if ( isDefined( self._special_solo_pistol_swap ) || self._special_solo_pistol_swap && self.laststandpistol == "m1911_upgraded_zm" && !self.hadpistol ) + { + self._special_solo_pistol_swap = 0; + self.hadpistol = 0; + self setweaponammostock( self.laststandpistol, doubleclip ); + } + else + { + if ( flag( "solo_game" ) && self.laststandpistol == "m1911_upgraded_zm" ) + { + self setweaponammostock( self.laststandpistol, doubleclip ); + } + else + { + if ( self.laststandpistol == "m1911_zm" ) + { + self setweaponammostock( self.laststandpistol, doubleclip ); + } + else if ( self.laststandpistol == "ray_gun_zm" || self.laststandpistol == "ray_gun_upgraded_zm" ) + { + if ( self.stored_weapon_info[ self.laststandpistol ].total_amt >= ammoclip ) + { + self setweaponammoclip( self.laststandpistol, ammoclip ); + self.stored_weapon_info[ self.laststandpistol ].given_amt = ammoclip; + } + else + { + self setweaponammoclip( self.laststandpistol, self.stored_weapon_info[ self.laststandpistol ].total_amt ); + self.stored_weapon_info[ self.laststandpistol ].given_amt = self.stored_weapon_info[ self.laststandpistol ].total_amt; + } + self setweaponammostock( self.laststandpistol, 0 ); + } + else + { + if ( self.stored_weapon_info[ self.laststandpistol ].stock_amt >= doubleclip ) + { + self setweaponammostock( self.laststandpistol, doubleclip ); + self.stored_weapon_info[ self.laststandpistol ].given_amt = doubleclip + self.stored_weapon_info[ self.laststandpistol ].clip_amt + self.stored_weapon_info[ self.laststandpistol ].left_clip_amt; + } + else + { + self setweaponammostock( self.laststandpistol, self.stored_weapon_info[ self.laststandpistol ].stock_amt ); + self.stored_weapon_info[ self.laststandpistol ].given_amt = self.stored_weapon_info[ self.laststandpistol ].total_amt; + } + } + } + } + self switchtoweapon( self.laststandpistol ); +} + +last_stand_best_pistol() +{ + pistol_array = []; + current_weapons = self getweaponslistprimaries(); + i = 0; + while ( i < current_weapons.size ) + { + class = weaponclass( current_weapons[ i ] ); + if ( issubstr( current_weapons[ i ], "knife_ballistic_" ) ) + { + class = "knife"; + } + while ( class != "pistol" || class == "pistolspread" && class == "pistol spread" ) + { + if ( current_weapons[ i ] != "m1911_zm" || !flag( "solo_game" ) && !flag( "solo_game" ) && current_weapons[ i ] != "m1911_upgraded_zm" ) + { + if ( self getammocount( current_weapons[ i ] ) <= 0 ) + { + i++; + continue; + } + } + else pistol_array_index = pistol_array.size; + pistol_array[ pistol_array_index ] = spawnstruct(); + pistol_array[ pistol_array_index ].gun = current_weapons[ i ]; + pistol_array[ pistol_array_index ].value = 0; + j = 0; + while ( j < level.pistol_values.size ) + { + if ( level.pistol_values[ j ] == current_weapons[ i ] ) + { + pistol_array[ pistol_array_index ].value = j; + i++; + continue; + } + else + { + j++; + } + } + } + i++; + } + self.laststandpistol = last_stand_compare_pistols( pistol_array ); +} + +last_stand_compare_pistols( struct_array ) +{ + if ( !isarray( struct_array ) || struct_array.size <= 0 ) + { + self.hadpistol = 0; + while ( isDefined( self.stored_weapon_info ) ) + { + stored_weapon_info = getarraykeys( self.stored_weapon_info ); + j = 0; + while ( j < stored_weapon_info.size ) + { + if ( stored_weapon_info[ j ] == level.laststandpistol ) + { + self.hadpistol = 1; + } + j++; + } + } + return level.laststandpistol; + } + highest_score_pistol = struct_array[ 0 ]; + i = 1; + while ( i < struct_array.size ) + { + if ( struct_array[ i ].value > highest_score_pistol.value ) + { + highest_score_pistol = struct_array[ i ]; + } + i++; + } + if ( flag( "solo_game" ) ) + { + self._special_solo_pistol_swap = 0; + if ( highest_score_pistol.value <= level.pistol_value_solo_replace_below ) + { + self.hadpistol = 0; + self._special_solo_pistol_swap = 1; + if ( isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && !self hasperk( "specialty_quickrevive" ) && !self hasperk( "specialty_quickrevive" ) ) + { + return highest_score_pistol.gun; + } + else + { + return level.laststandpistol; + } + } + else + { + return highest_score_pistol.gun; + } + } + else + { + return highest_score_pistol.gun; + } +} + +last_stand_save_pistol_ammo() +{ + weapon_inventory = self getweaponslist( 1 ); + self.stored_weapon_info = []; + i = 0; + while ( i < weapon_inventory.size ) + { + weapon = weapon_inventory[ i ]; + class = weaponclass( weapon ); + if ( issubstr( weapon, "knife_ballistic_" ) ) + { + class = "knife"; + } + if ( class != "pistol" || class == "pistolspread" && class == "pistol spread" ) + { + self.stored_weapon_info[ weapon ] = spawnstruct(); + self.stored_weapon_info[ weapon ].clip_amt = self getweaponammoclip( weapon ); + self.stored_weapon_info[ weapon ].left_clip_amt = 0; + dual_wield_name = weapondualwieldweaponname( weapon ); + if ( dual_wield_name != "none" ) + { + self.stored_weapon_info[ weapon ].left_clip_amt = self getweaponammoclip( dual_wield_name ); + } + self.stored_weapon_info[ weapon ].stock_amt = self getweaponammostock( weapon ); + self.stored_weapon_info[ weapon ].total_amt = self.stored_weapon_info[ weapon ].clip_amt + self.stored_weapon_info[ weapon ].left_clip_amt + self.stored_weapon_info[ weapon ].stock_amt; + self.stored_weapon_info[ weapon ].given_amt = 0; + } + i++; + } + self last_stand_best_pistol(); +} + +last_stand_restore_pistol_ammo() +{ + self.weapon_taken_by_losing_specialty_additionalprimaryweapon = undefined; + if ( !isDefined( self.stored_weapon_info ) ) + { + return; + } + weapon_inventory = self getweaponslist( 1 ); + weapon_to_restore = getarraykeys( self.stored_weapon_info ); + i = 0; + while ( i < weapon_inventory.size ) + { + weapon = weapon_inventory[ i ]; + if ( weapon != self.laststandpistol ) + { + i++; + continue; + } + else j = 0; + while ( j < weapon_to_restore.size ) + { + check_weapon = weapon_to_restore[ j ]; + if ( weapon == check_weapon ) + { + dual_wield_name = weapondualwieldweaponname( weapon_to_restore[ j ] ); + if ( weapon != "m1911_zm" ) + { + last_clip = self getweaponammoclip( weapon ); + last_left_clip = 0; + if ( dual_wield_name != "none" ) + { + last_left_clip = self getweaponammoclip( dual_wield_name ); + } + last_stock = self getweaponammostock( weapon ); + last_total = last_clip + last_left_clip + last_stock; + used_amt = self.stored_weapon_info[ weapon ].given_amt - last_total; + if ( used_amt >= self.stored_weapon_info[ weapon ].stock_amt ) + { + used_amt -= self.stored_weapon_info[ weapon ].stock_amt; + self.stored_weapon_info[ weapon ].stock_amt = 0; + self.stored_weapon_info[ weapon ].clip_amt -= used_amt; + if ( self.stored_weapon_info[ weapon ].clip_amt < 0 ) + { + self.stored_weapon_info[ weapon ].clip_amt = 0; + } + break; + } + else + { + new_stock_amt = self.stored_weapon_info[ weapon ].stock_amt - used_amt; + if ( new_stock_amt < self.stored_weapon_info[ weapon ].stock_amt ) + { + self.stored_weapon_info[ weapon ].stock_amt = new_stock_amt; + } + } + } + self setweaponammoclip( weapon_to_restore[ j ], self.stored_weapon_info[ weapon_to_restore[ j ] ].clip_amt ); + if ( dual_wield_name != "none" ) + { + self setweaponammoclip( dual_wield_name, self.stored_weapon_info[ weapon_to_restore[ j ] ].left_clip_amt ); + } + self setweaponammostock( weapon_to_restore[ j ], self.stored_weapon_info[ weapon_to_restore[ j ] ].stock_amt ); + i++; + continue; + } + else + { + j++; + } + } + i++; + } +} + +zombiemode_solo_last_stand_pistol() +{ + level.laststandpistol = "m1911_upgraded_zm"; +} + +last_stand_take_thrown_grenade() +{ + self endon( "disconnect" ); + self endon( "bled_out" ); + self endon( "player_revived" ); + self waittill( "grenade_fire", grenade, weaponname ); + if ( isDefined( self.lsgsar_lethal ) && weaponname == self.lsgsar_lethal ) + { + self.lsgsar_lethal_nade_amt--; + + } + if ( isDefined( self.lsgsar_tactical ) && weaponname == self.lsgsar_tactical ) + { + self.lsgsar_tactical_nade_amt--; + + } +} + +last_stand_grenade_save_and_return() +{ + if ( isDefined( level.isresetting_grief ) && level.isresetting_grief ) + { + return; + } + self endon( "disconnect" ); + self endon( "bled_out" ); + level endon( "between_round_over" ); + self.lsgsar_lethal_nade_amt = 0; + self.lsgsar_has_lethal_nade = 0; + self.lsgsar_tactical_nade_amt = 0; + self.lsgsar_has_tactical_nade = 0; + self.lsgsar_lethal = undefined; + self.lsgsar_tactical = undefined; + if ( self isthrowinggrenade() ) + { + self thread last_stand_take_thrown_grenade(); + } + weapons_on_player = self getweaponslist( 1 ); + i = 0; + while ( i < weapons_on_player.size ) + { + if ( self is_player_lethal_grenade( weapons_on_player[ i ] ) ) + { + self.lsgsar_has_lethal_nade = 1; + self.lsgsar_lethal = self get_player_lethal_grenade(); + self.lsgsar_lethal_nade_amt = self getweaponammoclip( self get_player_lethal_grenade() ); + self setweaponammoclip( self get_player_lethal_grenade(), 0 ); + self takeweapon( self get_player_lethal_grenade() ); + i++; + continue; + } + else + { + if ( self is_player_tactical_grenade( weapons_on_player[ i ] ) ) + { + self.lsgsar_has_tactical_nade = 1; + self.lsgsar_tactical = self get_player_tactical_grenade(); + self.lsgsar_tactical_nade_amt = self getweaponammoclip( self get_player_tactical_grenade() ); + self setweaponammoclip( self get_player_tactical_grenade(), 0 ); + self takeweapon( self get_player_tactical_grenade() ); + } + } + i++; + } + self waittill( "player_revived" ); + if ( self.lsgsar_has_lethal_nade ) + { + self set_player_lethal_grenade( self.lsgsar_lethal ); + self giveweapon( self.lsgsar_lethal ); + self setweaponammoclip( self.lsgsar_lethal, self.lsgsar_lethal_nade_amt ); + } + if ( self.lsgsar_has_tactical_nade ) + { + self set_player_tactical_grenade( self.lsgsar_tactical ); + self giveweapon( self.lsgsar_tactical ); + self setweaponammoclip( self.lsgsar_tactical, self.lsgsar_tactical_nade_amt ); + } + self.lsgsar_lethal_nade_amt = undefined; + self.lsgsar_has_lethal_nade = undefined; + self.lsgsar_tactical_nade_amt = undefined; + self.lsgsar_has_tactical_nade = undefined; + self.lsgsar_lethal = undefined; + self.lsgsar_tactical = undefined; +} + +spectators_respawn() +{ + level endon( "between_round_over" ); + if ( !isDefined( level.zombie_vars[ "spectators_respawn" ] ) || !level.zombie_vars[ "spectators_respawn" ] ) + { + return; + } + if ( !isDefined( level.custom_spawnplayer ) ) + { + level.custom_spawnplayer = ::spectator_respawn; + } + while ( 1 ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ].sessionstate == "spectator" && isDefined( players[ i ].spectator_respawn ) ) + { + players[ i ] [[ level.spawnplayer ]](); + thread refresh_player_navcard_hud(); + if ( isDefined( level.script ) && level.round_number > 6 && players[ i ].score < 1500 ) + { + players[ i ].old_score = players[ i ].score; + if ( isDefined( level.spectator_respawn_custom_score ) ) + { + players[ i ] [[ level.spectator_respawn_custom_score ]](); + } + players[ i ].score = 1500; + } + } + i++; + } + wait 1; + } +} + +spectator_respawn() +{ +/# + println( "*************************Respawn Spectator***" ); +#/ +/# + assert( isDefined( self.spectator_respawn ) ); +#/ + origin = self.spectator_respawn.origin; + angles = self.spectator_respawn.angles; + self setspectatepermissions( 0 ); + new_origin = undefined; + if ( isDefined( level.check_valid_spawn_override ) ) + { + new_origin = [[ level.check_valid_spawn_override ]]( self ); + } + if ( !isDefined( new_origin ) ) + { + new_origin = check_for_valid_spawn_near_team( self, 1 ); + } + if ( isDefined( new_origin ) ) + { + if ( !isDefined( new_origin.angles ) ) + { + angles = ( 0, 0, -1 ); + } + else + { + angles = new_origin.angles; + } + self spawn( new_origin.origin, angles ); + } + else + { + self spawn( origin, angles ); + } + if ( isDefined( self get_player_placeable_mine() ) ) + { + self takeweapon( self get_player_placeable_mine() ); + self set_player_placeable_mine( undefined ); + } + self maps/mp/zombies/_zm_equipment::equipment_take(); + self.is_burning = undefined; + self.abilities = []; + self.is_zombie = 0; + self.ignoreme = 0; + setclientsysstate( "lsm", "0", self ); + self reviveplayer(); + self notify( "spawned_player" ); + if ( isDefined( level._zombiemode_post_respawn_callback ) ) + { + self thread [[ level._zombiemode_post_respawn_callback ]](); + } + self maps/mp/zombies/_zm_score::player_reduce_points( "died" ); + self maps/mp/zombies/_zm_melee_weapon::spectator_respawn_all(); + claymore_triggers = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < claymore_triggers.size ) + { + claymore_triggers[ i ] setvisibletoplayer( self ); + claymore_triggers[ i ].claymores_triggered = 0; + i++; + } + self thread player_zombie_breadcrumb(); + return 1; +} + +check_for_valid_spawn_near_team( revivee, return_struct ) +{ + if ( isDefined( level.check_for_valid_spawn_near_team_callback ) ) + { + spawn_location = [[ level.check_for_valid_spawn_near_team_callback ]]( revivee, return_struct ); + return spawn_location; + } + else + { + players = get_players(); + spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype(); + closest_group = undefined; + closest_distance = 100000000; + backup_group = undefined; + backup_distance = 100000000; + if ( spawn_points.size == 0 ) + { + return undefined; + } + i = 0; + while ( i < players.size ) + { + while ( is_player_valid( players[ i ], undefined, 1 ) && players[ i ] != self ) + { + j = 0; + while ( j < spawn_points.size ) + { + if ( isDefined( spawn_points[ j ].script_int ) ) + { + ideal_distance = spawn_points[ j ].script_int; + } + else + { + ideal_distance = 1000; + } + if ( spawn_points[ j ].locked == 0 ) + { + plyr_dist = distancesquared( players[ i ].origin, spawn_points[ j ].origin ); + if ( plyr_dist < ( ideal_distance * ideal_distance ) ) + { + if ( plyr_dist < closest_distance ) + { + closest_distance = plyr_dist; + closest_group = j; + } + j++; + continue; + } + else + { + if ( plyr_dist < backup_distance ) + { + backup_group = j; + backup_distance = plyr_dist; + } + } + } + j++; + } + } + if ( !isDefined( closest_group ) ) + { + closest_group = backup_group; + } + if ( isDefined( closest_group ) ) + { + spawn_location = get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct ); + if ( isDefined( spawn_location ) ) + { + return spawn_location; + } + } + i++; + } + return undefined; + } +} + +get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct ) +{ + spawn_array = getstructarray( spawn_points[ closest_group ].target, "targetname" ); + spawn_array = array_randomize( spawn_array ); + k = 0; + while ( k < spawn_array.size ) + { + if ( isDefined( spawn_array[ k ].plyr ) && spawn_array[ k ].plyr == revivee getentitynumber() ) + { + if ( positionwouldtelefrag( spawn_array[ k ].origin ) ) + { + spawn_array[ k ].plyr = undefined; + break; + } + else if ( isDefined( return_struct ) && return_struct ) + { + return spawn_array[ k ]; + } + else + { + return spawn_array[ k ].origin; + } + } + k++; + } + k = 0; + while ( k < spawn_array.size ) + { + if ( positionwouldtelefrag( spawn_array[ k ].origin ) ) + { + k++; + continue; + } + else if ( !isDefined( spawn_array[ k ].plyr ) || spawn_array[ k ].plyr == revivee getentitynumber() ) + { + spawn_array[ k ].plyr = revivee getentitynumber(); + if ( isDefined( return_struct ) && return_struct ) + { + return spawn_array[ k ]; + } + else + { + return spawn_array[ k ].origin; + } + } + k++; + } + if ( isDefined( return_struct ) && return_struct ) + { + return spawn_array[ 0 ]; + } + return spawn_array[ 0 ].origin; +} + +check_for_valid_spawn_near_position( revivee, v_position, return_struct ) +{ + spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype(); + if ( spawn_points.size == 0 ) + { + return undefined; + } + closest_group = undefined; + closest_distance = 100000000; + backup_group = undefined; + backup_distance = 100000000; + i = 0; + while ( i < spawn_points.size ) + { + if ( isDefined( spawn_points[ i ].script_int ) ) + { + ideal_distance = spawn_points[ i ].script_int; + } + else + { + ideal_distance = 1000; + } + if ( spawn_points[ i ].locked == 0 ) + { + dist = distancesquared( v_position, spawn_points[ i ].origin ); + if ( dist < ( ideal_distance * ideal_distance ) ) + { + if ( dist < closest_distance ) + { + closest_distance = dist; + closest_group = i; + } + break; + } + else + { + if ( dist < backup_distance ) + { + backup_group = i; + backup_distance = dist; + } + } + } + if ( !isDefined( closest_group ) ) + { + closest_group = backup_group; + } + i++; + } + if ( isDefined( closest_group ) ) + { + spawn_location = get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct ); + if ( isDefined( spawn_location ) ) + { + return spawn_location; + } + } + return undefined; +} + +check_for_valid_spawn_within_range( revivee, v_position, return_struct, min_distance, max_distance ) +{ + spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype(); + if ( spawn_points.size == 0 ) + { + return undefined; + } + closest_group = undefined; + closest_distance = 100000000; + i = 0; + while ( i < spawn_points.size ) + { + if ( spawn_points[ i ].locked == 0 ) + { + dist = distance( v_position, spawn_points[ i ].origin ); + if ( dist >= min_distance && dist <= max_distance ) + { + if ( dist < closest_distance ) + { + closest_distance = dist; + closest_group = i; + } + } + } + i++; + } + if ( isDefined( closest_group ) ) + { + spawn_location = get_valid_spawn_location( revivee, spawn_points, closest_group, return_struct ); + if ( isDefined( spawn_location ) ) + { + return spawn_location; + } + } + return undefined; +} + +get_players_on_team( exclude ) +{ + teammates = []; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ].spawn_side == self.spawn_side && !isDefined( players[ i ].revivetrigger ) && players[ i ] != exclude ) + { + teammates[ teammates.size ] = players[ i ]; + } + i++; + } + return teammates; +} + +get_safe_breadcrumb_pos( player ) +{ + players = get_players(); + valid_players = []; + min_dist = 22500; + i = 0; + while ( i < players.size ) + { + if ( !is_player_valid( players[ i ] ) ) + { + i++; + continue; + } + else + { + valid_players[ valid_players.size ] = players[ i ]; + } + i++; + } + i = 0; + while ( i < valid_players.size ) + { + count = 0; + q = 1; + while ( q < player.zombie_breadcrumbs.size ) + { + if ( distancesquared( player.zombie_breadcrumbs[ q ], valid_players[ i ].origin ) < min_dist ) + { + q++; + continue; + } + else + { + count++; + if ( count == valid_players.size ) + { + return player.zombie_breadcrumbs[ q ]; + } + } + q++; + } + i++; + } + return undefined; +} + +default_max_zombie_func( max_num ) +{ + max = max_num; + if ( level.round_number < 2 ) + { + max = int( max_num * 0,25 ); + } + else if ( level.round_number < 3 ) + { + max = int( max_num * 0,3 ); + } + else if ( level.round_number < 4 ) + { + max = int( max_num * 0,5 ); + } + else if ( level.round_number < 5 ) + { + max = int( max_num * 0,7 ); + } + else + { + if ( level.round_number < 6 ) + { + max = int( max_num * 0,9 ); + } + } + return max; +} + +round_spawning() +{ + level endon( "intermission" ); + level endon( "end_of_round" ); + level endon( "restart_round" ); +/# + level endon( "kill_round" ); +#/ + if ( level.intermission ) + { + return; + } +/# + if ( getDvarInt( "zombie_cheat" ) == 2 || getDvarInt( "zombie_cheat" ) >= 4 ) + { + return; +#/ + } + if ( level.zombie_spawn_locations.size < 1 ) + { +/# + assertmsg( "No active spawners in the map. Check to see if the zone is active and if it's pointing to spawners." ); +#/ + return; + } + ai_calculate_health( level.round_number ); + count = 0; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ].zombification_time = 0; + i++; + } + max = level.zombie_vars[ "zombie_max_ai" ]; + multiplier = level.round_number / 5; + if ( multiplier < 1 ) + { + multiplier = 1; + } + if ( level.round_number >= 10 ) + { + multiplier *= level.round_number * 0,15; + } + player_num = get_players().size; + if ( player_num == 1 ) + { + max += int( 0,5 * level.zombie_vars[ "zombie_ai_per_player" ] * multiplier ); + } + else + { + max += int( ( player_num - 1 ) * level.zombie_vars[ "zombie_ai_per_player" ] * multiplier ); + } + if ( !isDefined( level.max_zombie_func ) ) + { + level.max_zombie_func = ::default_max_zombie_func; + } + if ( isDefined( level.kill_counter_hud ) && level.zombie_total > 0 ) + { + level.zombie_total = [[ level.max_zombie_func ]]( max ); + level notify( "zombie_total_set" ); + } + if ( isDefined( level.zombie_total_set_func ) ) + { + level thread [[ level.zombie_total_set_func ]](); + } + if ( level.round_number < 10 || level.speed_change_max > 0 ) + { + level thread zombie_speed_up(); + } + mixed_spawns = 0; + old_spawn = undefined; + while ( 1 ) + { + while ( get_current_zombie_count() >= level.zombie_ai_limit || level.zombie_total <= 0 ) + { + wait 0,1; + } + while ( get_current_actor_count() >= level.zombie_actor_limit ) + { + clear_all_corpses(); + wait 0,1; + } + if ( !flag( "spawn_zombies" ) ) + { + flag_wait( "spawn_zombies" ); + } + while ( level.zombie_spawn_locations.size <= 0 ) + { + wait 0,1; + } + spawn_point = level.zombie_spawn_locations[ randomint( level.zombie_spawn_locations.size ) ]; + if ( !isDefined( old_spawn ) ) + { + old_spawn = spawn_point; + } + else + { + if ( spawn_point == old_spawn ) + { + spawn_point = level.zombie_spawn_locations[ randomint( level.zombie_spawn_locations.size ) ]; + } + } + old_spawn = spawn_point; + while ( isDefined( level.mixed_rounds_enabled ) && level.mixed_rounds_enabled == 1 ) + { + spawn_dog = 0; + if ( level.round_number > 30 ) + { + if ( randomint( 100 ) < 3 ) + { + spawn_dog = 1; + } + } + else if ( level.round_number > 25 && mixed_spawns < 3 ) + { + if ( randomint( 100 ) < 2 ) + { + spawn_dog = 1; + } + } + else + { + if ( level.round_number > 20 && mixed_spawns < 2 ) + { + if ( randomint( 100 ) < 2 ) + { + spawn_dog = 1; + } + break; + } + else + { + if ( level.round_number > 15 && mixed_spawns < 1 ) + { + if ( randomint( 100 ) < 1 ) + { + spawn_dog = 1; + } + } + } + } + while ( spawn_dog ) + { + keys = getarraykeys( level.zones ); + i = 0; + while ( i < keys.size ) + { + while ( level.zones[ keys[ i ] ].is_occupied ) + { + akeys = getarraykeys( level.zones[ keys[ i ] ].adjacent_zones ); + k = 0; + while ( k < akeys.size ) + { + if ( level.zones[ akeys[ k ] ].is_active && !level.zones[ akeys[ k ] ].is_occupied && level.zones[ akeys[ k ] ].dog_locations.size > 0 ) + { + maps/mp/zombies/_zm_ai_dogs::special_dog_spawn( undefined, 1 ); + level.zombie_total--; + + wait_network_frame(); + } + k++; + } + } + i++; + } + } + } + if ( isDefined( level.zombie_spawners ) ) + { + if ( isDefined( level.use_multiple_spawns ) && level.use_multiple_spawns && isDefined( level.spawner_int ) ) + { + if ( isDefined( level.zombie_spawn[ level.spawner_int ] ) && level.zombie_spawn[ level.spawner_int ].size > 0 ) + { + spawner = random( level.zombie_spawn[ level.spawner_int ] ); + } + else + { + spawner = random( level.zombie_spawners ); + } + } + else + { + spawner = random( level.zombie_spawners ); + } + ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); + } + if ( isDefined( ai ) ) + { + level.zombie_total--; + + ai thread round_spawn_failsafe(); + count++; + } + wait level.zombie_vars[ "zombie_spawn_delay" ]; + wait_network_frame(); + } +} + +zombie_speed_up() +{ + if ( level.round_number <= 3 ) + { + return; + } + level endon( "intermission" ); + level endon( "end_of_round" ); + level endon( "restart_round" ); +/# + level endon( "kill_round" ); +#/ + while ( level.zombie_total > 4 ) + { + wait 2; + } + num_zombies = get_current_zombie_count(); + while ( num_zombies > 3 ) + { + wait 2; + num_zombies = get_current_zombie_count(); + } + zombies = get_round_enemy_array(); + while ( zombies.size > 0 ) + { + if ( zombies.size == 1 && isDefined( zombies[ 0 ].has_legs ) && zombies[ 0 ].has_legs ) + { + if ( isDefined( level.zombie_speed_up ) ) + { + zombies[ 0 ] thread [[ level.zombie_speed_up ]](); + break; + } + else + { + if ( zombies[ 0 ].zombie_move_speed != "sprint" ) + { + zombies[ 0 ] set_zombie_run_cycle( "sprint" ); + zombies[ 0 ].zombie_move_speed_original = zombies[ 0 ].zombie_move_speed; + } + } + } + wait 0,5; + zombies = get_round_enemy_array(); + } +} + +round_spawning_test() +{ + while ( 1 ) + { + spawn_point = level.zombie_spawn_locations[ randomint( level.zombie_spawn_locations.size ) ]; + spawner = random( level.zombie_spawners ); + ai = spawn_zombie( spawner, spawner.targetname, spawn_point ); + ai waittill( "death" ); + wait 5; + } +} + +round_pause( delay ) +{ + if ( !isDefined( delay ) ) + { + delay = 30; + } + level.countdown_hud = create_counter_hud(); + level.countdown_hud setvalue( delay ); + level.countdown_hud.color = ( 0, 0, -1 ); + level.countdown_hud.alpha = 1; + level.countdown_hud fadeovertime( 2 ); + wait 2; + level.countdown_hud.color = vectorScale( ( 0, 0, -1 ), 0,21 ); + level.countdown_hud fadeovertime( 3 ); + wait 3; + while ( delay >= 1 ) + { + wait 1; + delay--; + + level.countdown_hud setvalue( delay ); + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] playlocalsound( "zmb_perks_packa_ready" ); + i++; + } + level.countdown_hud fadeovertime( 1 ); + level.countdown_hud.color = ( 0, 0, -1 ); + level.countdown_hud.alpha = 0; + wait 1; + level.countdown_hud destroy_hud(); +} + +round_start() +{ +/# + println( "ZM >> round_start start" ); +#/ + if ( isDefined( level.round_prestart_func ) ) + { + [[ level.round_prestart_func ]](); + } + else + { + wait 2; + } + level.zombie_health = level.zombie_vars[ "zombie_health_start" ]; + if ( getDvarInt( "scr_writeConfigStrings" ) == 1 ) + { + wait 5; + exitlevel(); + return; + } + if ( level.zombie_vars[ "game_start_delay" ] > 0 ) + { + round_pause( level.zombie_vars[ "game_start_delay" ] ); + } + flag_set( "begin_spawning" ); + if ( !isDefined( level.round_spawn_func ) ) + { + level.round_spawn_func = ::round_spawning; + } +/# + if ( getDvarInt( #"7688603C" ) ) + { + level.round_spawn_func = ::round_spawning_test; +#/ + } + if ( !isDefined( level.round_wait_func ) ) + { + level.round_wait_func = ::round_wait; + } + if ( !isDefined( level.round_think_func ) ) + { + level.round_think_func = ::round_think; + } + level thread [[ level.round_think_func ]](); +} + +play_door_dialog() +{ + level endon( "power_on" ); + self endon( "warning_dialog" ); + timer = 0; + while ( 1 ) + { + wait 0,05; + players = get_players(); + i = 0; + while ( i < players.size ) + { + dist = distancesquared( players[ i ].origin, self.origin ); + if ( dist > 4900 ) + { + timer = 0; + i++; + continue; + } + else + { + while ( dist < 4900 && timer < 3 ) + { + wait 0,5; + timer++; + } + if ( dist > 4900 && timer >= 3 ) + { + self playsound( "door_deny" ); + players[ i ] maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "door_deny" ); + wait 3; + self notify( "warning_dialog" ); + } + } + i++; + } + } +} + +wait_until_first_player() +{ + players = get_players(); + if ( !isDefined( players[ 0 ] ) ) + { + level waittill( "first_player_ready" ); + } +} + +round_one_up() +{ + level endon( "end_game" ); + if ( isDefined( level.noroundnumber ) && level.noroundnumber == 1 ) + { + return; + } + if ( !isDefined( level.doground_nomusic ) ) + { + level.doground_nomusic = 0; + } + if ( level.first_round ) + { + intro = 1; + if ( isDefined( level._custom_intro_vox ) ) + { + level thread [[ level._custom_intro_vox ]](); + } + else + { + level thread play_level_start_vox_delayed(); + } + } + else + { + intro = 0; + } + if ( level.round_number != 5 && level.round_number != 10 && level.round_number != 20 || level.round_number == 35 && level.round_number == 50 ) + { + players = get_players(); + rand = randomintrange( 0, players.size ); + players[ rand ] thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "round_" + level.round_number ); + } + if ( intro ) + { + if ( isDefined( level.host_ended_game ) && level.host_ended_game ) + { + return; + } + wait 6,25; + level notify( "intro_hud_done" ); + wait 2; + } + else + { + wait 2,5; + } + reportmtu( level.round_number ); +} + +round_over() +{ + if ( isDefined( level.noroundnumber ) && level.noroundnumber == 1 ) + { + return; + } + time = level.zombie_vars[ "zombie_between_round_time" ]; + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + if ( !isDefined( players[ player_index ].pers[ "previous_distance_traveled" ] ) ) + { + players[ player_index ].pers[ "previous_distance_traveled" ] = 0; + } + distancethisround = int( players[ player_index ].pers[ "distance_traveled" ] - players[ player_index ].pers[ "previous_distance_traveled" ] ); + players[ player_index ].pers[ "previous_distance_traveled" ] = players[ player_index ].pers[ "distance_traveled" ]; + players[ player_index ] incrementplayerstat( "distance_traveled", distancethisround ); + if ( players[ player_index ].pers[ "team" ] != "spectator" ) + { + zonename = players[ player_index ] get_current_zone(); + if ( isDefined( zonename ) ) + { + players[ player_index ] recordzombiezone( "endingZone", zonename ); + } + } + player_index++; + } + recordzombieroundend(); + wait time; +} + +round_think( restart ) +{ +/# + println( "ZM >> round_think start" ); +#/ + level endon( "end_round_think" ); + while ( isDefined( restart ) && !restart ) + { + if ( isDefined( level.initial_round_wait_func ) ) + { + [[ level.initial_round_wait_func ]](); + } + while ( isDefined( level.host_ended_game ) && !level.host_ended_game ) + { + players = get_players(); + _a4193 = players; + _k4193 = getFirstArrayKey( _a4193 ); + while ( isDefined( _k4193 ) ) + { + player = _a4193[ _k4193 ]; + if ( isDefined( player.hostmigrationcontrolsfrozen ) && !player.hostmigrationcontrolsfrozen ) + { + player freezecontrols( 0 ); +/# + println( " Unfreeze controls 8" ); +#/ + } + player maps/mp/zombies/_zm_stats::set_global_stat( "rounds", level.round_number ); + _k4193 = getNextArrayKey( _a4193, _k4193 ); + } + } + } + setroundsplayed( level.round_number ); + for ( ;; ) + { + maxreward = 50 * level.round_number; + if ( maxreward > 500 ) + { + maxreward = 500; + } + level.zombie_vars[ "rebuild_barrier_cap_per_round" ] = maxreward; + level.pro_tips_start_time = getTime(); + level.zombie_last_run_time = getTime(); + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "round_start" ); + round_one_up(); + maps/mp/zombies/_zm_powerups::powerup_round_start(); + players = get_players(); + array_thread( players, ::maps/mp/zombies/_zm_blockers::rebuild_barrier_reward_reset ); + if ( isDefined( level.headshots_only ) && !level.headshots_only ) + { + level thread award_grenades_for_survivors(); + } + bbprint( "zombie_rounds", "round %d player_count %d", level.round_number, players.size ); +/# + println( "ZM >> round_think, round=" + level.round_number + ", player_count=" + players.size ); +#/ + level.round_start_time = getTime(); + while ( level.zombie_spawn_locations.size <= 0 ) + { + wait 0,1; + } + level thread [[ level.round_spawn_func ]](); + level notify( "start_of_round" ); + recordzombieroundstart(); + players = getplayers(); + index = 0; + while ( index < players.size ) + { + zonename = players[ index ] get_current_zone(); + if ( isDefined( zonename ) ) + { + players[ index ] recordzombiezone( "startingZone", zonename ); + } + index++; + } + if ( isDefined( level.round_start_custom_func ) ) + { + [[ level.round_start_custom_func ]](); + } + [[ level.round_wait_func ]](); + level.first_round = 0; + level notify( "end_of_round" ); + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "round_end" ); + uploadstats(); + if ( isDefined( level.round_end_custom_logic ) ) + { + [[ level.round_end_custom_logic ]](); + } + players = get_players(); + if ( isDefined( level.no_end_game_check ) && level.no_end_game_check ) + { + level thread last_stand_revive(); + level thread spectators_respawn(); + } + else + { + if ( players.size != 1 ) + { + level thread spectators_respawn(); + } + } + players = get_players(); + array_thread( players, ::maps/mp/zombies/_zm_pers_upgrades_system::round_end ); + timer = level.zombie_vars[ "zombie_spawn_delay" ]; + if ( timer > 0,08 ) + { + level.zombie_vars[ "zombie_spawn_delay" ] = timer * 0,95; + } + else + { + if ( timer < 0,08 ) + { + level.zombie_vars[ "zombie_spawn_delay" ] = 0,08; + } + } + if ( level.gamedifficulty == 0 ) + { + level.zombie_move_speed = level.round_number * level.zombie_vars[ "zombie_move_speed_multiplier_easy" ]; + } + else + { + level.zombie_move_speed = level.round_number * level.zombie_vars[ "zombie_move_speed_multiplier" ]; + } + level.round_number++; + if ( level.round_number >= 255 ) + { + level.round_number = 255; + } + setroundsplayed( level.round_number ); + matchutctime = getutc(); + players = get_players(); + _a4335 = players; + _k4335 = getFirstArrayKey( _a4335 ); + while ( isDefined( _k4335 ) ) + { + player = _a4335[ _k4335 ]; + if ( level.curr_gametype_affects_rank && level.round_number > 4 ) + { + player maps/mp/zombies/_zm_stats::add_client_stat( "weighted_rounds_played", level.round_number ); + } + player maps/mp/zombies/_zm_stats::set_global_stat( "rounds", level.round_number ); + player maps/mp/zombies/_zm_stats::update_playing_utc_time( matchutctime ); + _k4335 = getNextArrayKey( _a4335, _k4335 ); + } + check_quickrevive_for_hotjoin(); + level round_over(); + level notify( "between_round_over" ); + } +} + +award_grenades_for_survivors() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !players[ i ].is_zombie ) + { + lethal_grenade = players[ i ] get_player_lethal_grenade(); + if ( !players[ i ] hasweapon( lethal_grenade ) ) + { + players[ i ] giveweapon( lethal_grenade ); + players[ i ] setweaponammoclip( lethal_grenade, 0 ); + } + if ( players[ i ] getfractionmaxammo( lethal_grenade ) < 0,25 ) + { + players[ i ] setweaponammoclip( lethal_grenade, 2 ); + i++; + continue; + } + else if ( players[ i ] getfractionmaxammo( lethal_grenade ) < 0,5 ) + { + players[ i ] setweaponammoclip( lethal_grenade, 3 ); + i++; + continue; + } + else + { + players[ i ] setweaponammoclip( lethal_grenade, 4 ); + } + } + i++; + } +} + +ai_calculate_health( round_number ) +{ + level.zombie_health = level.zombie_vars[ "zombie_health_start" ]; + i = 2; + while ( i <= round_number ) + { + if ( i >= 10 ) + { + old_health = level.zombie_health; + level.zombie_health += int( level.zombie_health * level.zombie_vars[ "zombie_health_increase_multiplier" ] ); + if ( level.zombie_health < old_health ) + { + level.zombie_health = old_health; + return; + } + i++; + continue; + } + else + { + level.zombie_health = int( level.zombie_health + level.zombie_vars[ "zombie_health_increase" ] ); + } + i++; + } +} + +ai_zombie_health( round_number ) +{ + zombie_health = level.zombie_vars[ "zombie_health_start" ]; + i = 2; + while ( i <= round_number ) + { + if ( i >= 10 ) + { + old_health = zombie_health; + zombie_health += int( zombie_health * level.zombie_vars[ "zombie_health_increase_multiplier" ] ); + if ( zombie_health < old_health ) + { + return old_health; + } + } + else + { + zombie_health = int( zombie_health + level.zombie_vars[ "zombie_health_increase" ] ); + } + i++; + } + return zombie_health; +} + +round_spawn_failsafe_debug() +{ +/# + level notify( "failsafe_debug_stop" ); + level endon( "failsafe_debug_stop" ); + start = getTime(); + level.chunk_time = 0; + while ( 1 ) + { + level.failsafe_time = getTime() - start; + if ( isDefined( self.lastchunk_destroy_time ) ) + { + level.chunk_time = getTime() - self.lastchunk_destroy_time; + } + wait_network_frame(); +#/ + } +} + +round_spawn_failsafe() +{ + self endon( "death" ); + prevorigin = self.origin; + while ( 1 ) + { + if ( !level.zombie_vars[ "zombie_use_failsafe" ] ) + { + return; + } + if ( isDefined( self.ignore_round_spawn_failsafe ) && self.ignore_round_spawn_failsafe ) + { + return; + } + wait 30; + if ( !self.has_legs ) + { + wait 10; + } + if ( isDefined( self.is_inert ) && self.is_inert ) + { + continue; + } + while ( isDefined( self.lastchunk_destroy_time ) ) + { + while ( ( getTime() - self.lastchunk_destroy_time ) < 8000 ) + { + continue; + } + } + if ( self.origin[ 2 ] < level.zombie_vars[ "below_world_check" ] ) + { + if ( isDefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) && isDefined( self.isscreecher ) && !self.isscreecher ) + { + level.zombie_total++; + level.zombie_total_subtract++; + } +/# +#/ + self dodamage( self.health + 100, ( 0, 0, -1 ) ); + return; + } + else if ( distancesquared( self.origin, prevorigin ) < 576 ) + { + if ( isDefined( level.put_timed_out_zombies_back_in_queue ) && level.put_timed_out_zombies_back_in_queue && !flag( "dog_round" ) ) + { + if ( !self.ignoreall && isDefined( self.nuked ) && !self.nuked && isDefined( self.marked_for_death ) && !self.marked_for_death && isDefined( self.isscreecher ) && !self.isscreecher && isDefined( self.has_legs ) && self.has_legs ) + { + level.zombie_total++; + level.zombie_total_subtract++; + } + } + level.zombies_timeout_playspace++; +/# +#/ + self dodamage( self.health + 100, ( 0, 0, -1 ) ); + return; + } + else + { + prevorigin = self.origin; + } + } +} + +round_wait() +{ + level endon( "restart_round" ); +/# + if ( getDvarInt( #"7688603C" ) ) + { + level waittill( "forever" ); +#/ + } +/# + if ( getDvarInt( "zombie_cheat" ) == 2 || getDvarInt( "zombie_cheat" ) >= 4 ) + { + level waittill( "forever" ); +#/ + } + wait 1; + if ( flag( "dog_round" ) ) + { + wait 7; + while ( level.dog_intermission ) + { + wait 0,5; + } + increment_dog_round_stat( "finished" ); + } + else + { + while ( get_current_zombie_count() > 0 || level.zombie_total > 0 && level.intermission ) + { + if ( flag( "end_round_wait" ) ) + { + return; + } + wait 1; + } + } +} + +zombify_player() +{ + self maps/mp/zombies/_zm_score::player_died_penalty(); + bbprint( "zombie_playerdeaths", "round %d playername %s deathtype %s x %f y %f z %f", level.round_number, self.name, "died", self.origin ); + self recordplayerdeathzombies(); + if ( isDefined( level.deathcard_spawn_func ) ) + { + self [[ level.deathcard_spawn_func ]](); + } + if ( !isDefined( level.zombie_vars[ "zombify_player" ] ) || !level.zombie_vars[ "zombify_player" ] ) + { + self thread spawnspectator(); + return; + } + self.ignoreme = 1; + self.is_zombie = 1; + self.zombification_time = getTime(); + self.team = level.zombie_team; + self notify( "zombified" ); + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + } + self.revivetrigger = undefined; + self setmovespeedscale( 0,3 ); + self reviveplayer(); + self takeallweapons(); + self giveweapon( "zombie_melee", 0 ); + self switchtoweapon( "zombie_melee" ); + self disableweaponcycling(); + self disableoffhandweapons(); + setclientsysstate( "zombify", 1, self ); + self thread maps/mp/zombies/_zm_spawner::zombie_eye_glow(); + self thread playerzombie_player_damage(); + self thread playerzombie_soundboard(); +} + +playerzombie_player_damage() +{ + self endon( "death" ); + self endon( "disconnect" ); + self thread playerzombie_infinite_health(); + self.zombiehealth = level.zombie_health; + while ( 1 ) + { + self waittill( "damage", amount, attacker, directionvec, point, type ); + while ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + wait 0,05; + } + self.zombiehealth -= amount; + if ( self.zombiehealth <= 0 ) + { + self thread playerzombie_downed_state(); + self waittill( "playerzombie_downed_state_done" ); + self.zombiehealth = level.zombie_health; + } + } +} + +playerzombie_downed_state() +{ + self endon( "death" ); + self endon( "disconnect" ); + downtime = 15; + starttime = getTime(); + endtime = starttime + ( downtime * 1000 ); + self thread playerzombie_downed_hud(); + self.playerzombie_soundboard_disable = 1; + self thread maps/mp/zombies/_zm_spawner::zombie_eye_glow_stop(); + self disableweapons(); + self allowstand( 0 ); + self allowcrouch( 0 ); + self allowprone( 1 ); + while ( getTime() < endtime ) + { + wait 0,05; + } + self.playerzombie_soundboard_disable = 0; + self thread maps/mp/zombies/_zm_spawner::zombie_eye_glow(); + self enableweapons(); + self allowstand( 1 ); + self allowcrouch( 0 ); + self allowprone( 0 ); + self notify( "playerzombie_downed_state_done" ); +} + +playerzombie_downed_hud() +{ + self endon( "death" ); + self endon( "disconnect" ); + text = newclienthudelem( self ); + text.alignx = "center"; + text.aligny = "middle"; + text.horzalign = "user_center"; + text.vertalign = "user_bottom"; + text.foreground = 1; + text.font = "default"; + text.fontscale = 1,8; + text.alpha = 0; + text.color = ( 0, 0, -1 ); + text settext( &"ZOMBIE_PLAYERZOMBIE_DOWNED" ); + text.y = -113; + if ( self issplitscreen() ) + { + text.y = -137; + } + text fadeovertime( 0,1 ); + text.alpha = 1; + self waittill( "playerzombie_downed_state_done" ); + text fadeovertime( 0,1 ); + text.alpha = 0; +} + +playerzombie_infinite_health() +{ + self endon( "death" ); + self endon( "disconnect" ); + bighealth = 100000; + while ( 1 ) + { + if ( self.health < bighealth ) + { + self.health = bighealth; + } + wait 0,1; + } +} + +playerzombie_soundboard() +{ + self endon( "death" ); + self endon( "disconnect" ); + self.playerzombie_soundboard_disable = 0; + self.buttonpressed_use = 0; + self.buttonpressed_attack = 0; + self.buttonpressed_ads = 0; + self.usesound_waittime = 3000; + self.usesound_nexttime = getTime(); + usesound = "playerzombie_usebutton_sound"; + self.attacksound_waittime = 3000; + self.attacksound_nexttime = getTime(); + attacksound = "playerzombie_attackbutton_sound"; + self.adssound_waittime = 3000; + self.adssound_nexttime = getTime(); + adssound = "playerzombie_adsbutton_sound"; + self.inputsound_nexttime = getTime(); + while ( 1 ) + { + while ( self.playerzombie_soundboard_disable ) + { + wait 0,05; + } + if ( self usebuttonpressed() ) + { + if ( self can_do_input( "use" ) ) + { + self thread playerzombie_play_sound( usesound ); + self thread playerzombie_waitfor_buttonrelease( "use" ); + self.usesound_nexttime = getTime() + self.usesound_waittime; + } + } + else if ( self attackbuttonpressed() ) + { + if ( self can_do_input( "attack" ) ) + { + self thread playerzombie_play_sound( attacksound ); + self thread playerzombie_waitfor_buttonrelease( "attack" ); + self.attacksound_nexttime = getTime() + self.attacksound_waittime; + } + } + else + { + if ( self adsbuttonpressed() ) + { + if ( self can_do_input( "ads" ) ) + { + self thread playerzombie_play_sound( adssound ); + self thread playerzombie_waitfor_buttonrelease( "ads" ); + self.adssound_nexttime = getTime() + self.adssound_waittime; + } + } + } + wait 0,05; + } +} + +can_do_input( inputtype ) +{ + if ( getTime() < self.inputsound_nexttime ) + { + return 0; + } + cando = 0; + switch( inputtype ) + { + case "use": + if ( getTime() >= self.usesound_nexttime && !self.buttonpressed_use ) + { + cando = 1; + } + break; + case "attack": + if ( getTime() >= self.attacksound_nexttime && !self.buttonpressed_attack ) + { + cando = 1; + } + break; + case "ads": + if ( getTime() >= self.usesound_nexttime && !self.buttonpressed_ads ) + { + cando = 1; + } + break; + default: +/# + assertmsg( "can_do_input(): didn't recognize inputType of " + inputtype ); +#/ + break; + } + return cando; +} + +playerzombie_play_sound( alias ) +{ + self play_sound_on_ent( alias ); +} + +playerzombie_waitfor_buttonrelease( inputtype ) +{ + if ( inputtype != "use" && inputtype != "attack" && inputtype != "ads" ) + { +/# + assertmsg( "playerzombie_waitfor_buttonrelease(): inputType of " + inputtype + " is not recognized." ); +#/ + return; + } + notifystring = "waitfor_buttonrelease_" + inputtype; + self notify( notifystring ); + self endon( notifystring ); + if ( inputtype == "use" ) + { + self.buttonpressed_use = 1; + while ( self usebuttonpressed() ) + { + wait 0,05; + } + self.buttonpressed_use = 0; + } + else if ( inputtype == "attack" ) + { + self.buttonpressed_attack = 1; + while ( self attackbuttonpressed() ) + { + wait 0,05; + } + self.buttonpressed_attack = 0; + } + else + { + if ( inputtype == "ads" ) + { + self.buttonpressed_ads = 1; + while ( self adsbuttonpressed() ) + { + wait 0,05; + } + self.buttonpressed_ads = 0; + } + } +} + +remove_ignore_attacker() +{ + self notify( "new_ignore_attacker" ); + self endon( "new_ignore_attacker" ); + self endon( "disconnect" ); + if ( !isDefined( level.ignore_enemy_timer ) ) + { + level.ignore_enemy_timer = 0,4; + } + wait level.ignore_enemy_timer; + self.ignoreattacker = undefined; +} + +player_shield_facing_attacker( vdir, limit ) +{ + orientation = self getplayerangles(); + forwardvec = anglesToForward( orientation ); + forwardvec2d = ( forwardvec[ 0 ], forwardvec[ 1 ], 0 ); + unitforwardvec2d = vectornormalize( forwardvec2d ); + tofaceevec = vdir * -1; + tofaceevec2d = ( tofaceevec[ 0 ], tofaceevec[ 1 ], 0 ); + unittofaceevec2d = vectornormalize( tofaceevec2d ); + dotproduct = vectordot( unitforwardvec2d, unittofaceevec2d ); + return dotproduct > limit; +} + +player_damage_override_cheat( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + return 0; +} + +player_damage_override( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + if ( isDefined( level._game_module_player_damage_callback ) ) + { + self [[ level._game_module_player_damage_callback ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + idamage = self check_player_damage_callbacks( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + if ( !idamage ) + { + return 0; + } + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return 0; + } + if ( isDefined( einflictor ) ) + { + if ( isDefined( einflictor.water_damage ) && einflictor.water_damage ) + { + return 0; + } + } + if ( isDefined( eattacker ) && isDefined( eattacker.is_zombie ) || eattacker.is_zombie && isplayer( eattacker ) ) + { + if ( isDefined( self.hasriotshield ) && self.hasriotshield && isDefined( vdir ) ) + { + if ( isDefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) + { + if ( self player_shield_facing_attacker( vdir, 0,2 ) && isDefined( self.player_shield_apply_damage ) ) + { + self [[ self.player_shield_apply_damage ]]( 100, 0 ); + return 0; + } + } + else + { + if ( !isDefined( self.riotshieldentity ) ) + { + if ( !self player_shield_facing_attacker( vdir, -0,2 ) && isDefined( self.player_shield_apply_damage ) ) + { + self [[ self.player_shield_apply_damage ]]( 100, 0 ); + return 0; + } + } + } + } + } + if ( isDefined( eattacker ) ) + { + if ( isDefined( self.ignoreattacker ) && self.ignoreattacker == eattacker ) + { + return 0; + } + if ( isDefined( self.is_zombie ) && self.is_zombie && isDefined( eattacker.is_zombie ) && eattacker.is_zombie ) + { + return 0; + } + if ( isDefined( eattacker.is_zombie ) && eattacker.is_zombie ) + { + self.ignoreattacker = eattacker; + self thread remove_ignore_attacker(); + if ( isDefined( eattacker.custom_damage_func ) ) + { + idamage = eattacker [[ eattacker.custom_damage_func ]]( self ); + } + else if ( isDefined( eattacker.meleedamage ) ) + { + idamage = eattacker.meleedamage; + } + else + { + idamage = 50; + } + } + eattacker notify( "hit_player" ); + if ( smeansofdeath != "MOD_FALLING" ) + { + self thread playswipesound( smeansofdeath, eattacker ); + if ( isDefined( eattacker.is_zombie ) || eattacker.is_zombie && isplayer( eattacker ) ) + { + self playrumbleonentity( "damage_heavy" ); + } + if ( randomintrange( 0, 1 ) == 0 ) + { + self thread maps/mp/zombies/_zm_audio::playerexert( "hitmed" ); + } + else + { + self thread maps/mp/zombies/_zm_audio::playerexert( "hitlrg" ); + } + } + } + finaldamage = idamage; + if ( is_placeable_mine( sweapon ) ) + { + return 0; + } + if ( isDefined( self.player_damage_override ) ) + { + self thread [[ self.player_damage_override ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + if ( smeansofdeath == "MOD_FALLING" ) + { + if ( self hasperk( "specialty_flakjacket" ) && isDefined( self.divetoprone ) && self.divetoprone == 1 ) + { + if ( isDefined( level.zombiemode_divetonuke_perk_func ) ) + { + [[ level.zombiemode_divetonuke_perk_func ]]( self, self.origin ); + } + return 0; + } + } + if ( smeansofdeath != "MOD_PROJECTILE" && smeansofdeath != "MOD_PROJECTILE_SPLASH" || smeansofdeath == "MOD_GRENADE" && smeansofdeath == "MOD_GRENADE_SPLASH" ) + { + if ( self hasperk( "specialty_flakjacket" ) ) + { + return 0; + } + if ( self.health > 75 && isDefined( self.is_zombie ) && !self.is_zombie ) + { + return 75; + } + } + if ( idamage < self.health ) + { + if ( isDefined( eattacker ) ) + { + eattacker.sound_damage_player = self; + if ( isDefined( eattacker.has_legs ) && !eattacker.has_legs ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "crawl_hit" ); + } + else + { + if ( isDefined( eattacker.animname ) && eattacker.animname == "monkey_zombie" ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "monkey_hit" ); + } + } + } + return finaldamage; + } + if ( isDefined( eattacker ) ) + { + if ( isDefined( eattacker.animname ) && eattacker.animname == "zombie_dog" ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "killed_by_zdog" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "killed_by_zdog" ); + } + else + { + if ( isDefined( eattacker.is_avogadro ) && eattacker.is_avogadro ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "killed_by_avogadro", 0 ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "killed_by_avogadro" ); + } + } + } + self thread clear_path_timers(); + if ( level.intermission ) + { + level waittill( "forever" ); + } + if ( level.scr_zm_ui_gametype == "zcleansed" && idamage > 0 ) + { + if ( isDefined( eattacker ) && isplayer( eattacker ) && eattacker.team != self.team && isDefined( self.laststand ) && !self.laststand || !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && !isDefined( self.last_player_attacker ) ) + { + if ( isDefined( eattacker.maxhealth ) && isDefined( eattacker.is_zombie ) && eattacker.is_zombie ) + { + eattacker.health = eattacker.maxhealth; + } + if ( isDefined( level.player_kills_player ) ) + { + self thread [[ level.player_kills_player ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + } + } + } + if ( self.lives > 0 && self hasperk( "specialty_finalstand" ) ) + { + self.lives--; + + if ( isDefined( level.chugabud_laststand_func ) ) + { + self thread [[ level.chugabud_laststand_func ]](); + return 0; + } + } + players = get_players(); + count = 0; + i = 0; + while ( i < players.size ) + { + if ( self != players[ i ] && !players[ i ].is_zombie || players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ].sessionstate == "spectator" ) + { + count++; + } + i++; + } + if ( count < players.size || isDefined( level._game_module_game_end_check ) && !( [[ level._game_module_game_end_check ]]() ) ) + { + if ( isDefined( self.lives ) && self.lives > 0 && isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && self hasperk( "specialty_quickrevive" ) ) + { + self thread wait_and_revive(); + } + return finaldamage; + } + if ( players.size == 1 && flag( "solo_game" ) ) + { + if ( self.lives == 0 || !self hasperk( "specialty_quickrevive" ) ) + { + self.intermission = 1; + } + } + if ( players.size == 1 && flag( "solo_game" ) ) + { + if ( self.lives != 0 ) + { + solo_death = !self hasperk( "specialty_quickrevive" ); + } + } + if ( count > 1 ) + { + if ( players.size == 1 ) + { + non_solo_death = !flag( "solo_game" ); + } + } + if ( !solo_death && non_solo_death && isDefined( level.no_end_game_check ) && !level.no_end_game_check ) + { + level notify( "stop_suicide_trigger" ); + self thread maps/mp/zombies/_zm_laststand::playerlaststand( einflictor, eattacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ); + if ( !isDefined( vdir ) ) + { + vdir = ( 0, 0, -1 ); + } + self fakedamagefrom( vdir ); + if ( isDefined( level.custom_player_fake_death ) ) + { + self thread [[ level.custom_player_fake_death ]]( vdir, smeansofdeath ); + } + else + { + self thread player_fake_death(); + } + } + if ( count == players.size && isDefined( level.no_end_game_check ) && !level.no_end_game_check ) + { + if ( players.size == 1 && flag( "solo_game" ) ) + { + if ( self.lives == 0 || !self hasperk( "specialty_quickrevive" ) ) + { + self.lives = 0; + level notify( "pre_end_game" ); + wait_network_frame(); + if ( flag( "dog_round" ) ) + { + increment_dog_round_stat( "lost" ); + } + level notify( "end_game" ); + } + else + { + return finaldamage; + } + } + else + { + level notify( "pre_end_game" ); + wait_network_frame(); + if ( flag( "dog_round" ) ) + { + increment_dog_round_stat( "lost" ); + } + level notify( "end_game" ); + } + return 0; + } + else + { + surface = "flesh"; + return finaldamage; + } +} + +clear_path_timers() +{ + zombies = getaiarray( level.zombie_team ); + _a5284 = zombies; + _k5284 = getFirstArrayKey( _a5284 ); + while ( isDefined( _k5284 ) ) + { + zombie = _a5284[ _k5284 ]; + if ( isDefined( zombie.favoriteenemy ) && zombie.favoriteenemy == self ) + { + zombie.zombie_path_timer = 0; + } + _k5284 = getNextArrayKey( _a5284, _k5284 ); + } +} + +check_player_damage_callbacks( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + if ( !isDefined( level.player_damage_callbacks ) ) + { + return idamage; + } + i = 0; + while ( i < level.player_damage_callbacks.size ) + { + newdamage = self [[ level.player_damage_callbacks[ i ] ]]( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ); + if ( newdamage != -1 ) + { + return newdamage; + } + i++; + } + return idamage; +} + +register_player_damage_callback( func ) +{ + if ( !isDefined( level.player_damage_callbacks ) ) + { + level.player_damage_callbacks = []; + } + level.player_damage_callbacks[ level.player_damage_callbacks.size ] = func; +} + +wait_and_revive() +{ + flag_set( "wait_and_revive" ); + if ( isDefined( self.waiting_to_revive ) && self.waiting_to_revive == 1 ) + { + return; + } + self.waiting_to_revive = 1; + if ( isDefined( level.exit_level_func ) ) + { + self thread [[ level.exit_level_func ]](); + } + else + { + if ( get_players().size == 1 ) + { + self thread default_exit_level(); + } + } + solo_revive_time = 10; + self.revive_hud settext( &"ZOMBIE_REVIVING_SOLO", self ); + self maps/mp/zombies/_zm_laststand::revive_hud_show_n_fade( solo_revive_time ); + flag_wait_or_timeout( "instant_revive", solo_revive_time ); + if ( flag( "instant_revive" ) ) + { + self maps/mp/zombies/_zm_laststand::revive_hud_show_n_fade( 1 ); + } + flag_clear( "wait_and_revive" ); + self maps/mp/zombies/_zm_laststand::auto_revive( self ); + self.lives--; + + self.waiting_to_revive = 0; +} + +actor_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, psoffsettime ) +{ + if ( !isDefined( self ) || !isDefined( attacker ) ) + { + return damage; + } + if ( weapon == "tazer_knuckles_zm" || weapon == "jetgun_zm" ) + { + self.knuckles_extinguish_flames = 1; + } + else + { + if ( weapon != "none" ) + { + self.knuckles_extinguish_flames = undefined; + } + } + if ( isDefined( attacker.animname ) && attacker.animname == "quad_zombie" ) + { + if ( isDefined( self.animname ) && self.animname == "quad_zombie" ) + { + return 0; + } + } + if ( !isplayer( attacker ) && isDefined( self.non_attacker_func ) ) + { + return self [[ self.non_attacker_func ]]( damage, weapon ); + } + if ( !isplayer( attacker ) && !isplayer( self ) ) + { + return damage; + } + if ( !isDefined( damage ) || !isDefined( meansofdeath ) ) + { + return damage; + } + if ( meansofdeath == "" ) + { + return damage; + } + old_damage = damage; + final_damage = damage; + if ( isDefined( self.actor_damage_func ) ) + { + final_damage = [[ self.actor_damage_func ]]( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, psoffsettime ); + } +/# + if ( getDvarInt( #"5ABA6445" ) ) + { + println( "Perk/> Damage Factor: " + ( final_damage / old_damage ) + " - Pre Damage: " + old_damage + " - Post Damage: " + final_damage ); +#/ + } + if ( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) + { + attacker = attacker.owner; + } + if ( isDefined( self.in_water ) && self.in_water ) + { + if ( int( final_damage ) >= self.health ) + { + self.water_damage = 1; + } + } + attacker thread maps/mp/gametypes_zm/_weapons::checkhit( weapon ); + if ( isDefined( attacker.pers_upgrades_awarded[ "multikill_headshots" ] ) && attacker.pers_upgrades_awarded[ "multikill_headshots" ] && is_headshot( weapon, shitloc, meansofdeath ) ) + { + final_damage *= 2; + } + if ( isDefined( level.headshots_only ) && level.headshots_only && isDefined( attacker ) && isplayer( attacker ) ) + { + if ( meansofdeath == "MOD_MELEE" || shitloc == "head" && shitloc == "helmet" ) + { + return int( final_damage ); + } + if ( is_explosive_damage( meansofdeath ) ) + { + return int( final_damage ); + } + else + { + if ( !is_headshot( weapon, shitloc, meansofdeath ) ) + { + return 0; + } + } + } + return int( final_damage ); +} + +actor_damage_override_wrapper( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, psoffsettime, boneindex ) +{ + damage_override = self actor_damage_override( inflictor, attacker, damage, flags, meansofdeath, weapon, vpoint, vdir, shitloc, psoffsettime ); + if ( damage < self.health || isDefined( self.dont_die_on_me ) && !self.dont_die_on_me ) + { + self finishactordamage( inflictor, attacker, damage_override, flags, meansofdeath, weapon, vpoint, vdir, shitloc, psoffsettime, boneindex ); + } +} + +actor_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ) +{ + if ( game[ "state" ] == "postgame" ) + { + return; + } + if ( isai( attacker ) && isDefined( attacker.script_owner ) ) + { + if ( attacker.script_owner.team != self.aiteam ) + { + attacker = attacker.script_owner; + } + } + if ( attacker.classname == "script_vehicle" && isDefined( attacker.owner ) ) + { + attacker = attacker.owner; + } + if ( isDefined( attacker ) && isplayer( attacker ) ) + { + multiplier = 1; + if ( is_headshot( sweapon, shitloc, smeansofdeath ) ) + { + multiplier = 1,5; + } + type = undefined; + if ( isDefined( self.animname ) ) + { + switch( self.animname ) + { + case "quad_zombie": + type = "quadkill"; + break; + case "ape_zombie": + type = "apekill"; + break; + case "zombie": + type = "zombiekill"; + break; + case "zombie_dog": + type = "dogkill"; + break; + } + } + } + if ( isDefined( attacker ) && isplayer( attacker ) && attacker hasperk( "specialty_nomotionsensor" ) ) + { + self maps/mp/zombies/_zm_vulture::do_vulture_death( attacker ); + } + if ( isDefined( self.is_ziplining ) && self.is_ziplining ) + { + self.deathanim = undefined; + } + if ( isDefined( self.actor_killed_override ) ) + { + self [[ self.actor_killed_override ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime ); + } +} + +round_end_monitor() +{ + while ( 1 ) + { + level waittill( "end_of_round" ); + maps/mp/_demo::bookmark( "zm_round_end", getTime(), undefined, undefined, 1 ); + bbpostdemostreamstatsforround( level.round_number ); + wait 0,05; + } +} + +end_game() +{ + level waittill( "end_game" ); + check_end_game_intermission_delay(); +/# + println( "end_game TRIGGERED " ); +#/ + clientnotify( "zesn" ); + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "game_over" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + setclientsysstate( "lsm", "0", players[ i ] ); + i++; + } + i = 0; + while ( i < players.size ) + { + if ( players[ i ] player_is_in_laststand() ) + { + players[ i ] recordplayerdeathzombies(); + players[ i ] maps/mp/zombies/_zm_stats::increment_player_stat( "deaths" ); + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( "deaths" ); + players[ i ] maps/mp/zombies/_zm_pers_upgrades::pers_upgrade_jugg_player_death_stat(); + } + if ( isDefined( players[ i ].revivetexthud ) ) + { + players[ i ].revivetexthud destroy(); + } + i++; + } + stopallrumbles(); + level.intermission = 1; + level.zombie_vars[ "zombie_powerup_insta_kill_time" ] = 0; + level.zombie_vars[ "zombie_powerup_fire_sale_time" ] = 0; + level.zombie_vars[ "zombie_powerup_point_doubler_time" ] = 0; + wait 0,1; + game_over = []; + survived = []; + players = get_players(); + setmatchflag( "disableIngameMenu", 1 ); + _a5600 = players; + _k5600 = getFirstArrayKey( _a5600 ); + while ( isDefined( _k5600 ) ) + { + player = _a5600[ _k5600 ]; + player closemenu(); + player closeingamemenu(); + _k5600 = getNextArrayKey( _a5600, _k5600 ); + } + while ( !isDefined( level._supress_survived_screen ) ) + { + i = 0; + while ( i < players.size ) + { + game_over[ i ] = newclienthudelem( players[ i ] ); + game_over[ i ].alignx = "center"; + game_over[ i ].aligny = "middle"; + game_over[ i ].horzalign = "center"; + game_over[ i ].vertalign = "middle"; + game_over[ i ].y -= 130; + game_over[ i ].foreground = 1; + game_over[ i ].fontscale = 3; + game_over[ i ].alpha = 0; + game_over[ i ].color = ( 0, 0, -1 ); + game_over[ i ].hidewheninmenu = 1; + game_over[ i ] settext( &"ZOMBIE_GAME_OVER" ); + game_over[ i ] fadeovertime( 1 ); + game_over[ i ].alpha = 1; + if ( players[ i ] issplitscreen() ) + { + game_over[ i ].fontscale = 2; + game_over[ i ].y += 40; + } + survived[ i ] = newclienthudelem( players[ i ] ); + survived[ i ].alignx = "center"; + survived[ i ].aligny = "middle"; + survived[ i ].horzalign = "center"; + survived[ i ].vertalign = "middle"; + survived[ i ].y -= 100; + survived[ i ].foreground = 1; + survived[ i ].fontscale = 2; + survived[ i ].alpha = 0; + survived[ i ].color = ( 0, 0, -1 ); + survived[ i ].hidewheninmenu = 1; + if ( players[ i ] issplitscreen() ) + { + survived[ i ].fontscale = 1,5; + survived[ i ].y += 40; + } + if ( level.round_number < 2 ) + { + if ( level.script == "zombie_moon" ) + { + if ( !isDefined( level.left_nomans_land ) ) + { + nomanslandtime = level.nml_best_time; + player_survival_time = int( nomanslandtime / 1000 ); + player_survival_time_in_mins = maps/mp/zombies/_zm::to_mins( player_survival_time ); + survived[ i ] settext( &"ZOMBIE_SURVIVED_NOMANS", player_survival_time_in_mins ); + } + else + { + if ( level.left_nomans_land == 2 ) + { + survived[ i ] settext( &"ZOMBIE_SURVIVED_ROUND" ); + } + } + } + else + { + survived[ i ] settext( &"ZOMBIE_SURVIVED_ROUND" ); + } + } + else + { + survived[ i ] settext( &"ZOMBIE_SURVIVED_ROUNDS", level.round_number ); + } + survived[ i ] fadeovertime( 1 ); + survived[ i ].alpha = 1; + i++; + } + } + if ( isDefined( level.custom_end_screen ) ) + { + level [[ level.custom_end_screen ]](); + } + i = 0; + while ( i < players.size ) + { + players[ i ] setclientammocounterhide( 1 ); + players[ i ] setclientminiscoreboardhide( 1 ); + i++; + } + uploadstats(); + maps/mp/zombies/_zm_stats::update_players_stats_at_match_end( players ); + maps/mp/zombies/_zm_stats::update_global_counters_on_match_end(); + wait 1; + wait 3,95; + players = get_players(); + _a5704 = players; + _k5704 = getFirstArrayKey( _a5704 ); + while ( isDefined( _k5704 ) ) + { + player = _a5704[ _k5704 ]; + if ( isDefined( player.sessionstate ) && player.sessionstate == "spectator" ) + { + player.sessionstate = "playing"; + } + _k5704 = getNextArrayKey( _a5704, _k5704 ); + } + wait 0,05; + players = get_players(); + if ( !isDefined( level._supress_survived_screen ) ) + { + i = 0; + while ( i < players.size ) + { + survived[ i ] destroy(); + game_over[ i ] destroy(); + i++; + } + } + else i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].survived_hud ) ) + { + players[ i ].survived_hud destroy(); + } + if ( isDefined( players[ i ].game_over_hud ) ) + { + players[ i ].game_over_hud destroy(); + } + i++; + } + intermission(); + wait level.zombie_vars[ "zombie_intermission_time" ]; + level notify( "stop_intermission" ); + array_thread( get_players(), ::player_exit_level ); + bbprint( "zombie_epilogs", "rounds %d", level.round_number ); + wait 1,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] cameraactivate( 0 ); + i++; + } + exitlevel( 0 ); + wait 666; +} + +disable_end_game_intermission( delay ) +{ + level.disable_intermission = 1; + wait delay; + level.disable_intermission = undefined; +} + +check_end_game_intermission_delay() +{ + while ( isDefined( level.disable_intermission ) ) + { + while ( 1 ) + { + if ( !isDefined( level.disable_intermission ) ) + { + return; + } + else + { + wait 0,01; + } + } + } +} + +upload_leaderboards() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] uploadleaderboards(); + i++; + } +} + +initializestattracking() +{ + level.global_zombies_killed = 0; + level.zombies_timeout_spawn = 0; + level.zombies_timeout_playspace = 0; + level.zombies_timeout_undamaged = 0; + level.zombie_player_killed_count = 0; + level.zombie_trap_killed_count = 0; + level.zombie_pathing_failed = 0; + level.zombie_breadcrumb_failed = 0; +} + +uploadglobalstatcounters() +{ + incrementcounter( "global_zombies_killed", level.global_zombies_killed ); + incrementcounter( "global_zombies_killed_by_players", level.zombie_player_killed_count ); + incrementcounter( "global_zombies_killed_by_traps", level.zombie_trap_killed_count ); +} + +player_fake_death() +{ + level notify( "fake_death" ); + self notify( "fake_death" ); + self takeallweapons(); + self allowstand( 0 ); + self allowcrouch( 0 ); + self allowprone( 1 ); + self.ignoreme = 1; + self enableinvulnerability(); + wait 1; + self freezecontrols( 1 ); +} + +player_exit_level() +{ + self allowstand( 1 ); + self allowcrouch( 0 ); + self allowprone( 0 ); + if ( isDefined( self.game_over_bg ) ) + { + self.game_over_bg.foreground = 1; + self.game_over_bg.sort = 100; + self.game_over_bg fadeovertime( 1 ); + self.game_over_bg.alpha = 1; + } +} + +player_killed_override( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + level waittill( "forever" ); +} + +player_zombie_breadcrumb() +{ + self notify( "stop_player_zombie_breadcrumb" ); + self endon( "stop_player_zombie_breadcrumb" ); + self endon( "disconnect" ); + self endon( "spawned_spectator" ); + level endon( "intermission" ); + self.zombie_breadcrumbs = []; + self.zombie_breadcrumb_distance = 576; + self.zombie_breadcrumb_area_num = 3; + self.zombie_breadcrumb_area_distance = 16; + self store_crumb( self.origin ); + last_crumb = self.origin; + self thread debug_breadcrumbs(); + while ( 1 ) + { + wait_time = 0,1; + while ( self.ignoreme ) + { + wait wait_time; + } + store_crumb = 1; + airborne = 0; + crumb = self.origin; + if ( !self isonground() && self isinvehicle() ) + { + trace = bullettrace( self.origin + vectorScale( ( 0, 0, -1 ), 10 ), self.origin, 0, undefined ); + crumb = trace[ "position" ]; + } + if ( !airborne && distancesquared( crumb, last_crumb ) < self.zombie_breadcrumb_distance ) + { + store_crumb = 0; + } + if ( airborne && self isonground() ) + { + store_crumb = 1; + airborne = 0; + } + if ( isDefined( level.custom_breadcrumb_store_func ) ) + { + store_crumb = self [[ level.custom_breadcrumb_store_func ]]( store_crumb ); + } + if ( isDefined( level.custom_airborne_func ) ) + { + airborne = self [[ level.custom_airborne_func ]]( airborne ); + } + if ( store_crumb ) + { + debug_print( "Player is storing breadcrumb " + crumb ); + if ( isDefined( self.node ) ) + { + debug_print( "has closest node " ); + } + last_crumb = crumb; + self store_crumb( crumb ); + } + wait wait_time; + } +} + +store_crumb( origin ) +{ + offsets = []; + height_offset = 32; + index = 0; + j = 1; + while ( j <= self.zombie_breadcrumb_area_num ) + { + offset = j * self.zombie_breadcrumb_area_distance; + offsets[ 0 ] = ( origin[ 0 ] - offset, origin[ 1 ], origin[ 2 ] ); + offsets[ 1 ] = ( origin[ 0 ] + offset, origin[ 1 ], origin[ 2 ] ); + offsets[ 2 ] = ( origin[ 0 ], origin[ 1 ] - offset, origin[ 2 ] ); + offsets[ 3 ] = ( origin[ 0 ], origin[ 1 ] + offset, origin[ 2 ] ); + offsets[ 4 ] = ( origin[ 0 ] - offset, origin[ 1 ], origin[ 2 ] + height_offset ); + offsets[ 5 ] = ( origin[ 0 ] + offset, origin[ 1 ], origin[ 2 ] + height_offset ); + offsets[ 6 ] = ( origin[ 0 ], origin[ 1 ] - offset, origin[ 2 ] + height_offset ); + offsets[ 7 ] = ( origin[ 0 ], origin[ 1 ] + offset, origin[ 2 ] + height_offset ); + i = 0; + while ( i < offsets.size ) + { + self.zombie_breadcrumbs[ index ] = offsets[ i ]; + index++; + i++; + } + j++; + } +} + +to_mins( seconds ) +{ + hours = 0; + minutes = 0; + if ( seconds > 59 ) + { + minutes = int( seconds / 60 ); + seconds = int( seconds * 1000 ) % 60000; + seconds *= 0,001; + if ( minutes > 59 ) + { + hours = int( minutes / 60 ); + minutes = int( minutes * 1000 ) % 60000; + minutes *= 0,001; + } + } + if ( hours < 10 ) + { + hours = "0" + hours; + } + if ( minutes < 10 ) + { + minutes = "0" + minutes; + } + seconds = int( seconds ); + if ( seconds < 10 ) + { + seconds = "0" + seconds; + } + combined = "" + hours + ":" + minutes + ":" + seconds; + return combined; +} + +intermission() +{ + level.intermission = 1; + level notify( "intermission" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + setclientsysstate( "levelNotify", "zi", players[ i ] ); + players[ i ] setclientthirdperson( 0 ); + players[ i ] resetfov(); + players[ i ].health = 100; + players[ i ] thread [[ level.custom_intermission ]](); + players[ i ] stopsounds(); + i++; + } + wait 0,25; + players = get_players(); + i = 0; + while ( i < players.size ) + { + setclientsysstate( "lsm", "0", players[ i ] ); + i++; + } + level thread zombie_game_over_death(); +} + +zombie_game_over_death() +{ + zombies = getaiarray( level.zombie_team ); + i = 0; + while ( i < zombies.size ) + { + if ( !isalive( zombies[ i ] ) ) + { + i++; + continue; + } + else + { + zombies[ i ] setgoalpos( zombies[ i ].origin ); + } + i++; + } + i = 0; + while ( i < zombies.size ) + { + if ( !isalive( zombies[ i ] ) ) + { + i++; + continue; + } + else if ( isDefined( zombies[ i ].ignore_game_over_death ) && zombies[ i ].ignore_game_over_death ) + { + i++; + continue; + } + else + { + wait ( 0,5 + randomfloat( 2 ) ); + if ( isDefined( zombies[ i ] ) ) + { + zombies[ i ] maps/mp/zombies/_zm_spawner::zombie_head_gib(); + zombies[ i ] dodamage( zombies[ i ].health + 666, zombies[ i ].origin ); + } + } + i++; + } +} + +player_intermission() +{ + self closemenu(); + self closeingamemenu(); + level endon( "stop_intermission" ); + self endon( "disconnect" ); + self endon( "death" ); + self notify( "_zombie_game_over" ); + self.score = self.score_total; + self.sessionstate = "intermission"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + points = getstructarray( "intermission", "targetname" ); + if ( !isDefined( points ) || points.size == 0 ) + { + points = getentarray( "info_intermission", "classname" ); + if ( points.size < 1 ) + { +/# + println( "NO info_intermission POINTS IN MAP" ); +#/ + return; + } + } + self.game_over_bg = newclienthudelem( self ); + self.game_over_bg.horzalign = "fullscreen"; + self.game_over_bg.vertalign = "fullscreen"; + self.game_over_bg setshader( "black", 640, 480 ); + self.game_over_bg.alpha = 1; + org = undefined; + while ( 1 ) + { + points = array_randomize( points ); + i = 0; + while ( i < points.size ) + { + point = points[ i ]; + if ( !isDefined( org ) ) + { + self spawn( point.origin, point.angles ); + } + if ( isDefined( points[ i ].target ) ) + { + if ( !isDefined( org ) ) + { + org = spawn( "script_model", self.origin + vectorScale( ( 0, 0, -1 ), 60 ) ); + org setmodel( "tag_origin" ); + } + org.origin = points[ i ].origin; + org.angles = points[ i ].angles; + j = 0; + while ( j < get_players().size ) + { + player = get_players()[ j ]; + player camerasetposition( org ); + player camerasetlookat(); + player cameraactivate( 1 ); + j++; + } + speed = 20; + if ( isDefined( points[ i ].speed ) ) + { + speed = points[ i ].speed; + } + target_point = getstruct( points[ i ].target, "targetname" ); + dist = distance( points[ i ].origin, target_point.origin ); + time = dist / speed; + q_time = time * 0,25; + if ( q_time > 1 ) + { + q_time = 1; + } + self.game_over_bg fadeovertime( q_time ); + self.game_over_bg.alpha = 0; + org moveto( target_point.origin, time, q_time, q_time ); + org rotateto( target_point.angles, time, q_time, q_time ); + wait ( time - q_time ); + self.game_over_bg fadeovertime( q_time ); + self.game_over_bg.alpha = 1; + wait q_time; + i++; + continue; + } + else + { + self.game_over_bg fadeovertime( 1 ); + self.game_over_bg.alpha = 0; + wait 5; + self.game_over_bg thread fade_up_over_time( 1 ); + } + i++; + } + } +} + +fade_up_over_time( t ) +{ + self fadeovertime( t ); + self.alpha = 1; +} + +default_exit_level() +{ + zombies = getaiarray( level.zombie_team ); + i = 0; + while ( i < zombies.size ) + { + if ( isDefined( zombies[ i ].ignore_solo_last_stand ) && zombies[ i ].ignore_solo_last_stand ) + { + i++; + continue; + } + else + { + if ( isDefined( zombies[ i ].find_exit_point ) ) + { + zombies[ i ] thread [[ zombies[ i ].find_exit_point ]](); + i++; + continue; + } + else if ( zombies[ i ].ignoreme ) + { + zombies[ i ] thread default_delayed_exit(); + i++; + continue; + } + else + { + zombies[ i ] thread default_find_exit_point(); + } + } + i++; + } +} + +default_delayed_exit() +{ + self endon( "death" ); + while ( 1 ) + { + if ( !flag( "wait_and_revive" ) ) + { + return; + } + if ( !self.ignoreme ) + { + break; + } + else + { + wait 0,1; + } + } + self thread default_find_exit_point(); +} + +default_find_exit_point() +{ + self endon( "death" ); + player = get_players()[ 0 ]; + dist_zombie = 0; + dist_player = 0; + dest = 0; + away = vectornormalize( self.origin - player.origin ); + endpos = self.origin + vectorScale( away, 600 ); + locs = array_randomize( level.enemy_dog_locations ); + i = 0; + while ( i < locs.size ) + { + dist_zombie = distancesquared( locs[ i ].origin, endpos ); + dist_player = distancesquared( locs[ i ].origin, player.origin ); + if ( dist_zombie < dist_player ) + { + dest = i; + break; + } + else + { + i++; + } + } + self notify( "stop_find_flesh" ); + self notify( "zombie_acquire_enemy" ); + if ( isDefined( locs[ dest ] ) ) + { + self setgoalpos( locs[ dest ].origin ); + } + while ( 1 ) + { + if ( !flag( "wait_and_revive" ) ) + { + break; + } + else + { + wait 0,1; + } + } + self thread maps/mp/zombies/_zm_ai_basic::find_flesh(); +} + +play_level_start_vox_delayed() +{ + wait 3; + players = get_players(); + num = randomintrange( 0, players.size ); + players[ num ] maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "intro" ); +} + +register_sidequest( id, sidequest_stat ) +{ + if ( !isDefined( level.zombie_sidequest_stat ) ) + { + level.zombie_sidequest_previously_completed = []; + level.zombie_sidequest_stat = []; + } + level.zombie_sidequest_stat[ id ] = sidequest_stat; + flag_wait( "start_zombie_round_logic" ); + level.zombie_sidequest_previously_completed[ id ] = 0; + if ( level.systemlink || getDvarInt( "splitscreen_playerCount" ) == get_players().size ) + { + return; + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] maps/mp/zombies/_zm_stats::get_global_stat( level.zombie_sidequest_stat[ id ] ) ) + { + level.zombie_sidequest_previously_completed[ id ] = 1; + return; + } + i++; + } +} + +is_sidequest_previously_completed( id ) +{ + if ( isDefined( level.zombie_sidequest_previously_completed[ id ] ) ) + { + return level.zombie_sidequest_previously_completed[ id ]; + } +} + +set_sidequest_completed( id ) +{ + level notify( "zombie_sidequest_completed" ); + level.zombie_sidequest_previously_completed[ id ] = 1; + if ( level.systemlink ) + { + return; + } + if ( getDvarInt( "splitscreen_playerCount" ) == get_players().size ) + { + return; + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( level.zombie_sidequest_stat[ id ] ) ) + { + players[ i ] maps/mp/zombies/_zm_stats::add_global_stat( level.zombie_sidequest_stat[ id ], 1 ); + } + i++; + } +} + +playswipesound( mod, attacker ) +{ + if ( isDefined( attacker.is_zombie ) && attacker.is_zombie ) + { + self playsoundtoplayer( "evt_player_swiped", self ); + return; + } +} + +precache_zombie_leaderboards() +{ + if ( sessionmodeissystemlink() ) + { + return; + } + globalleaderboards = "LB_ZM_GB_BULLETS_FIRED_AT "; + globalleaderboards += "LB_ZM_GB_BULLETS_HIT_AT "; + globalleaderboards += "LB_ZM_GB_DEATHS_AT "; + globalleaderboards += "LB_ZM_GB_DISTANCE_TRAVELED_AT "; + globalleaderboards += "LB_ZM_GB_DOORS_PURCHASED_AT "; + globalleaderboards += "LB_ZM_GB_DOWNS_AT "; + globalleaderboards += "LB_ZM_GB_GIBS_AT "; + globalleaderboards += "LB_ZM_GB_GRENADE_KILLS_AT "; + globalleaderboards += "LB_ZM_GB_HEADSHOTS_AT "; + globalleaderboards += "LB_ZM_GB_KILLS_AT "; + globalleaderboards += "LB_ZM_GB_PERKS_DRANK_AT "; + globalleaderboards += "LB_ZM_GB_REVIVES_AT "; + if ( sessionmodeisprivateonlinegame() ) + { + precacheleaderboards( globalleaderboards ); + return; + } + maplocationname = level.scr_zm_map_start_location; + if ( maplocationname != "default" && maplocationname == "" && isDefined( level.default_start_location ) ) + { + maplocationname = level.default_start_location; + } + if ( level.scr_zm_ui_gametype_group != "zclassic" && level.scr_zm_ui_gametype_group == "zsurvival" && level.scr_zm_ui_gametype != "zcleansed" ) + { + expectedplayernum = getnumexpectedplayers(); + if ( expectedplayernum == 1 ) + { + gamemodeleaderboard = "LB_ZM_GM_" + level.scr_zm_ui_gametype + "_" + maplocationname + "_" + expectedplayernum + "PLAYER"; + } + else + { + gamemodeleaderboard = "LB_ZM_GM_" + level.scr_zm_ui_gametype + "_" + maplocationname + "_" + expectedplayernum + "PLAYERS"; + } + } + else + { + gamemodeleaderboard = "LB_ZM_GM_" + level.scr_zm_ui_gametype + "_" + maplocationname; + } + precacheleaderboards( globalleaderboards + gamemodeleaderboard ); +} + +zm_on_player_connect() +{ + if ( level.passed_introscreen ) + { + self setclientuivisibilityflag( "hud_visible", 1 ); + } + thread refresh_player_navcard_hud(); + self thread watchdisconnect(); +} + +zm_on_player_disconnect() +{ + thread refresh_player_navcard_hud(); +} + +watchdisconnect() +{ + self notify( "watchDisconnect" ); + self endon( "watchDisconnect" ); + self waittill( "disconnect" ); + zm_on_player_disconnect(); +} + +increment_dog_round_stat( stat ) +{ + players = get_players(); + _a6491 = players; + _k6491 = getFirstArrayKey( _a6491 ); + while ( isDefined( _k6491 ) ) + { + player = _a6491[ _k6491 ]; + player maps/mp/zombies/_zm_stats::increment_client_stat( "zdog_rounds_" + stat ); + _k6491 = getNextArrayKey( _a6491, _k6491 ); + } +} + +setup_player_navcard_hud() +{ + flag_wait( "start_zombie_round_logic" ); + thread refresh_player_navcard_hud(); +} + +refresh_player_navcard_hud() +{ + if ( !isDefined( level.navcards ) ) + { + return; + } + players = get_players(); + _a6509 = players; + _k6509 = getFirstArrayKey( _a6509 ); + while ( isDefined( _k6509 ) ) + { + player = _a6509[ _k6509 ]; + navcard_bits = 0; + i = 0; + while ( i < level.navcards.size ) + { + hasit = player maps/mp/zombies/_zm_stats::get_global_stat( level.navcards[ i ] ); + if ( isDefined( player.navcard_grabbed ) && player.navcard_grabbed == level.navcards[ i ] ) + { + hasit = 1; + } + if ( hasit ) + { + navcard_bits += 1 << i; + } + i++; + } + wait_network_frame(); + player setclientfield( "navcard_held", 0 ); + if ( navcard_bits > 0 ) + { + wait_network_frame(); + player setclientfield( "navcard_held", navcard_bits ); + } + _k6509 = getNextArrayKey( _a6509, _k6509 ); + } +} + +check_quickrevive_for_hotjoin( disconnecting_player ) +{ + solo_mode = 0; + subtract_num = 0; + should_update = 0; + if ( isDefined( disconnecting_player ) ) + { + subtract_num = 1; + } + players = get_players(); + if ( ( players.size - subtract_num ) == 1 || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive ) + { + solo_mode = 1; + if ( !flag( "solo_game" ) ) + { + should_update = 1; + } + flag_set( "solo_game" ); + } + else + { + if ( flag( "solo_game" ) ) + { + should_update = 1; + } + flag_clear( "solo_game" ); + } + level.using_solo_revive = solo_mode; + level.revive_machine_is_solo = solo_mode; + set_default_laststand_pistol( solo_mode ); + if ( should_update && isDefined( level.quick_revive_machine ) ) + { + update_quick_revive( solo_mode ); + } +} + +set_default_laststand_pistol( solo_mode ) +{ + if ( !solo_mode ) + { + level.laststandpistol = level.default_laststandpistol; + } + else + { + level.laststandpistol = level.default_solo_laststandpistol; + } +} + +update_quick_revive( solo_mode ) +{ + if ( !isDefined( solo_mode ) ) + { + solo_mode = 0; + } + clip = undefined; + if ( isDefined( level.quick_revive_machine_clip ) ) + { + clip = level.quick_revive_machine_clip; + } + level.quick_revive_machine thread maps/mp/zombies/_zm_perks::reenable_quickrevive( clip, solo_mode ); +} + +player_too_many_players_check() +{ + max_players = 4; + if ( level.scr_zm_ui_gametype == "zgrief" || level.scr_zm_ui_gametype == "zmeat" ) + { + max_players = 8; + } + if ( get_players().size > max_players ) + { + maps/mp/zombies/_zm_game_module::freeze_players( 1 ); + level notify( "end_game" ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_basic.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_basic.gsc new file mode 100644 index 0000000..edfc09a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_basic.gsc @@ -0,0 +1,566 @@ +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/zm_run; +#include maps/mp/zombies/_zm_ai_basic; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +find_flesh() +{ + self endon( "death" ); + level endon( "intermission" ); + self endon( "stop_find_flesh" ); + if ( level.intermission ) + { + return; + } + self.ai_state = "find_flesh"; + self.helitarget = 1; + self.ignoreme = 0; + self.nododgemove = 1; + self.ignore_player = []; + self maps/mp/zombies/_zm_spawner::zombie_history( "find flesh -> start" ); + self.goalradius = 32; + while ( 1 ) + { + zombie_poi = undefined; + if ( isDefined( level.zombietheaterteleporterseeklogicfunc ) ) + { + self [[ level.zombietheaterteleporterseeklogicfunc ]](); + } + if ( isDefined( level._poi_override ) ) + { + zombie_poi = self [[ level._poi_override ]](); + } + if ( !isDefined( zombie_poi ) ) + { + zombie_poi = self get_zombie_point_of_interest( self.origin ); + } + players = get_players(); + if ( !isDefined( self.ignore_player ) || players.size == 1 ) + { + self.ignore_player = []; + } + else + { + while ( !isDefined( level._should_skip_ignore_player_logic ) || !( [[ level._should_skip_ignore_player_logic ]]() ) ) + { + i = 0; + while ( i < self.ignore_player.size ) + { + while ( isDefined( self.ignore_player[ i ] ) && isDefined( self.ignore_player[ i ].ignore_counter ) && self.ignore_player[ i ].ignore_counter > 3 ) + { + self.ignore_player[ i ].ignore_counter = 0; + self.ignore_player = arrayremovevalue( self.ignore_player, self.ignore_player[ i ] ); + if ( !isDefined( self.ignore_player ) ) + { + self.ignore_player = []; + } + i = 0; + } + i++; + } + } + } + player = get_closest_valid_player( self.origin, self.ignore_player ); + while ( !isDefined( player ) && !isDefined( zombie_poi ) ) + { + self maps/mp/zombies/_zm_spawner::zombie_history( "find flesh -> can't find player, continue" ); + if ( isDefined( self.ignore_player ) ) + { + while ( isDefined( level._should_skip_ignore_player_logic ) && [[ level._should_skip_ignore_player_logic ]]() ) + { + wait 1; + } + self.ignore_player = []; + } + wait 1; + } + if ( !isDefined( level.check_for_alternate_poi ) || !( [[ level.check_for_alternate_poi ]]() ) ) + { + self.enemyoverride = zombie_poi; + self.favoriteenemy = player; + } + self thread zombie_pathing(); + while ( players.size > 1 ) + { + i = 0; + while ( i < self.ignore_player.size ) + { + if ( isDefined( self.ignore_player[ i ] ) ) + { + if ( !isDefined( self.ignore_player[ i ].ignore_counter ) ) + { + self.ignore_player[ i ].ignore_counter = 0; + i++; + continue; + } + else + { + self.ignore_player[ i ].ignore_counter += 1; + } + } + i++; + } + } + self thread attractors_generated_listener(); + if ( isDefined( level._zombie_path_timer_override ) ) + { + self.zombie_path_timer = [[ level._zombie_path_timer_override ]](); + } + else + { + self.zombie_path_timer = getTime() + ( randomfloatrange( 1, 3 ) * 1000 ); + } + while ( getTime() < self.zombie_path_timer ) + { + wait 0,1; + } + self notify( "path_timer_done" ); + self maps/mp/zombies/_zm_spawner::zombie_history( "find flesh -> bottom of loop" ); + debug_print( "Zombie is re-acquiring enemy, ending breadcrumb search" ); + self notify( "zombie_acquire_enemy" ); + } +} + +init_inert_zombies() +{ + level init_inert_substates(); +} + +init_inert_substates() +{ + level.inert_substates = []; + level.inert_substates[ level.inert_substates.size ] = "inert1"; + level.inert_substates[ level.inert_substates.size ] = "inert2"; + level.inert_substates[ level.inert_substates.size ] = "inert3"; + level.inert_substates[ level.inert_substates.size ] = "inert4"; + level.inert_substates[ level.inert_substates.size ] = "inert5"; + level.inert_substates[ level.inert_substates.size ] = "inert6"; + level.inert_substates[ level.inert_substates.size ] = "inert7"; + level.inert_substates = array_randomize( level.inert_substates ); + level.inert_substate_index = 0; + level.inert_trans_walk = []; + level.inert_trans_walk[ level.inert_trans_walk.size ] = "inert_2_walk_1"; + level.inert_trans_walk[ level.inert_trans_walk.size ] = "inert_2_walk_2"; + level.inert_trans_walk[ level.inert_trans_walk.size ] = "inert_2_walk_3"; + level.inert_trans_walk[ level.inert_trans_walk.size ] = "inert_2_walk_4"; + level.inert_trans_run = []; + level.inert_trans_run[ level.inert_trans_run.size ] = "inert_2_run_1"; + level.inert_trans_run[ level.inert_trans_run.size ] = "inert_2_run_2"; + level.inert_trans_sprint = []; + level.inert_trans_sprint[ level.inert_trans_sprint.size ] = "inert_2_sprint_1"; + level.inert_trans_sprint[ level.inert_trans_sprint.size ] = "inert_2_sprint_2"; + level.inert_crawl_substates = []; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert1"; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert2"; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert3"; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert4"; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert5"; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert6"; + level.inert_crawl_substates[ level.inert_crawl_substates.size ] = "inert7"; + level.inert_crawl_trans_walk = []; + level.inert_crawl_trans_walk[ level.inert_crawl_trans_walk.size ] = "inert_2_walk_1"; + level.inert_crawl_trans_run = []; + level.inert_crawl_trans_run[ level.inert_crawl_trans_run.size ] = "inert_2_run_1"; + level.inert_crawl_trans_run[ level.inert_crawl_trans_run.size ] = "inert_2_run_2"; + level.inert_crawl_trans_sprint = []; + level.inert_crawl_trans_sprint[ level.inert_crawl_trans_sprint.size ] = "inert_2_sprint_1"; + level.inert_crawl_trans_sprint[ level.inert_crawl_trans_sprint.size ] = "inert_2_sprint_2"; + level.inert_crawl_substates = array_randomize( level.inert_crawl_substates ); + level.inert_crawl_substate_index = 0; +} + +get_inert_substate() +{ + substate = level.inert_substates[ level.inert_substate_index ]; + level.inert_substate_index++; + if ( level.inert_substate_index >= level.inert_substates.size ) + { + level.inert_substates = array_randomize( level.inert_substates ); + level.inert_substate_index = 0; + } + return substate; +} + +get_inert_crawl_substate() +{ + substate = level.inert_crawl_substates[ level.inert_crawl_substate_index ]; + level.inert_crawl_substate_index++; + if ( level.inert_crawl_substate_index >= level.inert_crawl_substates.size ) + { + level.inert_crawl_substates = array_randomize( level.inert_crawl_substates ); + level.inert_crawl_substate_index = 0; + } + return substate; +} + +start_inert( in_place ) +{ + self endon( "death" ); + if ( isDefined( self.is_inert ) && self.is_inert ) + { + self maps/mp/zombies/_zm_spawner::zombie_history( "is_inert already set " + getTime() ); + return; + } + self.is_inert = 1; + self notify( "start_inert" ); + self maps/mp/zombies/_zm_spawner::zombie_eye_glow_stop(); + self maps/mp/zombies/_zm_spawner::zombie_history( "is_inert set " + getTime() ); + self playsound( "zmb_zombie_go_inert" ); + if ( isDefined( self.barricade_enter ) && self.barricade_enter ) + { + while ( isDefined( self.barricade_enter ) && self.barricade_enter ) + { + wait 0,1; + } + } + else if ( isDefined( self.ai_state ) && self.ai_state == "zombie_goto_entrance" ) + { + self notify( "stop_zombie_goto_entrance" ); + self maps/mp/zombies/_zm_spawner::reset_attack_spot(); + } + if ( isDefined( self.completed_emerging_into_playable_area ) && self.completed_emerging_into_playable_area ) + { + self notify( "stop_find_flesh" ); + self notify( "zombie_acquire_enemy" ); + } + else + { + in_place = 1; + } + if ( isDefined( self.in_the_ground ) && self.in_the_ground ) + { + self waittill( "risen", find_flesh_struct_string ); + if ( self maps/mp/zombies/_zm_spawner::should_skip_teardown( find_flesh_struct_string ) ) + { + if ( isDefined( self.completed_emerging_into_playable_area ) && !self.completed_emerging_into_playable_area ) + { + self waittill( "completed_emerging_into_playable_area" ); + } + self notify( "stop_find_flesh" ); + self notify( "zombie_acquire_enemy" ); + } + } + while ( isDefined( self.is_traversing ) && self.is_traversing ) + { + while ( self isinscriptedstate() ) + { + wait 0,1; + } + } + if ( isDefined( self.doing_equipment_attack ) && self.doing_equipment_attack ) + { + self stopanimscripted(); + } + if ( isDefined( self.inert_delay ) ) + { + self [[ self.inert_delay ]](); + self maps/mp/zombies/_zm_spawner::zombie_history( "inert_delay done " + getTime() ); + } + self inert_think( in_place ); +} + +inert_think( in_place ) +{ + self endon( "death" ); + self.ignoreall = 1; + self animmode( "normal" ); + if ( self.has_legs ) + { + if ( isDefined( in_place ) && in_place ) + { + self setgoalpos( self.origin ); + if ( randomint( 100 ) > 50 ) + { + self maps/mp/zombies/_zm_spawner::zombie_history( "inert 1 " + getTime() ); + self setanimstatefromasd( "zm_inert", "inert1" ); + } + else + { + self maps/mp/zombies/_zm_spawner::zombie_history( "inert 2 " + getTime() ); + self setanimstatefromasd( "zm_inert", "inert2" ); + } + self.in_place = 1; + } + else + { + substate = get_inert_substate(); + if ( isDefined( level.inert_substate_override ) ) + { + substate = self [[ level.inert_substate_override ]]( substate ); + } + self setanimstatefromasd( "zm_inert", substate ); + self maps/mp/zombies/_zm_spawner::zombie_history( "zm_inert ASD " + getTime() ); + if ( substate != "inert3" && substate != "inert4" || substate == "inert5" && substate == "inert6" ) + { + self thread inert_watch_goal(); + } + else + { + self.in_place = 1; + } + } + } + else + { + self setanimstatefromasd( "zm_inert_crawl", get_inert_crawl_substate() ); + self maps/mp/zombies/_zm_spawner::zombie_history( "zm_inert_crawl ASD " + getTime() ); + } + self thread inert_wakeup(); + self waittill( "stop_zombie_inert" ); + self maps/mp/zombies/_zm_spawner::zombie_history( "stop_zombie_inert " + getTime() ); + self playsound( "zmb_zombie_end_inert" ); + self inert_transition(); + self maps/mp/zombies/_zm_spawner::zombie_history( "inert transition done" ); + if ( isDefined( self.ai_state ) && self.ai_state == "zombie_goto_entrance" ) + { + self thread maps/mp/zombies/_zm_spawner::zombie_goto_entrance( self.first_node ); + } + if ( isDefined( self.inert_wakeup_override ) ) + { + self [[ self.inert_wakeup_override ]](); + } + else + { + if ( isDefined( self.completed_emerging_into_playable_area ) && self.completed_emerging_into_playable_area ) + { + self.ignoreall = 0; + if ( isDefined( level.ignore_find_flesh ) && !( self [[ level.ignore_find_flesh ]]() ) ) + { + self thread maps/mp/zombies/_zm_ai_basic::find_flesh(); + } + } + } + self.becoming_inert = undefined; + self.is_inert = undefined; + self.in_place = undefined; + self maps/mp/animscripts/zm_run::needsupdate(); + self maps/mp/zombies/_zm_spawner::zombie_history( "is_inert cleared " + getTime() ); +} + +inert_watch_goal() +{ + self endon( "death" ); + self endon( "stop_zombie_inert" ); + while ( 1 ) + { + self waittill( "goal" ); + locs = array_randomize( level.enemy_dog_locations ); + _a476 = locs; + _k476 = getFirstArrayKey( _a476 ); + while ( isDefined( _k476 ) ) + { + loc = _a476[ _k476 ]; + dist_sq = distancesquared( self.origin, loc.origin ); + if ( dist_sq > 90000 ) + { + self setgoalpos( loc.origin ); + break; + } + _k476 = getNextArrayKey( _a476, _k476 ); + } + if ( locs.size > 0 ) + { + self setgoalpos( locs[ 0 ].origin ); + } + } +} + +inert_wakeup() +{ + self endon( "death" ); + self endon( "stop_zombie_inert" ); + wait 0,1; + self thread inert_damage(); + self thread inert_bump(); + while ( 1 ) + { + current_time = getTime(); + players = get_players(); + _a517 = players; + _k517 = getFirstArrayKey( _a517 ); + while ( isDefined( _k517 ) ) + { + player = _a517[ _k517 ]; + dist_sq = distancesquared( self.origin, player.origin ); + if ( dist_sq < 4096 ) + { + self stop_inert(); + return; + } + if ( dist_sq < 360000 ) + { + if ( player issprinting() ) + { + self stop_inert(); + return; + } + } + if ( dist_sq < 5760000 ) + { + if ( ( current_time - player.lastfiretime ) < 100 ) + { + self stop_inert(); + return; + } + } + _k517 = getNextArrayKey( _a517, _k517 ); + } + wait 0,1; + } +} + +inert_bump() +{ + self endon( "death" ); + self endon( "stop_zombie_inert" ); + while ( 1 ) + { + zombies = getaiarray( level.zombie_team ); + _a557 = zombies; + _k557 = getFirstArrayKey( _a557 ); + while ( isDefined( _k557 ) ) + { + zombie = _a557[ _k557 ]; + if ( zombie == self ) + { + } + else if ( isDefined( zombie.is_inert ) && zombie.is_inert ) + { + } + else + { + if ( isDefined( zombie.becoming_inert ) && zombie.becoming_inert ) + { + break; + } + else + { + dist_sq = distancesquared( self.origin, zombie.origin ); + if ( dist_sq < 1296 ) + { + self stop_inert(); + return; + } + } + } + _k557 = getNextArrayKey( _a557, _k557 ); + } + wait 0,2; + } +} + +inert_damage() +{ + self endon( "death" ); + self endon( "stop_zombie_inert" ); + while ( 1 ) + { + self waittill( "damage", amount, inflictor, direction, point, type, tagname, modelname, partname, weaponname, idflags ); + while ( weaponname == "emp_grenade_zm" ) + { + continue; + } + while ( isDefined( inflictor ) ) + { + if ( isDefined( inflictor._trap_type ) && inflictor._trap_type == "fire" ) + { + continue; + } + } + } + self stop_inert(); +} + +grenade_watcher( grenade ) +{ + grenade waittill( "explode", grenade_origin ); + zombies = get_array_of_closest( grenade_origin, get_round_enemy_array(), undefined, undefined, 2400 ); + if ( !isDefined( zombies ) ) + { + return; + } + _a628 = zombies; + _k628 = getFirstArrayKey( _a628 ); + while ( isDefined( _k628 ) ) + { + zombie = _a628[ _k628 ]; + zombie stop_inert(); + _k628 = getNextArrayKey( _a628, _k628 ); + } +} + +stop_inert() +{ + self notify( "stop_zombie_inert" ); +} + +inert_transition() +{ + self endon( "death" ); + self endon( "stop_zombie_inert_transition" ); + trans_num = 4; + trans_set = level.inert_trans_walk; + animstate = "zm_inert_trans"; + if ( !self.has_legs ) + { + trans_num = 1; + trans_set = level.inert_crawl_trans_walk; + animstate = "zm_inert_crawl_trans"; + } + if ( self.zombie_move_speed == "run" ) + { + if ( self.has_legs ) + { + trans_set = level.inert_trans_run; + } + else + { + trans_set = level.inert_crawl_trans_run; + } + trans_num = 2; + } + else + { + if ( self.zombie_move_speed == "sprint" ) + { + if ( self.has_legs ) + { + trans_set = level.inert_trans_sprint; + } + else + { + trans_set = level.inert_crawl_trans_sprint; + } + trans_num = 2; + } + } + self thread inert_eye_glow(); + self setanimstatefromasd( animstate, trans_set[ randomint( trans_num ) ] ); + self maps/mp/zombies/_zm_spawner::zombie_history( "inert_trans_anim " + getTime() ); + maps/mp/animscripts/zm_shared::donotetracks( "inert_trans_anim" ); +} + +inert_eye_glow() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "inert_trans_anim", note ); + if ( note == "end" ) + { + return; + continue; + } + else + { + if ( note == "zmb_awaken" ) + { + self maps/mp/zombies/_zm_spawner::zombie_eye_glow(); + return; + } + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_dogs.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_dogs.gsc new file mode 100644 index 0000000..6def473 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_dogs.gsc @@ -0,0 +1,798 @@ +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level.dogs_enabled = 1; + level.dog_rounds_enabled = 0; + level.dog_round_count = 1; + level.dog_spawners = []; + level.enemy_dog_spawns = []; + level.enemy_dog_locations = []; + flag_init( "dog_clips" ); + precacherumble( "explosion_generic" ); + precacheshellshock( "dog_bite" ); + if ( getDvar( "zombie_dog_animset" ) == "" ) + { + setdvar( "zombie_dog_animset", "zombie" ); + } + if ( getDvar( "scr_dog_health_walk_multiplier" ) == "" ) + { + setdvar( "scr_dog_health_walk_multiplier", "4.0" ); + } + if ( getDvar( "scr_dog_run_distance" ) == "" ) + { + setdvar( "scr_dog_run_distance", "500" ); + } + level.melee_range_sav = getDvar( "ai_meleeRange" ); + level.melee_width_sav = getDvar( "ai_meleeWidth" ); + level.melee_height_sav = getDvar( "ai_meleeHeight" ); + setdvar( "dog_MeleeDamage", "100" ); + set_zombie_var( "dog_fire_trail_percent", 50 ); + level._effect[ "lightning_dog_spawn" ] = loadfx( "maps/zombie/fx_zombie_dog_lightning_buildup" ); + level._effect[ "dog_eye_glow" ] = loadfx( "maps/zombie/fx_zombie_dog_eyes" ); + level._effect[ "dog_gib" ] = loadfx( "maps/zombie/fx_zombie_dog_explosion" ); + level._effect[ "dog_trail_fire" ] = loadfx( "maps/zombie/fx_zombie_dog_fire_trail" ); + level._effect[ "dog_trail_ash" ] = loadfx( "maps/zombie/fx_zombie_dog_ash_trail" ); + dog_spawner_init(); + level thread dog_clip_monitor(); +} + +enable_dog_rounds() +{ + level.dog_rounds_enabled = 1; + if ( !isDefined( level.dog_round_track_override ) ) + { + level.dog_round_track_override = ::dog_round_tracker; + } + level thread [[ level.dog_round_track_override ]](); +} + +dog_spawner_init() +{ + level.dog_spawners = getentarray( "zombie_dog_spawner", "script_noteworthy" ); + later_dogs = getentarray( "later_round_dog_spawners", "script_noteworthy" ); + level.dog_spawners = arraycombine( level.dog_spawners, later_dogs, 1, 0 ); + if ( level.dog_spawners.size == 0 ) + { + return; + } + i = 0; + while ( i < level.dog_spawners.size ) + { + if ( maps/mp/zombies/_zm_spawner::is_spawner_targeted_by_blocker( level.dog_spawners[ i ] ) ) + { + level.dog_spawners[ i ].is_enabled = 0; + i++; + continue; + } + else + { + level.dog_spawners[ i ].is_enabled = 1; + level.dog_spawners[ i ].script_forcespawn = 1; + } + i++; + } +/# + assert( level.dog_spawners.size > 0 ); +#/ + level.dog_health = 100; + array_thread( level.dog_spawners, ::add_spawn_function, ::dog_init ); + level.enemy_dog_spawns = getentarray( "zombie_spawner_dog_init", "targetname" ); +} + +dog_round_spawning() +{ + level endon( "intermission" ); + level.dog_targets = getplayers(); + i = 0; + while ( i < level.dog_targets.size ) + { + level.dog_targets[ i ].hunted_by = 0; + i++; + } +/# + level endon( "kill_round" ); + if ( getDvarInt( "zombie_cheat" ) == 2 || getDvarInt( "zombie_cheat" ) >= 4 ) + { + return; +#/ + } + if ( level.intermission ) + { + return; + } + level.dog_intermission = 1; + level thread dog_round_aftermath(); + players = get_players(); + array_thread( players, ::play_dog_round ); + wait 1; + playsoundatposition( "vox_zmba_event_dogstart_0", ( 0, 0, 0 ) ); + wait 6; + if ( level.dog_round_count < 3 ) + { + max = players.size * 6; + } + else + { + max = players.size * 8; + } +/# + if ( getDvar( "force_dogs" ) != "" ) + { + max = getDvarInt( "force_dogs" ); +#/ + } + level.zombie_total = max; + dog_health_increase(); + count = 0; + while ( count < max ) + { + num_player_valid = get_number_of_valid_players(); + while ( get_current_zombie_count() >= ( num_player_valid * 2 ) ) + { + wait 2; + num_player_valid = get_number_of_valid_players(); + } + players = get_players(); + favorite_enemy = get_favorite_enemy(); + if ( isDefined( level.dog_spawn_func ) ) + { + spawn_loc = [[ level.dog_spawn_func ]]( level.dog_spawners, favorite_enemy ); + ai = spawn_zombie( level.dog_spawners[ 0 ] ); + if ( isDefined( ai ) ) + { + ai.favoriteenemy = favorite_enemy; + spawn_loc thread dog_spawn_fx( ai, spawn_loc ); + level.zombie_total--; + + count++; + } + } + else + { + spawn_point = dog_spawn_factory_logic( level.enemy_dog_spawns, favorite_enemy ); + ai = spawn_zombie( level.dog_spawners[ 0 ] ); + if ( isDefined( ai ) ) + { + ai.favoriteenemy = favorite_enemy; + spawn_point thread dog_spawn_fx( ai, spawn_point ); + level.zombie_total--; + + count++; + flag_set( "dog_clips" ); + } + } + waiting_for_next_dog_spawn( count, max ); + } +} + +waiting_for_next_dog_spawn( count, max ) +{ + default_wait = 1,5; + if ( level.dog_round_count == 1 ) + { + default_wait = 3; + } + else if ( level.dog_round_count == 2 ) + { + default_wait = 2,5; + } + else if ( level.dog_round_count == 3 ) + { + default_wait = 2; + } + else + { + default_wait = 1,5; + } + default_wait -= count / max; + wait default_wait; +} + +dog_round_aftermath() +{ + level waittill( "last_dog_down" ); + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "dog_end" ); + power_up_origin = level.last_dog_origin; + if ( isDefined( power_up_origin ) ) + { + level thread maps/mp/zombies/_zm_powerups::specific_powerup_drop( "full_ammo", power_up_origin ); + } + wait 2; + clientnotify( "dog_stop" ); + wait 6; + level.dog_intermission = 0; +} + +dog_spawn_fx( ai, ent ) +{ + ai setfreecameralockonallowed( 0 ); + playfx( level._effect[ "lightning_dog_spawn" ], ent.origin ); + playsoundatposition( "zmb_hellhound_prespawn", ent.origin ); + wait 1,5; + playsoundatposition( "zmb_hellhound_bolt", ent.origin ); + earthquake( 0,5, 0,75, ent.origin, 1000 ); + playrumbleonposition( "explosion_generic", ent.origin ); + playsoundatposition( "zmb_hellhound_spawn", ent.origin ); + angle = vectorToAngle( ai.favoriteenemy.origin - ent.origin ); + angles = ( ai.angles[ 0 ], angle[ 1 ], ai.angles[ 2 ] ); + ai forceteleport( ent.origin, angles ); +/# + assert( isDefined( ai ), "Ent isn't defined." ); +#/ +/# + assert( isalive( ai ), "Ent is dead." ); +#/ +/# + assert( ai.isdog, "Ent isn't a dog;" ); +#/ +/# + assert( is_magic_bullet_shield_enabled( ai ), "Ent doesn't have a magic bullet shield." ); +#/ + ai zombie_setup_attack_properties_dog(); + ai stop_magic_bullet_shield(); + wait 0,1; + ai show(); + ai setfreecameralockonallowed( 1 ); + ai.ignoreme = 0; + ai notify( "visible" ); +} + +dog_spawn_sumpf_logic( dog_array, favorite_enemy ) +{ +/# + assert( dog_array.size > 0, "Dog Spawner array is empty." ); +#/ + dog_array = array_randomize( dog_array ); + i = 0; + while ( i < dog_array.size ) + { + if ( isDefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_array[ i ] ) + { + i++; + continue; + } + else + { + if ( distancesquared( dog_array[ i ].origin, favorite_enemy.origin ) > 160000 && 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 ) + { + i++; + continue; + } + else level.old_dog_spawn = dog_array[ i ]; + return dog_array[ i ]; + } + } + i++; + } + return dog_array[ 0 ]; +} + +dog_spawn_factory_logic( dog_array, favorite_enemy ) +{ + dog_locs = array_randomize( level.enemy_dog_locations ); + i = 0; + while ( i < dog_locs.size ) + { + if ( isDefined( level.old_dog_spawn ) && level.old_dog_spawn == dog_locs[ i ] ) + { + i++; + continue; + } + else + { + dist_squared = distancesquared( dog_locs[ i ].origin, favorite_enemy.origin ); + if ( dist_squared > 160000 && dist_squared < 1000000 ) + { + level.old_dog_spawn = dog_locs[ i ]; + return dog_locs[ i ]; + } + } + i++; + } + return dog_locs[ 0 ]; +} + +get_favorite_enemy() +{ + dog_targets = getplayers(); + least_hunted = dog_targets[ 0 ]; + i = 0; + while ( i < dog_targets.size ) + { + if ( !isDefined( dog_targets[ i ].hunted_by ) ) + { + dog_targets[ i ].hunted_by = 0; + } + if ( !is_player_valid( dog_targets[ i ] ) ) + { + i++; + continue; + } + else + { + if ( !is_player_valid( least_hunted ) ) + { + least_hunted = dog_targets[ i ]; + } + if ( dog_targets[ i ].hunted_by < least_hunted.hunted_by ) + { + least_hunted = dog_targets[ i ]; + } + } + i++; + } + least_hunted.hunted_by += 1; + return least_hunted; +} + +dog_health_increase() +{ + players = getplayers(); + if ( level.dog_round_count == 1 ) + { + level.dog_health = 400; + } + else if ( level.dog_round_count == 2 ) + { + level.dog_health = 900; + } + else if ( level.dog_round_count == 3 ) + { + level.dog_health = 1300; + } + else + { + if ( level.dog_round_count == 4 ) + { + level.dog_health = 1600; + } + } + if ( level.dog_health > 1600 ) + { + level.dog_health = 1600; + } +} + +dog_round_tracker() +{ + level.dog_round_count = 1; + level.next_dog_round = level.round_number + randomintrange( 4, 7 ); + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; + while ( 1 ) + { + level waittill( "between_round_over" ); +/# + if ( getDvarInt( "force_dogs" ) > 0 ) + { + level.next_dog_round = level.round_number; +#/ + } + if ( level.round_number == level.next_dog_round ) + { + level.music_round_override = 1; + old_spawn_func = level.round_spawn_func; + old_wait_func = level.round_wait_func; + dog_round_start(); + level.round_spawn_func = ::dog_round_spawning; + level.next_dog_round = level.round_number + randomintrange( 4, 6 ); +/# + get_players()[ 0 ] iprintln( "Next dog round: " + level.next_dog_round ); +#/ + continue; + } + else + { + if ( flag( "dog_round" ) ) + { + dog_round_stop(); + level.round_spawn_func = old_spawn_func; + level.round_wait_func = old_wait_func; + level.music_round_override = 0; + level.dog_round_count += 1; + } + } + } +} + +dog_round_start() +{ + flag_set( "dog_round" ); + flag_set( "dog_clips" ); + level thread maps/mp/zombies/_zm_audio::change_zombie_music( "dog_start" ); + if ( !isDefined( level.doground_nomusic ) ) + { + level.doground_nomusic = 0; + } + level.doground_nomusic = 1; + level notify( "dog_round_starting" ); + clientnotify( "dog_start" ); + if ( isDefined( level.dog_melee_range ) ) + { + setdvar( "ai_meleeRange", level.dog_melee_range ); + } + else + { + setdvar( "ai_meleeRange", 100 ); + } +} + +dog_round_stop() +{ + flag_clear( "dog_round" ); + flag_clear( "dog_clips" ); + if ( !isDefined( level.doground_nomusic ) ) + { + level.doground_nomusic = 0; + } + level.doground_nomusic = 0; + level notify( "dog_round_ending" ); + clientnotify( "dog_stop" ); + setdvar( "ai_meleeRange", level.melee_range_sav ); + setdvar( "ai_meleeWidth", level.melee_width_sav ); + setdvar( "ai_meleeHeight", level.melee_height_sav ); +} + +play_dog_round() +{ + self playlocalsound( "zmb_dog_round_start" ); + variation_count = 5; + wait 4,5; + players = getplayers(); + num = randomintrange( 0, players.size ); + players[ num ] maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "dog_spawn" ); +} + +dog_init() +{ + self.targetname = "zombie_dog"; + self.script_noteworthy = undefined; + self.animname = "zombie_dog"; + self.ignoreall = 1; + self.ignoreme = 1; + self.allowdeath = 1; + self.allowpain = 0; + self.force_gib = 1; + self.is_zombie = 1; + self.has_legs = 1; + self.gibbed = 0; + self.head_gibbed = 0; + self.default_goalheight = 40; + self.ignore_inert = 1; + self.grenadeawareness = 0; + self.badplaceawareness = 0; + self.ignoresuppression = 1; + self.suppressionthreshold = 1; + self.nododgemove = 1; + self.dontshootwhilemoving = 1; + self.pathenemylookahead = 0; + self.badplaceawareness = 0; + self.chatinitialized = 0; + self.team = level.zombie_team; + health_multiplier = 1; + if ( getDvar( "scr_dog_health_walk_multiplier" ) != "" ) + { + health_multiplier = getDvarFloat( "scr_dog_health_walk_multiplier" ); + } + self.maxhealth = int( level.dog_health * health_multiplier ); + self.health = int( level.dog_health * health_multiplier ); + self.freezegun_damage = 0; + self.zombie_move_speed = "sprint"; + self thread dog_run_think(); + self thread dog_stalk_audio(); + self thread maps/mp/zombies/_zm::round_spawn_failsafe(); + self hide(); + self thread magic_bullet_shield(); + self dog_fx_eye_glow(); + self dog_fx_trail(); + self thread dog_death(); + level thread maps/mp/zombies/_zm_spawner::zombie_death_event( self ); + self thread maps/mp/zombies/_zm_spawner::enemy_death_detection(); + self.a.disablepain = 1; + self disable_react(); + self clearenemy(); + self cleargoalvolume(); + self.flame_damage_time = 0; + self.meleedamage = 40; + self.thundergun_knockdown_func = ::dog_thundergun_knockdown; + self maps/mp/zombies/_zm_spawner::zombie_history( "zombie_dog_spawn_init -> Spawned = " + self.origin ); + if ( isDefined( level.achievement_monitor_func ) ) + { + self [[ level.achievement_monitor_func ]](); + } +} + +dog_fx_eye_glow() +{ + self.fx_dog_eye = spawn( "script_model", self gettagorigin( "J_EyeBall_LE" ) ); +/# + assert( isDefined( self.fx_dog_eye ) ); +#/ + self.fx_dog_eye.angles = self gettagangles( "J_EyeBall_LE" ); + self.fx_dog_eye setmodel( "tag_origin" ); + self.fx_dog_eye linkto( self, "J_EyeBall_LE" ); +} + +dog_fx_trail() +{ + if ( !is_mature() || randomint( 100 ) > level.zombie_vars[ "dog_fire_trail_percent" ] ) + { + self.fx_dog_trail_type = level._effect[ "dog_trail_ash" ]; + self.fx_dog_trail_sound = "zmb_hellhound_loop_breath"; + } + else + { + self.a.nodeath = 1; + self.fx_dog_trail_type = level._effect[ "dog_trail_fire" ]; + self.fx_dog_trail_sound = "zmb_hellhound_loop_fire"; + } + self.fx_dog_trail = spawn( "script_model", self gettagorigin( "tag_origin" ) ); +/# + assert( isDefined( self.fx_dog_trail ) ); +#/ + self.fx_dog_trail.angles = self gettagangles( "tag_origin" ); + self.fx_dog_trail setmodel( "tag_origin" ); + self.fx_dog_trail linkto( self, "tag_origin" ); +} + +dog_death() +{ + self waittill( "death" ); + if ( get_current_zombie_count() == 0 && level.zombie_total == 0 ) + { + level.last_dog_origin = self.origin; + level notify( "last_dog_down" ); + } + if ( isplayer( self.attacker ) ) + { + event = "death"; + if ( issubstr( self.damageweapon, "knife_ballistic_" ) ) + { + event = "ballistic_knife_death"; + } + self.attacker maps/mp/zombies/_zm_score::player_add_points( event, self.damagemod, self.damagelocation, 1 ); + if ( randomintrange( 0, 100 ) >= 80 ) + { + self.attacker maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "hellhound" ); + } + self.attacker maps/mp/zombies/_zm_stats::increment_client_stat( "zdogs_killed" ); + self.attacker maps/mp/zombies/_zm_stats::increment_player_stat( "zdogs_killed" ); + } + if ( isDefined( self.attacker ) && isai( self.attacker ) ) + { + self.attacker notify( "killed" ); + } + self stoploopsound(); +/# + assert( isDefined( self.fx_dog_eye ) ); +#/ + self.fx_dog_eye delete(); +/# + assert( isDefined( self.fx_dog_trail ) ); +#/ + self.fx_dog_trail delete(); + if ( isDefined( self.a.nodeath ) ) + { + level thread dog_explode_fx( self.origin ); + self delete(); + } + else + { + self playsound( "zmb_hellhound_vocals_death" ); + } +} + +dog_explode_fx( origin ) +{ + playfx( level._effect[ "dog_gib" ], origin ); + playsoundatposition( "zmb_hellhound_explode", origin ); +} + +zombie_setup_attack_properties_dog() +{ + self maps/mp/zombies/_zm_spawner::zombie_history( "zombie_setup_attack_properties()" ); + self thread dog_behind_audio(); + self.ignoreall = 0; + self.pathenemyfightdist = 64; + self.meleeattackdist = 64; + self.disablearrivals = 1; + self.disableexits = 1; +} + +stop_dog_sound_on_death() +{ + self waittill( "death" ); + self stopsounds(); +} + +dog_behind_audio() +{ + self thread stop_dog_sound_on_death(); + self endon( "death" ); + self waittill_any( "dog_running", "dog_combat" ); + self playsound( "zmb_hellhound_vocals_close" ); + wait 3; + while ( 1 ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + dogangle = angleClamp180( vectorToAngle( self.origin - players[ i ].origin )[ 1 ] - players[ i ].angles[ 1 ] ); + if ( isalive( players[ i ] ) && !isDefined( players[ i ].revivetrigger ) ) + { + if ( abs( dogangle ) > 90 && distance2d( self.origin, players[ i ].origin ) > 100 ) + { + self playsound( "zmb_hellhound_vocals_close" ); + wait 3; + } + } + i++; + } + wait 0,75; + } +} + +dog_clip_monitor() +{ + clips_on = 0; + level.dog_clips = getentarray( "dog_clips", "targetname" ); + while ( 1 ) + { + i = 0; + while ( i < level.dog_clips.size ) + { + level.dog_clips[ i ] trigger_off(); + level.dog_clips[ i ] connectpaths(); + i++; + } + flag_wait( "dog_clips" ); + if ( isDefined( level.no_dog_clip ) && level.no_dog_clip == 1 ) + { + return; + } + i = 0; + while ( i < level.dog_clips.size ) + { + level.dog_clips[ i ] trigger_on(); + level.dog_clips[ i ] disconnectpaths(); + wait_network_frame(); + i++; + } + dog_is_alive = 1; + while ( dog_is_alive || flag( "dog_round" ) ) + { + dog_is_alive = 0; + dogs = getentarray( "zombie_dog", "targetname" ); + i = 0; + while ( i < dogs.size ) + { + if ( isalive( dogs[ i ] ) ) + { + dog_is_alive = 1; + } + i++; + } + wait 1; + } + flag_clear( "dog_clips" ); + wait 1; + } +} + +special_dog_spawn( spawners, num_to_spawn ) +{ + dogs = getaispeciesarray( "all", "zombie_dog" ); + if ( isDefined( dogs ) && dogs.size >= 9 ) + { + return 0; + } + if ( !isDefined( num_to_spawn ) ) + { + num_to_spawn = 1; + } + spawn_point = undefined; + count = 0; + while ( count < num_to_spawn ) + { + players = get_players(); + favorite_enemy = get_favorite_enemy(); + if ( isDefined( spawners ) ) + { + spawn_point = spawners[ randomint( spawners.size ) ]; + ai = spawn_zombie( spawn_point ); + if ( isDefined( ai ) ) + { + ai.favoriteenemy = favorite_enemy; + spawn_point thread dog_spawn_fx( ai ); + count++; + flag_set( "dog_clips" ); + } + } + else if ( isDefined( level.dog_spawn_func ) ) + { + spawn_loc = [[ level.dog_spawn_func ]]( level.dog_spawners, favorite_enemy ); + ai = spawn_zombie( level.dog_spawners[ 0 ] ); + if ( isDefined( ai ) ) + { + ai.favoriteenemy = favorite_enemy; + spawn_loc thread dog_spawn_fx( ai, spawn_loc ); + count++; + flag_set( "dog_clips" ); + } + } + else + { + spawn_point = dog_spawn_factory_logic( level.enemy_dog_spawns, favorite_enemy ); + ai = spawn_zombie( level.dog_spawners[ 0 ] ); + if ( isDefined( ai ) ) + { + ai.favoriteenemy = favorite_enemy; + spawn_point thread dog_spawn_fx( ai, spawn_point ); + count++; + flag_set( "dog_clips" ); + } + } + waiting_for_next_dog_spawn( count, num_to_spawn ); + } + return 1; +} + +dog_run_think() +{ + self endon( "death" ); + self waittill( "visible" ); + if ( self.health > level.dog_health ) + { + self.maxhealth = level.dog_health; + self.health = level.dog_health; + } +/# + assert( isDefined( self.fx_dog_eye ) ); +#/ + maps/mp/zombies/_zm_net::network_safe_play_fx_on_tag( "dog_fx", 2, level._effect[ "dog_eye_glow" ], self.fx_dog_eye, "tag_origin" ); +/# + assert( isDefined( self.fx_dog_trail ) ); +#/ + maps/mp/zombies/_zm_net::network_safe_play_fx_on_tag( "dog_fx", 2, self.fx_dog_trail_type, self.fx_dog_trail, "tag_origin" ); + self playloopsound( self.fx_dog_trail_sound ); + while ( 1 ) + { + if ( !is_player_valid( self.favoriteenemy ) ) + { + self.favoriteenemy = get_favorite_enemy(); + } + wait 0,2; + } +} + +dog_stalk_audio() +{ + self endon( "death" ); + self endon( "dog_running" ); + self endon( "dog_combat" ); + while ( 1 ) + { + self playsound( "zmb_hellhound_vocals_amb" ); + wait randomfloatrange( 3, 6 ); + } +} + +dog_thundergun_knockdown( player, gib ) +{ + self endon( "death" ); + damage = int( self.maxhealth * 0,5 ); + self dodamage( damage, player.origin, player ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_faller.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_faller.gsc new file mode 100644 index 0000000..37859ed --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_ai_faller.gsc @@ -0,0 +1,634 @@ +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/animscripts/zm_shared; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +zombie_faller_delete() +{ + level.zombie_total++; + self maps/mp/zombies/_zm_spawner::reset_attack_spot(); + if ( isDefined( self.zombie_faller_location ) ) + { + self.zombie_faller_location.is_enabled = 1; + self.zombie_faller_location = undefined; + } + self delete(); +} + +faller_script_parameters() +{ + while ( isDefined( self.script_parameters ) ) + { + parms = strtok( self.script_parameters, ";" ); + while ( isDefined( parms ) && parms.size > 0 ) + { + i = 0; + while ( i < parms.size ) + { + if ( parms[ i ] == "drop_now" ) + { + self.drop_now = 1; + } + if ( parms[ i ] == "drop_not_occupied" ) + { + self.drop_not_occupied = 1; + } + if ( parms[ i ] == "emerge_top" ) + { + self.emerge_top = 1; + } + if ( parms[ i ] == "emerge_bottom" ) + { + self.emerge_bottom = 1; + } + i++; + } + } + } +} + +setup_deathfunc( func_name ) +{ + self endon( "death" ); + while ( isDefined( self.zombie_init_done ) && !self.zombie_init_done ) + { + wait_network_frame(); + } + if ( isDefined( func_name ) ) + { + self.deathfunction = func_name; + } + else + { + self.deathfunction = ::zombie_fall_death_func; + } +} + +do_zombie_fall( spot ) +{ + self endon( "death" ); + self.zombie_faller_location = spot; + self.zombie_faller_location.is_enabled = 0; + self.zombie_faller_location faller_script_parameters(); + if ( isDefined( self.zombie_faller_location.emerge_bottom ) || self.zombie_faller_location.emerge_bottom && isDefined( self.zombie_faller_location.emerge_top ) && self.zombie_faller_location.emerge_top ) + { + self do_zombie_emerge( spot ); + return; + } + self thread setup_deathfunc(); + self.no_powerups = 1; + self.in_the_ceiling = 1; + self.anchor = spawn( "script_origin", self.origin ); + self.anchor.angles = self.angles; + self linkto( self.anchor ); + if ( !isDefined( spot.angles ) ) + { + spot.angles = ( 0, 0, -1 ); + } + anim_org = spot.origin; + anim_ang = spot.angles; + self ghost(); + self.anchor moveto( anim_org, 0,05 ); + self.anchor waittill( "movedone" ); + target_org = get_desired_origin(); + if ( isDefined( target_org ) ) + { + anim_ang = vectorToAngle( target_org - self.origin ); + self.anchor rotateto( ( 0, anim_ang[ 1 ], 0 ), 0,05 ); + self.anchor waittill( "rotatedone" ); + } + self unlink(); + if ( isDefined( self.anchor ) ) + { + self.anchor delete(); + } + self thread maps/mp/zombies/_zm_spawner::hide_pop(); + self thread zombie_fall_death( spot ); + self thread zombie_fall_fx( spot ); + self thread zombie_faller_death_wait(); + self thread zombie_faller_do_fall(); + self.no_powerups = 0; + self.in_the_ceiling = 0; + self notify( "risen" ); +} + +zombie_faller_do_fall() +{ + self endon( "death" ); + self animscripted( self.origin, self.zombie_faller_location.angles, "zm_faller_emerge" ); + self maps/mp/animscripts/zm_shared::donotetracks( "emerge_anim", ::handle_fall_notetracks, self.zombie_faller_location ); + self.zombie_faller_wait_start = getTime(); + self.zombie_faller_should_drop = 0; + self thread zombie_fall_wait(); + self thread zombie_faller_watch_all_players(); + while ( !self.zombie_faller_should_drop ) + { + if ( self zombie_fall_should_attack( self.zombie_faller_location ) ) + { + self animscripted( self.origin, self.zombie_faller_location.angles, "zm_faller_attack" ); + self maps/mp/animscripts/zm_shared::donotetracks( "attack_anim", ::handle_fall_notetracks, self.zombie_faller_location ); + if ( !self zombie_faller_always_drop() && randomfloat( 1 ) > 0,5 ) + { + self.zombie_faller_should_drop = 1; + } + continue; + } + else if ( self zombie_faller_always_drop() ) + { + self.zombie_faller_should_drop = 1; + break; + } + else if ( getTime() >= ( self.zombie_faller_wait_start + 20000 ) ) + { + self.zombie_faller_should_drop = 1; + break; + } + else if ( self zombie_faller_drop_not_occupied() ) + { + self.zombie_faller_should_drop = 1; + break; + } + else self animscripted( self.origin, self.zombie_faller_location.angles, "zm_faller_attack" ); + self maps/mp/animscripts/zm_shared::donotetracks( "attack_anim", ::handle_fall_notetracks, self.zombie_faller_location ); + } + self notify( "falling" ); + spot = self.zombie_faller_location; + self zombie_faller_enable_location(); + self animscripted( self.origin, spot.angles, "zm_faller_fall" ); + self maps/mp/animscripts/zm_shared::donotetracks( "fall_anim", ::handle_fall_notetracks, spot ); + self.deathfunction = ::maps/mp/zombies/_zm_spawner::zombie_death_animscript; + self notify( "fall_anim_finished" ); + spot notify( "stop_zombie_fall_fx" ); + self stopanimscripted(); + landanimdelta = 15; + ground_pos = groundpos_ignore_water_new( self.origin ); + physdist = ( self.origin[ 2 ] - ground_pos[ 2 ] ) + landanimdelta; + if ( physdist > 0 ) + { + self animcustom( ::zombie_fall_loop ); + self waittill( "faller_on_ground" ); + self animcustom( ::zombie_land ); + self waittill( "zombie_land_done" ); + } + self.in_the_ceiling = 0; + self traversemode( "gravity" ); + self.no_powerups = 0; +} + +zombie_fall_loop() +{ + self endon( "death" ); + self setanimstatefromasd( "zm_faller_fall_loop" ); + while ( 1 ) + { + ground_pos = groundpos_ignore_water_new( self.origin ); + if ( ( self.origin[ 2 ] - ground_pos[ 2 ] ) < 20 ) + { + self notify( "faller_on_ground" ); + return; + } + else + { + wait 0,05; + } + } +} + +zombie_land() +{ + self setanimstatefromasd( "zm_faller_land" ); + maps/mp/animscripts/zm_shared::donotetracks( "land_anim" ); + self notify( "zombie_land_done" ); +} + +zombie_faller_always_drop() +{ + if ( isDefined( self.zombie_faller_location.drop_now ) && self.zombie_faller_location.drop_now ) + { + return 1; + } + return 0; +} + +zombie_faller_drop_not_occupied() +{ + if ( isDefined( self.zombie_faller_location.drop_not_occupied ) && self.zombie_faller_location.drop_not_occupied ) + { + if ( isDefined( self.zone_name ) && isDefined( level.zones[ self.zone_name ] ) ) + { + return !level.zones[ self.zone_name ].is_occupied; + } + } + return 0; +} + +zombie_faller_watch_all_players() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + self thread zombie_faller_watch_player( players[ i ] ); + i++; + } +} + +zombie_faller_watch_player( player ) +{ + self endon( "falling" ); + self endon( "death" ); + player endon( "disconnect" ); + range = 200; + rangesqr = range * range; + timer = 5000; + inrange = 0; + inrangetime = 0; + closerange = 60; + closerangesqr = closerange * closerange; + dirtoplayerenter = ( 0, 0, -1 ); + incloserange = 0; + while ( 1 ) + { + distsqr = distance2dsquared( self.origin, player.origin ); + if ( distsqr < rangesqr ) + { + if ( inrange ) + { + if ( ( inrangetime + timer ) < getTime() ) + { + self.zombie_faller_should_drop = 1; + return; + } + else } + else inrange = 1; + inrangetime = getTime(); + } + else + { + inrange = 0; + } + if ( distsqr < closerangesqr ) + { + if ( !incloserange ) + { + dirtoplayerenter = player.origin - self.origin; + dirtoplayerenter = ( dirtoplayerenter[ 0 ], dirtoplayerenter[ 1 ], 0 ); + dirtoplayerenter = vectornormalize( dirtoplayerenter ); + } + incloserange = 1; + } + else + { + if ( incloserange ) + { + dirtoplayerexit = player.origin - self.origin; + dirtoplayerexit = ( dirtoplayerexit[ 0 ], dirtoplayerexit[ 1 ], 0 ); + dirtoplayerexit = vectornormalize( dirtoplayerexit ); + if ( vectordot( dirtoplayerenter, dirtoplayerexit ) < 0 ) + { + self.zombie_faller_should_drop = 1; + return; + } + } + else + { + incloserange = 0; + } + wait 0,1; + } + } +} + +zombie_fall_wait() +{ + self endon( "falling" ); + self endon( "death" ); + while ( isDefined( self.zone_name ) ) + { + while ( isDefined( level.zones ) && isDefined( level.zones[ self.zone_name ] ) ) + { + zone = level.zones[ self.zone_name ]; + while ( 1 ) + { + if ( !zone.is_enabled || !zone.is_active ) + { + if ( !self potentially_visible( 2250000 ) ) + { + if ( self.health != level.zombie_health ) + { + self.zombie_faller_should_drop = 1; + return; + } + else self zombie_faller_delete(); + return; + } + } + wait 0,5; + } + } + } +} + +zombie_fall_should_attack( spot ) +{ + victims = zombie_fall_get_vicitims( spot ); + return victims.size > 0; +} + +zombie_fall_get_vicitims( spot ) +{ + ret = []; + players = getplayers(); + checkdist2 = 40; + checkdist2 *= checkdist2; + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + i++; + continue; + } + else stance = player getstance(); + if ( stance == "crouch" || stance == "prone" ) + { + i++; + continue; + } + else + { + zcheck = self.origin[ 2 ] - player.origin[ 2 ]; + if ( zcheck < 0 || zcheck > 120 ) + { + i++; + continue; + } + else + { + dist2 = distance2dsquared( player.origin, self.origin ); + if ( dist2 < checkdist2 ) + { + ret[ ret.size ] = player; + } + } + } + i++; + } + return ret; +} + +get_fall_anim( spot ) +{ + return level._zombie_fall_anims[ self.animname ][ "fall" ]; +} + +zombie_faller_enable_location() +{ + if ( isDefined( self.zombie_faller_location ) ) + { + self.zombie_faller_location.is_enabled = 1; + self.zombie_faller_location = undefined; + } +} + +zombie_faller_death_wait( endon_notify ) +{ + self endon( "falling" ); + if ( isDefined( endon_notify ) ) + { + self endon( endon_notify ); + } + self waittill( "death" ); + self zombie_faller_enable_location(); +} + +zombie_fall_death_func() +{ + self animmode( "noclip" ); + self.deathanim = "zm_faller_emerge_death"; + return self maps/mp/zombies/_zm_spawner::zombie_death_animscript(); +} + +zombie_fall_death( spot ) +{ + self endon( "fall_anim_finished" ); + while ( self.health > 1 ) + { + self waittill( "damage", amount, attacker, dir, p, type ); + } + self stopanimscripted(); + spot notify( "stop_zombie_fall_fx" ); +} + +_damage_mod_to_damage_type( type ) +{ + toks = strtok( type, "_" ); + if ( toks.size < 2 ) + { + return type; + } + returnstr = toks[ 1 ]; + i = 2; + while ( i < toks.size ) + { + returnstr += toks[ i ]; + i++; + } + returnstr = tolower( returnstr ); + return returnstr; +} + +zombie_fall_fx( spot ) +{ + spot thread zombie_fall_dust_fx( self ); + spot thread zombie_fall_burst_fx(); + playsoundatposition( "zmb_zombie_spawn", spot.origin ); + self endon( "death" ); + spot endon( "stop_zombie_fall_fx" ); + wait 1; + if ( self.zombie_move_speed != "sprint" ) + { + wait 1; + } +} + +zombie_fall_burst_fx() +{ + self endon( "stop_zombie_fall_fx" ); + self endon( "fall_anim_finished" ); + playfx( level._effect[ "rise_burst" ], self.origin + ( 0, 0, randomintrange( 5, 10 ) ) ); + wait 0,25; + playfx( level._effect[ "rise_billow" ], self.origin + ( randomintrange( -10, 10 ), randomintrange( -10, 10 ), randomintrange( 5, 10 ) ) ); +} + +zombie_fall_dust_fx( zombie ) +{ + dust_tag = "J_SpineUpper"; + self endon( "stop_zombie_fall_dust_fx" ); + self thread stop_zombie_fall_dust_fx( zombie ); + dust_time = 4,5; + dust_interval = 0,3; + t = 0; + while ( t < dust_time ) + { + playfxontag( level._effect[ "rise_dust" ], zombie, dust_tag ); + wait dust_interval; + t += dust_interval; + } +} + +stop_zombie_fall_dust_fx( zombie ) +{ + zombie waittill( "death" ); + self notify( "stop_zombie_fall_dust_fx" ); +} + +handle_fall_notetracks( note, spot ) +{ + if ( note == "deathout" ) + { + self.deathfunction = ::faller_death_ragdoll; + } + else + { + while ( note == "fire" ) + { + victims = zombie_fall_get_vicitims( spot ); + i = 0; + while ( i < victims.size ) + { + victims[ i ] dodamage( self.meleedamage, self.origin, self, self, "none", "MOD_MELEE" ); + self.zombie_faller_should_drop = 1; + i++; + } + } + } +} + +faller_death_ragdoll() +{ + self startragdoll(); + self launchragdoll( ( 0, 0, -1 ) ); + return self maps/mp/zombies/_zm_spawner::zombie_death_animscript(); +} + +in_player_fov( player ) +{ + playerangles = player getplayerangles(); + playerforwardvec = anglesToForward( playerangles ); + playerunitforwardvec = vectornormalize( playerforwardvec ); + banzaipos = self.origin; + playerpos = player getorigin(); + playertobanzaivec = banzaipos - playerpos; + playertobanzaiunitvec = vectornormalize( playertobanzaivec ); + forwarddotbanzai = vectordot( playerunitforwardvec, playertobanzaiunitvec ); + anglefromcenter = acos( forwarddotbanzai ); + playerfov = getDvarFloat( "cg_fov" ); + banzaivsplayerfovbuffer = getDvarFloat( "g_banzai_player_fov_buffer" ); + if ( banzaivsplayerfovbuffer <= 0 ) + { + banzaivsplayerfovbuffer = 0,2; + } + inplayerfov = anglefromcenter <= ( ( playerfov * 0,5 ) * ( 1 - banzaivsplayerfovbuffer ) ); + return inplayerfov; +} + +potentially_visible( how_close ) +{ + if ( !isDefined( how_close ) ) + { + how_close = 1000000; + } + potentiallyvisible = 0; + players = getplayers(); + i = 0; + while ( i < players.size ) + { + dist = distancesquared( self.origin, players[ i ].origin ); + if ( dist < how_close ) + { + inplayerfov = self in_player_fov( players[ i ] ); + if ( inplayerfov ) + { + potentiallyvisible = 1; + break; + } + } + else + { + i++; + } + } + return potentiallyvisible; +} + +do_zombie_emerge( spot ) +{ + self endon( "death" ); + self thread setup_deathfunc( ::faller_death_ragdoll ); + self.no_powerups = 1; + self.in_the_ceiling = 1; + anim_org = spot.origin; + anim_ang = spot.angles; + self thread zombie_emerge_fx( spot ); + self thread zombie_faller_death_wait( "risen" ); + if ( isDefined( level.custom_faller_entrance_logic ) ) + { + self thread [[ level.custom_faller_entrance_logic ]](); + } + self zombie_faller_emerge( spot ); + wait 0,1; + self notify( "risen" ); + self zombie_faller_enable_location(); +} + +zombie_faller_emerge( spot ) +{ + self endon( "death" ); + if ( isDefined( self.zombie_faller_location.emerge_bottom ) && self.zombie_faller_location.emerge_bottom ) + { + self animscripted( self.zombie_faller_location.origin, self.zombie_faller_location.angles, "zombie_riser_elevator_from_floor" ); + } + else + { + self animscripted( self.zombie_faller_location.origin, self.zombie_faller_location.angles, "zombie_riser_elevator_from_ceiling" ); + } + self maps/mp/animscripts/zm_shared::donotetracks( "rise_anim" ); + self.deathfunction = ::maps/mp/zombies/_zm_spawner::zombie_death_animscript; + self.in_the_ceiling = 0; + self.no_powerups = 0; +} + +zombie_emerge_fx( spot ) +{ + spot thread zombie_emerge_dust_fx( self ); + playsoundatposition( "zmb_zombie_spawn", spot.origin ); + self endon( "death" ); + spot endon( "stop_zombie_fall_fx" ); + wait 1; +} + +zombie_emerge_dust_fx( zombie ) +{ + dust_tag = "J_SpineUpper"; + self endon( "stop_zombie_fall_dust_fx" ); + self thread stop_zombie_fall_dust_fx( zombie ); + dust_time = 3,5; + dust_interval = 0,5; + t = 0; + while ( t < dust_time ) + { + playfxontag( level._effect[ "rise_dust" ], zombie, dust_tag ); + wait dust_interval; + t += dust_interval; + } +} + +stop_zombie_emerge_dust_fx( zombie ) +{ + zombie waittill( "death" ); + self notify( "stop_zombie_fall_dust_fx" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_audio.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_audio.gsc new file mode 100644 index 0000000..d9b1432 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_audio.gsc @@ -0,0 +1,1441 @@ +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/_music; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + registerclientfield( "allplayers", "charindex", 1, 3, "int" ); + registerclientfield( "toplayer", "isspeaking", 1, 1, "int" ); +/# + println( "ZM >> Zombiemode Server Scripts Init (_zm_audio.gsc)" ); +#/ + level zmbvox(); + level init_music_states(); + level maps/mp/zombies/_zm_audio_announcer::init(); + onplayerconnect_callback( ::init_audio_functions ); +} + +setexertvoice( exert_id ) +{ + self.player_exert_id = exert_id; + self setclientfield( "charindex", self.player_exert_id ); +} + +playerexert( exert ) +{ + if ( isDefined( self.isspeaking ) || self.isspeaking && isDefined( self.isexerting ) && self.isexerting ) + { + return; + } + id = level.exert_sounds[ 0 ][ exert ]; + if ( isDefined( self.player_exert_id ) ) + { + if ( isarray( level.exert_sounds[ self.player_exert_id ][ exert ] ) ) + { + id = random( level.exert_sounds[ self.player_exert_id ][ exert ] ); + } + else + { + id = level.exert_sounds[ self.player_exert_id ][ exert ]; + } + } + self playsound( id ); + if ( isDefined( self.isexerting ) && !self.isexerting ) + { + self thread exert_timer(); + } +} + +exert_timer() +{ + self endon( "disconnect" ); + wait 1; + self.isexerting = 1; + wait randomfloatrange( 1,5, 3 ); + self.isexerting = 0; +} + +zmbvox() +{ + level.votimer = []; + level.vox = zmbvoxcreate(); + init_standard_response_chances(); + level.vox zmbvoxadd( "player", "general", "crawl_spawn", "crawler_start", "resp_crawler_start" ); + level.vox zmbvoxadd( "player", "general", "hr_resp_crawler_start", "hr_resp_crawler_start", undefined ); + level.vox zmbvoxadd( "player", "general", "riv_resp_crawler_start", "riv_resp_crawler_start", undefined ); + level.vox zmbvoxadd( "player", "general", "ammo_low", "ammo_low", undefined ); + level.vox zmbvoxadd( "player", "general", "ammo_out", "ammo_out", undefined ); + level.vox zmbvoxadd( "player", "general", "door_deny", "nomoney_generic", undefined ); + level.vox zmbvoxadd( "player", "general", "perk_deny", "nomoney_perk", undefined ); + level.vox zmbvoxadd( "player", "general", "shoot_arm", "kill_limb", undefined ); + level.vox zmbvoxadd( "player", "general", "box_move", "box_move", undefined ); + level.vox zmbvoxadd( "player", "general", "no_money", "nomoney", undefined ); + level.vox zmbvoxadd( "player", "general", "oh_shit", "oh_shit", "resp_surrounded" ); + level.vox zmbvoxadd( "player", "general", "hr_resp_surrounded", "hr_resp_surrounded", undefined ); + level.vox zmbvoxadd( "player", "general", "riv_resp_surrounded", "riv_resp_surrounded", undefined ); + level.vox zmbvoxadd( "player", "general", "revive_down", "revive_down", undefined ); + level.vox zmbvoxadd( "player", "general", "revive_up", "revive_up", undefined ); + level.vox zmbvoxadd( "player", "general", "crawl_hit", "crawler_attack", undefined ); + level.vox zmbvoxadd( "player", "general", "sigh", "sigh", undefined ); + level.vox zmbvoxadd( "player", "general", "round_5", "round_5", undefined ); + level.vox zmbvoxadd( "player", "general", "round_20", "round_20", undefined ); + level.vox zmbvoxadd( "player", "general", "round_10", "round_10", undefined ); + level.vox zmbvoxadd( "player", "general", "round_35", "round_35", undefined ); + level.vox zmbvoxadd( "player", "general", "round_50", "round_50", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_armorvest", "perk_jugga", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_quickrevive", "perk_revive", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_fastreload", "perk_speed", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_rof", "perk_doubletap", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_longersprint", "perk_stamine", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_flakjacket", "perk_phdflopper", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_deadshot", "perk_deadshot", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_finalstand", "perk_who", undefined ); + level.vox zmbvoxadd( "player", "perk", "specialty_additionalprimaryweapon", "perk_mulekick", undefined ); + level.vox zmbvoxadd( "player", "powerup", "nuke", "powerup_nuke", undefined ); + level.vox zmbvoxadd( "player", "powerup", "insta_kill", "powerup_insta", undefined ); + level.vox zmbvoxadd( "player", "powerup", "full_ammo", "powerup_ammo", undefined ); + level.vox zmbvoxadd( "player", "powerup", "double_points", "powerup_double", undefined ); + level.vox zmbvoxadd( "player", "powerup", "carpenter", "powerup_carp", undefined ); + level.vox zmbvoxadd( "player", "powerup", "firesale", "powerup_firesale", undefined ); + level.vox zmbvoxadd( "player", "powerup", "minigun", "powerup_minigun", undefined ); + level.vox zmbvoxadd( "player", "kill", "melee", "kill_melee", undefined ); + level.vox zmbvoxadd( "player", "kill", "melee_instakill", "kill_insta", undefined ); + level.vox zmbvoxadd( "player", "kill", "weapon_instakill", "kill_insta", undefined ); + level.vox zmbvoxadd( "player", "kill", "closekill", "kill_close", undefined ); + level.vox zmbvoxadd( "player", "kill", "damage", "kill_damaged", undefined ); + level.vox zmbvoxadd( "player", "kill", "streak", "kill_streak", undefined ); + level.vox zmbvoxadd( "player", "kill", "headshot", "kill_headshot", "resp_kill_headshot" ); + level.vox zmbvoxadd( "player", "kill", "hr_resp_kill_headshot", "hr_resp_kill_headshot", undefined ); + level.vox zmbvoxadd( "player", "kill", "riv_resp_kill_headshot", "riv_resp_kill_headshot", undefined ); + level.vox zmbvoxadd( "player", "kill", "explosive", "kill_explo", undefined ); + level.vox zmbvoxadd( "player", "kill", "flame", "kill_flame", undefined ); + level.vox zmbvoxadd( "player", "kill", "raygun", "kill_ray", undefined ); + level.vox zmbvoxadd( "player", "kill", "bullet", "kill_streak", undefined ); + level.vox zmbvoxadd( "player", "kill", "tesla", "kill_tesla", undefined ); + level.vox zmbvoxadd( "player", "kill", "monkey", "kill_monkey", undefined ); + level.vox zmbvoxadd( "player", "kill", "thundergun", "kill_thunder", undefined ); + level.vox zmbvoxadd( "player", "kill", "freeze", "kill_freeze", undefined ); + level.vox zmbvoxadd( "player", "kill", "crawler", "crawler_kill", undefined ); + level.vox zmbvoxadd( "player", "kill", "hellhound", "kill_hellhound", undefined ); + level.vox zmbvoxadd( "player", "kill", "quad", "kill_quad", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "pistol", "wpck_crappy", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "smg", "wpck_smg", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "dualwield", "wpck_dual", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "shotgun", "wpck_shotgun", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "rifle", "wpck_sniper", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "burstrifle", "wpck_mg", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "assault", "wpck_mg", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "sniper", "wpck_sniper", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "mg", "wpck_mg", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "launcher", "wpck_launcher", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "grenade", "wpck_grenade", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "bowie", "wpck_bowie", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "raygun", "wpck_raygun", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "monkey", "wpck_monkey", "resp_wpck_monkey" ); + level.vox zmbvoxadd( "player", "weapon_pickup", "hr_resp_wpck_monkey", "hr_resp_wpck_monkey", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "riv_resp_wpck_monkey", "riv_resp_wpck_monkey", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "crossbow", "wpck_launcher", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "upgrade", "wpck_upgrade", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "favorite", "wpck_favorite", undefined ); + level.vox zmbvoxadd( "player", "weapon_pickup", "favorite_upgrade", "wpck_favorite_upgrade", undefined ); + level.vox zmbvoxadd( "player", "player_death", "player_death", "evt_player_final_hit", undefined ); + level.zmb_vox = []; + level.zmb_vox[ "prefix" ] = "zmb_vocals_"; + level.zmb_vox[ "zombie" ] = []; + level.zmb_vox[ "zombie" ][ "ambient" ] = "zombie_ambience"; + level.zmb_vox[ "zombie" ][ "sprint" ] = "zombie_sprint"; + level.zmb_vox[ "zombie" ][ "attack" ] = "zombie_attack"; + level.zmb_vox[ "zombie" ][ "teardown" ] = "zombie_teardown"; + level.zmb_vox[ "zombie" ][ "taunt" ] = "zombie_taunt"; + level.zmb_vox[ "zombie" ][ "behind" ] = "zombie_behind"; + level.zmb_vox[ "zombie" ][ "death" ] = "zombie_death"; + level.zmb_vox[ "zombie" ][ "crawler" ] = "zombie_crawler"; + level.zmb_vox[ "quad_zombie" ] = []; + level.zmb_vox[ "quad_zombie" ][ "ambient" ] = "quad_ambience"; + level.zmb_vox[ "quad_zombie" ][ "sprint" ] = "quad_sprint"; + level.zmb_vox[ "quad_zombie" ][ "attack" ] = "quad_attack"; + level.zmb_vox[ "quad_zombie" ][ "behind" ] = "quad_behind"; + level.zmb_vox[ "quad_zombie" ][ "death" ] = "quad_death"; + level.zmb_vox[ "thief_zombie" ] = []; + level.zmb_vox[ "thief_zombie" ][ "ambient" ] = "thief_ambience"; + level.zmb_vox[ "thief_zombie" ][ "sprint" ] = "thief_sprint"; + level.zmb_vox[ "thief_zombie" ][ "steal" ] = "thief_steal"; + level.zmb_vox[ "thief_zombie" ][ "death" ] = "thief_death"; + level.zmb_vox[ "thief_zombie" ][ "anger" ] = "thief_anger"; + level.zmb_vox[ "boss_zombie" ] = []; + level.zmb_vox[ "boss_zombie" ][ "ambient" ] = "boss_ambience"; + level.zmb_vox[ "boss_zombie" ][ "sprint" ] = "boss_sprint"; + level.zmb_vox[ "boss_zombie" ][ "attack" ] = "boss_attack"; + level.zmb_vox[ "boss_zombie" ][ "behind" ] = "boss_behind"; + level.zmb_vox[ "boss_zombie" ][ "death" ] = "boss_death"; + level.zmb_vox[ "leaper_zombie" ] = []; + level.zmb_vox[ "leaper_zombie" ][ "ambient" ] = "leaper_ambience"; + level.zmb_vox[ "leaper_zombie" ][ "sprint" ] = "leaper_ambience"; + level.zmb_vox[ "leaper_zombie" ][ "attack" ] = "leaper_attack"; + level.zmb_vox[ "leaper_zombie" ][ "behind" ] = "leaper_close"; + level.zmb_vox[ "leaper_zombie" ][ "death" ] = "leaper_death"; + level.zmb_vox[ "monkey_zombie" ] = []; + level.zmb_vox[ "monkey_zombie" ][ "ambient" ] = "monkey_ambience"; + level.zmb_vox[ "monkey_zombie" ][ "sprint" ] = "monkey_sprint"; + level.zmb_vox[ "monkey_zombie" ][ "attack" ] = "monkey_attack"; + level.zmb_vox[ "monkey_zombie" ][ "behind" ] = "monkey_behind"; + level.zmb_vox[ "monkey_zombie" ][ "death" ] = "monkey_death"; + if ( isDefined( level._zmbvoxlevelspecific ) ) + { + level thread [[ level._zmbvoxlevelspecific ]](); + } + if ( isDefined( level._zmbvoxgametypespecific ) ) + { + level thread [[ level._zmbvoxgametypespecific ]](); + } + announcer_ent = spawn( "script_origin", ( 0, 0, 0 ) ); + level.vox zmbvoxinitspeaker( "announcer", "vox_zmba_", announcer_ent ); + level.exert_sounds[ 0 ][ "burp" ] = "evt_belch"; + level.exert_sounds[ 0 ][ "hitmed" ] = "null"; + level.exert_sounds[ 0 ][ "hitlrg" ] = "null"; + if ( isDefined( level.setupcustomcharacterexerts ) ) + { + [[ level.setupcustomcharacterexerts ]](); + } +} + +init_standard_response_chances() +{ + level.response_chances = []; + add_vox_response_chance( "sickle", 40 ); + add_vox_response_chance( "melee", 40 ); + add_vox_response_chance( "melee_instakill", 99 ); + add_vox_response_chance( "weapon_instakill", 10 ); + add_vox_response_chance( "explosive", 60 ); + add_vox_response_chance( "monkey", 60 ); + add_vox_response_chance( "flame", 60 ); + add_vox_response_chance( "raygun", 75 ); + add_vox_response_chance( "headshot", 15 ); + add_vox_response_chance( "crawler", 30 ); + add_vox_response_chance( "quad", 30 ); + add_vox_response_chance( "astro", 99 ); + add_vox_response_chance( "closekill", 15 ); + add_vox_response_chance( "bullet", 1 ); + add_vox_response_chance( "claymore", 99 ); + add_vox_response_chance( "dolls", 99 ); + add_vox_response_chance( "default", 1 ); +} + +init_audio_functions() +{ + self thread zombie_behind_vox(); + self thread player_killstreak_timer(); + self thread oh_shit_vox(); +} + +zombie_behind_vox() +{ + self endon( "death_or_disconnect" ); + if ( !isDefined( level._zbv_vox_last_update_time ) ) + { + level._zbv_vox_last_update_time = 0; + level._audio_zbv_shared_ent_list = get_round_enemy_array(); + } + while ( 1 ) + { + wait 1; + t = getTime(); + if ( t > ( level._zbv_vox_last_update_time + 1000 ) ) + { + level._zbv_vox_last_update_time = t; + level._audio_zbv_shared_ent_list = get_round_enemy_array(); + } + zombs = level._audio_zbv_shared_ent_list; + played_sound = 0; + i = 0; + while ( i < zombs.size ) + { + if ( !isDefined( zombs[ i ] ) ) + { + i++; + continue; + } + else if ( zombs[ i ].isdog ) + { + i++; + continue; + } + else + { + dist = 200; + z_dist = 50; + alias = level.vox_behind_zombie; + if ( isDefined( zombs[ i ].zombie_move_speed ) ) + { + switch( zombs[ i ].zombie_move_speed ) + { + case "walk": + dist = 200; + break; + break; + case "run": + dist = 250; + break; + break; + case "sprint": + dist = 275; + break; + break; + } + } + if ( distancesquared( zombs[ i ].origin, self.origin ) < ( dist * dist ) ) + { + yaw = self maps/mp/zombies/_zm_utility::getyawtospot( zombs[ i ].origin ); + z_diff = self.origin[ 2 ] - zombs[ i ].origin[ 2 ]; + if ( yaw < -95 && yaw > 95 && abs( z_diff ) < 50 ) + { + zombs[ i ] thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "behind", zombs[ i ].animname ); + played_sound = 1; + break; + } + } + } + else i++; + } + if ( played_sound ) + { + wait 5; + } + } +} + +attack_vox_network_choke() +{ + while ( 1 ) + { + level._num_attack_vox = 0; + wait_network_frame(); + } +} + +do_zombies_playvocals( alias_type, zombie_type ) +{ +/# + if ( getDvarInt( #"6C610250" ) > 0 ) + { + return; +#/ + } + self endon( "death" ); + if ( !isDefined( zombie_type ) ) + { + zombie_type = "zombie"; + } + if ( isDefined( self.shrinked ) && self.shrinked ) + { + return; + } + if ( isDefined( self.is_inert ) && self.is_inert ) + { + return; + } + if ( !isDefined( self.talking ) ) + { + self.talking = 0; + } + if ( !isDefined( level.zmb_vox[ zombie_type ] ) ) + { +/# + println( "ZM >> AUDIO - ZOMBIE TYPE: " + zombie_type + " has NO aliases set up for it." ); +#/ + return; + } + if ( !isDefined( level.zmb_vox[ zombie_type ][ alias_type ] ) ) + { +/# + println( "ZM >> AUDIO - ZOMBIE TYPE: " + zombie_type + " has NO aliases set up for ALIAS_TYPE: " + alias_type ); +#/ + return; + } + if ( alias_type == "attack" ) + { + if ( !isDefined( level._num_attack_vox ) ) + { + level thread attack_vox_network_choke(); + } + if ( level._num_attack_vox > 4 ) + { + return; + } + level._num_attack_vox++; + } + alias = level.zmb_vox[ "prefix" ] + level.zmb_vox[ zombie_type ][ alias_type ]; + if ( alias_type != "attack" && alias_type != "behind" && alias_type != "death" && alias_type != "anger" || alias_type == "steal" && alias_type == "taunt" ) + { + if ( isDefined( level._custom_zombie_audio_func ) ) + { + self [[ level._custom_zombie_audio_func ]]( alias, alias_type ); + } + else + { + self playsound( alias ); + } + } + else + { + if ( !self.talking ) + { + self.talking = 1; + if ( self is_last_zombie() ) + { + alias += "_loud"; + } + self playsoundwithnotify( alias, "sounddone" ); + self waittill( "sounddone" ); + self.talking = 0; + } + } +} + +is_last_zombie() +{ + if ( get_current_zombie_count() <= 1 ) + { + return 1; + } + return 0; +} + +oh_shit_vox() +{ + self endon( "death_or_disconnect" ); + while ( 1 ) + { + wait 1; + players = get_players(); + zombs = get_round_enemy_array(); + if ( players.size > 1 ) + { + close_zombs = 0; + i = 0; + while ( i < zombs.size ) + { + if ( isDefined( zombs[ i ].favoriteenemy ) || zombs[ i ].favoriteenemy == self && !isDefined( zombs[ i ].favoriteenemy ) ) + { + if ( distancesquared( zombs[ i ].origin, self.origin ) < 62500 ) + { + close_zombs++; + } + } + i++; + } + if ( close_zombs > 4 ) + { + if ( randomint( 100 ) > 75 && isDefined( self.isonbus ) && !self.isonbus ) + { + self create_and_play_dialog( "general", "oh_shit" ); + wait 4; + } + } + } + } +} + +create_and_play_dialog( category, type, response, force_variant, override ) +{ + waittime = 0,25; + if ( !isDefined( self.zmbvoxid ) ) + { +/# + if ( getDvarInt( #"0AEB127D" ) > 0 ) + { + iprintln( "DIALOG DEBUGGER: No zmbVoxID setup on this character. Run zmbVoxInitSpeaker on this character in order to play vox" ); +#/ + } + return; + } + if ( isDefined( self.dontspeak ) && self.dontspeak ) + { + return; + } +/# + if ( getDvarInt( #"0AEB127D" ) > 0 ) + { + self thread dialog_debugger( category, type ); +#/ + } + isresponse = 0; + alias_suffix = undefined; + index = undefined; + prefix = undefined; + if ( !isDefined( level.vox.speaker[ self.zmbvoxid ].alias[ category ][ type ] ) ) + { + return; + } + prefix = level.vox.speaker[ self.zmbvoxid ].prefix; + alias_suffix = level.vox.speaker[ self.zmbvoxid ].alias[ category ][ type ]; + if ( self is_player() ) + { + if ( self.sessionstate != "playing" ) + { + return; + } + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || type != "revive_down" && type != "revive_up" ) + { + return; + } + index = maps/mp/zombies/_zm_weapons::get_player_index( self ); + prefix = prefix + index + "_"; + } + if ( isDefined( response ) ) + { + if ( isDefined( level.vox.speaker[ self.zmbvoxid ].response[ category ][ type ] ) ) + { + alias_suffix = response + level.vox.speaker[ self.zmbvoxid ].response[ category ][ type ]; + } + isresponse = 1; + } + sound_to_play = self zmbvoxgetlinevariant( prefix, alias_suffix, force_variant, override ); + if ( isDefined( sound_to_play ) ) + { + if ( isDefined( level._audio_custom_player_playvox ) ) + { + self thread [[ level._audio_custom_player_playvox ]]( prefix, index, sound_to_play, waittime, category, type, override ); + } + else + { + self thread do_player_or_npc_playvox( prefix, index, sound_to_play, waittime, category, type, override, isresponse ); + } + } + else + { +/# + if ( getDvarInt( #"0AEB127D" ) > 0 ) + { + iprintln( "DIALOG DEBUGGER: SOUND_TO_PLAY is undefined" ); +#/ + } + } +} + +do_player_or_npc_playvox( prefix, index, sound_to_play, waittime, category, type, override, isresponse ) +{ + self endon( "death_or_disconnect" ); + if ( isDefined( level.skit_vox_override ) && level.skit_vox_override && isDefined( override ) && !override ) + { + return; + } + if ( !isDefined( self.isspeaking ) ) + { + self.isspeaking = 0; + } + if ( isDefined( self.isspeaking ) && self.isspeaking ) + { +/# + println( "DIALOG DEBUGGER: Can't play (" + prefix + sound_to_play + ") because we are speaking already." ); +#/ + return; + } + if ( !self arenearbyspeakersactive() || isDefined( self.ignorenearbyspkrs ) && self.ignorenearbyspkrs ) + { + self.speakingline = sound_to_play; + self.isspeaking = 1; + if ( isplayer( self ) ) + { + self setclientfieldtoplayer( "isspeaking", 1 ); + } + self notify( "speaking" ); + self playsoundwithnotify( prefix + sound_to_play, "sound_done" + sound_to_play ); + self waittill( "sound_done" + sound_to_play ); + if ( isplayer( self ) && isDefined( isresponse ) && !isresponse && isDefined( self.last_vo_played_time ) ) + { + if ( getTime() < ( self.last_vo_played_time + 5000 ) ) + { + waittime = 15; + } + } + wait waittime; + self notify( "done_speaking" ); + self.isspeaking = 0; + if ( isplayer( self ) ) + { + self setclientfieldtoplayer( "isspeaking", 0 ); + } + if ( isplayer( self ) ) + { + self.last_vo_played_time = getTime(); + } + if ( isDefined( isresponse ) && isresponse ) + { + return; + } + if ( isDefined( level.vox.speaker[ self.zmbvoxid ].response ) && isDefined( level.vox.speaker[ self.zmbvoxid ].response[ category ] ) && isDefined( level.vox.speaker[ self.zmbvoxid ].response[ category ][ type ] ) ) + { + if ( isDefined( self.isnpc ) || self.isnpc && !flag( "solo_game" ) ) + { + if ( isDefined( level._audio_custom_response_line ) ) + { + level thread [[ level._audio_custom_response_line ]]( self, index, category, type ); + } + else + { + level thread setup_response_line( self, index, category, type ); + } + } + } + } + else + { +/# + println( "DIALOG DEBUGGER: Can't play (" + prefix + sound_to_play + ") because someone is nearby speaking already." ); +#/ + } +} + +setup_response_line( player, index, category, type ) +{ + dempsey = 0; + nikolai = 1; + takeo = 2; + richtofen = 3; + switch( player.entity_num ) + { + case 0: + level setup_hero_rival( player, nikolai, richtofen, category, type ); + break; + case 1: + level setup_hero_rival( player, richtofen, takeo, category, type ); + break; + case 2: + level setup_hero_rival( player, dempsey, nikolai, category, type ); + break; + case 3: + level setup_hero_rival( player, takeo, dempsey, category, type ); + break; + } + return; +} + +setup_hero_rival( player, hero, rival, category, type ) +{ + players = get_players(); + hero_player = undefined; + rival_player = undefined; + _a736 = players; + _k736 = getFirstArrayKey( _a736 ); + while ( isDefined( _k736 ) ) + { + ent = _a736[ _k736 ]; + if ( ent.characterindex == hero ) + { + hero_player = ent; + } + else + { + if ( ent.characterindex == rival ) + { + rival_player = ent; + } + } + _k736 = getNextArrayKey( _a736, _k736 ); + } + if ( isDefined( hero_player ) && isDefined( rival_player ) ) + { + if ( randomint( 100 ) > 50 ) + { + hero_player = undefined; + } + else + { + rival_player = undefined; + } + } + if ( isDefined( hero_player ) && distancesquared( player.origin, hero_player.origin ) < 250000 ) + { + hero_player create_and_play_dialog( category, type, "hr_" ); + } + else + { + if ( isDefined( rival_player ) && distancesquared( player.origin, rival_player.origin ) < 250000 ) + { + rival_player create_and_play_dialog( category, type, "riv_" ); + } + } +} + +do_announcer_playvox( category, type, team ) +{ + if ( !isDefined( level.vox.speaker[ "announcer" ].alias[ category ] ) || !isDefined( level.vox.speaker[ "announcer" ].alias[ category ][ type ] ) ) + { + return; + } + if ( !isDefined( level.devil_is_speaking ) ) + { + level.devil_is_speaking = 0; + } + prefix = level.vox.speaker[ "announcer" ].prefix; + suffix = level.vox.speaker[ "announcer" ].ent zmbvoxgetlinevariant( prefix, level.vox.speaker[ "announcer" ].alias[ category ][ type ] ); + if ( !isDefined( suffix ) ) + { + return; + } + alias = prefix + suffix; + if ( level.devil_is_speaking == 0 ) + { + level.devil_is_speaking = 1; + if ( !isDefined( team ) ) + { + level.vox.speaker[ "announcer" ].ent playsoundwithnotify( alias, "sounddone" ); + } + else + { + level thread zmbvoxannouncertoteam( category, type, team ); + } + level.vox.speaker[ "announcer" ].ent waittill( "sounddone" ); + level.devil_is_speaking = 0; + } +} + +zmbvoxannouncertoteam( category, type, team ) +{ + prefix = level.vox.speaker[ "announcer" ].prefix; + alias_to_team = prefix + level.vox.speaker[ "announcer" ].ent zmbvoxgetlinevariant( prefix, level.vox.speaker[ "announcer" ].alias[ category ][ type ] ); + if ( isDefined( level.vox.speaker[ "announcer" ].response[ category ][ type ] ) ) + { + alias_to_rival = prefix + level.vox.speaker[ "announcer" ].ent zmbvoxgetlinevariant( prefix, level.vox.speaker[ "announcer" ].response[ category ][ type ] ); + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ]._encounters_team ) ) + { + i++; + continue; + } + else if ( players[ i ]._encounters_team == team ) + { + level.vox.speaker[ "announcer" ].ent playsoundtoplayer( alias_to_team, players[ i ] ); + i++; + continue; + } + else + { + if ( isDefined( alias_to_rival ) ) + { + level.vox.speaker[ "announcer" ].ent playsoundtoplayer( alias_to_rival, players[ i ] ); + } + } + i++; + } + wait 3; + level.vox.speaker[ "announcer" ].ent notify( "sounddone" ); +} + +player_killstreak_timer() +{ + self endon( "disconnect" ); + self endon( "death" ); + if ( getDvar( "zombie_kills" ) == "" ) + { + setdvar( "zombie_kills", "7" ); + } + if ( getDvar( "zombie_kill_timer" ) == "" ) + { + setdvar( "zombie_kill_timer", "5" ); + } + kills = getDvarInt( "zombie_kills" ); + time = getDvarInt( "zombie_kill_timer" ); + if ( !isDefined( self.timerisrunning ) ) + { + self.timerisrunning = 0; + self.killcounter = 0; + } + while ( 1 ) + { + self waittill( "zom_kill", zomb ); + if ( isDefined( zomb._black_hole_bomb_collapse_death ) && zomb._black_hole_bomb_collapse_death == 1 ) + { + continue; + } + if ( isDefined( zomb.microwavegun_death ) && zomb.microwavegun_death ) + { + continue; + } + self.killcounter++; + if ( self.timerisrunning != 1 ) + { + self.timerisrunning = 1; + self thread timer_actual( kills, time ); + } + } +} + +player_zombie_kill_vox( hit_location, player, mod, zombie ) +{ + weapon = player getcurrentweapon(); + dist = distancesquared( player.origin, zombie.origin ); + if ( !isDefined( level.zombie_vars[ player.team ][ "zombie_insta_kill" ] ) ) + { + level.zombie_vars[ player.team ][ "zombie_insta_kill" ] = 0; + } + instakill = level.zombie_vars[ player.team ][ "zombie_insta_kill" ]; + death = get_mod_type( hit_location, mod, weapon, zombie, instakill, dist, player ); + chance = get_response_chance( death ); + if ( chance > randomintrange( 1, 100 ) && isDefined( player.force_wait_on_kill_line ) && !player.force_wait_on_kill_line ) + { + player.force_wait_on_kill_line = 1; + player create_and_play_dialog( "kill", death ); + wait 2; + if ( isDefined( player ) ) + { + player.force_wait_on_kill_line = 0; + } + } +} + +get_response_chance( event ) +{ + if ( !isDefined( level.response_chances[ event ] ) ) + { + return 0; + } + return level.response_chances[ event ]; +} + +get_mod_type( impact, mod, weapon, zombie, instakill, dist, player ) +{ + close_dist = 4096; + med_dist = 15376; + far_dist = 160000; + if ( isDefined( zombie._black_hole_bomb_collapse_death ) && zombie._black_hole_bomb_collapse_death == 1 ) + { + return "default"; + } + if ( zombie.animname == "screecher_zombie" && mod == "MOD_MELEE" ) + { + return "killed_screecher"; + } + if ( is_placeable_mine( weapon ) ) + { + if ( !instakill ) + { + return "claymore"; + } + else + { + return "weapon_instakill"; + } + } + if ( weapon == "jetgun_zm" || weapon == "jetgun_upgraded_zm" ) + { + if ( instakill ) + { + return "weapon_instakill"; + } + else + { + return "jetgun_kill"; + } + } + if ( weapon == "slipgun_zm" || weapon == "slipgun_upgraded_zm" ) + { + if ( instakill ) + { + return "weapon_instakill"; + } + else + { + return "slipgun_kill"; + } + } + if ( isDefined( zombie.damageweapon ) && zombie.damageweapon == "cymbal_monkey_zm" ) + { + if ( instakill ) + { + return "weapon_instakill"; + } + else + { + return "monkey"; + } + } + if ( is_headshot( weapon, impact, mod ) && dist >= far_dist ) + { + return "headshot"; + } + if ( mod != "MOD_MELEE" && mod != "MOD_BAYONET" && mod == "MOD_UNKNOWN" && dist < close_dist ) + { + if ( !instakill ) + { + if ( player hasweapon( "sickle_knife_zm" ) ) + { + return "sickle"; + } + else + { + return "melee"; + } + } + else + { + return "melee_instakill"; + } + } + if ( isDefined( zombie.damageweapon ) && zombie.damageweapon == "zombie_nesting_doll_single" ) + { + if ( !instakill ) + { + return "dolls"; + } + else + { + return "weapon_instakill"; + } + } + if ( is_explosive_damage( mod ) && weapon != "ray_gun_zm" && isDefined( zombie.is_on_fire ) && !zombie.is_on_fire ) + { + if ( !instakill ) + { + return "explosive"; + } + else + { + return "weapon_instakill"; + } + } + if ( !issubstr( weapon, "flame" ) && !issubstr( weapon, "molotov_" ) && issubstr( weapon, "napalmblob_" ) && mod != "MOD_BURNED" || mod == "MOD_GRENADE" && mod == "MOD_GRENADE_SPLASH" ) + { + if ( !instakill ) + { + return "flame"; + } + else + { + return "weapon_instakill"; + } + } + if ( weapon == "ray_gun_zm" && dist > far_dist ) + { + if ( !instakill ) + { + return "raygun"; + } + else + { + return "weapon_instakill"; + } + } + if ( !isDefined( impact ) ) + { + impact = ""; + } + if ( mod == "MOD_RIFLE_BULLET" || mod == "MOD_PISTOL_BULLET" ) + { + if ( !instakill ) + { + return "bullet"; + } + else + { + return "weapon_instakill"; + } + } + if ( instakill ) + { + return "default"; + } + if ( mod != "MOD_MELEE" && zombie.animname == "quad_zombie" ) + { + return "quad"; + } + if ( mod != "MOD_MELEE" && zombie.animname == "astro_zombie" ) + { + return "astro"; + } + if ( mod != "MOD_MELEE" && !zombie.has_legs ) + { + return "crawler"; + } + if ( mod != "MOD_BURNED" && dist < close_dist ) + { + return "closekill"; + } + return "default"; +} + +timer_actual( kills, time ) +{ + self endon( "disconnect" ); + self endon( "death" ); + timer = getTime() + ( time * 1000 ); + while ( getTime() < timer ) + { + if ( self.killcounter > kills ) + { + self create_and_play_dialog( "kill", "streak" ); + wait 1; + self.killcounter = 0; + timer = -1; + } + wait 0,1; + } + wait 10; + self.killcounter = 0; + self.timerisrunning = 0; +} + +perks_a_cola_jingle_timer() +{ + self endon( "death" ); + self thread play_random_broken_sounds(); + while ( 1 ) + { + wait randomfloatrange( 31, 45 ); + if ( randomint( 100 ) < 15 ) + { + self thread play_jingle_or_stinger( self.script_sound ); + } + } +} + +play_jingle_or_stinger( perksacola ) +{ + playsoundatposition( "evt_electrical_surge", self.origin ); + if ( !isDefined( self.jingle_is_playing ) ) + { + self.jingle_is_playing = 0; + } + if ( isDefined( perksacola ) ) + { + if ( self.jingle_is_playing == 0 && level.music_override == 0 ) + { + self.jingle_is_playing = 1; + self playsoundontag( perksacola, "tag_origin", "sound_done" ); + if ( issubstr( perksacola, "sting" ) ) + { + wait 10; + } + else if ( isDefined( self.longjinglewait ) ) + { + wait 60; + } + else + { + wait 30; + } + self.jingle_is_playing = 0; + } + } +} + +play_random_broken_sounds() +{ + self endon( "death" ); + level endon( "jingle_playing" ); + if ( !isDefined( self.script_sound ) ) + { + self.script_sound = "null"; + } + if ( self.script_sound == "mus_perks_revive_jingle" ) + { + while ( 1 ) + { + wait randomfloatrange( 7, 18 ); + playsoundatposition( "zmb_perks_broken_jingle", self.origin ); + playsoundatposition( "evt_electrical_surge", self.origin ); + } + } + else while ( 1 ) + { + wait randomfloatrange( 7, 18 ); + playsoundatposition( "evt_electrical_surge", self.origin ); + } +} + +perk_vox( perk ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( level.vox.speaker[ "player" ].alias[ "perk" ][ perk ] ) ) + { +/# + iprintlnbold( perk + " has no PLR VOX category set up." ); +#/ + return; + } + self create_and_play_dialog( "perk", perk ); +} + +dialog_debugger( category, type ) +{ +/# + println( "DIALOG DEBUGGER: " + self.zmbvoxid + " attempting to speak" ); + if ( !isDefined( level.vox.speaker[ self.zmbvoxid ].alias[ category ][ type ] ) ) + { + iprintlnbold( ( self.zmbvoxid + " tried to play a line, but no alias exists. Category: " ) + category + " Type: " + type ); + println( "DIALOG DEBUGGER ERROR: Alias Not Defined For " + category + " " + type ); + } + if ( !isDefined( level.vox.speaker[ self.zmbvoxid ].response ) ) + { + println( "DIALOG DEBUGGER ERROR: Response Alias Not Defined For " + category + " " + type + "_response" ); +#/ + } +} + +init_music_states() +{ + level.music_override = 0; + level.music_round_override = 0; + level.old_music_state = undefined; + level.zmb_music_states = []; + level thread setupmusicstate( "round_start", "mus_zombie_round_start", 1, 1, 1, "WAVE" ); + level thread setupmusicstate( "round_end", "mus_zombie_round_over", 1, 1, 1, "SILENCE" ); + level thread setupmusicstate( "wave_loop", "WAVE", 0, 1, undefined, undefined ); + level thread setupmusicstate( "game_over", "mus_zombie_game_over", 1, 0, undefined, "SILENCE" ); + level thread setupmusicstate( "dog_start", "mus_zombie_dog_start", 1, 1, undefined, undefined ); + level thread setupmusicstate( "dog_end", "mus_zombie_dog_end", 1, 1, undefined, undefined ); + level thread setupmusicstate( "egg", "EGG", 0, 0, undefined, undefined ); + level thread setupmusicstate( "egg_safe", "EGG_SAFE", 0, 0, undefined, undefined ); + level thread setupmusicstate( "egg_a7x", "EGG_A7X", 0, 0, undefined, undefined ); + level thread setupmusicstate( "sam_reveal", "SAM", 0, 0, undefined, undefined ); +} + +setupmusicstate( state, alias, is_alias, override, round_override, musicstate ) +{ + if ( !isDefined( level.zmb_music_states[ state ] ) ) + { + level.zmb_music_states[ state ] = spawnstruct(); + } + level.zmb_music_states[ state ].music = alias; + level.zmb_music_states[ state ].is_alias = is_alias; + level.zmb_music_states[ state ].override = override; + level.zmb_music_states[ state ].round_override = round_override; + level.zmb_music_states[ state ].musicstate = musicstate; +} + +change_zombie_music( state ) +{ + wait 0,05; + m = level.zmb_music_states[ state ]; + if ( !isDefined( m ) ) + { +/# + iprintlnbold( "Called change_zombie_music on undefined state: " + state ); +#/ + return; + } + do_logic = 1; + if ( !isDefined( level.old_music_state ) ) + { + do_logic = 0; + } + if ( do_logic ) + { + if ( level.old_music_state == m ) + { + return; + } + else + { + if ( level.old_music_state.music == "mus_zombie_game_over" ) + { + return; + } + } + } + if ( !isDefined( m.round_override ) ) + { + m.round_override = 0; + } + if ( m.override == 1 && level.music_override == 1 ) + { + return; + } + if ( m.round_override == 1 && level.music_round_override == 1 ) + { + return; + } + if ( m.is_alias ) + { + if ( isDefined( m.musicstate ) ) + { + maps/mp/_music::setmusicstate( m.musicstate ); + } + play_sound_2d( m.music ); + } + else + { + maps/mp/_music::setmusicstate( m.music ); + } + level.old_music_state = m; +} + +weapon_toggle_vox( alias, weapon ) +{ + self notify( "audio_activated_trigger" ); + self endon( "audio_activated_trigger" ); + prefix = "vox_pa_switcher_"; + sound_to_play = prefix + alias; + type = undefined; + if ( isDefined( weapon ) ) + { + type = get_weapon_num( weapon ); + if ( !isDefined( type ) ) + { + return; + } + } + self stopsounds(); + wait 0,05; + if ( isDefined( type ) ) + { + self playsoundwithnotify( ( prefix + "weapon_" ) + type, "sounddone" ); + self waittill( "sounddone" ); + } + self playsound( sound_to_play + "_0" ); +} + +get_weapon_num( weapon ) +{ + weapon_num = undefined; + switch( weapon ) + { + case "humangun_zm": + weapon_num = 0; + break; + case "sniper_explosive_zm": + weapon_num = 1; + break; + case "tesla_gun_zm": + weapon_num = 2; + break; + } + return weapon_num; +} + +addasspeakernpc( ignorenearbyspeakers ) +{ + if ( !isDefined( level.npcs ) ) + { + level.npcs = []; + } + if ( isDefined( ignorenearbyspeakers ) && ignorenearbyspeakers ) + { + self.ignorenearbyspkrs = 1; + } + else + { + self.ignorenearbyspkrs = 0; + } + self.isnpc = 1; + level.npcs[ level.npcs.size ] = self; +} + +arenearbyspeakersactive() +{ + radius = 1000; + nearbyspeakeractive = 0; + speakers = get_players(); + if ( isDefined( level.npcs ) ) + { + speakers = arraycombine( speakers, level.npcs, 1, 0 ); + } + _a1371 = speakers; + _k1371 = getFirstArrayKey( _a1371 ); + while ( isDefined( _k1371 ) ) + { + person = _a1371[ _k1371 ]; + if ( self == person ) + { + } + else if ( person is_player() ) + { + if ( person.sessionstate != "playing" ) + { + } + else if ( person maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + } + else + { + } + if ( isDefined( person.isspeaking ) && person.isspeaking && isDefined( person.ignorenearbyspkrs ) && !person.ignorenearbyspkrs ) + { + if ( distancesquared( self.origin, person.origin ) < ( radius * radius ) ) + { + nearbyspeakeractive = 1; + } + } + } + _k1371 = getNextArrayKey( _a1371, _k1371 ); + } + return nearbyspeakeractive; +} + +zmbvoxcreate() +{ + vox = spawnstruct(); + vox.speaker = []; + return vox; +} + +zmbvoxinitspeaker( speaker, prefix, ent ) +{ + ent.zmbvoxid = speaker; + if ( !isDefined( self.speaker[ speaker ] ) ) + { + self.speaker[ speaker ] = spawnstruct(); + self.speaker[ speaker ].alias = []; + } + self.speaker[ speaker ].prefix = prefix; + self.speaker[ speaker ].ent = ent; +} + +zmbvoxadd( speaker, category, type, alias, response ) +{ +/# + assert( isDefined( speaker ) ); +#/ +/# + assert( isDefined( category ) ); +#/ +/# + assert( isDefined( type ) ); +#/ +/# + assert( isDefined( alias ) ); +#/ + if ( !isDefined( self.speaker[ speaker ] ) ) + { + self.speaker[ speaker ] = spawnstruct(); + self.speaker[ speaker ].alias = []; + } + if ( !isDefined( self.speaker[ speaker ].alias[ category ] ) ) + { + self.speaker[ speaker ].alias[ category ] = []; + } + self.speaker[ speaker ].alias[ category ][ type ] = alias; + if ( isDefined( response ) ) + { + if ( !isDefined( self.speaker[ speaker ].response ) ) + { + self.speaker[ speaker ].response = []; + } + if ( !isDefined( self.speaker[ speaker ].response[ category ] ) ) + { + self.speaker[ speaker ].response[ category ] = []; + } + self.speaker[ speaker ].response[ category ][ type ] = response; + } + create_vox_timer( type ); +} + +zmbvoxgetlinevariant( prefix, alias_suffix, force_variant, override ) +{ + if ( !isDefined( self.sound_dialog ) ) + { + self.sound_dialog = []; + self.sound_dialog_available = []; + } + if ( !isDefined( self.sound_dialog[ alias_suffix ] ) ) + { + num_variants = maps/mp/zombies/_zm_spawner::get_number_variants( prefix + alias_suffix ); + if ( num_variants <= 0 ) + { +/# + if ( getDvarInt( #"0AEB127D" ) > 0 ) + { + println( "DIALOG DEBUGGER: No variants found for - " + prefix + alias_suffix ); +#/ + } + return undefined; + } + i = 0; + while ( i < num_variants ) + { + self.sound_dialog[ alias_suffix ][ i ] = i; + i++; + } + self.sound_dialog_available[ alias_suffix ] = []; + } + while ( self.sound_dialog_available[ alias_suffix ].size <= 0 ) + { + i = 0; + while ( i < self.sound_dialog[ alias_suffix ].size ) + { + self.sound_dialog_available[ alias_suffix ][ i ] = self.sound_dialog[ alias_suffix ][ i ]; + i++; + } + } + variation = random( self.sound_dialog_available[ alias_suffix ] ); + arrayremovevalue( self.sound_dialog_available[ alias_suffix ], variation ); + if ( isDefined( force_variant ) ) + { + variation = force_variant; + } + if ( !isDefined( override ) ) + { + override = 0; + } + return ( alias_suffix + "_" ) + variation; +} + +zmbvoxcrowdonteam( alias, team, other_alias ) +{ + alias = "vox_crowd_" + alias; + if ( !isDefined( team ) ) + { + level play_sound_2d( alias ); + return; + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ]._encounters_team ) ) + { + i++; + continue; + } + else if ( players[ i ]._encounters_team == team ) + { + players[ i ] playsoundtoplayer( alias, players[ i ] ); + i++; + continue; + } + else + { + if ( isDefined( other_alias ) ) + { + players[ i ] playsoundtoplayer( other_alias, players[ i ] ); + } + } + i++; + } +} + +playvoxtoplayer( category, type ) +{ + if ( self.sessionstate != "playing" ) + { + return; + } + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return; + } + prefix = level.vox.speaker[ self.zmbvoxid ].prefix; + alias_suffix = level.vox.speaker[ self.zmbvoxid ].alias[ category ][ type ]; + prefix = prefix + self.characterindex + "_"; + if ( !isDefined( alias_suffix ) ) + { + return; + } + sound_to_play = self zmbvoxgetlinevariant( prefix, alias_suffix ); + if ( isDefined( sound_to_play ) ) + { + sound = prefix + sound_to_play; + self playsoundtoplayer( sound, self ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_audio_announcer.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_audio_announcer.gsc new file mode 100644 index 0000000..d070831 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_audio_announcer.gsc @@ -0,0 +1,490 @@ +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + game[ "zmbdialog" ] = []; + game[ "zmbdialog" ][ "prefix" ] = "vox_zmba"; + createvox( "carpenter", "powerup_carpenter" ); + createvox( "insta_kill", "powerup_instakill" ); + createvox( "double_points", "powerup_doublepoints" ); + createvox( "nuke", "powerup_nuke" ); + createvox( "full_ammo", "powerup_maxammo" ); + createvox( "fire_sale", "powerup_firesale" ); + createvox( "minigun", "powerup_death_machine" ); + createvox( "boxmove", "event_magicbox" ); + createvox( "dogstart", "event_dogstart" ); + thread init_gamemodespecificvox( getDvar( "ui_gametype" ), getDvar( "ui_zm_mapstartlocation" ) ); + level.allowzmbannouncer = 1; +} + +init_gamemodespecificvox( mode, location ) +{ + switch( mode ) + { + case "zmeat": + init_meatvox( "meat" ); + break; + case "zrace": + init_racevox( "race", location ); + break; + case "zgrief": + init_griefvox( "grief" ); + break; + case "zcleansed": + init_cleansed( location ); + break; + default: + init_gamemodecommonvox(); + break; + } +} + +init_gamemodecommonvox( prefix ) +{ + createvox( "rules", "rules", prefix ); + createvox( "countdown", "intro", prefix ); + createvox( "side_switch", "side_switch", prefix ); + createvox( "round_win", "win_rd", prefix ); + createvox( "round_lose", "lose_rd", prefix ); + createvox( "round_tied", "tied_rd", prefix ); + createvox( "match_win", "win", prefix ); + createvox( "match_lose", "lose", prefix ); + createvox( "match_tied", "tied", prefix ); +} + +init_griefvox( prefix ) +{ + init_gamemodecommonvox( prefix ); + createvox( "1_player_down", "1rivdown", prefix ); + createvox( "2_player_down", "2rivdown", prefix ); + createvox( "3_player_down", "3rivdown", prefix ); + createvox( "4_player_down", "4rivdown", prefix ); + createvox( "grief_restarted", "restart", prefix ); + createvox( "grief_lost", "lose", prefix ); + createvox( "grief_won", "win", prefix ); + createvox( "1_player_left", "1rivup", prefix ); + createvox( "2_player_left", "2rivup", prefix ); + createvox( "3_player_left", "3rivup", prefix ); + createvox( "last_player", "solo", prefix ); +} + +init_cleansed( prefix ) +{ + init_gamemodecommonvox( prefix ); + createvox( "dr_start_single_0", "dr_start_0" ); + createvox( "dr_start_2", "dr_start_1" ); + createvox( "dr_start_3", "dr_start_2" ); + createvox( "dr_cure_found_line", "dr_cure_found" ); + createvox( "dr_monkey_killer", "dr_monkey_0" ); + createvox( "dr_monkey_killee", "dr_monkey_1" ); + createvox( "dr_human_killed", "dr_kill_plr" ); + createvox( "dr_human_killer", "dr_kill_plr_2" ); + createvox( "dr_survival", "dr_plr_survive_0" ); + createvox( "dr_zurvival", "dr_zmb_survive_2" ); + createvox( "dr_countdown0", "dr_plr_survive_1" ); + createvox( "dr_countdown1", "dr_plr_survive_2" ); + createvox( "dr_countdown2", "dr_plr_survive_3" ); + createvox( "dr_ending", "dr_time_0" ); +} + +init_meatvox( prefix ) +{ + init_gamemodecommonvox( prefix ); + createvox( "meat_drop", "drop", prefix ); + createvox( "meat_grab", "grab", prefix ); + createvox( "meat_grab_A", "team_cdc", prefix ); + createvox( "meat_grab_B", "team_cia", prefix ); + createvox( "meat_land", "land", prefix ); + createvox( "meat_hold", "hold", prefix ); + createvox( "meat_revive_1", "revive1", prefix ); + createvox( "meat_revive_2", "revive2", prefix ); + createvox( "meat_revive_3", "revive3", prefix ); + createvox( "meat_ring_splitter", "ring_tripple", prefix ); + createvox( "meat_ring_minigun", "ring_death", prefix ); + createvox( "meat_ring_ammo", "ring_ammo", prefix ); +} + +init_racevox( prefix, location ) +{ + init_gamemodecommonvox( prefix ); + switch( location ) + { + case "tunnel": + createvox( "rules", "rules_" + location, prefix ); + createvox( "countdown", "intro_" + location, prefix ); + break; + case "power": + createvox( "rules", "rules_" + location, prefix ); + createvox( "countdown", "intro_" + location, prefix ); + createvox( "lap1", "lap1", prefix ); + createvox( "lap2", "lap2", prefix ); + createvox( "lap_final", "lap_final", prefix ); + break; + case "farm": + createvox( "rules", "rules_" + location, prefix ); + createvox( "countdown", "intro_" + location, prefix ); + createvox( "hoop_area", "hoop_area", prefix ); + createvox( "hoop_miss", "hoop_miss", prefix ); + break; + default: + } + createvox( "race_room_2_ally", "room2_ally", prefix ); + createvox( "race_room_3_ally", "room3_ally", prefix ); + createvox( "race_room_4_ally", "room4_ally", prefix ); + createvox( "race_room_5_ally", "room5_ally", prefix ); + createvox( "race_room_2_axis", "room2_axis", prefix ); + createvox( "race_room_3_axis", "room3_axis", prefix ); + createvox( "race_room_4_axis", "room4_axis", prefix ); + createvox( "race_room_5_axis", "room5_axis", prefix ); + createvox( "race_ahead_1_ally", "ahead1_ally", prefix ); + createvox( "race_ahead_2_ally", "ahead2_ally", prefix ); + createvox( "race_ahead_3_ally", "ahead3_ally", prefix ); + createvox( "race_ahead_4_ally", "ahead4_ally", prefix ); + createvox( "race_ahead_1_axis", "ahead1_axis", prefix ); + createvox( "race_ahead_2_axis", "ahead2_axis", prefix ); + createvox( "race_ahead_3_axis", "ahead3_axis", prefix ); + createvox( "race_ahead_4_axis", "ahead4_axis", prefix ); + createvox( "race_kill_15", "door15", prefix ); + createvox( "race_kill_10", "door10", prefix ); + createvox( "race_kill_5", "door5", prefix ); + createvox( "race_kill_3", "door3", prefix ); + createvox( "race_kill_1", "door1", prefix ); + createvox( "race_door_open", "door_open", prefix ); + createvox( "race_door_nag", "door_nag", prefix ); + createvox( "race_grief_incoming", "grief_income_ammo", prefix ); + createvox( "race_grief_land", "grief_land", prefix ); + createvox( "race_laststand", "last_stand", prefix ); + } +} + +createvox( type, alias, gametype ) +{ + if ( !isDefined( gametype ) ) + { + gametype = ""; + } + else + { + gametype += "_"; + } + game[ "zmbdialog" ][ type ] = gametype + alias; +} + +announceroundwinner( winner, delay ) +{ + if ( isDefined( delay ) && delay > 0 ) + { + wait delay; + } + if ( !isDefined( winner ) || isplayer( winner ) ) + { + return; + } + if ( winner != "tied" ) + { + players = get_players(); + _a235 = players; + _k235 = getFirstArrayKey( _a235 ); + while ( isDefined( _k235 ) ) + { + player = _a235[ _k235 ]; + if ( isDefined( player._encounters_team ) && player._encounters_team == winner ) + { + winning_team = player.pers[ "team" ]; + break; + } + else + { + _k235 = getNextArrayKey( _a235, _k235 ); + } + } + losing_team = getotherteam( winning_team ); + leaderdialog( "round_win", winning_team, undefined, 1 ); + leaderdialog( "round_lose", losing_team, undefined, 1 ); + } + else + { + leaderdialog( "round_tied", undefined, undefined, 1 ); + } +} + +announcematchwinner( winner, delay ) +{ + if ( isDefined( delay ) && delay > 0 ) + { + wait delay; + } + if ( !isDefined( winner ) || isplayer( winner ) ) + { + return; + } + if ( winner != "tied" ) + { + players = get_players(); + _a266 = players; + _k266 = getFirstArrayKey( _a266 ); + while ( isDefined( _k266 ) ) + { + player = _a266[ _k266 ]; + if ( isDefined( player._encounters_team ) && player._encounters_team == winner ) + { + winning_team = player.pers[ "team" ]; + break; + } + else + { + _k266 = getNextArrayKey( _a266, _k266 ); + } + } + losing_team = getotherteam( winning_team ); + leaderdialog( "match_win", winning_team, undefined, 1 ); + leaderdialog( "match_lose", losing_team, undefined, 1 ); + } + else + { + leaderdialog( "match_tied", undefined, undefined, 1 ); + } +} + +announcegamemoderules() +{ + if ( getDvar( "ui_zm_mapstartlocation" ) == "town" ) + { + leaderdialog( "rules", undefined, undefined, undefined, 20 ); + } +} + +leaderdialog( dialog, team, group, queue, waittime ) +{ +/# + assert( isDefined( level.players ) ); +#/ + if ( !isDefined( team ) ) + { + leaderdialogbothteams( dialog, "allies", dialog, "axis", group, queue, waittime ); + return; + } + if ( level.splitscreen ) + { + if ( level.players.size ) + { + level.players[ 0 ] leaderdialogonplayer( dialog, group, queue, waittime ); + } + return; + } + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team ) + { + player leaderdialogonplayer( dialog, group, queue, waittime ); + } + i++; + } +} + +leaderdialogbothteams( dialog1, team1, dialog2, team2, group, queue, waittime ) +{ +/# + assert( isDefined( level.players ) ); +#/ + if ( level.splitscreen ) + { + if ( level.players.size ) + { + level.players[ 0 ] leaderdialogonplayer( dialog1, group, queue, waittime ); + } + return; + } + i = 0; + while ( i < level.players.size ) + { + player = level.players[ i ]; + team = player.pers[ "team" ]; + if ( !isDefined( team ) ) + { + i++; + continue; + } + else if ( team == team1 ) + { + player leaderdialogonplayer( dialog1, group, queue, waittime ); + i++; + continue; + } + else + { + if ( team == team2 ) + { + player leaderdialogonplayer( dialog2, group, queue, waittime ); + } + } + i++; + } +} + +leaderdialogonplayer( dialog, group, queue, waittime ) +{ + team = self.pers[ "team" ]; + if ( !isDefined( team ) ) + { + return; + } + if ( team != "allies" && team != "axis" ) + { + return; + } + if ( isDefined( group ) ) + { + if ( self.zmbdialoggroup == group ) + { + return; + } + hadgroupdialog = isDefined( self.zmbdialoggroups[ group ] ); + self.zmbdialoggroups[ group ] = dialog; + dialog = group; + if ( hadgroupdialog ) + { + return; + } + } + if ( !self.zmbdialogactive ) + { + self thread playleaderdialogonplayer( dialog, team, waittime ); + } + else + { + if ( isDefined( queue ) && queue ) + { + self.zmbdialogqueue[ self.zmbdialogqueue.size ] = dialog; + } + } +} + +playleaderdialogonplayer( dialog, team, waittime ) +{ + self endon( "disconnect" ); + if ( level.allowzmbannouncer ) + { + if ( !isDefined( game[ "zmbdialog" ][ dialog ] ) ) + { +/# + if ( getDvarInt( #"0AEB127D" ) > 0 ) + { + println( "DIALOG DEBUGGER: No VOX created for - " + dialog ); +#/ + } + return; + } + } + self.zmbdialogactive = 1; + if ( isDefined( self.zmbdialoggroups[ dialog ] ) ) + { + group = dialog; + dialog = self.zmbdialoggroups[ group ]; + self.zmbdialoggroup = group; + } + if ( level.allowzmbannouncer ) + { + alias = game[ "zmbdialog" ][ "prefix" ] + "_" + game[ "zmbdialog" ][ dialog ]; + variant = self getleaderdialogvariant( alias ); + if ( !isDefined( variant ) ) + { + full_alias = alias; + } + else + { + full_alias = ( alias + "_" ) + variant; + } + self playlocalsound( full_alias ); + } + if ( isDefined( waittime ) ) + { + wait waittime; + } + else + { + wait 4; + } + self.zmbdialogactive = 0; + self.zmbdialoggroup = ""; + if ( self.zmbdialogqueue.size > 0 && level.allowzmbannouncer ) + { + nextdialog = self.zmbdialogqueue[ 0 ]; + i = 1; + while ( i < self.zmbdialogqueue.size ) + { + self.zmbdialogqueue[ i - 1 ] = self.zmbdialogqueue[ i ]; + i++; + } + self thread playleaderdialogonplayer( nextdialog, team ); + } +} + +getleaderdialogvariant( alias ) +{ + if ( !isDefined( alias ) ) + { + return; + } + if ( !isDefined( level.announcer_dialog ) ) + { + level.announcer_dialog = []; + level.announcer_dialog_available = []; + } + num_variants = maps/mp/zombies/_zm_spawner::get_number_variants( alias ); + if ( num_variants <= 0 ) + { +/# + if ( getDvarInt( #"0AEB127D" ) > 0 ) + { + println( "DIALOG DEBUGGER: No variants found for - " + alias ); +#/ + } + return undefined; + } + i = 0; + while ( i < num_variants ) + { + level.announcer_dialog[ alias ][ i ] = i; + i++; + } + level.announcer_dialog_available[ alias ] = []; + if ( level.announcer_dialog_available[ alias ].size <= 0 ) + { + level.announcer_dialog_available[ alias ] = level.announcer_dialog[ alias ]; + } + variation = random( level.announcer_dialog_available[ alias ] ); + level.announcer_dialog_available[ alias ] = arrayremovevalue( level.announcer_dialog_available[ alias ], variation ); + return variation; +} + +getroundswitchdialog( switchtype ) +{ + switch( switchtype ) + { + case "halftime": + return "halftime"; + case "overtime": + return "overtime"; + default: + return "side_switch"; + } +} + +getotherteam( team ) +{ + if ( team == "allies" ) + { + return "axis"; + } + else + { + return "allies"; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_blockers.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_blockers.gsc new file mode 100644 index 0000000..cbb009b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_blockers.gsc @@ -0,0 +1,2503 @@ +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_zonemgr; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/_demo; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/zombies/_zm_net; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + init_blockers(); + if ( isDefined( level.quantum_bomb_register_result_func ) ) + { + [[ level.quantum_bomb_register_result_func ]]( "open_nearest_door", ::quantum_bomb_open_nearest_door_result, 35, ::quantum_bomb_open_nearest_door_validation ); + } +} + +init_blockers() +{ + level.exterior_goals = getstructarray( "exterior_goal", "targetname" ); + array_thread( level.exterior_goals, ::blocker_init ); + zombie_doors = getentarray( "zombie_door", "targetname" ); + if ( isDefined( zombie_doors ) ) + { + flag_init( "door_can_close" ); + array_thread( zombie_doors, ::door_init ); + } + zombie_debris = getentarray( "zombie_debris", "targetname" ); + array_thread( zombie_debris, ::debris_init ); + flag_blockers = getentarray( "flag_blocker", "targetname" ); + array_thread( flag_blockers, ::flag_blocker ); +} + +door_init() +{ + self.type = undefined; + self.purchaser = undefined; + self._door_open = 0; + targets = getentarray( self.target, "targetname" ); + while ( isDefined( self.script_flag ) && !isDefined( level.flag[ self.script_flag ] ) ) + { + while ( isDefined( self.script_flag ) ) + { + tokens = strtok( self.script_flag, "," ); + i = 0; + while ( i < tokens.size ) + { + flag_init( self.script_flag ); + i++; + } + } + } + if ( !isDefined( self.script_noteworthy ) ) + { + self.script_noteworthy = "default"; + } + self.doors = []; + i = 0; + while ( i < targets.size ) + { + targets[ i ] door_classify( self ); + if ( !isDefined( targets[ i ].og_origin ) ) + { + targets[ i ].og_origin = targets[ i ].origin; + targets[ i ].og_angles = targets[ i ].angles; + } + i++; + } + cost = 1000; + if ( isDefined( self.zombie_cost ) ) + { + cost = self.zombie_cost; + } + self setcursorhint( "HINT_NOICON" ); + self thread door_think(); + if ( isDefined( self.script_noteworthy ) ) + { + if ( self.script_noteworthy == "electric_door" || self.script_noteworthy == "electric_buyable_door" ) + { + if ( getDvar( "ui_gametype" ) == "zgrief" ) + { + self setinvisibletoall(); + return; + } + self sethintstring( &"ZOMBIE_NEED_POWER" ); + if ( isDefined( level.door_dialog_function ) ) + { + self thread [[ level.door_dialog_function ]](); + } + return; + } + else + { + if ( self.script_noteworthy == "local_electric_door" ) + { + if ( getDvar( "ui_gametype" ) == "zgrief" ) + { + self setinvisibletoall(); + return; + } + self sethintstring( &"ZOMBIE_NEED_LOCAL_POWER" ); + if ( isDefined( level.door_dialog_function ) ) + { + self thread [[ level.door_dialog_function ]](); + } + return; + } + else + { + if ( self.script_noteworthy == "kill_counter_door" ) + { + self sethintstring( &"ZOMBIE_DOOR_ACTIVATE_COUNTER", cost ); + return; + } + } + } + } + self set_hint_string( self, "default_buy_door_" + cost ); +} + +door_classify( parent_trig ) +{ + if ( isDefined( self.script_noteworthy ) && self.script_noteworthy == "clip" ) + { + parent_trig.clip = self; + parent_trig.script_string = "clip"; + break; +} +else +{ + if ( !isDefined( self.script_string ) ) + { + if ( isDefined( self.script_angles ) ) + { + self.script_string = "rotate"; + } + else + { + if ( isDefined( self.script_vector ) ) + { + self.script_string = "move"; + } + } + break; +} +else if ( !isDefined( self.script_string ) ) +{ + self.script_string = ""; +} +switch( self.script_string ) +{ + case "anim": +/# + assert( isDefined( self.script_animname ), "Blocker_init: You must specify a script_animname for " + self.targetname ); +#/ +/# + assert( isDefined( level.scr_anim[ self.script_animname ] ), "Blocker_init: You must define a level.scr_anim for script_anim -> " + self.script_animname ); +#/ +/# + assert( isDefined( level.blocker_anim_func ), "Blocker_init: You must define a level.blocker_anim_func" ); +#/ + break; + case "counter_1s": + parent_trig.counter_1s = self; + return; + case "counter_10s": + parent_trig.counter_10s = self; + return; + case "counter_100s": + parent_trig.counter_100s = self; + return; + case "explosives": + if ( !isDefined( parent_trig.explosives ) ) + { + parent_trig.explosives = []; + } + parent_trig.explosives[ parent_trig.explosives.size ] = self; + return; + } + } + if ( self.classname == "script_brushmodel" ) + { + self disconnectpaths(); + } + parent_trig.doors[ parent_trig.doors.size ] = self; + } +} + +door_buy() +{ + self waittill( "trigger", who, force ); + if ( getDvarInt( "zombie_unlock_all" ) > 0 || isDefined( force ) && force ) + { + return 1; + } + if ( !who usebuttonpressed() ) + { + return 0; + } + if ( who in_revive_trigger() ) + { + return 0; + } + if ( is_player_valid( who ) ) + { + players = get_players(); + if ( self._door_open == 1 ) + { + self.purchaser = undefined; + } + else if ( who.score >= self.zombie_cost ) + { + who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + maps/mp/_demo::bookmark( "zm_player_door", getTime(), who ); + who maps/mp/zombies/_zm_stats::increment_client_stat( "doors_purchased" ); + who maps/mp/zombies/_zm_stats::increment_player_stat( "doors_purchased" ); + self.purchaser = who; + } + else + { + play_sound_at_pos( "no_purchase", self.doors[ 0 ].origin ); + if ( isDefined( level.custom_generic_deny_vo_func ) ) + { + who thread [[ level.custom_generic_deny_vo_func ]]( 1 ); + } + else + { + who maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "door_deny" ); + } + return 0; + } + } + return 1; +} + +door_delay() +{ + while ( isDefined( self.explosives ) ) + { + i = 0; + while ( i < self.explosives.size ) + { + self.explosives[ i ] show(); + i++; + } + } + if ( !isDefined( self.script_int ) ) + { + self.script_int = 5; + } + all_trigs = getentarray( self.target, "target" ); + i = 0; + while ( i < all_trigs.size ) + { + all_trigs[ i ] trigger_off(); + i++; + } + wait self.script_int; + i = 0; + while ( i < self.script_int ) + { +/# + iprintln( self.script_int - i ); +#/ + wait 1; + i++; + } + while ( isDefined( self.explosives ) ) + { + i = 0; + while ( i < self.explosives.size ) + { + playfx( level._effect[ "def_explosion" ], self.explosives[ i ].origin, anglesToForward( self.explosives[ i ].angles ) ); + self.explosives[ i ] hide(); + i++; + } + } +} + +door_activate( time, open, quick, use_blocker_clip_for_pathing ) +{ + if ( !isDefined( open ) ) + { + open = 1; + } + if ( !isDefined( time ) ) + { + time = 1; + if ( isDefined( self.script_transition_time ) ) + { + time = self.script_transition_time; + } + } + if ( isDefined( self.door_moving ) ) + { + if ( isDefined( self.script_noteworthy ) || self.script_noteworthy == "clip" && isDefined( self.script_string ) && self.script_string == "clip" ) + { + if ( !is_true( use_blocker_clip_for_pathing ) ) + { + if ( !open ) + { + return; + } + } + } + else + { + return; + } + } + self.door_moving = 1; + if ( open || isDefined( quick ) && !quick ) + { + self notsolid(); + } + if ( self.classname == "script_brushmodel" ) + { + if ( open ) + { + self connectpaths(); + } + } + if ( isDefined( self.script_noteworthy ) || self.script_noteworthy == "clip" && isDefined( self.script_string ) && self.script_string == "clip" ) + { + if ( !open ) + { + self delay_thread( time, ::self_disconnectpaths ); + wait 0,1; + self solid(); + } + return; + } + if ( isDefined( self.script_sound ) ) + { + if ( open ) + { + playsoundatposition( self.script_sound, self.origin ); + } + else + { + playsoundatposition( self.script_sound + "_close", self.origin ); + } + } + else + { + play_sound_at_pos( "door_slide_open", self.origin ); + } + scale = 1; + if ( !open ) + { + scale = -1; + } + switch( self.script_string ) + { + case "rotate": + if ( isDefined( self.script_angles ) ) + { + rot_angle = self.script_angles; + if ( !open ) + { + rot_angle = self.og_angles; + } + self rotateto( rot_angle, time, 0, 0 ); + self thread door_solid_thread(); + if ( !open ) + { + self thread disconnect_paths_when_done(); + } + } + wait randomfloat( 0,15 ); + break; + case "move": + case "slide_apart": + if ( isDefined( self.script_vector ) ) + { + vector = vectorScale( self.script_vector, scale ); + if ( time >= 0,5 ) + { + self moveto( self.origin + vector, time, time * 0,25, time * 0,25 ); + } + else + { + self moveto( self.origin + vector, time ); + } + self thread door_solid_thread(); + if ( !open ) + { + self thread disconnect_paths_when_done(); + } + } + wait randomfloat( 0,15 ); + break; + case "anim": + self [[ level.blocker_anim_func ]]( self.script_animname ); + self thread door_solid_thread_anim(); + wait randomfloat( 0,15 ); + break; + case "physics": + self thread physics_launch_door( self ); + wait 0,1; + break; + } +} + +kill_trapped_zombies( trigger ) +{ + zombies = getaiarray( level.zombie_team ); + if ( !isDefined( zombies ) ) + { + return; + } + i = 0; + while ( i < zombies.size ) + { + if ( !isDefined( zombies[ i ] ) ) + { + i++; + continue; + } + else if ( zombies[ i ] istouching( trigger ) ) + { + zombies[ i ].marked_for_recycle = 1; + zombies[ i ] dodamage( zombies[ i ].health + 666, trigger.origin, self ); + wait randomfloat( 0,15 ); + i++; + continue; + } + else + { + if ( isDefined( level.custom_trapped_zombies ) ) + { + zombies[ i ] thread [[ level.custom_trapped_zombies ]](); + wait randomfloat( 0,15 ); + } + } + i++; + } +} + +any_player_touching( trigger ) +{ + _a530 = get_players(); + _k530 = getFirstArrayKey( _a530 ); + while ( isDefined( _k530 ) ) + { + player = _a530[ _k530 ]; + if ( player istouching( trigger ) ) + { + return 1; + } + wait 0,01; + _k530 = getNextArrayKey( _a530, _k530 ); + } + return 0; +} + +any_player_touching_any( trigger, more_triggers ) +{ + _a541 = get_players(); + _k541 = getFirstArrayKey( _a541 ); + while ( isDefined( _k541 ) ) + { + player = _a541[ _k541 ]; + while ( is_player_valid( player, 0, 1 ) ) + { + if ( isDefined( trigger ) && player istouching( trigger ) ) + { + return 1; + } + while ( isDefined( more_triggers ) && more_triggers.size > 0 ) + { + _a548 = more_triggers; + _k548 = getFirstArrayKey( _a548 ); + while ( isDefined( _k548 ) ) + { + trig = _a548[ _k548 ]; + if ( isDefined( trig ) && player istouching( trig ) ) + { + return 1; + } + _k548 = getNextArrayKey( _a548, _k548 ); + } + } + } + _k541 = getNextArrayKey( _a541, _k541 ); + } + return 0; +} + +any_zombie_touching_any( trigger, more_triggers ) +{ + zombies = getaiarray( level.zombie_team ); + _a560 = zombies; + _k560 = getFirstArrayKey( _a560 ); + while ( isDefined( _k560 ) ) + { + zombie = _a560[ _k560 ]; + if ( isDefined( trigger ) && zombie istouching( trigger ) ) + { + return 1; + } + while ( isDefined( more_triggers ) && more_triggers.size > 0 ) + { + _a565 = more_triggers; + _k565 = getFirstArrayKey( _a565 ); + while ( isDefined( _k565 ) ) + { + trig = _a565[ _k565 ]; + if ( isDefined( trig ) && zombie istouching( trig ) ) + { + return 1; + } + _k565 = getNextArrayKey( _a565, _k565 ); + } + } + _k560 = getNextArrayKey( _a560, _k560 ); + } + return 0; +} + +wait_trigger_clear( trigger, more_triggers, end_on ) +{ + self endon( end_on ); + while ( any_player_touching_any( trigger, more_triggers ) || any_zombie_touching_any( trigger, more_triggers ) ) + { + wait 1; + } +/# + println( "ZM BLOCKER local door trigger clear\n" ); +#/ + self notify( "trigger_clear" ); +} + +waittill_door_trigger_clear_local_power_off( trigger, all_trigs ) +{ + self endon( "trigger_clear" ); + while ( 1 ) + { + if ( isDefined( self.local_power_on ) && self.local_power_on ) + { + self waittill( "local_power_off" ); + } +/# + println( "ZM BLOCKER local door power off\n" ); +#/ + self wait_trigger_clear( trigger, all_trigs, "local_power_on" ); + } +} + +waittill_door_trigger_clear_global_power_off( trigger, all_trigs ) +{ + self endon( "trigger_clear" ); + while ( 1 ) + { + if ( isDefined( self.power_on ) && self.power_on ) + { + self waittill( "power_off" ); + } +/# + println( "ZM BLOCKER global door power off\n" ); +#/ + self wait_trigger_clear( trigger, all_trigs, "power_on" ); + } +} + +waittill_door_can_close() +{ + trigger = undefined; + if ( isDefined( self.door_hold_trigger ) ) + { + trigger = getent( self.door_hold_trigger, "targetname" ); + } + all_trigs = getentarray( self.target, "target" ); + switch( self.script_noteworthy ) + { + case "local_electric_door": + if ( isDefined( trigger ) || isDefined( all_trigs ) ) + { + self waittill_door_trigger_clear_local_power_off( trigger, all_trigs ); + self thread kill_trapped_zombies( trigger ); + } + else + { + if ( isDefined( self.local_power_on ) && self.local_power_on ) + { + self waittill( "local_power_off" ); + } + } + return; + case "electric_door": + if ( isDefined( trigger ) || isDefined( all_trigs ) ) + { + self waittill_door_trigger_clear_global_power_off( trigger, all_trigs ); + if ( isDefined( trigger ) ) + { + self thread kill_trapped_zombies( trigger ); + } + } + else + { + if ( isDefined( self.power_on ) && self.power_on ) + { + self waittill( "power_off" ); + } + } + return; + } + } +} + +door_think() +{ + self endon( "kill_door_think" ); + cost = 1000; + if ( isDefined( self.zombie_cost ) ) + { + cost = self.zombie_cost; + } + self sethintlowpriority( 1 ); + for ( ;; ) + { + while ( 1 ) + { + switch( self.script_noteworthy ) + { + case "local_electric_door": + if ( isDefined( self.local_power_on ) && !self.local_power_on ) + { + self waittill( "local_power_on" ); + } + if ( isDefined( self._door_open ) && !self._door_open ) + { +/# + println( "ZM BLOCKER local door opened\n" ); +#/ + self door_opened( cost, 1 ); + if ( !isDefined( self.power_cost ) ) + { + self.power_cost = 0; + } + self.power_cost += 200; + } + self sethintstring( "" ); + if ( isDefined( level.local_doors_stay_open ) && level.local_doors_stay_open ) + { + return; + } + wait 3; + self waittill_door_can_close(); + self door_block(); + if ( isDefined( self._door_open ) && self._door_open ) + { +/# + println( "ZM BLOCKER local door closed\n" ); +#/ + self door_opened( cost, 1 ); + } + self sethintstring( &"ZOMBIE_NEED_LOCAL_POWER" ); + wait 3; + } + case "electric_door": + if ( isDefined( self.power_on ) && !self.power_on ) + { + self waittill( "power_on" ); + } + if ( isDefined( self._door_open ) && !self._door_open ) + { +/# + println( "ZM BLOCKER global door opened\n" ); +#/ + self door_opened( cost, 1 ); + if ( !isDefined( self.power_cost ) ) + { + self.power_cost = 0; + } + self.power_cost += 200; + } + self sethintstring( "" ); + if ( isDefined( level.local_doors_stay_open ) && level.local_doors_stay_open ) + { + return; + } + wait 3; + self waittill_door_can_close(); + self door_block(); + if ( isDefined( self._door_open ) && self._door_open ) + { +/# + println( "ZM BLOCKER global door closed\n" ); +#/ + self door_opened( cost, 1 ); + } + self sethintstring( &"ZOMBIE_NEED_POWER" ); + wait 3; + } + case "electric_buyable_door": + flag_wait( "power_on" ); + self set_hint_string( self, "default_buy_door_" + cost ); + while ( !self door_buy() ) + { + continue; + } + case "delay_door": + while ( !self door_buy() ) + { + continue; + } + self door_delay(); + break; + default: + if ( isDefined( level._default_door_custom_logic ) ) + { + self [[ level._default_door_custom_logic ]](); + break; + } + else while ( !self door_buy() ) + { + continue; + } + } + self door_opened( cost ); + if ( !flag( "door_can_close" ) ) + { + return; + } + else } + } + } +} + +self_and_flag_wait( msg ) +{ + self endon( msg ); + if ( isDefined( self.power_door_ignore_flag_wait ) && self.power_door_ignore_flag_wait ) + { + level waittill( "forever" ); + } + else + { + flag_wait( msg ); + } +} + +door_block() +{ + while ( isDefined( self.doors ) ) + { + i = 0; + while ( i < self.doors.size ) + { + if ( isDefined( self.doors[ i ].script_noteworthy ) || self.doors[ i ].script_noteworthy == "clip" && isDefined( self.doors[ i ].script_string ) && self.doors[ i ].script_string == "clip" ) + { + self.doors[ i ] solid(); + } + i++; + } + } +} + +door_opened( cost, quick_close ) +{ + if ( isDefined( self.door_is_moving ) && self.door_is_moving ) + { + return; + } + self.has_been_opened = 1; + all_trigs = getentarray( self.target, "target" ); + self.door_is_moving = 1; + _a822 = all_trigs; + _k822 = getFirstArrayKey( _a822 ); + while ( isDefined( _k822 ) ) + { + trig = _a822[ _k822 ]; + trig.door_is_moving = 1; + trig trigger_off(); + trig.has_been_opened = 1; + if ( !isDefined( trig._door_open ) || trig._door_open == 0 ) + { + trig._door_open = 1; + trig notify( "door_opened" ); + } + else + { + trig._door_open = 0; + } + if ( isDefined( trig.script_flag ) && trig._door_open == 1 ) + { + tokens = strtok( trig.script_flag, "," ); + i = 0; + while ( i < tokens.size ) + { + flag_set( tokens[ i ] ); + i++; + } + } + else while ( isDefined( trig.script_flag ) && trig._door_open == 0 ) + { + tokens = strtok( trig.script_flag, "," ); + i = 0; + while ( i < tokens.size ) + { + flag_clear( tokens[ i ] ); + i++; + } + } + if ( isDefined( quick_close ) && quick_close ) + { + trig set_hint_string( trig, "" ); + } + else + { + if ( trig._door_open == 1 && flag( "door_can_close" ) ) + { + trig set_hint_string( trig, "default_buy_door_close" ); + break; + } + else + { + if ( trig._door_open == 0 ) + { + trig set_hint_string( trig, "default_buy_door_" + cost ); + } + } + } + _k822 = getNextArrayKey( _a822, _k822 ); + } + level notify( "door_opened" ); + if ( isDefined( self.doors ) ) + { + is_script_model_door = 0; + have_moving_clip_for_door = 0; + use_blocker_clip_for_pathing = 0; + _a878 = self.doors; + _k878 = getFirstArrayKey( _a878 ); + while ( isDefined( _k878 ) ) + { + door = _a878[ _k878 ]; + if ( is_true( door.ignore_use_blocker_clip_for_pathing_check ) ) + { + } + else if ( door.classname == "script_model" ) + { + is_script_model_door = 1; + } + else + { + if ( door.classname == "script_brushmodel" && isDefined( door.script_noteworthy ) && door.script_noteworthy != "clip" || !isDefined( door.script_string ) && door.script_string != "clip" ) + { + have_moving_clip_for_door = 1; + } + } + _k878 = getNextArrayKey( _a878, _k878 ); + } + if ( is_script_model_door ) + { + use_blocker_clip_for_pathing = !have_moving_clip_for_door; + } + i = 0; + while ( i < self.doors.size ) + { + self.doors[ i ] thread door_activate( self.doors[ i ].script_transition_time, self._door_open, quick_close, use_blocker_clip_for_pathing ); + i++; + } + if ( self.doors.size ) + { + play_sound_at_pos( "purchase", self.doors[ 0 ].origin ); + } + } + level.active_zone_names = maps/mp/zombies/_zm_zonemgr::get_active_zone_names(); + wait 1; + self.door_is_moving = 0; + _a921 = all_trigs; + _k921 = getFirstArrayKey( _a921 ); + while ( isDefined( _k921 ) ) + { + trig = _a921[ _k921 ]; + trig.door_is_moving = 0; + _k921 = getNextArrayKey( _a921, _k921 ); + } + if ( isDefined( quick_close ) && quick_close ) + { + i = 0; + while ( i < all_trigs.size ) + { + all_trigs[ i ] trigger_on(); + i++; + } + return; + } + while ( flag( "door_can_close" ) ) + { + wait 2; + i = 0; + while ( i < all_trigs.size ) + { + all_trigs[ i ] trigger_on(); + i++; + } + } +} + +physics_launch_door( door_trig ) +{ + vec = vectorScale( vectornormalize( self.script_vector ), 10 ); + self rotateroll( 5, 0,05 ); + wait 0,05; + self moveto( self.origin + vec, 0,1 ); + self waittill( "movedone" ); + self physicslaunch( self.origin, self.script_vector * 300 ); + wait 60; + self delete(); +} + +door_solid_thread() +{ + self waittill_either( "rotatedone", "movedone" ); + self.door_moving = undefined; + while ( 1 ) + { + players = get_players(); + player_touching = 0; + i = 0; + while ( i < players.size ) + { + if ( players[ i ] istouching( self ) ) + { + player_touching = 1; + break; + } + else + { + i++; + } + } + if ( !player_touching ) + { + self solid(); + return; + } + wait 1; + } +} + +door_solid_thread_anim() +{ + self waittillmatch( "door_anim" ); + return "end"; + self.door_moving = undefined; + while ( 1 ) + { + players = get_players(); + player_touching = 0; + i = 0; + while ( i < players.size ) + { + if ( players[ i ] istouching( self ) ) + { + player_touching = 1; + break; + } + else + { + i++; + } + } + if ( !player_touching ) + { + self solid(); + return; + } + wait 1; + } +} + +disconnect_paths_when_done() +{ + self waittill_either( "rotatedone", "movedone" ); + self disconnectpaths(); +} + +self_disconnectpaths() +{ + self disconnectpaths(); +} + +debris_init() +{ + cost = 1000; + if ( isDefined( self.zombie_cost ) ) + { + cost = self.zombie_cost; + } + self set_hint_string( self, "default_buy_debris_" + cost ); + self setcursorhint( "HINT_NOICON" ); + if ( isDefined( self.script_flag ) && !isDefined( level.flag[ self.script_flag ] ) ) + { + flag_init( self.script_flag ); + } + self thread debris_think(); +} + +debris_think() +{ + if ( isDefined( level.custom_debris_function ) ) + { + self [[ level.custom_debris_function ]](); + } + for ( ;; ) + { + while ( 1 ) + { + self waittill( "trigger", who, force ); + if ( getDvarInt( "zombie_unlock_all" ) > 0 || isDefined( force ) && force ) + { + } + else + { + while ( !who usebuttonpressed() ) + { + continue; + } + while ( who in_revive_trigger() ) + { + continue; + } + } + if ( is_player_valid( who ) ) + { + players = get_players(); + if ( getDvarInt( "zombie_unlock_all" ) > 0 ) + { + break; + } + else if ( who.score >= self.zombie_cost ) + { + who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + maps/mp/_demo::bookmark( "zm_player_door", getTime(), who ); + who maps/mp/zombies/_zm_stats::increment_client_stat( "doors_purchased" ); + who maps/mp/zombies/_zm_stats::increment_player_stat( "doors_purchased" ); + break; + } + else + { + play_sound_at_pos( "no_purchase", self.origin ); + who maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "door_deny" ); + } + } + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", who.name, who.score, level.round_number, self.zombie_cost, self.script_flag, self.origin, "door" ); + junk = getentarray( self.target, "targetname" ); + while ( isDefined( self.script_flag ) ) + { + tokens = strtok( self.script_flag, "," ); + i = 0; + while ( i < tokens.size ) + { + flag_set( tokens[ i ] ); + i++; + } + } + play_sound_at_pos( "purchase", self.origin ); + level notify( "junk purchased" ); + move_ent = undefined; + clip = undefined; + i = 0; + while ( i < junk.size ) + { + junk[ i ] connectpaths(); + if ( isDefined( junk[ i ].script_noteworthy ) ) + { + if ( junk[ i ].script_noteworthy == "clip" ) + { + clip = junk[ i ]; + i++; + continue; + } + } + else struct = undefined; + if ( isDefined( junk[ i ].script_linkto ) ) + { + struct = getstruct( junk[ i ].script_linkto, "script_linkname" ); + if ( isDefined( struct ) ) + { + move_ent = junk[ i ]; + junk[ i ] thread debris_move( struct ); + } + else + { + junk[ i ] delete(); + } + i++; + continue; + } + else + { + junk[ i ] delete(); + } + i++; + } + all_trigs = getentarray( self.target, "target" ); + i = 0; + while ( i < all_trigs.size ) + { + all_trigs[ i ] delete(); + i++; + } + if ( isDefined( clip ) ) + { + if ( isDefined( move_ent ) ) + { + move_ent waittill( "movedone" ); + } + clip delete(); + } + return; + } + else + { + } + } +} + +debris_move( struct ) +{ + self script_delay(); + self notsolid(); + self play_sound_on_ent( "debris_move" ); + playsoundatposition( "zmb_lightning_l", self.origin ); + if ( isDefined( self.script_firefx ) ) + { + playfx( level._effect[ self.script_firefx ], self.origin ); + } + while ( isDefined( self.script_noteworthy ) ) + { + while ( self.script_noteworthy == "jiggle" ) + { + num = randomintrange( 3, 5 ); + og_angles = self.angles; + i = 0; + while ( i < num ) + { + angles = og_angles + ( -5 + randomfloat( 10 ), -5 + randomfloat( 10 ), -5 + randomfloat( 10 ) ); + time = randomfloatrange( 0,1, 0,4 ); + self rotateto( angles, time ); + wait ( time - 0,05 ); + i++; + } + } + } + time = 0,5; + if ( isDefined( self.script_transition_time ) ) + { + time = self.script_transition_time; + } + self moveto( struct.origin, time, time * 0,5 ); + self rotateto( struct.angles, time * 0,75 ); + self waittill( "movedone" ); + if ( isDefined( self.script_fxid ) ) + { + playfx( level._effect[ self.script_fxid ], self.origin ); + playsoundatposition( "zmb_zombie_spawn", self.origin ); + } + self delete(); +} + +blocker_disconnect_paths( start_node, end_node, two_way ) +{ +} + +blocker_connect_paths( start_node, end_node, two_way ) +{ +} + +blocker_init() +{ + if ( !isDefined( self.target ) ) + { + return; + } + targets = getentarray( self.target, "targetname" ); + self.barrier_chunks = []; + j = 0; + while ( j < targets.size ) + { + if ( targets[ j ] iszbarrier() ) + { + self.zbarrier = targets[ j ]; + if ( isDefined( self.zbarrier.script_string ) ) + { + } + else + { + } + m_collision = "p6_anim_zm_barricade_board_collision"; + precachemodel( m_collision ); + self.zbarrier setzbarriercolmodel( m_collision ); + self.zbarrier.chunk_health = []; + i = 0; + while ( i < self.zbarrier getnumzbarrierpieces() ) + { + self.zbarrier.chunk_health[ i ] = 0; + i++; + } + } + else if ( isDefined( targets[ j ].script_string ) && targets[ j ].script_string == "rock" ) + { + targets[ j ].material = "rock"; + } + if ( isDefined( targets[ j ].script_parameters ) ) + { + if ( targets[ j ].script_parameters == "grate" ) + { + if ( isDefined( targets[ j ].script_noteworthy ) ) + { + if ( targets[ j ].script_noteworthy != "2" && targets[ j ].script_noteworthy != "3" && targets[ j ].script_noteworthy != "4" || targets[ j ].script_noteworthy == "5" && targets[ j ].script_noteworthy == "6" ) + { + targets[ j ] hide(); +/# + iprintlnbold( " Hide " ); +#/ + } + } + break; + } + else if ( targets[ j ].script_parameters == "repair_board" ) + { + targets[ j ].unbroken_section = getent( targets[ j ].target, "targetname" ); + if ( isDefined( targets[ j ].unbroken_section ) ) + { + targets[ j ].unbroken_section linkto( targets[ j ] ); + targets[ j ] hide(); + targets[ j ] notsolid(); + targets[ j ].unbroken = 1; + if ( isDefined( targets[ j ].unbroken_section.script_noteworthy ) && targets[ j ].unbroken_section.script_noteworthy == "glass" ) + { + targets[ j ].material = "glass"; + targets[ j ] thread destructible_glass_barricade( targets[ j ].unbroken_section, self ); + break; + } + else + { + if ( isDefined( targets[ j ].unbroken_section.script_noteworthy ) && targets[ j ].unbroken_section.script_noteworthy == "metal" ) + { + targets[ j ].material = "metal"; + } + } + } + break; + } + else + { + if ( targets[ j ].script_parameters == "barricade_vents" ) + { + targets[ j ].material = "metal_vent"; + } + } + } + if ( isDefined( targets[ j ].targetname ) ) + { + if ( targets[ j ].targetname == "auto2" ) + { + } + } + targets[ j ] update_states( "repaired" ); + targets[ j ].destroyed = 0; + targets[ j ] show(); + targets[ j ].claimed = 0; + targets[ j ].anim_grate_index = 0; + targets[ j ].og_origin = targets[ j ].origin; + targets[ j ].og_angles = targets[ j ].angles; + self.barrier_chunks[ self.barrier_chunks.size ] = targets[ j ]; + j++; + } + target_nodes = getnodearray( self.target, "targetname" ); + j = 0; + while ( j < target_nodes.size ) + { + if ( target_nodes[ j ].type == "Begin" ) + { + self.neg_start = target_nodes[ j ]; + if ( isDefined( self.neg_start.target ) ) + { + self.neg_end = getnode( self.neg_start.target, "targetname" ); + } + blocker_disconnect_paths( self.neg_start, self.neg_end ); + } + j++; + } + if ( isDefined( self.zbarrier ) ) + { + if ( isDefined( self.barrier_chunks ) ) + { + i = 0; + while ( i < self.barrier_chunks.size ) + { + self.barrier_chunks[ i ] delete(); + i++; + } + self.barrier_chunks = []; + } + } + if ( isDefined( self.zbarrier ) && should_delete_zbarriers() ) + { + self.zbarrier delete(); + self.zbarrier = undefined; + return; + } + self blocker_attack_spots(); + self.trigger_location = getstruct( self.target, "targetname" ); + self thread blocker_think(); +} + +should_delete_zbarriers() +{ + gametype = getDvar( "ui_gametype" ); + if ( !is_classic() && !is_standard() && gametype != "zgrief" ) + { + return 1; + } + return 0; +} + +destructible_glass_barricade( unbroken_section, node ) +{ + unbroken_section setcandamage( 1 ); + unbroken_section.health = 99999; + unbroken_section waittill( "damage", amount, who ); + if ( is_player_valid( who ) || who maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + self thread maps/mp/zombies/_zm_spawner::zombie_boardtear_offset_fx_horizontle( self, node ); + level thread remove_chunk( self, node, 1 ); + self update_states( "destroyed" ); + self notify( "destroyed" ); + self.unbroken = 0; + } +} + +blocker_attack_spots() +{ + spots = []; + numslots = self.zbarrier getzbarriernumattackslots(); + numslots = int( max( numslots, 1 ) ); + if ( numslots % 2 ) + { + spots[ spots.size ] = groundpos_ignore_water_new( self.zbarrier.origin + vectorScale( ( -1, 0, 0 ), 60 ) ); + } + while ( numslots > 1 ) + { + reps = floor( numslots / 2 ); + slot = 1; + i = 0; + while ( i < reps ) + { + offset = self.zbarrier getzbarrierattackslothorzoffset() * ( i + 1 ); + spots[ spots.size ] = groundpos_ignore_water_new( spots[ 0 ] + ( anglesToRight( self.angles ) * offset ) + vectorScale( ( -1, 0, 0 ), 60 ) ); + slot++; + if ( slot < numslots ) + { + spots[ spots.size ] = groundpos_ignore_water_new( spots[ 0 ] + ( anglesToRight( self.angles ) * ( offset * -1 ) ) + vectorScale( ( -1, 0, 0 ), 60 ) ); + slot++; + } + i++; + } + } + taken = []; + i = 0; + while ( i < spots.size ) + { + taken[ i ] = 0; + i++; + } + self.attack_spots_taken = taken; + self.attack_spots = spots; +/# + self thread debug_attack_spots_taken(); +#/ +} + +blocker_choke() +{ + level._blocker_choke = 0; + level endon( "stop_blocker_think" ); + while ( 1 ) + { + wait 0,05; + level._blocker_choke = 0; + } +} + +blocker_think() +{ + level endon( "stop_blocker_think" ); + if ( !isDefined( level._blocker_choke ) ) + { + level thread blocker_choke(); + } + use_choke = 0; + if ( isDefined( level._use_choke_blockers ) && level._use_choke_blockers == 1 ) + { + use_choke = 1; + } + while ( 1 ) + { + wait 0,5; + if ( use_choke ) + { + if ( level._blocker_choke > 3 ) + { + wait 0,05; + } + } + level._blocker_choke++; + while ( all_chunks_intact( self, self.barrier_chunks ) ) + { + continue; + } + while ( no_valid_repairable_boards( self, self.barrier_chunks ) ) + { + continue; + } + self blocker_trigger_think(); + } +} + +player_fails_blocker_repair_trigger_preamble( player, players, trigger, hold_required ) +{ + if ( !isDefined( trigger ) ) + { + return 1; + } + if ( !is_player_valid( player ) ) + { + return 1; + } + if ( players.size == 1 && isDefined( players[ 0 ].intermission ) && players[ 0 ].intermission == 1 ) + { + return 1; + } + if ( hold_required && !player usebuttonpressed() ) + { + return 1; + } + if ( !hold_required && !player use_button_held() ) + { + return 1; + } + if ( player in_revive_trigger() ) + { + return 1; + } + return 0; +} + +has_blocker_affecting_perk() +{ + has_perk = undefined; + if ( self hasperk( "specialty_fastreload" ) ) + { + has_perk = "specialty_fastreload"; + } + return has_perk; +} + +do_post_chunk_repair_delay( has_perk ) +{ + if ( !self script_delay() ) + { + wait 1; + } +} + +handle_post_board_repair_rewards( cost, zbarrier ) +{ + self maps/mp/zombies/_zm_stats::increment_client_stat( "boards" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "boards" ); + if ( isDefined( self.pers[ "boards" ] ) && ( self.pers[ "boards" ] % 10 ) == 0 ) + { + self thread do_player_general_vox( "general", "reboard", 90 ); + } + if ( isDefined( level.pers_upgrade_boards ) && level.pers_upgrade_boards ) + { + if ( level.round_number >= level.pers_boarding_round_start ) + { + if ( isDefined( zbarrier ) ) + { + self.upgrade_fx_origin = zbarrier.origin; + } + if ( is_classic() ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_boarding", 0 ); + } + } + } + self.rebuild_barrier_reward += cost; + if ( self.rebuild_barrier_reward < level.zombie_vars[ "rebuild_barrier_cap_per_round" ] ) + { + self maps/mp/zombies/_zm_score::player_add_points( "rebuild_board", cost ); + self play_sound_on_ent( "purchase" ); + } + if ( isDefined( self.board_repair ) ) + { + self.board_repair += 1; + } +} + +blocker_unitrigger_think() +{ + self endon( "kill_trigger" ); + while ( 1 ) + { + self waittill( "trigger", player ); + self.stub.trigger_target notify( "trigger" ); + } +} + +blocker_trigger_think() +{ + if ( isDefined( level.no_board_repair ) && level.no_board_repair ) + { + return; + } +/# + println( "ZM >> TRIGGER blocker_trigger_think " ); +#/ + level endon( "stop_blocker_think" ); + cost = 10; + if ( isDefined( self.zombie_cost ) ) + { + cost = self.zombie_cost; + } + original_cost = cost; + if ( !isDefined( self.unitrigger_stub ) ) + { + radius = 94,21; + height = 94,21; + if ( isDefined( self.trigger_location ) ) + { + trigger_location = self.trigger_location; + } + else + { + trigger_location = self; + } + if ( isDefined( trigger_location.radius ) ) + { + radius = trigger_location.radius; + } + if ( isDefined( trigger_location.height ) ) + { + height = trigger_location.height; + } + trigger_pos = groundpos( trigger_location.origin ) + vectorScale( ( -1, 0, 0 ), 4 ); + self.unitrigger_stub = spawnstruct(); + self.unitrigger_stub.origin = trigger_pos; + self.unitrigger_stub.radius = radius; + self.unitrigger_stub.height = height; + self.unitrigger_stub.script_unitrigger_type = "unitrigger_radius"; + self.unitrigger_stub.hint_string = get_hint_string( self, "default_reward_barrier_piece" ); + self.unitrigger_stub.cursor_hint = "HINT_NOICON"; + self.unitrigger_stub.trigger_target = self; + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::blocker_unitrigger_think ); + maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + if ( !isDefined( trigger_location.angles ) ) + { + trigger_location.angles = ( -1, 0, 0 ); + } + self.unitrigger_stub.origin = ( groundpos( trigger_location.origin ) + vectorScale( ( -1, 0, 0 ), 4 ) ) + ( anglesToForward( trigger_location.angles ) * -11 ); + } + self thread trigger_delete_on_repair(); + thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::blocker_unitrigger_think ); +/# + if ( getDvarInt( "zombie_debug" ) > 0 ) + { + thread debug_blocker( trigger_pos, radius, height ); +#/ + } + while ( 1 ) + { + self waittill( "trigger", player ); + has_perk = player has_blocker_affecting_perk(); + if ( all_chunks_intact( self, self.barrier_chunks ) ) + { + self notify( "all_boards_repaired" ); + return; + } + if ( no_valid_repairable_boards( self, self.barrier_chunks ) ) + { + self notify( "no valid boards" ); + return; + } + while ( 1 ) + { + players = get_players(); + if ( player_fails_blocker_repair_trigger_preamble( player, players, self.unitrigger_stub.trigger, 0 ) ) + { + break; + } + else if ( isDefined( self.zbarrier ) ) + { + chunk = get_random_destroyed_chunk( self, self.barrier_chunks ); + if ( isDefined( player.pers_upgrades_awarded[ "board" ] ) ) + { + self thread replace_chunk( self, chunk, has_perk, player.pers_upgrades_awarded[ "board" ] ); + } + } + else + { + chunk = get_random_destroyed_chunk( self, self.barrier_chunks ); + if ( isDefined( chunk.script_parameter ) || chunk.script_parameters == "repair_board" && chunk.script_parameters == "barricade_vents" ) + { + if ( isDefined( chunk.unbroken_section ) ) + { + chunk show(); + chunk solid(); + chunk.unbroken_section self_delete(); + } + } + else + { + chunk show(); + } + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" && chunk.script_parameters == "barricade_vents" ) + { + if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) + { + if ( !isDefined( chunk.material ) || isDefined( chunk.material ) && chunk.material != "rock" ) + { + chunk play_sound_on_ent( "rebuild_barrier_piece" ); + } + playsoundatposition( "zmb_cha_ching", ( -1, 0, 0 ) ); + } + } + if ( chunk.script_parameters == "bar" ) + { + chunk play_sound_on_ent( "rebuild_barrier_piece" ); + playsoundatposition( "zmb_cha_ching", ( -1, 0, 0 ) ); + } + if ( isDefined( chunk.script_parameters ) ) + { + if ( chunk.script_parameters == "bar" ) + { + if ( isDefined( chunk.script_noteworthy ) ) + { + if ( chunk.script_noteworthy == "5" ) + { + chunk hide(); + break; + } + else + { + if ( chunk.script_noteworthy == "3" ) + { + chunk hide(); + } + } + } + } + } + if ( isDefined( player.pers_upgrades_awarded[ "board" ] ) ) + { + self thread replace_chunk( self, chunk, has_perk, player.pers_upgrades_awarded[ "board" ] ); + } + } + if ( isDefined( self.clip ) ) + { + self.clip enable_trigger(); + self.clip disconnectpaths(); + } + else + { + blocker_disconnect_paths( self.neg_start, self.neg_end ); + } + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, original_cost, self.target, self.origin, "repair" ); + self do_post_chunk_repair_delay( has_perk ); + if ( !is_player_valid( player ) ) + { + break; + } + else + { + player handle_post_board_repair_rewards( cost, self ); + if ( all_chunks_intact( self, self.barrier_chunks ) ) + { + self notify( "all_boards_repaired" ); + return; + } + if ( no_valid_repairable_boards( self, self.barrier_chunks ) ) + { + self notify( "no valid boards" ); + return; + } + } + } + } +} + +random_destroyed_chunk_show() +{ + wait 0,5; + self show(); +} + +door_repaired_rumble_n_sound() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( distance( players[ i ].origin, self.origin ) < 150 ) + { + if ( isalive( players[ i ] ) ) + { + players[ i ] thread board_completion(); + } + } + i++; + } +} + +board_completion() +{ + self endon( "disconnect" ); +} + +trigger_delete_on_repair() +{ + while ( 1 ) + { + self waittill_either( "all_boards_repaired", "no valid boards" ); + maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + return; + } +} + +blocker_doubler_hint( hint, original_cost ) +{ + self endon( "death" ); + doubler_status = level.zombie_vars[ "zombie_powerup_point_doubler_on" ]; + while ( 1 ) + { + wait 0,5; + if ( doubler_status != level.zombie_vars[ "zombie_powerup_point_doubler_on" ] ) + { + doubler_status = level.zombie_vars[ "zombie_powerup_point_doubler_on" ]; + cost = original_cost; + if ( level.zombie_vars[ "zombie_powerup_point_doubler_on" ] ) + { + cost = original_cost * 2; + } + self set_hint_string( self, hint + cost ); + } + } +} + +rebuild_barrier_reward_reset() +{ + self.rebuild_barrier_reward = 0; +} + +remove_chunk( chunk, node, destroy_immediately, zomb ) +{ + chunk update_states( "mid_tear" ); + if ( isDefined( chunk.script_parameters ) ) + { + if ( chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" && chunk.script_parameters == "barricade_vents" ) + { + chunk thread zombie_boardtear_audio_offset( chunk ); + } + } + if ( isDefined( chunk.script_parameters ) ) + { + if ( chunk.script_parameters == "bar" ) + { + chunk thread zombie_bartear_audio_offset( chunk ); + } + } + chunk notsolid(); + fx = "wood_chunk_destory"; + if ( isDefined( self.script_fxid ) ) + { + fx = self.script_fxid; + } + if ( isDefined( chunk.script_moveoverride ) && chunk.script_moveoverride ) + { + chunk hide(); + } + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters == "bar" ) + { + if ( isDefined( chunk.script_noteworthy ) && chunk.script_noteworthy == "4" ) + { + ent = spawn( "script_origin", chunk.origin ); + ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + dist = 100; + if ( isDefined( chunk.script_move_dist ) ) + { + dist_max = chunk.script_move_dist - 100; + dist = 100 + randomint( dist_max ); + } + else + { + dist = 100 + randomint( 100 ); + } + dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); + trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + if ( trace[ "fraction" ] == 1 ) + { + dest += vectorScale( ( -1, 0, 0 ), 200 ); + } + else + { + dest = trace[ "position" ]; + } + chunk linkto( ent ); + time = ent fake_physicslaunch( dest, 300 + randomint( 100 ) ); + if ( randomint( 100 ) > 40 ) + { + ent rotatepitch( 180, time * 0,5 ); + } + else + { + ent rotatepitch( 90, time, time * 0,5 ); + } + wait time; + chunk hide(); + wait 0,1; + ent delete(); + } + else + { + ent = spawn( "script_origin", chunk.origin ); + ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + dist = 100; + if ( isDefined( chunk.script_move_dist ) ) + { + dist_max = chunk.script_move_dist - 100; + dist = 100 + randomint( dist_max ); + } + else + { + dist = 100 + randomint( 100 ); + } + dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); + trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + if ( trace[ "fraction" ] == 1 ) + { + dest += vectorScale( ( -1, 0, 0 ), 200 ); + } + else + { + dest = trace[ "position" ]; + } + chunk linkto( ent ); + time = ent fake_physicslaunch( dest, 260 + randomint( 100 ) ); + if ( randomint( 100 ) > 40 ) + { + ent rotatepitch( 180, time * 0,5 ); + } + else + { + ent rotatepitch( 90, time, time * 0,5 ); + } + wait time; + chunk hide(); + wait 0,1; + ent delete(); + } + chunk update_states( "destroyed" ); + chunk notify( "destroyed" ); + } + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters != "board" || chunk.script_parameters == "repair_board" && chunk.script_parameters == "barricade_vents" ) + { + ent = spawn( "script_origin", chunk.origin ); + ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + dist = 100; + if ( isDefined( chunk.script_move_dist ) ) + { + dist_max = chunk.script_move_dist - 100; + dist = 100 + randomint( dist_max ); + } + else + { + dist = 100 + randomint( 100 ); + } + dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); + trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + if ( trace[ "fraction" ] == 1 ) + { + dest += vectorScale( ( -1, 0, 0 ), 200 ); + } + else + { + dest = trace[ "position" ]; + } + chunk linkto( ent ); + time = ent fake_physicslaunch( dest, 200 + randomint( 100 ) ); + if ( isDefined( chunk.unbroken_section ) ) + { + if ( !isDefined( chunk.material ) || chunk.material != "metal" ) + { + chunk.unbroken_section self_delete(); + } + } + if ( randomint( 100 ) > 40 ) + { + ent rotatepitch( 180, time * 0,5 ); + } + else + { + ent rotatepitch( 90, time, time * 0,5 ); + } + wait time; + if ( isDefined( chunk.unbroken_section ) ) + { + if ( isDefined( chunk.material ) && chunk.material == "metal" ) + { + chunk.unbroken_section self_delete(); + } + } + chunk hide(); + wait 0,1; + ent delete(); + chunk update_states( "destroyed" ); + chunk notify( "destroyed" ); + } + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters == "grate" ) + { + if ( isDefined( chunk.script_noteworthy ) && chunk.script_noteworthy == "6" ) + { + ent = spawn( "script_origin", chunk.origin ); + ent.angles = node.angles + vectorScale( ( -1, 0, 0 ), 180 ); + dist = 100 + randomint( 100 ); + dest = ent.origin + ( anglesToForward( ent.angles ) * dist ); + trace = bullettrace( dest + vectorScale( ( -1, 0, 0 ), 16 ), dest + vectorScale( ( -1, 0, 0 ), 200 ), 0, undefined ); + if ( trace[ "fraction" ] == 1 ) + { + dest += vectorScale( ( -1, 0, 0 ), 200 ); + } + else + { + dest = trace[ "position" ]; + } + chunk linkto( ent ); + time = ent fake_physicslaunch( dest, 200 + randomint( 100 ) ); + if ( randomint( 100 ) > 40 ) + { + ent rotatepitch( 180, time * 0,5 ); + } + else + { + ent rotatepitch( 90, time, time * 0,5 ); + } + wait time; + chunk hide(); + ent delete(); + chunk update_states( "destroyed" ); + chunk notify( "destroyed" ); + return; + } + else + { + chunk hide(); + chunk update_states( "destroyed" ); + chunk notify( "destroyed" ); + } + } +} + +remove_chunk_rotate_grate( chunk ) +{ + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters == "grate" ) + { + chunk vibrate( vectorScale( ( -1, 0, 0 ), 270 ), 0,2, 0,4, 0,4 ); + return; + } +} + +zombie_boardtear_audio_offset( chunk ) +{ + if ( isDefined( chunk.material ) && !isDefined( chunk.already_broken ) ) + { + chunk.already_broken = 0; + } + if ( isDefined( chunk.material ) && chunk.material == "glass" && chunk.already_broken == 0 ) + { + chunk playsound( "zmb_break_glass_barrier" ); + wait randomfloatrange( 0,3, 0,6 ); + chunk playsound( "zmb_break_glass_barrier" ); + chunk.already_broken = 1; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "metal" && chunk.already_broken == 0 ) + { + chunk playsound( "grab_metal_bar" ); + wait randomfloatrange( 0,3, 0,6 ); + chunk playsound( "break_metal_bar" ); + chunk.already_broken = 1; + return; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && !level.use_clientside_rock_tearin_fx ) + { + chunk playsound( "zmb_break_rock_barrier" ); + wait randomfloatrange( 0,3, 0,6 ); + chunk playsound( "zmb_break_rock_barrier" ); + } + chunk.already_broken = 1; + return; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "metal_vent" ) + { + if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) + { + chunk playsound( "evt_vent_slat_remove" ); + } + return; + } + else + { + if ( isDefined( level.use_clientside_board_fx ) && !level.use_clientside_board_fx ) + { + chunk play_sound_on_ent( "break_barrier_piece" ); + wait randomfloatrange( 0,3, 0,6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + } + chunk.already_broken = 1; + } + } + } + } +} + +zombie_bartear_audio_offset( chunk ) +{ + chunk play_sound_on_ent( "grab_metal_bar" ); + wait randomfloatrange( 0,3, 0,6 ); + chunk play_sound_on_ent( "break_metal_bar" ); + wait randomfloatrange( 1, 1,3 ); + chunk play_sound_on_ent( "drop_metal_bar" ); +} + +ensure_chunk_is_back_to_origin( chunk ) +{ + if ( chunk.origin != chunk.og_origin ) + { + chunk notsolid(); + chunk waittill( "movedone" ); + } +} + +replace_chunk( barrier, chunk, perk, upgrade, via_powerup ) +{ + if ( !isDefined( barrier.zbarrier ) ) + { + chunk update_states( "mid_repair" ); +/# + assert( isDefined( chunk.og_origin ) ); +#/ +/# + assert( isDefined( chunk.og_angles ) ); +#/ + sound = "rebuild_barrier_hover"; + if ( isDefined( chunk.script_presound ) ) + { + sound = chunk.script_presound; + } + } + has_perk = 0; + if ( isDefined( perk ) ) + { + has_perk = 1; + } + if ( !isDefined( via_powerup ) && isDefined( sound ) ) + { + play_sound_at_pos( sound, chunk.origin ); + } + if ( upgrade ) + { + barrier.zbarrier zbarrierpieceuseupgradedmodel( chunk ); + barrier.zbarrier.chunk_health[ chunk ] = barrier.zbarrier getupgradedpiecenumlives( chunk ); + } + else + { + barrier.zbarrier zbarrierpieceusedefaultmodel( chunk ); + barrier.zbarrier.chunk_health[ chunk ] = 0; + } + scalar = 1; + if ( has_perk ) + { + if ( perk == "speciality_fastreload" ) + { + scalar = 0,31; + } + else + { + if ( perk == "speciality_fastreload_upgrade" ) + { + scalar = 0,2112; + } + } + } + barrier.zbarrier showzbarrierpiece( chunk ); + barrier.zbarrier setzbarrierpiecestate( chunk, "closing", scalar ); + waitduration = barrier.zbarrier getzbarrierpieceanimlengthforstate( chunk, "closing", scalar ); + wait waitduration; +} + +open_all_zbarriers() +{ + _a2606 = level.exterior_goals; + _k2606 = getFirstArrayKey( _a2606 ); + while ( isDefined( _k2606 ) ) + { + barrier = _a2606[ _k2606 ]; + while ( isDefined( barrier.zbarrier ) ) + { + x = 0; + while ( x < barrier.zbarrier getnumzbarrierpieces() ) + { + barrier.zbarrier setzbarrierpiecestate( x, "opening" ); + x++; + } + } + if ( isDefined( barrier.clip ) ) + { + barrier.clip disable_trigger(); + barrier.clip connectpaths(); + } + else + { + blocker_connect_paths( barrier.neg_start, barrier.neg_end ); + } + _k2606 = getNextArrayKey( _a2606, _k2606 ); + } +} + +zombie_boardtear_audio_plus_fx_offset_repair_horizontal( chunk ) +{ + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + chunk clearclientflag( level._zombie_scriptmover_flag_rock_fx ); + } + else + { + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0,3, 0,6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + } + } + else + { + if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) + { + chunk clearclientflag( level._zombie_scriptmover_flag_board_horizontal_fx ); + return; + } + else + { + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0,3, 0,6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + } + } +} + +zombie_boardtear_audio_plus_fx_offset_repair_verticle( chunk ) +{ + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + chunk clearclientflag( level._zombie_scriptmover_flag_rock_fx ); + } + else + { + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0,3, 0,6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + } + } + else + { + if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) + { + chunk clearclientflag( level._zombie_scriptmover_flag_board_vertical_fx ); + return; + } + else + { + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0,3, 0,6 ); + chunk play_sound_on_ent( "break_barrier_piece" ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + } + } +} + +zombie_gratetear_audio_plus_fx_offset_repair_horizontal( chunk ) +{ + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + chunk play_sound_on_ent( "bar_rebuild_slam" ); + switch( randomint( 9 ) ) + { + case 0: + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0, 0,3 ); + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 1: + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0, 0,3 ); + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 2: + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0, 0,3 ); + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 3: + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0, 0,3 ); + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 4: + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + wait randomfloatrange( 0, 0,3 ); + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 5: + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 6: + playfx( level._effect[ "fx_zombie_bar_break_lite" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 7: + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + case 8: + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin + vectorScale( ( -1, 0, 0 ), 30 ) ); + break; + } +} + +zombie_bartear_audio_plus_fx_offset_repair_horizontal( chunk ) +{ + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + chunk play_sound_on_ent( "bar_rebuild_slam" ); + switch( randomint( 9 ) ) + { + case 0: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + case 1: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + case 2: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + case 3: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + case 4: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + case 5: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + break; + case 6: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + case 7: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); + break; + case 8: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + } +} + +zombie_bartear_audio_plus_fx_offset_repair_verticle( chunk ) +{ + earthquake( randomfloatrange( 0,3, 0,4 ), randomfloatrange( 0,2, 0,4 ), chunk.origin, 150 ); + chunk play_sound_on_ent( "bar_rebuild_slam" ); + switch( randomint( 9 ) ) + { + case 0: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + case 1: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); + break; + case 2: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); + break; + case 3: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + case 4: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + case 5: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + break; + case 6: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + case 7: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); + break; + case 8: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); + break; + } +} + +add_new_zombie_spawners() +{ + if ( isDefined( self.target ) ) + { + self.possible_spawners = getentarray( self.target, "targetname" ); + } + if ( isDefined( self.script_string ) ) + { + spawners = getentarray( self.script_string, "targetname" ); + self.possible_spawners = arraycombine( self.possible_spawners, spawners, 1, 0 ); + } + if ( !isDefined( self.possible_spawners ) ) + { + return; + } + zombies_to_add = self.possible_spawners; + i = 0; + while ( i < self.possible_spawners.size ) + { + self.possible_spawners[ i ].is_enabled = 1; + add_spawner( self.possible_spawners[ i ] ); + i++; + } +} + +flag_blocker() +{ + if ( !isDefined( self.script_flag_wait ) ) + { +/# + assertmsg( "Flag Blocker at " + self.origin + " does not have a script_flag_wait key value pair" ); +#/ + return; + } + if ( !isDefined( level.flag[ self.script_flag_wait ] ) ) + { + flag_init( self.script_flag_wait ); + } + type = "connectpaths"; + if ( isDefined( self.script_noteworthy ) ) + { + type = self.script_noteworthy; + } + flag_wait( self.script_flag_wait ); + self script_delay(); + if ( type == "connectpaths" ) + { + self connectpaths(); + self disable_trigger(); + return; + } + if ( type == "disconnectpaths" ) + { + self disconnectpaths(); + self disable_trigger(); + return; + } +/# + assertmsg( "flag blocker at " + self.origin + ", the type "" + type + "" is not recognized" ); +#/ +} + +update_states( states ) +{ +/# + assert( isDefined( states ) ); +#/ + self.state = states; +} + +quantum_bomb_open_nearest_door_validation( position ) +{ + range_squared = 32400; + zombie_doors = getentarray( "zombie_door", "targetname" ); + i = 0; + while ( i < zombie_doors.size ) + { + if ( distancesquared( zombie_doors[ i ].origin, position ) < range_squared ) + { + return 1; + } + i++; + } + zombie_airlock_doors = getentarray( "zombie_airlock_buy", "targetname" ); + i = 0; + while ( i < zombie_airlock_doors.size ) + { + if ( distancesquared( zombie_airlock_doors[ i ].origin, position ) < range_squared ) + { + return 1; + } + i++; + } + zombie_debris = getentarray( "zombie_debris", "targetname" ); + i = 0; + while ( i < zombie_debris.size ) + { + if ( distancesquared( zombie_debris[ i ].origin, position ) < range_squared ) + { + return 1; + } + i++; + } + return 0; +} + +quantum_bomb_open_nearest_door_result( position ) +{ + range_squared = 32400; + zombie_doors = getentarray( "zombie_door", "targetname" ); + i = 0; + while ( i < zombie_doors.size ) + { + if ( distancesquared( zombie_doors[ i ].origin, position ) < range_squared ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); + zombie_doors[ i ] notify( "trigger" ); + [[ level.quantum_bomb_play_area_effect_func ]]( position ); + return; + } + i++; + } + zombie_airlock_doors = getentarray( "zombie_airlock_buy", "targetname" ); + i = 0; + while ( i < zombie_airlock_doors.size ) + { + if ( distancesquared( zombie_airlock_doors[ i ].origin, position ) < range_squared ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); + zombie_airlock_doors[ i ] notify( "trigger" ); + [[ level.quantum_bomb_play_area_effect_func ]]( position ); + return; + } + i++; + } + zombie_debris = getentarray( "zombie_debris", "targetname" ); + i = 0; + while ( i < zombie_debris.size ) + { + if ( distancesquared( zombie_debris[ i ].origin, position ) < range_squared ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); + zombie_debris[ i ] notify( "trigger" ); + [[ level.quantum_bomb_play_area_effect_func ]]( position ); + return; + } + i++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_bot.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_bot.gsc new file mode 100644 index 0000000..bcef80d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_bot.gsc @@ -0,0 +1,10 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ +/# + println( "ZM >> Zombiemode Server Scripts Init (_zm_bot.gsc)" ); +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_buildables.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_buildables.gsc new file mode 100644 index 0000000..8553f6b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_buildables.gsc @@ -0,0 +1,2565 @@ +#include maps/mp/_demo; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + precachestring( &"ZOMBIE_BUILDING" ); + precachestring( &"ZOMBIE_BUILD_PIECE_MISSING" ); + precachestring( &"ZOMBIE_BUILD_PIECE_GRAB" ); + precacheitem( "zombie_builder_zm" ); + precacheitem( "buildable_piece_zm" ); + level.gameobjswapping = 1; + zombie_buildables_callbacks = []; + level.buildablepickups = []; + level.buildables_built = []; + level.buildable_stubs = []; + level.buildable_piece_count = 0; + level._effect[ "building_dust" ] = loadfx( "maps/zombie/fx_zmb_buildable_assemble_dust" ); + if ( isDefined( level.init_buildables ) ) + { + [[ level.init_buildables ]](); + } + onplayerconnect_callback( ::buildables_watch_swipes ); +} + +anystub_update_prompt( player ) +{ + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() || player in_revive_trigger() ) + { + self.hint_string = ""; + return 0; + } + if ( player isthrowinggrenade() ) + { + self.hint_string = ""; + return 0; + } + if ( isDefined( player.is_drinking ) && player.is_drinking > 0 ) + { + self.hint_string = ""; + return 0; + } + if ( isDefined( player.screecher_weapon ) ) + { + self.hint_string = ""; + return 0; + } + return 1; +} + +anystub_get_unitrigger_origin() +{ + if ( isDefined( self.origin_parent ) ) + { + return self.origin_parent.origin; + } + return self.origin; +} + +anystub_on_spawn_trigger( trigger ) +{ + if ( isDefined( self.link_parent ) ) + { + trigger enablelinkto(); + trigger linkto( self.link_parent ); + trigger setmovingplatformenabled( 1 ); + } +} + +buildables_watch_swipes() +{ + self endon( "disconnect" ); + self notify( "buildables_watch_swipes" ); + self endon( "buildables_watch_swipes" ); + while ( 1 ) + { + self waittill( "melee_swipe", zombie ); + while ( distancesquared( zombie.origin, self.origin ) > ( zombie.meleeattackdist * zombie.meleeattackdist ) ) + { + continue; + } + trigger = level._unitriggers.trigger_pool[ self getentitynumber() ]; + if ( isDefined( trigger ) && isDefined( trigger.stub.piece ) ) + { + piece = trigger.stub.piece; + if ( !isDefined( piece.damage ) ) + { + piece.damage = 0; + } + piece.damage++; + if ( piece.damage > 12 ) + { + thread maps/mp/zombies/_zm_equipment::equipment_disappear_fx( trigger.stub maps/mp/zombies/_zm_unitrigger::unitrigger_origin() ); + piece maps/mp/zombies/_zm_buildables::piece_unspawn(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + if ( isalive( self ) ) + { + self playlocalsound( level.zmb_laugh_alias ); + } + } + } + } +} + +explosiondamage( damage, pos ) +{ +/# + println( "ZM BUILDABLE Explode do " + damage + " damage to " + self.name + "\n" ); +#/ + self dodamage( damage, pos ); +} + +add_zombie_buildable( buildable_name, hint, building, bought ) +{ + if ( !isDefined( level.zombie_include_buildables ) ) + { + level.zombie_include_buildables = []; + } + if ( isDefined( level.zombie_include_buildables ) && !isDefined( level.zombie_include_buildables[ buildable_name ] ) ) + { + return; + } + precachestring( hint ); + precachestring( building ); + if ( isDefined( bought ) ) + { + precachestring( bought ); + } + buildable_struct = level.zombie_include_buildables[ buildable_name ]; + if ( !isDefined( level.zombie_buildables ) ) + { + level.zombie_buildables = []; + } + buildable_struct.hint = hint; + buildable_struct.building = building; + buildable_struct.bought = bought; +/# + println( "ZM >> Looking for buildable - " + buildable_struct.name ); +#/ + level.zombie_buildables[ buildable_struct.name ] = buildable_struct; + if ( !level.createfx_enabled ) + { + if ( level.zombie_buildables.size == 1 ) + { + bits = getminbitcountfornum( level.buildable_piece_count ); + registerclientfield( "toplayer", "buildable", 1, bits, "int" ); + } + } +} + +include_zombie_buildable( buiildable_struct ) +{ + if ( !isDefined( level.zombie_include_buildables ) ) + { + level.zombie_include_buildables = []; + } +/# + println( "ZM >> Including buildable - " + buiildable_struct.name ); +#/ + level.zombie_include_buildables[ buiildable_struct.name ] = buiildable_struct; +} + +generate_zombie_buildable_piece( buildablename, modelname, radius, height, drop_offset, hud_icon, onpickup, ondrop, use_spawn_num, part_name, can_reuse, client_field_state ) +{ + precachemodel( modelname ); + if ( isDefined( hud_icon ) ) + { + precacheshader( hud_icon ); + } + piece = spawnstruct(); + buildable_pieces = []; + buildable_pieces_structs = getstructarray( ( buildablename + "_" ) + modelname, "targetname" ); +/# + if ( buildable_pieces_structs.size < 1 ) + { + println( "ERROR: Missing buildable piece <" + buildablename + "> <" + modelname + ">\n" ); +#/ + } + _a204 = buildable_pieces_structs; + index = getFirstArrayKey( _a204 ); + while ( isDefined( index ) ) + { + struct = _a204[ index ]; + buildable_pieces[ index ] = struct; + buildable_pieces[ index ].hasspawned = 0; + index = getNextArrayKey( _a204, index ); + } + piece.spawns = buildable_pieces; + piece.buildablename = buildablename; + piece.modelname = modelname; + piece.hud_icon = hud_icon; + piece.radius = radius; + piece.height = height; + piece.part_name = part_name; + piece.can_reuse = can_reuse; + piece.drop_offset = drop_offset; + piece.max_instances = 256; + piece.onpickup = onpickup; + piece.ondrop = ondrop; + piece.use_spawn_num = use_spawn_num; + piece.client_field_state = client_field_state; + return piece; +} + +manage_multiple_pieces( max_instances ) +{ + self.max_instances = max_instances; + self.managing_pieces = 1; + self.piece_allocated = []; +} + +combine_buildable_pieces( piece1, piece2, piece3 ) +{ + spawns1 = piece1.spawns; + spawns2 = piece2.spawns; + spawns = arraycombine( spawns1, spawns2, 1, 0 ); + if ( isDefined( piece3 ) ) + { + spawns3 = piece3.spawns; + spawns = arraycombine( spawns, spawns3, 1, 0 ); + spawns = array_randomize( spawns ); + piece3.spawns = spawns; + } + else + { + spawns = array_randomize( spawns ); + } + piece1.spawns = spawns; + piece2.spawns = spawns; +} + +add_buildable_piece( piece, part_name, can_reuse ) +{ + if ( !isDefined( self.buildablepieces ) ) + { + self.buildablepieces = []; + } + if ( isDefined( part_name ) ) + { + piece.part_name = part_name; + } + if ( isDefined( can_reuse ) ) + { + piece.can_reuse = can_reuse; + } + self.buildablepieces[ self.buildablepieces.size ] = piece; +} + +create_zombie_buildable_piece( modelname, radius, height, hud_icon ) +{ + piece = generate_zombie_buildable_piece( self.name, modelname, radius, height, hud_icon ); + self add_buildable_piece( piece ); +} + +onplayerlaststand() +{ + piece = self.current_buildable_piece; + if ( isDefined( piece ) ) + { + return_to_start_pos = 0; + if ( isDefined( level.safe_place_for_buildable_piece ) ) + { + if ( !( self [[ level.safe_place_for_buildable_piece ]]( piece ) ) ) + { + return_to_start_pos = 1; + } + } + if ( return_to_start_pos ) + { + piece piece_spawn_at(); + } + else + { + piece piece_spawn_at( self.origin + vectorScale( ( 0, 0, 1 ), 5 ), self.angles ); + } + if ( isDefined( piece.ondrop ) ) + { + piece [[ piece.ondrop ]]( self ); + } + self setclientfieldtoplayer( "buildable", 0 ); + } + self.current_buildable_piece = undefined; + self notify( "piece_released" ); +} + +piecestub_get_unitrigger_origin() +{ + if ( isDefined( self.origin_parent ) ) + { + return self.origin_parent.origin + vectorScale( ( 0, 0, 1 ), 12 ); + } + return self.origin; +} + +generate_piece_unitrigger( classname, origin, angles, flags, radius, script_height, moving ) +{ + if ( !isDefined( radius ) ) + { + radius = 64; + } + if ( !isDefined( script_height ) ) + { + script_height = 64; + } + script_width = script_height; + if ( !isDefined( script_width ) ) + { + script_width = 64; + } + script_length = script_height; + if ( !isDefined( script_length ) ) + { + script_length = 64; + } + unitrigger_stub = spawnstruct(); + unitrigger_stub.origin = origin; + if ( isDefined( script_length ) ) + { + unitrigger_stub.script_length = script_length; + } + else + { + unitrigger_stub.script_length = 13,5; + } + if ( isDefined( script_width ) ) + { + unitrigger_stub.script_width = script_width; + } + else + { + unitrigger_stub.script_width = 27,5; + } + if ( isDefined( script_height ) ) + { + unitrigger_stub.script_height = script_height; + } + else + { + unitrigger_stub.script_height = 24; + } + unitrigger_stub.radius = radius; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + unitrigger_stub.hint_string = &"ZOMBIE_BUILD_PIECE_GRAB"; + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.require_look_at = 0; + switch( classname ) + { + case "trigger_radius": + unitrigger_stub.script_unitrigger_type = "unitrigger_radius"; + break; + case "trigger_radius_use": + unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; + break; + case "trigger_box": + unitrigger_stub.script_unitrigger_type = "unitrigger_box"; + break; + case "trigger_box_use": + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + break; + } + unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.prompt_and_visibility_func = ::piecetrigger_update_prompt; + unitrigger_stub.originfunc = ::piecestub_get_unitrigger_origin; + unitrigger_stub.onspawnfunc = ::anystub_on_spawn_trigger; + if ( isDefined( moving ) && moving ) + { + maps/mp/zombies/_zm_unitrigger::register_unitrigger( unitrigger_stub, ::piece_unitrigger_think ); + } + else + { + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::piece_unitrigger_think ); + } + return unitrigger_stub; +} + +piecetrigger_update_prompt( player ) +{ + can_use = self.stub piecestub_update_prompt( player ); + self setinvisibletoplayer( player, !can_use ); + self sethintstring( self.stub.hint_string ); + return can_use; +} + +piecestub_update_prompt( player ) +{ + if ( !self anystub_update_prompt( player ) ) + { + return 0; + } + if ( isDefined( player.current_buildable_piece ) ) + { + spiece = self.piece; + cpiece = player.current_buildable_piece; + if ( spiece.modelname == cpiece.modelname && spiece.buildablename == cpiece.buildablename ) + { + self.hint_string = ""; + return 0; + } + self.hint_string = &"ZOMBIE_BUILD_PIECE_SWITCH"; + } + else + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_GRAB"; + } + return 1; +} + +piece_unitrigger_think() +{ + self endon( "kill_trigger" ); + while ( 1 ) + { + self waittill( "trigger", player ); + while ( player != self.parent_player ) + { + continue; + } + while ( isDefined( player.screecher_weapon ) ) + { + continue; + } + while ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + } + status = player player_can_take_piece( self.stub.piece ); + if ( !status ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + continue; + } + else + { + player thread player_take_piece( self.stub.piece ); + } + } +} + +player_can_take_piece( piece ) +{ + if ( !isDefined( piece ) ) + { + return 0; + } + return 1; +} + +dbline( from, to ) +{ +/# + time = 20; + while ( time > 0 ) + { + line( from, to, ( 0, 0, 1 ), 0, 1 ); + time -= 0,05; + wait 0,05; +#/ + } +} + +player_throw_piece( piece, origin, dir, return_to_spawn, return_time, endangles ) +{ +/# + assert( isDefined( piece ) ); +#/ + if ( isDefined( piece ) ) + { +/# + thread dbline( origin, origin + dir ); +#/ + pass = 0; + done = 0; + altmodel = undefined; + while ( pass < 2 && !done ) + { + grenade = self magicgrenadetype( "buildable_piece_zm", origin, dir, 30000 ); + grenade thread watch_hit_players(); + grenade ghost(); + if ( !isDefined( altmodel ) ) + { + altmodel = spawn( "script_model", grenade.origin ); + altmodel setmodel( piece.modelname ); + } + altmodel.origin = grenade.angles; + altmodel.angles = grenade.angles; + altmodel linkto( grenade, "", ( 0, 0, 1 ), ( 0, 0, 1 ) ); + grenade.altmodel = altmodel; + grenade waittill( "stationary" ); + grenade_origin = grenade.origin; + grenade_angles = grenade.angles; + landed_on = grenade getgroundent(); + grenade delete(); + if ( isDefined( landed_on ) && landed_on == level ) + { + done = 1; + continue; + } + else + { + origin = grenade_origin; + dir = ( ( dir[ 0 ] * -1 ) / 10, ( dir[ 1 ] * -1 ) / 10, -1 ); + pass++; + } + } + if ( !isDefined( endangles ) ) + { + endangles = grenade_angles; + } + piece piece_spawn_at( grenade_origin, endangles ); + if ( isDefined( altmodel ) ) + { + altmodel delete(); + } + if ( isDefined( piece.ondrop ) ) + { + piece [[ piece.ondrop ]]( self ); + } + if ( isDefined( return_to_spawn ) && return_to_spawn ) + { + piece piece_wait_and_return( return_time ); + } + } +} + +watch_hit_players() +{ + self endon( "death" ); + self endon( "stationary" ); + while ( isDefined( self ) ) + { + self waittill( "grenade_bounce", pos, normal, ent ); + if ( isplayer( ent ) ) + { + ent explosiondamage( 25, pos ); + } + } +} + +piece_wait_and_return( return_time ) +{ + self endon( "pickup" ); + wait 0,15; + if ( isDefined( level.exploding_jetgun_fx ) ) + { + playfxontag( level.exploding_jetgun_fx, self.model, "tag_origin" ); + } + else + { + playfxontag( level._effect[ "powerup_on" ], self.model, "tag_origin" ); + } + wait ( return_time - 6 ); + self piece_hide(); + wait 1; + self piece_show(); + wait 1; + self piece_hide(); + wait 1; + self piece_show(); + wait 1; + self piece_hide(); + wait 1; + self piece_show(); + wait 1; + self notify( "respawn" ); + self piece_unspawn(); + self piece_spawn_at(); +} + +player_return_piece_to_original_spawn() +{ + self notify( "piece_released" ); + piece = self.current_buildable_piece; + self.current_buildable_piece = undefined; + if ( isDefined( piece ) ) + { + piece piece_spawn_at(); + self setclientfieldtoplayer( "buildable", 0 ); + } +} + +player_drop_piece_on_death() +{ + self notify( "piece_released" ); + self endon( "piece_released" ); + origin = self.origin; + angles = self.angles; + piece = self.current_buildable_piece; + self waittill( "death_or_disconnect" ); + piece piece_spawn_at( origin, angles ); + if ( isDefined( self ) ) + { + self setclientfieldtoplayer( "buildable", 0 ); + } +} + +player_drop_piece( piece ) +{ + if ( !isDefined( piece ) ) + { + piece = self.current_buildable_piece; + } + if ( isDefined( piece ) ) + { + piece.damage = 0; + piece piece_spawn_at( self.origin, self.angles ); + self setclientfieldtoplayer( "buildable", 0 ); + if ( isDefined( piece.ondrop ) ) + { + piece [[ piece.ondrop ]]( self ); + } + } + self.current_buildable_piece = undefined; + self notify( "piece_released" ); +} + +player_take_piece( piece ) +{ + damage = piece.damage; + if ( isDefined( self.current_buildable_piece ) ) + { + other_piece = self.current_buildable_piece; + self player_drop_piece( self.current_buildable_piece ); + other_piece.damage = damage; + self do_player_general_vox( "general", "build_swap" ); + } + if ( isDefined( piece.onpickup ) ) + { + piece [[ piece.onpickup ]]( self ); + } + if ( isDefined( piece.client_field_state ) ) + { + self setclientfieldtoplayer( "buildable", piece.client_field_state ); + } + piece piece_unspawn(); + piece notify( "pickup" ); + self.current_buildable_piece = piece; + self thread player_drop_piece_on_death(); + self track_buildable_piece_pickedup( piece ); +} + +player_destroy_piece( piece ) +{ + if ( !isDefined( piece ) ) + { + piece = self.current_buildable_piece; + } + if ( isDefined( piece ) ) + { + self setclientfieldtoplayer( "buildable", 0 ); + } + self.current_buildable_piece = undefined; + self notify( "piece_released" ); +} + +claim_location( location ) +{ + if ( !isDefined( level.buildable_claimed_locations ) ) + { + level.buildable_claimed_locations = []; + } + if ( !isDefined( level.buildable_claimed_locations[ location ] ) ) + { + level.buildable_claimed_locations[ location ] = 1; + return 1; + } + return 0; +} + +is_point_in_build_trigger( point ) +{ + candidate_list = []; + _a726 = level.zones; + _k726 = getFirstArrayKey( _a726 ); + while ( isDefined( _k726 ) ) + { + zone = _a726[ _k726 ]; + if ( isDefined( zone.unitrigger_stubs ) ) + { + candidate_list = arraycombine( candidate_list, zone.unitrigger_stubs, 1, 0 ); + } + _k726 = getNextArrayKey( _a726, _k726 ); + } + valid_range = 128; + closest = maps/mp/zombies/_zm_unitrigger::get_closest_unitriggers( point, candidate_list, valid_range ); + index = 0; + while ( index < closest.size ) + { + if ( isDefined( closest[ index ].registered ) && closest[ index ].registered && isDefined( closest[ index ].piece ) ) + { + return 1; + } + index++; + } + return 0; +} + +piece_allocate_spawn( piecespawn ) +{ + self.current_spawn = 0; + self.managed_spawn = 1; + self.piecespawn = piecespawn; + if ( self.spawns.size >= 1 && self.spawns.size > 1 ) + { + any_good = 0; + any_okay = 0; + totalweight = 0; + spawnweights = []; + i = 0; + while ( i < self.spawns.size ) + { + if ( isDefined( piecespawn.piece_allocated[ i ] ) && piecespawn.piece_allocated[ i ] ) + { + spawnweights[ i ] = 0; + } + else + { + if ( is_point_in_build_trigger( self.spawns[ i ].origin ) ) + { + any_okay = 1; + spawnweights[ i ] = 0,01; + break; + } + else + { + any_good = 1; + spawnweights[ i ] = 1; + } + } + totalweight += spawnweights[ i ]; + i++; + } +/# + if ( !any_good ) + { + assert( any_okay, "There is nowhere to spawn this piece" ); + } +#/ + if ( any_good ) + { + totalweight = float( int( totalweight ) ); + } + r = randomfloat( totalweight ); + i = 0; + while ( i < self.spawns.size ) + { + if ( !any_good || spawnweights[ i ] >= 1 ) + { + r -= spawnweights[ i ]; + if ( r < 0 ) + { + self.current_spawn = i; + piecespawn.piece_allocated[ self.current_spawn ] = 1; + return; + } + } + i++; + } + self.current_spawn = randomint( self.spawns.size ); + piecespawn.piece_allocated[ self.current_spawn ] = 1; + } +} + +piece_deallocate_spawn() +{ + if ( isDefined( self.current_spawn ) ) + { + self.piecespawn.piece_allocated[ self.current_spawn ] = 0; + self.current_spawn = undefined; + } + self.start_origin = undefined; +} + +piece_pick_random_spawn() +{ + self.current_spawn = 0; + while ( self.spawns.size >= 1 && self.spawns.size > 1 ) + { + self.current_spawn = randomint( self.spawns.size ); + while ( isDefined( self.spawns[ self.current_spawn ].claim_location ) && !claim_location( self.spawns[ self.current_spawn ].claim_location ) ) + { + arrayremoveindex( self.spawns, self.current_spawn ); + if ( self.spawns.size < 1 ) + { + self.current_spawn = 0; +/# + println( "ERROR: All buildable spawn locations claimed" ); +#/ + return; + } + self.current_spawn = randomint( self.spawns.size ); + } + } +} + +piece_set_spawn( num ) +{ + self.current_spawn = 0; + if ( self.spawns.size >= 1 && self.spawns.size > 1 ) + { + self.current_spawn = int( min( num, self.spawns.size - 1 ) ); + } +} + +piece_spawn_in( piecespawn ) +{ + if ( self.spawns.size < 1 ) + { + return; + } + if ( isDefined( self.managed_spawn ) && self.managed_spawn ) + { + if ( !isDefined( self.current_spawn ) ) + { + self piece_allocate_spawn( self.piecespawn ); + } + } + if ( !isDefined( self.current_spawn ) ) + { + self.current_spawn = 0; + } + spawndef = self.spawns[ self.current_spawn ]; + self.unitrigger = generate_piece_unitrigger( "trigger_radius_use", spawndef.origin + vectorScale( ( 0, 0, 1 ), 12 ), spawndef.angles, 0, piecespawn.radius, piecespawn.height, 0 ); + self.unitrigger.piece = self; + self.radius = piecespawn.radius; + self.height = piecespawn.height; + self.buildablename = piecespawn.buildablename; + self.modelname = piecespawn.modelname; + self.hud_icon = piecespawn.hud_icon; + self.part_name = piecespawn.part_name; + self.drop_offset = piecespawn.drop_offset; + self.start_origin = spawndef.origin; + self.start_angles = spawndef.angles; + self.client_field_state = piecespawn.client_field_state; + self.model = spawn( "script_model", self.start_origin ); + if ( isDefined( self.start_angles ) ) + { + self.model.angles = self.start_angles; + } + self.model setmodel( piecespawn.modelname ); + if ( isDefined( piecespawn.onspawn ) ) + { + self [[ piecespawn.onspawn ]](); + } + self.model ghostindemo(); + self.model.hud_icon = piecespawn.hud_icon; + self.piecespawn = piecespawn; + self.unitrigger.origin_parent = self.model; + self.building = undefined; +} + +piece_spawn_at_with_delay( origin, angles, delay ) +{ + wait delay; + piece_spawn_at( origin, angles ); +} + +piece_spawn_at( origin, angles ) +{ + if ( self.spawns.size < 1 ) + { + return; + } + if ( isDefined( self.managed_spawn ) && self.managed_spawn ) + { + if ( !isDefined( self.current_spawn ) && !isDefined( origin ) ) + { + self piece_allocate_spawn( self.piecespawn ); + spawndef = self.spawns[ self.current_spawn ]; + self.start_origin = spawndef.origin; + self.start_angles = spawndef.angles; + } + } + else + { + if ( !isDefined( self.current_spawn ) ) + { + self.current_spawn = 0; + } + } + unitrigger_offset = vectorScale( ( 0, 0, 1 ), 12 ); + if ( !isDefined( origin ) ) + { + origin = self.start_origin; + } + else + { + origin += ( 0, 0, self.drop_offset ); + unitrigger_offset -= ( 0, 0, self.drop_offset ); + } + if ( !isDefined( angles ) ) + { + angles = self.start_angles; + } +/# + if ( !isDefined( level.drop_offset ) ) + { + level.drop_offset = 0; + } + origin += ( 0, 0, level.drop_offset ); + unitrigger_offset -= ( 0, 0, level.drop_offset ); +#/ + self.model = spawn( "script_model", origin ); + if ( isDefined( angles ) ) + { + self.model.angles = angles; + } + self.model setmodel( self.modelname ); + if ( isDefined( level.equipment_safe_to_drop ) ) + { + if ( !( [[ level.equipment_safe_to_drop ]]( self.model ) ) ) + { + origin = self.start_origin; + angles = self.start_angles; + self.model.origin = origin; + self.model.angles = angles; + } + } + if ( isDefined( self.onspawn ) ) + { + self [[ self.onspawn ]](); + } + if ( isDefined( self.model.canmove ) ) + { + self.unitrigger = generate_piece_unitrigger( "trigger_radius_use", origin + unitrigger_offset, angles, 0, self.radius, self.height, self.model.canmove ); + } + self.unitrigger.piece = self; + self.model.hud_icon = self.hud_icon; + self.unitrigger.origin_parent = self.model; + self.building = undefined; +} + +piece_unspawn() +{ + if ( isDefined( self.managed_spawn ) && self.managed_spawn ) + { + self piece_deallocate_spawn(); + } + if ( isDefined( self.model ) ) + { + self.model delete(); + } + self.model = undefined; + if ( isDefined( self.unitrigger ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger ); + } + self.unitrigger = undefined; +} + +piece_hide() +{ + if ( isDefined( self.model ) ) + { + self.model ghost(); + } +} + +piece_show() +{ + if ( isDefined( self.model ) ) + { + self.model show(); + } +} + +generate_piece( buildable_piece_spawns ) +{ + piece = spawnstruct(); + piece.spawns = buildable_piece_spawns.spawns; + if ( isDefined( buildable_piece_spawns.managing_pieces ) && buildable_piece_spawns.managing_pieces ) + { + piece piece_allocate_spawn( buildable_piece_spawns ); + } + else + { + if ( isDefined( buildable_piece_spawns.use_spawn_num ) ) + { + piece piece_set_spawn( buildable_piece_spawns.use_spawn_num ); + } + else + { + piece piece_pick_random_spawn(); + } + } + piece piece_spawn_in( buildable_piece_spawns ); + if ( piece.spawns.size >= 1 ) + { + piece.hud_icon = buildable_piece_spawns.hud_icon; + } + if ( isDefined( buildable_piece_spawns.onpickup ) ) + { + piece.onpickup = buildable_piece_spawns.onpickup; + } + else + { + piece.onpickup = ::onpickuputs; + } + if ( isDefined( buildable_piece_spawns.ondrop ) ) + { + piece.ondrop = buildable_piece_spawns.ondrop; + } + else + { + piece.ondrop = ::ondroputs; + } + return piece; +} + +buildable_piece_unitriggers( buildable_name, origin ) +{ +/# + assert( isDefined( buildable_name ) ); +#/ +/# + assert( isDefined( level.zombie_buildables[ buildable_name ] ), "Called buildable_think() without including the buildable - " + buildable_name ); +#/ + buildable = level.zombie_buildables[ buildable_name ]; + if ( !isDefined( buildable.buildablepieces ) ) + { + buildable.buildablepieces = []; + } + flag_wait( "start_zombie_round_logic" ); + buildablezone = spawnstruct(); + buildablezone.buildable_name = buildable_name; + if ( !isDefined( buildablezone.pieces ) ) + { + buildablezone.pieces = []; + } + buildablepickups = []; + _a1064 = buildable.buildablepieces; + _k1064 = getFirstArrayKey( _a1064 ); + while ( isDefined( _k1064 ) ) + { + buildablepiece = _a1064[ _k1064 ]; + if ( !isDefined( buildablepiece.generated_instances ) ) + { + buildablepiece.generated_instances = 0; + } + if ( isDefined( buildablepiece.generated_piece ) && isDefined( buildablepiece.can_reuse ) && buildablepiece.can_reuse ) + { + piece = buildablepiece.generated_piece; + } + else + { + if ( buildablepiece.generated_instances >= buildablepiece.max_instances ) + { + piece = buildablepiece.generated_piece; + break; + } + else + { + piece = generate_piece( buildablepiece ); + buildablepiece.generated_piece = piece; + buildablepiece.generated_instances++; + } + } + buildablezone.pieces[ buildablezone.pieces.size ] = piece; + _k1064 = getNextArrayKey( _a1064, _k1064 ); + } + buildablezone.stub = self; + return buildablezone; +} + +hide_buildable_table_model( trigger_targetname ) +{ + trig = getent( trigger_targetname, "targetname" ); + if ( !isDefined( trig ) ) + { + return; + } + if ( isDefined( trig.target ) ) + { + model = getent( trig.target, "targetname" ); + if ( isDefined( model ) ) + { + model hide(); + model notsolid(); + } + } +} + +setup_unitrigger_buildable( trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + trig = getent( trigger_targetname, "targetname" ); + if ( !isDefined( trig ) ) + { + return; + } + return setup_unitrigger_buildable_internal( trig, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ); +} + +setup_unitrigger_buildable_array( trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + triggers = getentarray( trigger_targetname, "targetname" ); + stubs = []; + _a1124 = triggers; + _k1124 = getFirstArrayKey( _a1124 ); + while ( isDefined( _k1124 ) ) + { + trig = _a1124[ _k1124 ]; + stubs[ stubs.size ] = setup_unitrigger_buildable_internal( trig, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ); + _k1124 = getNextArrayKey( _a1124, _k1124 ); + } + return stubs; +} + +setup_unitrigger_buildable_internal( trig, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + if ( !isDefined( trig ) ) + { + return; + } + unitrigger_stub = spawnstruct(); + unitrigger_stub.buildablestruct = level.zombie_include_buildables[ equipname ]; + angles = trig.script_angles; + if ( !isDefined( angles ) ) + { + angles = ( 0, 0, 1 ); + } + unitrigger_stub.origin = trig.origin + ( anglesToRight( angles ) * -6 ); + unitrigger_stub.angles = trig.angles; + if ( isDefined( trig.script_angles ) ) + { + unitrigger_stub.angles = trig.script_angles; + } + unitrigger_stub.equipname = equipname; + unitrigger_stub.weaponname = weaponname; + unitrigger_stub.trigger_hintstring = trigger_hintstring; + unitrigger_stub.delete_trigger = delete_trigger; + unitrigger_stub.built = 0; + unitrigger_stub.persistent = persistent; + unitrigger_stub.usetime = int( 3000 ); + unitrigger_stub.onbeginuse = ::onbeginuseuts; + unitrigger_stub.onenduse = ::onenduseuts; + unitrigger_stub.onuse = ::onuseplantobjectuts; + unitrigger_stub.oncantuse = ::oncantuseuts; + if ( isDefined( trig.script_length ) ) + { + unitrigger_stub.script_length = trig.script_length; + } + else + { + unitrigger_stub.script_length = 32; + } + if ( isDefined( trig.script_width ) ) + { + unitrigger_stub.script_width = trig.script_width; + } + else + { + unitrigger_stub.script_width = 100; + } + if ( isDefined( trig.script_height ) ) + { + unitrigger_stub.script_height = trig.script_height; + } + else + { + unitrigger_stub.script_height = 64; + } + unitrigger_stub.target = trig.target; + unitrigger_stub.targetname = trig.targetname; + unitrigger_stub.script_noteworthy = trig.script_noteworthy; + unitrigger_stub.script_parameters = trig.script_parameters; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + if ( isDefined( level.zombie_buildables[ equipname ].hint ) ) + { + unitrigger_stub.hint_string = level.zombie_buildables[ equipname ].hint; + } + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.require_look_at = 1; + unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.prompt_and_visibility_func = ::buildabletrigger_update_prompt; + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::buildable_place_think ); + unitrigger_stub.piece_trigger = trig; + trig.trigger_stub = unitrigger_stub; + unitrigger_stub.zombie_weapon_upgrade = trig.zombie_weapon_upgrade; + if ( isDefined( unitrigger_stub.target ) ) + { + unitrigger_stub.model = getent( unitrigger_stub.target, "targetname" ); + if ( isDefined( unitrigger_stub.model ) ) + { + if ( isDefined( unitrigger_stub.zombie_weapon_upgrade ) ) + { + unitrigger_stub.model useweaponhidetags( unitrigger_stub.zombie_weapon_upgrade ); + } + unitrigger_stub.model hide(); + unitrigger_stub.model notsolid(); + } + } + unitrigger_stub.buildablezone = unitrigger_stub buildable_piece_unitriggers( equipname, unitrigger_stub.origin ); + if ( delete_trigger ) + { + trig delete(); + } + level.buildable_stubs[ level.buildable_stubs.size ] = unitrigger_stub; + return unitrigger_stub; +} + +buildable_has_piece( piece ) +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( self.pieces[ i ].modelname == piece.modelname && self.pieces[ i ].buildablename == piece.buildablename ) + { + return 1; + } + i++; + } + return 0; +} + +buildable_set_piece_built( piece ) +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( self.pieces[ i ].modelname == piece.modelname && self.pieces[ i ].buildablename == piece.buildablename ) + { + self.pieces[ i ].built = 1; + } + i++; + } +} + +buildable_set_piece_building( piece ) +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( self.pieces[ i ].modelname == piece.modelname && self.pieces[ i ].buildablename == piece.buildablename ) + { + self.pieces[ i ] = piece; + self.pieces[ i ].building = 1; + } + i++; + } +} + +buildable_clear_piece_building( piece ) +{ + if ( isDefined( piece ) ) + { + piece.building = 0; + } +} + +buildable_is_piece_built( piece ) +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( self.pieces[ i ].modelname == piece.modelname && self.pieces[ i ].buildablename == piece.buildablename ) + { + if ( isDefined( self.pieces[ i ].built ) ) + { + return self.pieces[ i ].built; + } + } + i++; + } + return 0; +} + +buildable_is_piece_building( piece ) +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( self.pieces[ i ].modelname == piece.modelname && self.pieces[ i ].buildablename == piece.buildablename ) + { + if ( isDefined( self.pieces[ i ].building ) && self.pieces[ i ].building ) + { + return self.pieces[ i ] == piece; + } + } + i++; + } + return 0; +} + +buildable_is_piece_built_or_building( piece ) +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( self.pieces[ i ].modelname == piece.modelname && self.pieces[ i ].buildablename == piece.buildablename ) + { + if ( isDefined( self.pieces[ i ].built ) && !self.pieces[ i ].built ) + { + if ( isDefined( self.pieces[ i ].building ) ) + { + return self.pieces[ i ].building; + } + } + } + i++; + } + return 0; +} + +buildable_all_built() +{ + i = 0; + while ( i < self.pieces.size ) + { + if ( isDefined( self.pieces[ i ].built ) && !self.pieces[ i ].built ) + { + return 0; + } + i++; + } + return 1; +} + +player_can_build( buildable, continuing ) +{ + if ( !isDefined( buildable ) ) + { + return 0; + } + if ( !isDefined( self.current_buildable_piece ) ) + { + return 0; + } + if ( !buildable buildable_has_piece( self.current_buildable_piece ) ) + { + return 0; + } + if ( isDefined( continuing ) && continuing ) + { + if ( buildable buildable_is_piece_built( self.current_buildable_piece ) ) + { + return 0; + } + } + else + { + if ( buildable buildable_is_piece_built_or_building( self.current_buildable_piece ) ) + { + return 0; + } + } + if ( isDefined( buildable.stub ) && isDefined( buildable.stub.custom_buildablestub_update_prompt ) && isDefined( buildable.stub.playertrigger[ 0 ] ) && isDefined( buildable.stub.playertrigger[ 0 ].stub ) && !( buildable.stub.playertrigger[ 0 ].stub [[ buildable.stub.custom_buildablestub_update_prompt ]]( self, 1, buildable.stub.playertrigger[ 0 ] ) ) ) + { + return 0; + } + return 1; +} + +player_build( buildable ) +{ + buildable buildable_set_piece_built( self.current_buildable_piece ); + player_destroy_piece( self.current_buildable_piece ); + while ( isDefined( buildable.stub.model ) ) + { + i = 0; + while ( i < buildable.pieces.size ) + { + if ( isDefined( buildable.pieces[ i ].part_name ) ) + { + buildable.stub.model notsolid(); + if ( isDefined( buildable.pieces[ i ].built ) && !buildable.pieces[ i ].built ) + { + buildable.stub.model hidepart( buildable.pieces[ i ].part_name ); + i++; + continue; + } + else + { + buildable.stub.model show(); + buildable.stub.model showpart( buildable.pieces[ i ].part_name ); + } + } + i++; + } + } + self track_buildable_pieces_built( buildable ); + if ( buildable buildable_all_built() ) + { + self player_finish_buildable( buildable ); + buildable.stub buildablestub_finish_build( self ); + self track_buildables_built( buildable ); + if ( isDefined( level.buildable_built_custom_func ) ) + { + self thread [[ level.buildable_built_custom_func ]]( buildable ); + } + self playsound( "zmb_buildable_complete" ); + } + else + { + self playsound( "zmb_buildable_piece_add" ); +/# + assert( isDefined( level.zombie_buildables[ buildable.buildable_name ].building ), "Missing builing hint" ); +#/ + if ( isDefined( level.zombie_buildables[ buildable.buildable_name ].building ) ) + { + return level.zombie_buildables[ buildable.buildable_name ].building; + } + } + return ""; +} + +player_finish_buildable( buildable ) +{ + buildable.built = 1; + buildable.stub.built = 1; + buildable notify( "built" ); + level.buildables_built[ buildable.buildable_name ] = 1; + level notify( buildable.buildable_name + "_built" ); +} + +buildablestub_finish_build( player ) +{ + player player_finish_buildable( self.buildablezone ); +} + +buildablestub_remove() +{ + arrayremovevalue( level.buildable_stubs, self ); +} + +buildabletrigger_update_prompt( player ) +{ + can_use = self.stub buildablestub_update_prompt( player ); + self sethintstring( self.stub.hint_string ); + return can_use; +} + +buildablestub_update_prompt( player ) +{ + if ( !self anystub_update_prompt( player ) ) + { + return 0; + } + can_use = 1; + if ( isDefined( self.custom_buildablestub_update_prompt ) && !( self [[ self.custom_buildablestub_update_prompt ]]( player ) ) ) + { + return 0; + } + if ( isDefined( self.built ) && !self.built ) + { + if ( !isDefined( player.current_buildable_piece ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_MORE"; + return 0; + } + else + { + if ( !self.buildablezone buildable_has_piece( player.current_buildable_piece ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_WRONG"; + return 0; + } + else + { +/# + assert( isDefined( level.zombie_buildables[ self.equipname ].hint ), "Missing buildable hint" ); +#/ + if ( isDefined( level.zombie_buildables[ self.equipname ].hint ) ) + { + self.hint_string = level.zombie_buildables[ self.equipname ].hint; + } + else + { + self.hint_string = "Missing buildable hint"; + } + } + } + } + else + { + if ( self.persistent == 1 ) + { + if ( maps/mp/zombies/_zm_equipment::is_limited_equipment( self.weaponname ) && maps/mp/zombies/_zm_equipment::limited_equipment_in_use( self.weaponname ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_ONLY_ONE"; + return 0; + } + if ( player has_player_equipment( self.weaponname ) ) + { + self.hint_string = &"ZOMBIE_BUILD_PIECE_HAVE_ONE"; + return 0; + } + self.hint_string = self.trigger_hintstring; + } + else if ( self.persistent == 2 ) + { + if ( !maps/mp/zombies/_zm_weapons::limited_weapon_below_quota( self.weaponname, undefined ) ) + { + self.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + return 0; + } + else + { + if ( isDefined( self.bought ) && self.bought ) + { + self.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + return 0; + } + } + self.hint_string = self.trigger_hintstring; + } + else + { + self.hint_string = ""; + return 0; + } + } + return 1; +} + +player_continue_building( buildablezone ) +{ + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || self in_revive_trigger() ) + { + return 0; + } + if ( self isthrowinggrenade() ) + { + return 0; + } + if ( !self player_can_build( buildablezone, 1 ) ) + { + return 0; + } + if ( isDefined( self.screecher ) ) + { + return 0; + } + if ( !self usebuttonpressed() ) + { + return 0; + } + if ( !buildablezone buildable_is_piece_building( self.current_buildable_piece ) ) + { + return 0; + } + trigger = buildablezone.stub maps/mp/zombies/_zm_unitrigger::unitrigger_trigger( self ); + if ( buildablezone.stub.script_unitrigger_type == "unitrigger_radius_use" ) + { + torigin = buildablezone.stub unitrigger_origin(); + porigin = self geteye(); + radius_sq = 2,25 * buildablezone.stub.radius * buildablezone.stub.radius; + if ( distance2dsquared( torigin, porigin ) > radius_sq ) + { + return 0; + } + } + else + { + if ( !isDefined( trigger ) || !trigger istouching( self ) ) + { + return 0; + } + } + if ( isDefined( buildablezone.stub.require_look_at ) && buildablezone.stub.require_look_at && !self is_player_looking_at( trigger.origin, 0,4 ) ) + { + return 0; + } + return 1; +} + +player_progress_bar_update( start_time, build_time ) +{ + self endon( "entering_last_stand" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "buildable_progress_end" ); + while ( isDefined( self ) && ( getTime() - start_time ) < build_time ) + { + progress = ( getTime() - start_time ) / build_time; + if ( progress < 0 ) + { + progress = 0; + } + if ( progress > 1 ) + { + progress = 1; + } + self.usebar updatebar( progress ); + wait 0,05; + } +} + +player_progress_bar( start_time, build_time ) +{ + self.usebar = self createprimaryprogressbar(); + self.usebartext = self createprimaryprogressbartext(); + self.usebartext settext( &"ZOMBIE_BUILDING" ); + if ( isDefined( self ) && isDefined( start_time ) && isDefined( build_time ) ) + { + self player_progress_bar_update( start_time, build_time ); + } + self.usebartext destroyelem(); + self.usebar destroyelem(); +} + +buildable_use_hold_think_internal( player ) +{ + wait 0,01; + if ( !isDefined( self ) ) + { + self notify( "build_failed" ); + if ( isDefined( player.buildableaudio ) ) + { + player.buildableaudio delete(); + player.buildableaudio = undefined; + } + return; + } + if ( !isDefined( self.usetime ) ) + { + self.usetime = int( 3000 ); + } + self.build_time = self.usetime; + self.build_start_time = getTime(); + build_time = self.build_time; + build_start_time = self.build_start_time; + player disable_player_move_states( 1 ); + player increment_is_drinking(); + orgweapon = player getcurrentweapon(); + player giveweapon( "zombie_builder_zm" ); + player switchtoweapon( "zombie_builder_zm" ); + self.stub.buildablezone buildable_set_piece_building( player.current_buildable_piece ); + player thread player_progress_bar( build_start_time, build_time ); + if ( isDefined( level.buildable_build_custom_func ) ) + { + player thread [[ level.buildable_build_custom_func ]]( self.stub ); + } + while ( isDefined( self ) && player player_continue_building( self.stub.buildablezone ) && ( getTime() - self.build_start_time ) < self.build_time ) + { + wait 0,05; + } + player notify( "buildable_progress_end" ); + player maps/mp/zombies/_zm_weapons::switch_back_primary_weapon( orgweapon ); + player takeweapon( "zombie_builder_zm" ); + if ( isDefined( player.is_drinking ) && player.is_drinking ) + { + player decrement_is_drinking(); + } + player enable_player_move_states(); + if ( isDefined( self ) && player player_continue_building( self.stub.buildablezone ) && ( getTime() - self.build_start_time ) >= self.build_time ) + { + buildable_clear_piece_building( player.current_buildable_piece ); + self notify( "build_succeed" ); + } + else + { + if ( isDefined( player.buildableaudio ) ) + { + player.buildableaudio delete(); + player.buildableaudio = undefined; + } + buildable_clear_piece_building( player.current_buildable_piece ); + self notify( "build_failed" ); + } +} + +buildable_play_build_fx( player ) +{ + self endon( "kill_trigger" ); + self endon( "build_succeed" ); + self endon( "build_failed" ); + while ( 1 ) + { + playfx( level._effect[ "building_dust" ], player getplayercamerapos(), player.angles ); + wait 0,5; + } +} + +buildable_use_hold_think( player ) +{ + self thread buildable_play_build_fx( player ); + self thread buildable_use_hold_think_internal( player ); + retval = self waittill_any_return( "build_succeed", "build_failed" ); + if ( retval == "build_succeed" ) + { + return 1; + } + return 0; +} + +buildable_place_think() +{ + self endon( "kill_trigger" ); + player_built = undefined; + while ( isDefined( self.stub.built ) && !self.stub.built ) + { + self waittill( "trigger", player ); + while ( player != self.parent_player ) + { + continue; + } + while ( isDefined( player.screecher_weapon ) ) + { + continue; + } + while ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + } + status = player player_can_build( self.stub.buildablezone ); + if ( !status ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + if ( isDefined( self.stub.oncantuse ) ) + { + self.stub [[ self.stub.oncantuse ]]( player ); + } + continue; + } + else + { + if ( isDefined( self.stub.onbeginuse ) ) + { + self.stub [[ self.stub.onbeginuse ]]( player ); + } + result = self buildable_use_hold_think( player ); + team = player.pers[ "team" ]; + if ( isDefined( self.stub.onenduse ) ) + { + self.stub [[ self.stub.onenduse ]]( team, player, result ); + } + while ( !result ) + { + continue; + } + if ( isDefined( self.stub.onuse ) ) + { + self.stub [[ self.stub.onuse ]]( player ); + } + prompt = player player_build( self.stub.buildablezone ); + player_built = player; + self.stub.hint_string = prompt; + self sethintstring( self.stub.hint_string ); + } + } + if ( isDefined( player_built ) ) + { + } + if ( self.stub.persistent == 0 ) + { + self.stub buildablestub_remove(); + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.stub ); + return; + } + if ( self.stub.persistent == 3 ) + { + stub_unbuild_buildable( self.stub, 1 ); + return; + } + if ( self.stub.persistent == 2 ) + { + if ( isDefined( player_built ) ) + { + self buildabletrigger_update_prompt( player_built ); + } + if ( !maps/mp/zombies/_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + self sethintstring( self.stub.hint_string ); + return; + } + if ( isDefined( self.stub.bought ) && self.stub.bought ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + self sethintstring( self.stub.hint_string ); + return; + } + if ( isDefined( self.stub.model ) ) + { + self.stub.model notsolid(); + self.stub.model show(); + } + while ( self.stub.persistent == 2 ) + { + self waittill( "trigger", player ); + while ( isDefined( player.screecher_weapon ) ) + { + continue; + } + if ( !maps/mp/zombies/_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + self sethintstring( self.stub.hint_string ); + return; + } + if ( isDefined( self.stub.built ) && !self.stub.built ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } + while ( player != self.parent_player ) + { + continue; + } + while ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + } + self.stub.bought = 1; + if ( isDefined( self.stub.model ) ) + { + self.stub.model thread model_fly_away(); + } + player maps/mp/zombies/_zm_weapons::weapon_give( self.stub.weaponname ); + if ( isDefined( level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ) ) + { + self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player ); + } + if ( !maps/mp/zombies/_zm_weapons::limited_weapon_below_quota( self.stub.weaponname, undefined ) ) + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX_LIMITED"; + } + else + { + self.stub.hint_string = &"ZOMBIE_GO_TO_THE_BOX"; + } + self sethintstring( self.stub.hint_string ); + player track_buildables_pickedup( self.stub.weaponname ); + } + } + else while ( !isDefined( player_built ) || self buildabletrigger_update_prompt( player_built ) ) + { + if ( isDefined( self.stub.model ) ) + { + self.stub.model notsolid(); + self.stub.model show(); + } + while ( self.stub.persistent == 1 ) + { + self waittill( "trigger", player ); + while ( isDefined( player.screecher_weapon ) ) + { + continue; + } + if ( isDefined( self.stub.built ) && !self.stub.built ) + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + return; + } + while ( player != self.parent_player ) + { + continue; + } + while ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + } + while ( player has_player_equipment( self.stub.weaponname ) ) + { + continue; + } + if ( !maps/mp/zombies/_zm_equipment::is_limited_equipment( self.stub.weaponname ) || !maps/mp/zombies/_zm_equipment::limited_equipment_in_use( self.stub.weaponname ) ) + { + player maps/mp/zombies/_zm_equipment::equipment_buy( self.stub.weaponname ); + player giveweapon( self.stub.weaponname ); + player setweaponammoclip( self.stub.weaponname, 1 ); + if ( isDefined( level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ) ) + { + self [[ level.zombie_include_buildables[ self.stub.equipname ].onbuyweapon ]]( player ); + } + if ( self.stub.weaponname != "keys_zm" ) + { + player setactionslot( 1, "weapon", self.stub.weaponname ); + } + if ( isDefined( level.zombie_buildables[ self.stub.equipname ].bought ) ) + { + self.stub.hint_string = level.zombie_buildables[ self.stub.equipname ].bought; + } + else + { + self.stub.hint_string = ""; + } + self sethintstring( self.stub.hint_string ); + player track_buildables_pickedup( self.stub.weaponname ); + continue; + } + else + { + self.stub.hint_string = ""; + self sethintstring( self.stub.hint_string ); + } + } + } +} + +model_fly_away() +{ + self moveto( self.origin + vectorScale( ( 0, 0, 1 ), 40 ), 3 ); + direction = self.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + self vibrate( direction, 10, 0,5, 4 ); + self waittill( "movedone" ); + self hide(); + playfx( level._effect[ "poltergeist" ], self.origin ); +} + +find_buildable_stub( equipname ) +{ + _a1921 = level.buildable_stubs; + _k1921 = getFirstArrayKey( _a1921 ); + while ( isDefined( _k1921 ) ) + { + stub = _a1921[ _k1921 ]; + if ( stub.equipname == equipname ) + { + return stub; + } + _k1921 = getNextArrayKey( _a1921, _k1921 ); + } + return undefined; +} + +unbuild_buildable( equipname, return_pieces, origin, angles ) +{ + stub = find_buildable_stub( equipname ); + stub_unbuild_buildable( stub, return_pieces, origin, angles ); +} + +stub_unbuild_buildable( stub, return_pieces, origin, angles ) +{ + if ( isDefined( stub ) ) + { + buildable = stub.buildablezone; + buildable.built = 0; + buildable.stub.built = 0; + buildable notify( "unbuilt" ); + level.buildables_built[ buildable.buildable_name ] = 0; + level notify( buildable.buildable_name + "_unbuilt" ); + i = 0; + while ( i < buildable.pieces.size ) + { + buildable.pieces[ i ].built = 0; + if ( isDefined( buildable.pieces[ i ].part_name ) ) + { + buildable.stub.model notsolid(); + if ( isDefined( buildable.pieces[ i ].built ) && !buildable.pieces[ i ].built ) + { + buildable.stub.model hidepart( buildable.pieces[ i ].part_name ); + break; + } + else + { + buildable.stub.model show(); + buildable.stub.model showpart( buildable.pieces[ i ].part_name ); + } + } + if ( isDefined( return_pieces ) && return_pieces ) + { + if ( isDefined( buildable.stub.unbuild_time_delay ) ) + { + buildable.pieces[ i ] thread piece_spawn_at_with_delay( origin, angles, buildable.stub.unbuild_time_delay ); + i++; + continue; + } + else + { + buildable.pieces[ i ] piece_spawn_at( origin, angles ); + } + } + i++; + } + if ( isDefined( buildable.stub.model ) ) + { + buildable.stub.model hide(); + } + } +} + +player_explode_buildable( equipname, origin, speed, return_to_spawn, return_time ) +{ + self explosiondamage( 50, origin ); + stub = find_buildable_stub( equipname ); + if ( isDefined( stub ) ) + { + buildable = stub.buildablezone; + buildable.built = 0; + buildable.stub.built = 0; + buildable notify( "unbuilt" ); + level.buildables_built[ buildable.buildable_name ] = 0; + level notify( buildable.buildable_name + "_unbuilt" ); + i = 0; + while ( i < buildable.pieces.size ) + { + buildable.pieces[ i ].built = 0; + if ( isDefined( buildable.pieces[ i ].part_name ) ) + { + buildable.stub.model notsolid(); + if ( isDefined( buildable.pieces[ i ].built ) && !buildable.pieces[ i ].built ) + { + buildable.stub.model hidepart( buildable.pieces[ i ].part_name ); + break; + } + else + { + buildable.stub.model show(); + buildable.stub.model showpart( buildable.pieces[ i ].part_name ); + } + } + ang = randomfloat( 360 ); + h = 0,25 + randomfloat( 0,5 ); + dir = ( sin( ang ), cos( ang ), h ); + self thread player_throw_piece( buildable.pieces[ i ], origin, speed * dir, return_to_spawn, return_time ); + i++; + } + buildable.stub.model hide(); + } +} + +think_buildables() +{ + _a2025 = level.zombie_include_buildables; + _k2025 = getFirstArrayKey( _a2025 ); + while ( isDefined( _k2025 ) ) + { + buildable = _a2025[ _k2025 ]; + if ( isDefined( buildable.triggerthink ) ) + { + level [[ buildable.triggerthink ]](); + } + _k2025 = getNextArrayKey( _a2025, _k2025 ); + } +} + +buildable_trigger_think( trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + return setup_unitrigger_buildable( trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ); +} + +buildable_trigger_think_array( trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + return setup_unitrigger_buildable_array( trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ); +} + +buildable_set_unbuild_time_delay( str_equipname, time_delay ) +{ + stub = find_buildable_stub( str_equipname ); + stub.unbuild_time_delay = time_delay; +} + +setup_vehicle_unitrigger_buildable( parent, trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + trig = getent( trigger_targetname, "targetname" ); + if ( !isDefined( trig ) ) + { + return; + } + unitrigger_stub = spawnstruct(); + unitrigger_stub.buildablestruct = level.zombie_include_buildables[ equipname ]; + unitrigger_stub.link_parent = parent; + unitrigger_stub.origin_parent = trig; + unitrigger_stub.trigger_targetname = trigger_targetname; + unitrigger_stub.originfunc = ::anystub_get_unitrigger_origin; + unitrigger_stub.onspawnfunc = ::anystub_on_spawn_trigger; + unitrigger_stub.origin = trig.origin; + unitrigger_stub.angles = trig.angles; + unitrigger_stub.equipname = equipname; + unitrigger_stub.weaponname = weaponname; + unitrigger_stub.trigger_hintstring = trigger_hintstring; + unitrigger_stub.delete_trigger = delete_trigger; + unitrigger_stub.built = 0; + unitrigger_stub.persistent = persistent; + unitrigger_stub.usetime = int( 3000 ); + unitrigger_stub.onbeginuse = ::onbeginuseuts; + unitrigger_stub.onenduse = ::onenduseuts; + unitrigger_stub.onuse = ::onuseplantobjectuts; + unitrigger_stub.oncantuse = ::oncantuseuts; + if ( isDefined( trig.script_length ) ) + { + unitrigger_stub.script_length = trig.script_length; + } + else + { + unitrigger_stub.script_length = 24; + } + if ( isDefined( trig.script_width ) ) + { + unitrigger_stub.script_width = trig.script_width; + } + else + { + unitrigger_stub.script_width = 64; + } + if ( isDefined( trig.script_height ) ) + { + unitrigger_stub.script_height = trig.script_height; + } + else + { + unitrigger_stub.script_height = 24; + } + if ( isDefined( trig.radius ) ) + { + unitrigger_stub.radius = trig.radius; + } + else + { + unitrigger_stub.radius = 64; + } + unitrigger_stub.target = trig.target; + unitrigger_stub.targetname = trig.targetname + "_trigger"; + unitrigger_stub.script_noteworthy = trig.script_noteworthy; + unitrigger_stub.script_parameters = trig.script_parameters; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + if ( isDefined( level.zombie_buildables[ equipname ].hint ) ) + { + unitrigger_stub.hint_string = level.zombie_buildables[ equipname ].hint; + } + unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; + unitrigger_stub.require_look_at = 1; + unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.prompt_and_visibility_func = ::buildabletrigger_update_prompt; + maps/mp/zombies/_zm_unitrigger::register_unitrigger( unitrigger_stub, ::buildable_place_think ); + unitrigger_stub.piece_trigger = trig; + trig.trigger_stub = unitrigger_stub; + unitrigger_stub.buildablezone = unitrigger_stub buildable_piece_unitriggers( equipname, unitrigger_stub.origin ); + if ( delete_trigger ) + { + trig delete(); + } + level.buildable_stubs[ level.buildable_stubs.size ] = unitrigger_stub; + return unitrigger_stub; +} + +vehicle_buildable_trigger_think( vehicle, trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ) +{ + return setup_vehicle_unitrigger_buildable( vehicle, trigger_targetname, equipname, weaponname, trigger_hintstring, delete_trigger, persistent ); +} + +onpickuputs( player ) +{ +/# + if ( isDefined( player ) && isDefined( player.name ) ) + { + println( "ZM >> Buildable piece recovered by - " + player.name ); +#/ + } +} + +ondroputs( player ) +{ +/# + if ( isDefined( player ) && isDefined( player.name ) ) + { + println( "ZM >> Buildable piece dropped by - " + player.name ); +#/ + } + player notify( "event_ended" ); +} + +onbeginuseuts( player ) +{ +/# + if ( isDefined( player ) && isDefined( player.name ) ) + { + println( "ZM >> Buildable piece begin use by - " + player.name ); +#/ + } + if ( isDefined( self.buildablestruct.onbeginuse ) ) + { + self [[ self.buildablestruct.onbeginuse ]]( player ); + } + if ( isDefined( player ) && !isDefined( player.buildableaudio ) ) + { + player.buildableaudio = spawn( "script_origin", player.origin ); + player.buildableaudio playloopsound( "zmb_buildable_loop" ); + } +} + +onenduseuts( team, player, result ) +{ +/# + if ( isDefined( player ) && isDefined( player.name ) ) + { + println( "ZM >> Buildable piece end use by - " + player.name ); +#/ + } + if ( !isDefined( player ) ) + { + return; + } + if ( isDefined( player.buildableaudio ) ) + { + player.buildableaudio delete(); + player.buildableaudio = undefined; + } + if ( isDefined( self.buildablestruct.onenduse ) ) + { + self [[ self.buildablestruct.onenduse ]]( team, player, result ); + } + player notify( "event_ended" ); +} + +oncantuseuts( player ) +{ +/# + if ( isDefined( player ) && isDefined( player.name ) ) + { + println( "ZM >> Buildable piece can't use by - " + player.name ); +#/ + } + if ( isDefined( self.buildablestruct.oncantuse ) ) + { + self [[ self.buildablestruct.oncantuse ]]( player ); + } +} + +onuseplantobjectuts( player ) +{ +/# + if ( isDefined( player ) && isDefined( player.name ) ) + { + println( "ZM >> Buildable piece crafted by - " + player.name ); +#/ + } + if ( isDefined( self.buildablestruct.onuseplantobject ) ) + { + self [[ self.buildablestruct.onuseplantobject ]]( player ); + } + player notify( "bomb_planted" ); +} + +is_buildable() +{ + if ( !isDefined( level.zombie_buildables ) ) + { + return 0; + } + if ( isDefined( self.zombie_weapon_upgrade ) && isDefined( level.zombie_buildables[ self.zombie_weapon_upgrade ] ) ) + { + return 1; + } + if ( isDefined( self.script_noteworthy ) && self.script_noteworthy == "specialty_weapupgrade" ) + { + if ( isDefined( level.buildables_built[ "pap" ] ) && level.buildables_built[ "pap" ] ) + { + return 0; + } + return 1; + } + return 0; +} + +buildable_crafted() +{ + self.pieces--; + +} + +buildable_complete() +{ + if ( self.pieces <= 0 ) + { + return 1; + } + return 0; +} + +get_buildable_hint( buildable_name ) +{ +/# + assert( isDefined( level.zombie_buildables[ buildable_name ] ), buildable_name + " was not included or is not part of the zombie weapon list." ); +#/ + return level.zombie_buildables[ buildable_name ].hint; +} + +delete_on_disconnect( buildable, self_notify, skip_delete ) +{ + buildable endon( "death" ); + self waittill( "disconnect" ); + if ( isDefined( self_notify ) ) + { + self notify( self_notify ); + } + if ( isDefined( skip_delete ) && !skip_delete ) + { + if ( isDefined( buildable.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( buildable.stub ); + buildable.stub = undefined; + } + if ( isDefined( buildable ) ) + { + buildable delete(); + } + } +} + +get_buildable_pickup( buildablename, modelname ) +{ + _a2354 = level.buildablepickups; + _k2354 = getFirstArrayKey( _a2354 ); + while ( isDefined( _k2354 ) ) + { + buildablepickup = _a2354[ _k2354 ]; + if ( buildablepickup[ 0 ].buildablestruct.name == buildablename && buildablepickup[ 0 ].visuals[ 0 ].model == modelname ) + { + return buildablepickup[ 0 ]; + } + _k2354 = getNextArrayKey( _a2354, _k2354 ); + } + return undefined; +} + +track_buildable_piece_pickedup( piece ) +{ + if ( !isDefined( piece ) || !isDefined( piece.buildablename ) ) + { +/# + println( "STAT TRACKING FAILURE: NOT DEFINED IN track_buildable_piece_pickedup() \n" ); +#/ + return; + } + self add_map_buildable_stat( piece.buildablename, "pieces_pickedup", 1 ); + self thread do_player_general_vox( "general", "build_pickup" ); +} + +track_buildable_pieces_built( buildable ) +{ + if ( !isDefined( buildable ) || !isDefined( buildable.buildable_name ) ) + { +/# + println( "STAT TRACKING FAILURE: NOT DEFINED IN track_buildable_pieces_built() \n" ); +#/ + return; + } + bname = buildable.buildable_name; + if ( isDefined( buildable.stat_name ) ) + { + bname = buildable.stat_name; + } + self add_map_buildable_stat( bname, "pieces_built", 1 ); + if ( !buildable buildable_all_built() ) + { + self thread do_player_general_vox( "general", "build_add" ); + } +} + +track_buildables_built( buildable ) +{ + if ( !isDefined( buildable ) || !isDefined( buildable.buildable_name ) ) + { +/# + println( "STAT TRACKING FAILURE: NOT DEFINED IN track_buildables_built() \n" ); +#/ + return; + } + bname = buildable.buildable_name; + if ( isDefined( buildable.stat_name ) ) + { + bname = buildable.stat_name; + } + self add_map_buildable_stat( bname, "buildable_built", 1 ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "buildables_built", 0 ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "buildables_built" ); +} + +track_buildables_pickedup( buildable ) +{ + if ( !isDefined( buildable ) ) + { +/# + println( "STAT TRACKING FAILURE: NOT DEFINED IN track_buildables_pickedup() \n" ); +#/ + return; + } + stat_name = get_buildable_stat_name( buildable ); + if ( !isDefined( stat_name ) ) + { +/# + println( "STAT TRACKING FAILURE: NO STAT NAME FOR " + buildable + "\n" ); +#/ + return; + } + self add_map_buildable_stat( stat_name, "buildable_pickedup", 1 ); + self say_pickup_buildable_vo( buildable, 0 ); +} + +track_buildables_planted( equipment ) +{ + if ( !isDefined( equipment ) ) + { +/# + println( "STAT TRACKING FAILURE: NOT DEFINED for track_buildables_planted() \n" ); +#/ + return; + } + buildable_name = undefined; + if ( isDefined( equipment.name ) ) + { + buildable_name = get_buildable_stat_name( equipment.name ); + } + if ( !isDefined( buildable_name ) ) + { +/# + println( "STAT TRACKING FAILURE: NO BUILDABLE NAME FOR track_buildables_planted() " + equipment.name + "\n" ); +#/ + return; + } + maps/mp/_demo::bookmark( "zm_player_buildable_placed", getTime(), self ); + self add_map_buildable_stat( buildable_name, "buildable_placed", 1 ); + vo_name = "build_plc_" + buildable_name; + if ( buildable_name == "electric_trap" ) + { + vo_name = "build_plc_trap"; + } + if ( isDefined( self.buildable_timer ) && !self.buildable_timer ) + { + self thread do_player_general_vox( "general", vo_name ); + self thread placed_buildable_vo_timer(); + } +} + +placed_buildable_vo_timer() +{ + self endon( "disconnect" ); + self.buildable_timer = 1; + wait 60; + self.buildable_timer = 0; +} + +buildable_pickedup_timer() +{ + self endon( "disconnect" ); + self.buildable_pickedup_timer = 1; + wait 60; + self.buildable_pickedup_timer = 0; +} + +track_planted_buildables_pickedup( equipment ) +{ + if ( !isDefined( equipment ) ) + { + return; + } + if ( equipment != "equip_turbine_zm" && equipment != "equip_turret_zm" || equipment == "equip_electrictrap_zm" && equipment == "riotshield_zm" ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "planted_buildables_pickedup", 0 ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "planted_buildables_pickedup" ); + } + if ( isDefined( self.buildable_pickedup_timer ) && !self.buildable_pickedup_timer ) + { + self say_pickup_buildable_vo( equipment, 1 ); + self thread buildable_pickedup_timer(); + } +} + +track_placed_buildables( buildable_name ) +{ + if ( !isDefined( buildable_name ) ) + { + return; + } + self add_map_buildable_stat( buildable_name, "buildable_placed", 1 ); + vo_name = undefined; + if ( buildable_name == level.riotshield_name ) + { + vo_name = "build_plc_shield"; + } + if ( !isDefined( vo_name ) ) + { + return; + } + self thread do_player_general_vox( "general", vo_name ); +} + +add_map_buildable_stat( piece_name, stat_name, value ) +{ + if ( isDefined( piece_name ) || piece_name == "sq_common" && piece_name == "keys_zm" ) + { + return; + } + self adddstat( "buildables", piece_name, stat_name, value ); +} + +say_pickup_buildable_vo( buildable_name, world ) +{ + if ( isDefined( self.buildable_pickedup_timer ) && self.buildable_pickedup_timer ) + { + return; + } + name = get_buildable_vo_name( buildable_name ); + if ( !isDefined( name ) ) + { + return; + } + vo_name = "build_pck_b" + name; + if ( isDefined( world ) && world ) + { + vo_name = "build_pck_w" + name; + } + if ( !isDefined( level.transit_buildable_vo_override ) || !( self [[ level.transit_buildable_vo_override ]]( name, world ) ) ) + { + self thread do_player_general_vox( "general", vo_name ); + self thread buildable_pickedup_timer(); + } +} + +get_buildable_vo_name( buildable_name ) +{ + switch( buildable_name ) + { + case "equip_turbine_zm": + return "turbine"; + case "equip_turret_zm": + return "turret"; + case "equip_electrictrap_zm": + return "trap"; + case "riotshield_zm": + return "shield"; + case "jetgun_zm": + return "jetgun"; + case "equip_springpad_zm": + return "springpad_zm"; + case "equip_slipgun_zm": + return "slipgun_zm"; + } + return undefined; +} + +get_buildable_stat_name( buildable ) +{ + if ( isDefined( buildable ) ) + { + switch( buildable ) + { + case "equip_turbine_zm": + return "turbine"; + case "equip_turret_zm": + return "turret"; + case "equip_electrictrap_zm": + return "electric_trap"; + case "equip_springpad_zm": + return "springpad_zm"; + case "equip_slipgun_zm": + return "slipgun_zm"; + } + return undefined; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_chugabud.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_chugabud.gsc new file mode 100644 index 0000000..b75623d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_chugabud.gsc @@ -0,0 +1,837 @@ +#include maps/mp/_visionset_mgr; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_weap_cymbal_monkey; +#include maps/mp/zombies/_zm_clone; +#include maps/mp/zombies/_zm_chugabud; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + level.chugabud_laststand_func = ::chugabud_laststand; + level thread chugabud_hostmigration(); + level._effect[ "chugabud_revive_fx" ] = loadfx( "weapon/quantum_bomb/fx_player_position_effect" ); + level._effect[ "chugabud_bleedout_fx" ] = loadfx( "weapon/quantum_bomb/fx_player_position_effect" ); +} + +chugabug_precache() +{ +} + +chugabud_player_init() +{ +} + +chugabud_laststand() +{ + self endon( "player_suicide" ); + self endon( "disconnect" ); + self endon( "chugabud_bleedout" ); + self maps/mp/zombies/_zm_laststand::increment_downed_stat(); + self.ignore_insta_kill = 1; + self.health = self.maxhealth; + self maps/mp/zombies/_zm_chugabud::chugabud_save_loadout(); + self maps/mp/zombies/_zm_chugabud::chugabud_fake_death(); + wait 3; + if ( isDefined( self.insta_killed ) || self.insta_killed && isDefined( self.disable_chugabud_corpse ) ) + { + create_corpse = 0; + } + else + { + create_corpse = 1; + } + if ( create_corpse == 1 ) + { + if ( isDefined( level._chugabug_reject_corpse_override_func ) ) + { + reject_corpse = self [[ level._chugabug_reject_corpse_override_func ]]( self.origin ); + if ( reject_corpse ) + { + create_corpse = 0; + } + } + } + if ( create_corpse == 1 ) + { + self thread activate_chugabud_effects_and_audio(); + corpse = self chugabud_spawn_corpse(); + corpse thread chugabud_corpse_revive_icon( self ); + self.e_chugabud_corpse = corpse; + corpse thread chugabud_corpse_cleanup_on_spectator( self ); + if ( isDefined( level.whos_who_client_setup ) ) + { + corpse setclientfield( "clientfield_whos_who_clone_glow_shader", 1 ); + } + } + self chugabud_fake_revive(); + wait 0,1; + self.ignore_insta_kill = undefined; + self.disable_chugabud_corpse = undefined; + if ( create_corpse == 0 ) + { + self notify( "chugabud_effects_cleanup" ); + return; + } + bleedout_time = getDvarFloat( "player_lastStandBleedoutTime" ); + self thread chugabud_bleed_timeout( bleedout_time, corpse ); + self thread chugabud_handle_multiple_instances( corpse ); + corpse waittill( "player_revived", e_reviver ); + if ( isDefined( e_reviver ) && e_reviver == self ) + { + self notify( "whos_who_self_revive" ); + } + self perk_abort_drinking( 0,1 ); + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + self setorigin( corpse.origin ); + self setplayerangles( corpse.angles ); + if ( self player_is_in_laststand() ) + { + self thread chugabud_laststand_cleanup( corpse, "player_revived" ); + self auto_revive( self, 1 ); + return; + } + self chugabud_laststand_cleanup( corpse, undefined ); +} + +chugabud_laststand_cleanup( corpse, str_notify ) +{ + if ( isDefined( str_notify ) ) + { + self waittill( str_notify ); + } + self chugabud_give_loadout(); + self chugabud_corpse_cleanup( corpse, 1 ); +} + +chugabud_bleed_timeout( delay, corpse ) +{ + self endon( "player_suicide" ); + self endon( "disconnect" ); + corpse endon( "death" ); + wait delay; + while ( isDefined( corpse.revivetrigger ) ) + { + while ( corpse.revivetrigger.beingrevived ) + { + wait 0,01; + } + } + while ( isDefined( self.loadout.perks ) && flag( "solo_game" ) ) + { + i = 0; + while ( i < self.loadout.perks.size ) + { + perk = self.loadout.perks[ i ]; + if ( perk == "specialty_quickrevive" ) + { + arrayremovevalue( self.loadout.perks, self.loadout.perks[ i ] ); + corpse notify( "player_revived" ); + return; + } + i++; + } + } + self chugabud_corpse_cleanup( corpse, 0 ); +} + +chugabud_corpse_cleanup( corpse, was_revived ) +{ + self notify( "chugabud_effects_cleanup" ); + if ( was_revived ) + { + playsoundatposition( "evt_ww_appear", corpse.origin ); + playfx( level._effect[ "chugabud_revive_fx" ], corpse.origin ); + } + else + { + playsoundatposition( "evt_ww_disappear", corpse.origin ); + playfx( level._effect[ "chugabud_bleedout_fx" ], corpse.origin ); + self notify( "chugabud_bleedout" ); + } + if ( isDefined( corpse.revivetrigger ) ) + { + corpse notify( "stop_revive_trigger" ); + corpse.revivetrigger delete(); + corpse.revivetrigger = undefined; + } + if ( isDefined( corpse.revive_hud_elem ) ) + { + corpse.revive_hud_elem destroy(); + corpse.revive_hud_elem = undefined; + } + wait 0,1; + corpse delete(); + self.e_chugabud_corpse = undefined; +} + +chugabud_handle_multiple_instances( corpse ) +{ + corpse endon( "death" ); + self waittill( "perk_chugabud_activated" ); + self chugabud_corpse_cleanup( corpse, 0 ); +} + +chugabud_spawn_corpse() +{ + corpse = maps/mp/zombies/_zm_clone::spawn_player_clone( self, self.origin, undefined, self.whos_who_shader ); + corpse.angles = self.angles; + corpse maps/mp/zombies/_zm_clone::clone_give_weapon( "m1911_zm" ); + corpse maps/mp/zombies/_zm_clone::clone_animate( "laststand" ); + corpse.revive_hud = self chugabud_revive_hud_create(); + corpse thread maps/mp/zombies/_zm_laststand::revive_trigger_spawn(); + return corpse; +} + +chugabud_revive_hud_create() +{ + self.revive_hud = newclienthudelem( self ); + self.revive_hud.alignx = "center"; + self.revive_hud.aligny = "middle"; + self.revive_hud.horzalign = "center"; + self.revive_hud.vertalign = "bottom"; + self.revive_hud.y = -50; + self.revive_hud.foreground = 1; + self.revive_hud.font = "default"; + self.revive_hud.fontscale = 1,5; + self.revive_hud.alpha = 0; + self.revive_hud.color = ( 1, 1, 1 ); + self.revive_hud settext( "" ); + return self.revive_hud; +} + +chugabud_save_loadout() +{ + primaries = self getweaponslistprimaries(); + currentweapon = self getcurrentweapon(); + self.loadout = spawnstruct(); + self.loadout.player = self; + self.loadout.weapons = []; + self.loadout.score = self.score; + self.loadout.current_weapon = -1; + _a366 = primaries; + index = getFirstArrayKey( _a366 ); + while ( isDefined( index ) ) + { + weapon = _a366[ index ]; + self.loadout.weapons[ index ] = weapon; + self.loadout.stockcount[ index ] = self getweaponammostock( weapon ); + self.loadout.clipcount[ index ] = self getweaponammoclip( weapon ); + if ( weapon == currentweapon ) + { + self.loadout.current_weapon = index; + } + index = getNextArrayKey( _a366, index ); + } + self.loadout.equipment = self get_player_equipment(); + if ( isDefined( self.loadout.equipment ) ) + { + self equipment_take( self.loadout.equipment ); + } + self.loadout save_weapons_for_chugabud( self ); + if ( self hasweapon( "claymore_zm" ) ) + { + self.loadout.hasclaymore = 1; + self.loadout.claymoreclip = self getweaponammoclip( "claymore_zm" ); + } + self.loadout.perks = chugabud_save_perks( self ); + self chugabud_save_grenades(); + if ( maps/mp/zombies/_zm_weap_cymbal_monkey::cymbal_monkey_exists() ) + { + self.loadout.zombie_cymbal_monkey_count = self getweaponammoclip( "cymbal_monkey_zm" ); + } +} + +chugabud_save_grenades() +{ + if ( self hasweapon( "emp_grenade_zm" ) ) + { + self.loadout.hasemp = 1; + self.loadout.empclip = self getweaponammoclip( "emp_grenade_zm" ); + } + lethal_grenade = self get_player_lethal_grenade(); + if ( self hasweapon( lethal_grenade ) ) + { + self.loadout.lethal_grenade = lethal_grenade; + self.loadout.lethal_grenade_count = self getweaponammoclip( lethal_grenade ); + } + else + { + self.loadout.lethal_grenade = undefined; + } +} + +chugabud_give_loadout() +{ + self takeallweapons(); + loadout = self.loadout; + primaries = self getweaponslistprimaries(); + while ( loadout.weapons.size > 1 || primaries.size > 1 ) + { + _a449 = primaries; + _k449 = getFirstArrayKey( _a449 ); + while ( isDefined( _k449 ) ) + { + weapon = _a449[ _k449 ]; + self takeweapon( weapon ); + _k449 = getNextArrayKey( _a449, _k449 ); + } + } + i = 0; + while ( i < loadout.weapons.size ) + { + if ( !isDefined( loadout.weapons[ i ] ) ) + { + i++; + continue; + } + else if ( loadout.weapons[ i ] == "none" ) + { + i++; + continue; + } + else + { + weapon = loadout.weapons[ i ]; + stock_amount = loadout.stockcount[ i ]; + clip_amount = loadout.clipcount[ i ]; + if ( !self hasweapon( weapon ) ) + { + self giveweapon( weapon, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); + self setweaponammostock( weapon, stock_amount ); + self setweaponammoclip( weapon, clip_amount ); + if ( i == loadout.current_weapon ) + { + self switchtoweapon( weapon ); + } + } + } + i++; + } + self giveweapon( "knife_zm" ); + self maps/mp/zombies/_zm_equipment::equipment_give( self.loadout.equipment ); + loadout restore_weapons_for_chugabud( self ); + self chugabud_restore_claymore(); + self.score = loadout.score; + self.pers[ "score" ] = loadout.score; + perk_array = maps/mp/zombies/_zm_perks::get_perk_array( 1 ); + i = 0; + while ( i < perk_array.size ) + { + perk = perk_array[ i ]; + self unsetperk( perk ); + self.num_perks--; + + self set_perk_clientfield( perk, 0 ); + i++; + } + while ( isDefined( loadout.perks ) && loadout.perks.size > 0 ) + { + i = 0; + while ( i < loadout.perks.size ) + { + if ( self hasperk( loadout.perks[ i ] ) ) + { + i++; + continue; + } + else if ( loadout.perks[ i ] == "specialty_quickrevive" && flag( "solo_game" ) ) + { + level.solo_game_free_player_quickrevive = 1; + } + if ( loadout.perks[ i ] == "specialty_finalstand" ) + { + i++; + continue; + } + else + { + maps/mp/zombies/_zm_perks::give_perk( loadout.perks[ i ] ); + } + i++; + } + } + self chugabud_restore_grenades(); + if ( maps/mp/zombies/_zm_weap_cymbal_monkey::cymbal_monkey_exists() ) + { + if ( loadout.zombie_cymbal_monkey_count ) + { + self maps/mp/zombies/_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); + self setweaponammoclip( "cymbal_monkey_zm", loadout.zombie_cymbal_monkey_count ); + } + } +} + +chugabud_restore_grenades() +{ + if ( isDefined( self.loadout.hasemp ) && self.loadout.hasemp ) + { + self giveweapon( "emp_grenade_zm" ); + self setweaponammoclip( "emp_grenade_zm", self.loadout.empclip ); + } + if ( isDefined( self.loadout.lethal_grenade ) ) + { + self giveweapon( self.loadout.lethal_grenade ); + self setweaponammoclip( self.loadout.lethal_grenade, self.loadout.lethal_grenade_count ); + } +} + +chugabud_restore_claymore() +{ + if ( isDefined( self.loadout.hasclaymore ) && self.loadout.hasclaymore && !self hasweapon( "claymore_zm" ) ) + { + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammoclip( "claymore_zm", self.loadout.claymoreclip ); + } +} + +chugabud_fake_death() +{ + level notify( "fake_death" ); + self notify( "fake_death" ); + self takeallweapons(); + self allowstand( 0 ); + self allowcrouch( 0 ); + self allowprone( 1 ); + self.ignoreme = 1; + self enableinvulnerability(); + wait 0,1; + self freezecontrols( 1 ); + wait 0,9; +} + +chugabud_fake_revive() +{ + level notify( "fake_revive" ); + self notify( "fake_revive" ); + playsoundatposition( "evt_ww_disappear", self.origin ); + playfx( level._effect[ "chugabud_revive_fx" ], self.origin ); + spawnpoint = chugabud_get_spawnpoint(); + if ( isDefined( level._chugabud_post_respawn_override_func ) ) + { + self [[ level._chugabud_post_respawn_override_func ]]( spawnpoint.origin ); + } + if ( isDefined( level.chugabud_force_corpse_position ) ) + { + if ( isDefined( self.e_chugabud_corpse ) ) + { + self.e_chugabud_corpse forceteleport( level.chugabud_force_corpse_position ); + } + level.chugabud_force_corpse_position = undefined; + } + if ( isDefined( level.chugabud_force_player_position ) ) + { + spawnpoint.origin = level.chugabud_force_player_position; + level.chugabud_force_player_position = undefined; + } + self setorigin( spawnpoint.origin ); + self setplayerangles( spawnpoint.angles ); + playsoundatposition( "evt_ww_appear", spawnpoint.origin ); + playfx( level._effect[ "chugabud_revive_fx" ], spawnpoint.origin ); + self allowstand( 1 ); + self allowcrouch( 1 ); + self allowprone( 1 ); + self.ignoreme = 0; + self setstance( "stand" ); + self freezecontrols( 0 ); + self giveweapon( "knife_zm" ); + self give_start_weapon( 1 ); + self.score = self.loadout.score; + self.pers[ "score" ] = self.loadout.score; + self giveweapon( "frag_grenade_zm" ); + self setweaponammoclip( "frag_grenade_zm", 2 ); + self chugabud_restore_claymore(); + wait 1; + self disableinvulnerability(); +} + +chugabud_get_spawnpoint() +{ + spawnpoint = undefined; + if ( get_chugabug_spawn_point_from_nodes( self.origin, 500, 700, 64, 1 ) ) + { + spawnpoint = level.chugabud_spawn_struct; + } + if ( !isDefined( spawnpoint ) ) + { + if ( get_chugabug_spawn_point_from_nodes( self.origin, 100, 400, 64, 1 ) ) + { + spawnpoint = level.chugabud_spawn_struct; + } + } + if ( !isDefined( spawnpoint ) ) + { + if ( get_chugabug_spawn_point_from_nodes( self.origin, 50, 400, 256, 0 ) ) + { + spawnpoint = level.chugabud_spawn_struct; + } + } + if ( !isDefined( spawnpoint ) ) + { + spawnpoint = maps/mp/zombies/_zm::check_for_valid_spawn_near_team( self, 1 ); + } + if ( !isDefined( spawnpoint ) ) + { + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = ( level.scr_zm_ui_gametype + "_" ) + location; + spawnpoints = []; + structs = getstructarray( "initial_spawn", "script_noteworthy" ); + while ( isDefined( structs ) ) + { + _a744 = structs; + _k744 = getFirstArrayKey( _a744 ); + while ( isDefined( _k744 ) ) + { + struct = _a744[ _k744 ]; + while ( isDefined( struct.script_string ) ) + { + tokens = strtok( struct.script_string, " " ); + _a750 = tokens; + _k750 = getFirstArrayKey( _a750 ); + while ( isDefined( _k750 ) ) + { + token = _a750[ _k750 ]; + if ( token == match_string ) + { + spawnpoints[ spawnpoints.size ] = struct; + } + _k750 = getNextArrayKey( _a750, _k750 ); + } + } + _k744 = getNextArrayKey( _a744, _k744 ); + } + } + if ( !isDefined( spawnpoints ) || spawnpoints.size == 0 ) + { + spawnpoints = getstructarray( "initial_spawn_points", "targetname" ); + } +/# + assert( isDefined( spawnpoints ), "Could not find initial spawn points!" ); +#/ + spawnpoint = maps/mp/zombies/_zm::getfreespawnpoint( spawnpoints, self ); + } + return spawnpoint; +} + +get_chugabug_spawn_point_from_nodes( v_origin, min_radius, max_radius, max_height, ignore_targetted_nodes ) +{ + if ( !isDefined( level.chugabud_spawn_struct ) ) + { + level.chugabud_spawn_struct = spawnstruct(); + } + found_node = undefined; + a_nodes = getnodesinradiussorted( v_origin, max_radius, min_radius, max_height, "pathnodes" ); + while ( isDefined( a_nodes ) && a_nodes.size > 0 ) + { + a_player_volumes = getentarray( "player_volume", "script_noteworthy" ); + index = a_nodes.size - 1; + i = index; + while ( i >= 0 ) + { + n_node = a_nodes[ i ]; + if ( ignore_targetted_nodes == 1 ) + { + if ( isDefined( n_node.target ) ) + { + i--; + continue; + } + } + else + { + if ( !positionwouldtelefrag( n_node.origin ) ) + { + if ( maps/mp/zombies/_zm_utility::check_point_in_enabled_zone( n_node.origin, 1, a_player_volumes ) ) + { + v_start = ( n_node.origin[ 0 ], n_node.origin[ 1 ], n_node.origin[ 2 ] + 30 ); + v_end = ( n_node.origin[ 0 ], n_node.origin[ 1 ], n_node.origin[ 2 ] - 30 ); + trace = bullettrace( v_start, v_end, 0, undefined ); + if ( trace[ "fraction" ] < 1 ) + { + override_abort = 0; + if ( isDefined( level._chugabud_reject_node_override_func ) ) + { + override_abort = [[ level._chugabud_reject_node_override_func ]]( v_origin, n_node ); + } + if ( !override_abort ) + { + found_node = n_node; + break; + } + } + } + } + } + else + { + i--; + + } + } + } + if ( isDefined( found_node ) ) + { + level.chugabud_spawn_struct.origin = found_node.origin; + v_dir = vectornormalize( v_origin - level.chugabud_spawn_struct.origin ); + level.chugabud_spawn_struct.angles = vectorToAngle( v_dir ); + return 1; + } + return 0; +} + +force_corpse_respawn_position( forced_corpse_position ) +{ + level.chugabud_force_corpse_position = forced_corpse_position; +} + +force_player_respawn_position( forced_player_position ) +{ + level.chugabud_force_player_position = forced_player_position; +} + +save_weapons_for_chugabud( player ) +{ + self.chugabud_melee_weapons = []; + i = 0; + while ( i < level._melee_weapons.size ) + { + self save_weapon_for_chugabud( player, level._melee_weapons[ i ].weapon_name ); + i++; + } +} + +save_weapon_for_chugabud( player, weapon_name ) +{ + if ( player hasweapon( weapon_name ) ) + { + self.chugabud_melee_weapons[ weapon_name ] = 1; + } +} + +restore_weapons_for_chugabud( player ) +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self restore_weapon_for_chugabud( player, level._melee_weapons[ i ].weapon_name ); + i++; + } + self.chugabud_melee_weapons = undefined; +} + +restore_weapon_for_chugabud( player, weapon_name ) +{ + if ( isDefined( weapon_name ) || !isDefined( self.chugabud_melee_weapons ) && !isDefined( self.chugabud_melee_weapons[ weapon_name ] ) ) + { + return; + } + if ( isDefined( self.chugabud_melee_weapons[ weapon_name ] ) && self.chugabud_melee_weapons[ weapon_name ] ) + { + player giveweapon( weapon_name ); + player set_player_melee_weapon( weapon_name ); + self.chugabud_melee_weapons[ weapon_name ] = 0; + } +} + +chugabud_save_perks( ent ) +{ + perk_array = ent get_perk_array( 1 ); + _a941 = perk_array; + _k941 = getFirstArrayKey( _a941 ); + while ( isDefined( _k941 ) ) + { + perk = _a941[ _k941 ]; + ent unsetperk( perk ); + _k941 = getNextArrayKey( _a941, _k941 ); + } + return perk_array; +} + +playchugabudtimeraudio() +{ + self endon( "chugabud_grabbed" ); + self endon( "chugabud_timedout" ); + player = self.player; + self thread playchugabudtimerout( player ); + while ( 1 ) + { + player playsoundtoplayer( "zmb_chugabud_timer_count", player ); + wait 1; + } +} + +playchugabudtimerout( player ) +{ + self endon( "chugabud_grabbed" ); + self waittill( "chugabud_timedout" ); + player playsoundtoplayer( "zmb_chugabud_timer_out", player ); +} + +chugabud_hostmigration() +{ + level endon( "end_game" ); + level notify( "chugabud_hostmigration" ); + level endon( "chugabud_hostmigration" ); + while ( 1 ) + { + level waittill( "host_migration_end" ); + chugabuds = getentarray( "player_chugabud_model", "script_noteworthy" ); + _a1000 = chugabuds; + _k1000 = getFirstArrayKey( _a1000 ); + while ( isDefined( _k1000 ) ) + { + model = _a1000[ _k1000 ]; + playfxontag( level._effect[ "powerup_on" ], model, "tag_origin" ); + _k1000 = getNextArrayKey( _a1000, _k1000 ); + } + } +} + +player_revived_cleanup_chugabud_corpse() +{ +} + +player_has_chugabud_corpse() +{ + if ( isDefined( self.e_chugabud_corpse ) ) + { + return 1; + } + return 0; +} + +is_weapon_available_in_chugabud_corpse( weapon ) +{ + a_players = getplayers(); + while ( isDefined( a_players ) ) + { + num = 0; + while ( num < a_players.size ) + { + player = a_players[ num ]; + while ( player player_has_chugabud_corpse() ) + { + while ( isDefined( player.loadout ) && isDefined( player.loadout.weapons ) ) + { + i = 0; + while ( i < player.loadout.weapons.size ) + { + chugabud_weapon = player.loadout.weapons[ i ]; + if ( isDefined( chugabud_weapon ) && chugabud_weapon == weapon ) + { + return 1; + } + i++; + } + } + } + num++; + } + } + return 0; +} + +chugabud_corpse_cleanup_on_spectator( player ) +{ + self endon( "death" ); + player endon( "disconnect" ); + while ( 1 ) + { + if ( player.sessionstate == "spectator" ) + { + break; + } + else + { + wait 0,01; + } + } + player chugabud_corpse_cleanup( self, 0 ); +} + +chugabud_corpse_revive_icon( player ) +{ + self endon( "death" ); + height_offset = 30; + index = player.clientid; + hud_elem = newhudelem(); + self.revive_hud_elem = hud_elem; + hud_elem.x = self.origin[ 0 ]; + hud_elem.y = self.origin[ 1 ]; + hud_elem.z = self.origin[ 2 ] + height_offset; + hud_elem.alpha = 1; + hud_elem.archived = 1; + hud_elem setshader( "waypoint_revive", 5, 5 ); + hud_elem setwaypoint( 1 ); + hud_elem.hidewheninmenu = 1; + hud_elem.immunetodemogamehudsettings = 1; + while ( 1 ) + { + if ( !isDefined( self.revive_hud_elem ) ) + { + return; + } + else + { + hud_elem.x = self.origin[ 0 ]; + hud_elem.y = self.origin[ 1 ]; + hud_elem.z = self.origin[ 2 ] + height_offset; + wait 0,01; + } + } +} + +activate_chugabud_effects_and_audio() +{ + if ( isDefined( level.whos_who_client_setup ) ) + { + if ( !isDefined( self.whos_who_effects_active ) ) + { + if ( isDefined( level.chugabud_shellshock ) ) + { + self shellshock( "whoswho", 60 ); + } + if ( isDefined( level.vsmgr_prio_visionset_zm_whos_who ) ) + { + maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_whos_who", self ); + } + self setclientfieldtoplayer( "clientfield_whos_who_audio", 1 ); + self setclientfieldtoplayer( "clientfield_whos_who_filter", 1 ); + self.whos_who_effects_active = 1; + self thread deactivate_chugabud_effects_and_audio(); + } + } +} + +deactivate_chugabud_effects_and_audio() +{ + self waittill_any( "death", "chugabud_effects_cleanup" ); + if ( isDefined( level.whos_who_client_setup ) ) + { + if ( isDefined( self.whos_who_effects_active ) && self.whos_who_effects_active == 1 ) + { + if ( isDefined( level.chugabud_shellshock ) ) + { + self stopshellshock(); + } + if ( isDefined( level.vsmgr_prio_visionset_zm_whos_who ) ) + { + maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_whos_who", self ); + } + self setclientfieldtoplayer( "clientfield_whos_who_audio", 0 ); + self setclientfieldtoplayer( "clientfield_whos_who_filter", 0 ); + } + self.whos_who_effects_active = undefined; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_clone.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_clone.gsc new file mode 100644 index 0000000..3a2fb24 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_clone.gsc @@ -0,0 +1,133 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +#using_animtree( "zm_ally" ); + +init() +{ + init_mover_tree(); +} + +spawn_player_clone( player, origin, forceweapon, forcemodel ) +{ + if ( !isDefined( origin ) ) + { + origin = player.origin; + } + primaryweapons = player getweaponslistprimaries(); + if ( isDefined( forceweapon ) ) + { + weapon = forceweapon; + } + else if ( primaryweapons.size ) + { + weapon = primaryweapons[ 0 ]; + } + else + { + weapon = player getcurrentweapon(); + } + weaponmodel = getweaponmodel( weapon ); + spawner = getent( "fake_player_spawner", "targetname" ); + if ( isDefined( spawner ) ) + { + clone = spawner spawnactor(); + clone.origin = origin; + clone.isactor = 1; + } + else + { + clone = spawn( "script_model", origin ); + clone.isactor = 0; + } + if ( isDefined( forcemodel ) ) + { + clone setmodel( forcemodel ); + } + else + { + clone setmodel( self.model ); + if ( isDefined( player.headmodel ) ) + { + clone.headmodel = player.headmodel; + clone attach( clone.headmodel, "", 1 ); + } + } + if ( weaponmodel != "" && weaponmodel != "none" ) + { + clone attach( weaponmodel, "tag_weapon_right" ); + } + clone.team = player.team; + clone.is_inert = 1; + clone.zombie_move_speed = "walk"; + clone.script_noteworthy = "corpse_clone"; + clone.actor_damage_func = ::clone_damage_func; + return clone; +} + +clone_damage_func( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + idamage = 0; + if ( sweapon != "knife_ballistic_upgraded_zm" && sweapon != "knife_ballistic_bowie_upgraded_zm" || sweapon == "knife_ballistic_no_melee_upgraded_zm" && sweapon == "knife_ballistic_sickle_upgraded_zm" ) + { + self notify( "player_revived" ); + } + return idamage; +} + +clone_give_weapon( weapon ) +{ + weaponmodel = getweaponmodel( weapon ); + if ( weaponmodel != "" && weaponmodel != "none" ) + { + self attach( weaponmodel, "tag_weapon_right" ); + } +} + +clone_animate( animtype ) +{ + if ( self.isactor ) + { + self thread clone_actor_animate( animtype ); + } + else + { + self thread clone_mover_animate( animtype ); + } +} + +clone_actor_animate( animtype ) +{ + wait 0,1; + switch( animtype ) + { + case "laststand": + self setanimstatefromasd( "laststand" ); + break; + case "idle": + default: + self setanimstatefromasd( "idle" ); + break; + } +} + +init_mover_tree() +{ + scriptmodelsuseanimtree( -1 ); +} + +clone_mover_animate( animtype ) +{ + self useanimtree( -1 ); + switch( animtype ) + { + case "laststand": + self setanim( %pb_laststand_idle ); + break; + case "idle": + default: + self setanim( %pb_stand_alert ); + break; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_devgui.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_devgui.gsc new file mode 100644 index 0000000..0ba339f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_devgui.gsc @@ -0,0 +1,1817 @@ +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_weap_claymore; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_turned; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ +/# + setdvar( "zombie_devgui", "" ); + setdvar( "scr_force_weapon", "" ); + setdvar( "scr_zombie_round", "1" ); + setdvar( "scr_zombie_dogs", "1" ); + setdvar( "scr_spawn_tesla", "" ); + setdvar( "scr_force_quantum_bomb_result", "" ); + level.devgui_add_weapon = ::devgui_add_weapon; + level thread zombie_devgui_think(); + thread zombie_devgui_player_commands(); + thread diable_fog_in_noclip(); + thread zombie_weapon_devgui_think(); +#/ +} + +zombie_devgui_player_commands() +{ +/# + flag_wait( "start_zombie_round_logic" ); + wait 1; + players = get_players(); + i = 0; + while ( i < players.size ) + { + ip1 = i + 1; + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Give Money:1" "set zombie_devgui player" + ip1 + "_money" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Invulnerable:2" "set zombie_devgui player" + ip1 + "_invul_on" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Vulnerable:3" "set zombie_devgui player" + ip1 + "_invul_off" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Toggle Ignored:4" "set zombie_devgui player" + ip1 + "_ignore" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Mega Health:5" "set zombie_devgui player" + ip1 + "_health" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Down:6" "set zombie_devgui player" + ip1 + "_kill" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Revive:7" "set zombie_devgui player" + ip1 + "_revive" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Turn Player:8" "set zombie_devgui player" + ip1 + "_turnplayer" \n" ); + adddebugcommand( "devgui_cmd "Zombies:1/Players:1/Player:1/" + players[ i ].name + "/Debug Pers:9" "set zombie_devgui player" + ip1 + "_debug_pers" \n" ); + i++; +#/ + } +} + +devgui_add_weapon_entry( hint, up, weapon_name ) +{ +/# + uppath = "/" + up; + if ( up.size < 1 ) + { + uppath = ""; + } + cmd = "devgui_cmd "Zombies:1/Weapons:10/" + hint + uppath + "" "set zombie_devgui_gun " + weapon_name + "" \n"; + adddebugcommand( cmd ); +#/ +} + +devgui_add_weapon_and_attachments( hint, up, weapon_name ) +{ +/# + devgui_add_weapon_entry( hint, up, weapon_name ); +#/ +} + +devgui_add_weapon( weapon_name, upgrade_name, hint, cost, weaponvo, weaponvoresp, ammo_cost ) +{ +/# + if ( is_offhand_weapon( weapon_name ) ) + { + return; + } + if ( isDefined( level.devgui_weapons_added ) && level.devgui_weapons_added > 34 ) + { + return; + } + if ( !isDefined( level.devgui_weapons_added ) ) + { + level.devgui_weapons_added = 0; + } + level.devgui_weapons_added++; + devgui_add_weapon_and_attachments( weapon_name, "", weapon_name ); +#/ +} + +zombie_weapon_devgui_think() +{ +/# + level.zombie_devgui_gun = getDvar( #"CE4F9F97" ); + level.zombie_devgui_att = getDvar( #"A965F402" ); + for ( ;; ) + { + wait 0,25; + cmd = getDvar( #"CE4F9F97" ); + if ( !isDefined( level.zombie_devgui_gun ) || level.zombie_devgui_gun != cmd ) + { + level.zombie_devgui_gun = cmd; + array_thread( get_players(), ::zombie_devgui_weapon_give, level.zombie_devgui_gun ); + } + wait 0,25; + att = getDvar( #"A965F402" ); + if ( !isDefined( level.zombie_devgui_att ) || level.zombie_devgui_att != att ) + { + level.zombie_devgui_att = att; + array_thread( get_players(), ::zombie_devgui_attachment_give, level.zombie_devgui_att ); + } +#/ + } +} + +zombie_devgui_weapon_give( gun ) +{ +/# + self maps/mp/zombies/_zm_weapons::weapon_give( gun, is_weapon_upgraded( gun ), 0 ); +#/ +} + +zombie_devgui_attachment_give( gun ) +{ +/# + newgun = maps/mp/zombies/_zm_weapons::get_base_name( self getcurrentweapon() ) + "+" + gun; + self maps/mp/zombies/_zm_weapons::weapon_give( newgun, is_weapon_upgraded( gun ), 0 ); +#/ +} + +zombie_devgui_watch_input() +{ +/# + flag_wait( "start_zombie_round_logic" ); + wait 1; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] thread watch_debug_input(); + i++; +#/ + } +} + +damage_player() +{ +/# + self disableinvulnerability(); + self dodamage( self.health / 2, self.origin ); +#/ +} + +kill_player() +{ +/# + self disableinvulnerability(); + death_from = ( randomfloatrange( -20, 20 ), randomfloatrange( -20, 20 ), randomfloatrange( -20, 20 ) ); + self dodamage( self.health + 666, self.origin + death_from ); +#/ +} + +force_drink() +{ +/# + wait 0,01; + lean = self allowlean( 0 ); + ads = self allowads( 0 ); + sprint = self allowsprint( 0 ); + crouch = self allowcrouch( 1 ); + prone = self allowprone( 0 ); + melee = self allowmelee( 0 ); + self increment_is_drinking(); + orgweapon = self getcurrentweapon(); + self giveweapon( "zombie_builder_zm" ); + self switchtoweapon( "zombie_builder_zm" ); + self.build_time = self.usetime; + self.build_start_time = getTime(); + wait 2; + self maps/mp/zombies/_zm_weapons::switch_back_primary_weapon( orgweapon ); + self takeweapon( "zombie_builder_zm" ); + if ( is_true( self.is_drinking ) ) + { + self decrement_is_drinking(); + } + self allowlean( lean ); + self allowads( ads ); + self allowsprint( sprint ); + self allowprone( prone ); + self allowcrouch( crouch ); + self allowmelee( melee ); +#/ +} + +zombie_devgui_dpad_none() +{ +/# + self thread watch_debug_input(); +#/ +} + +zombie_devgui_dpad_death() +{ +/# + self thread watch_debug_input( ::kill_player ); +#/ +} + +zombie_devgui_dpad_damage() +{ +/# + self thread watch_debug_input( ::damage_player ); +#/ +} + +zombie_devgui_dpad_changeweapon() +{ +/# + self thread watch_debug_input( ::force_drink ); +#/ +} + +watch_debug_input( callback ) +{ +/# + self endon( "disconnect" ); + self notify( "watch_debug_input" ); + self endon( "watch_debug_input" ); + level.devgui_dpad_watch = 0; + while ( isDefined( callback ) ) + { + level.devgui_dpad_watch = 1; + for ( ;; ) + { + while ( self actionslottwobuttonpressed() ) + { + self thread [[ callback ]](); + while ( self actionslottwobuttonpressed() ) + { + wait 0,05; + } + } + wait 0,05; +#/ + } + } +} + +zombie_devgui_think() +{ +/# + for ( ;; ) + { + cmd = getDvar( "zombie_devgui" ); + switch( cmd ) + { + case "money": + players = get_players(); + array_thread( players, ::zombie_devgui_give_money ); + break; + case "player1_money": + players = get_players(); + if ( players.size >= 1 ) + { + players[ 0 ] thread zombie_devgui_give_money(); + } + break; + case "player2_money": + players = get_players(); + if ( players.size >= 2 ) + { + players[ 1 ] thread zombie_devgui_give_money(); + } + break; + case "player3_money": + players = get_players(); + if ( players.size >= 3 ) + { + players[ 2 ] thread zombie_devgui_give_money(); + } + break; + case "player4_money": + players = get_players(); + if ( players.size >= 4 ) + { + players[ 3 ] thread zombie_devgui_give_money(); + } + break; + case "health": + array_thread( get_players(), ::zombie_devgui_give_health ); + break; + case "player1_health": + players = get_players(); + if ( players.size >= 1 ) + { + players[ 0 ] thread zombie_devgui_give_health(); + } + break; + case "player2_health": + players = get_players(); + if ( players.size >= 2 ) + { + players[ 1 ] thread zombie_devgui_give_health(); + } + break; + case "player3_health": + players = get_players(); + if ( players.size >= 3 ) + { + players[ 2 ] thread zombie_devgui_give_health(); + } + break; + case "player4_health": + players = get_players(); + if ( players.size >= 4 ) + { + players[ 3 ] thread zombie_devgui_give_health(); + } + break; + case "ammo": + array_thread( get_players(), ::zombie_devgui_toggle_ammo ); + break; + case "ignore": + array_thread( get_players(), ::zombie_devgui_toggle_ignore ); + break; + case "player1_ignore": + players = get_players(); + if ( players.size >= 1 ) + { + players[ 0 ] thread zombie_devgui_toggle_ignore(); + } + break; + case "player2_ignore": + players = get_players(); + if ( players.size >= 2 ) + { + players[ 1 ] thread zombie_devgui_toggle_ignore(); + } + break; + case "player3_ignore": + players = get_players(); + if ( players.size >= 3 ) + { + players[ 2 ] thread zombie_devgui_toggle_ignore(); + } + break; + case "player4_ignore": + players = get_players(); + if ( players.size >= 4 ) + { + players[ 3 ] thread zombie_devgui_toggle_ignore(); + } + break; + case "invul_on": + zombie_devgui_invulnerable( undefined, 1 ); + break; + case "invul_off": + zombie_devgui_invulnerable( undefined, 0 ); + break; + case "player1_invul_on": + zombie_devgui_invulnerable( 0, 1 ); + break; + case "player1_invul_off": + zombie_devgui_invulnerable( 0, 0 ); + break; + case "player2_invul_on": + zombie_devgui_invulnerable( 1, 1 ); + break; + case "player2_invul_off": + zombie_devgui_invulnerable( 1, 0 ); + break; + case "player3_invul_on": + zombie_devgui_invulnerable( 2, 1 ); + break; + case "player3_invul_off": + zombie_devgui_invulnerable( 2, 0 ); + break; + case "player4_invul_on": + zombie_devgui_invulnerable( 3, 1 ); + break; + case "player4_invul_off": + zombie_devgui_invulnerable( 3, 0 ); + break; + case "revive_all": + array_thread( get_players(), ::zombie_devgui_revive ); + break; + case "player1_revive": + players = get_players(); + if ( players.size >= 1 ) + { + players[ 0 ] thread zombie_devgui_revive(); + } + break; + case "player2_revive": + players = get_players(); + if ( players.size >= 2 ) + { + players[ 1 ] thread zombie_devgui_revive(); + } + break; + case "player3_revive": + players = get_players(); + if ( players.size >= 3 ) + { + players[ 2 ] thread zombie_devgui_revive(); + } + break; + case "player4_revive": + players = get_players(); + if ( players.size >= 4 ) + { + players[ 3 ] thread zombie_devgui_revive(); + } + break; + case "player1_kill": + players = get_players(); + if ( players.size >= 1 ) + { + players[ 0 ] thread zombie_devgui_kill(); + } + break; + case "player2_kill": + players = get_players(); + if ( players.size >= 2 ) + { + players[ 1 ] thread zombie_devgui_kill(); + } + break; + case "player3_kill": + players = get_players(); + if ( players.size >= 3 ) + { + players[ 2 ] thread zombie_devgui_kill(); + } + break; + case "player4_kill": + players = get_players(); + if ( players.size >= 4 ) + { + players[ 3 ] thread zombie_devgui_kill(); + } + break; + case "spawn_friendly_bot": + player = gethostplayer(); + team = player.team; + devgui_bot_spawn( team ); + break; + case "specialty_additionalprimaryweapon": + case "specialty_armorvest": + case "specialty_deadshot": + case "specialty_fastreload": + case "specialty_finalstand": + case "specialty_flakjacket": + case "specialty_grenadepulldeath": + case "specialty_longersprint": + case "specialty_nomotionsensor": + case "specialty_quickrevive": + case "specialty_rof": + case "specialty_scavenger": + zombie_devgui_give_perk( cmd ); + break; + case "turnplayer": + zombie_devgui_turn_player(); + break; + case "player1_turnplayer": + zombie_devgui_turn_player( 0 ); + break; + case "player2_turnplayer": + zombie_devgui_turn_player( 1 ); + break; + case "player3_turnplayer": + zombie_devgui_turn_player( 2 ); + break; + case "player4_turnplayer": + zombie_devgui_turn_player( 3 ); + break; + case "player1_debug_pers": + zombie_devgui_debug_pers( 0 ); + break; + case "player2_debug_pers": + zombie_devgui_debug_pers( 1 ); + break; + case "player3_debug_pers": + zombie_devgui_debug_pers( 2 ); + break; + case "player4_debug_pers": + zombie_devgui_debug_pers( 3 ); + break; + case "bonfire_sale": + case "bonus_points_player": + case "bonus_points_team": + case "carpenter": + case "double_points": + case "empty_clip": + case "fire_sale": + case "free_perk": + case "full_ammo": + case "insta_kill": + case "lose_perk": + case "lose_points_team": + case "meat_stink": + case "minigun": + case "nuke": + case "random_weapon": + case "tesla": + zombie_devgui_give_powerup( cmd, 1 ); + break; + case "next_bonfire_sale": + case "next_bonus_points_player": + case "next_bonus_points_team": + case "next_carpenter": + case "next_double_points": + case "next_empty_clip": + case "next_fire_sale": + case "next_free_perk": + case "next_full_ammo": + case "next_insta_kill": + case "next_lose_perk": + case "next_lose_points_team": + case "next_meat_stink": + case "next_minigun": + case "next_nuke": + case "next_random_weapon": + case "next_tesla": + zombie_devgui_give_powerup( getsubstr( cmd, 5 ), 0 ); + break; + case "round": + zombie_devgui_goto_round( getDvarInt( "scr_zombie_round" ) ); + break; + case "round_next": + zombie_devgui_goto_round( level.round_number + 1 ); + break; + case "round_prev": + zombie_devgui_goto_round( level.round_number - 1 ); + break; + case "chest_move": + if ( isDefined( level.chest_accessed ) ) + { + level notify( "devgui_chest_end_monitor" ); + level.chest_accessed = 100; + } + break; + case "chest_never_move": + if ( isDefined( level.chest_accessed ) ) + { + level thread zombie_devgui_chest_never_move(); + } + break; + case "chest": + if ( isDefined( level.zombie_weapons[ getDvar( "scr_force_weapon" ) ] ) ) + { + } + break; + case "quantum_bomb_random_result": + setdvar( "scr_force_quantum_bomb_result", "" ); + break; + case "give_gasmask": + array_thread( get_players(), ::zombie_devgui_equipment_give, "equip_gasmask_zm" ); + break; + case "give_hacker": + array_thread( get_players(), ::zombie_devgui_equipment_give, "equip_hacker_zm" ); + break; + case "give_turbine": + array_thread( get_players(), ::zombie_devgui_equipment_give, "equip_turbine_zm" ); + break; + case "give_turret": + array_thread( get_players(), ::zombie_devgui_equipment_give, "equip_turret_zm" ); + break; + case "give_electrictrap": + array_thread( get_players(), ::zombie_devgui_equipment_give, "equip_electrictrap_zm" ); + break; + case "give_riotshield": + array_thread( get_players(), ::zombie_devgui_equipment_give, "riotshield_zm" ); + break; + case "give_jetgun": + array_thread( get_players(), ::zombie_devgui_equipment_give, "jetgun_zm" ); + break; + case "give_springpad": + array_thread( get_players(), ::zombie_devgui_equipment_give, "equip_springpad_zm" ); + break; + case "cool_jetgun": + array_thread( get_players(), ::zombie_devgui_cool_jetgun ); + break; + case "preserve_turbines": + array_thread( get_players(), ::zombie_devgui_preserve_turbines ); + break; + case "healthy_equipment": + array_thread( get_players(), ::zombie_devgui_equipment_stays_healthy ); + break; + case "disown_equipment": + array_thread( get_players(), ::zombie_devgui_disown_equipment ); + break; + case "buildable_drop": + array_thread( get_players(), ::zombie_devgui_buildable_drop ); + break; + case "build_busladder": + zombie_devgui_build( "busladder" ); + break; + case "build_bushatch": + zombie_devgui_build( "bushatch" ); + break; + case "build_dinerhatch": + zombie_devgui_build( "dinerhatch" ); + break; + case "build_cattlecatcher": + zombie_devgui_build( "cattlecatcher" ); + break; + case "build_pap": + zombie_devgui_build( "pap" ); + break; + case "build_riotshield_zm": + zombie_devgui_build( "riotshield_zm" ); + break; + case "build_powerswitch": + zombie_devgui_build( "powerswitch" ); + break; + case "build_turbine": + zombie_devgui_build( "turbine" ); + break; + case "build_turret": + zombie_devgui_build( "turret" ); + break; + case "build_electric_trap": + zombie_devgui_build( "electric_trap" ); + break; + case "build_jetgun_zm": + zombie_devgui_build( "jetgun_zm" ); + break; + case "build_sq_common": + zombie_devgui_build( "sq_common" ); + break; + case "build_springpad": + zombie_devgui_build( "springpad_zm" ); + break; + case "build_slipgun": + zombie_devgui_build( "slipgun_zm" ); + break; + case "build_keys": + zombie_devgui_build( "keys_zm" ); + break; + case "give_claymores": + array_thread( get_players(), ::zombie_devgui_give_claymores ); + break; + case "give_monkey": + array_thread( get_players(), ::zombie_devgui_give_monkey ); + break; + case "give_black_hole_bomb": + array_thread( get_players(), ::zombie_devgui_give_black_hole_bomb ); + break; + case "give_dolls": + array_thread( get_players(), ::zombie_devgui_give_dolls ); + break; + case "give_quantum_bomb": + array_thread( get_players(), ::zombie_devgui_give_quantum_bomb ); + break; + case "give_emp_bomb": + array_thread( get_players(), ::zombie_devgui_give_emp_bomb ); + break; + case "monkey_round": + zombie_devgui_monkey_round(); + break; + case "thief_round": + zombie_devgui_thief_round(); + break; + case "dog_round": + zombie_devgui_dog_round( getDvarInt( "scr_zombie_dogs" ) ); + break; + case "dog_round_skip": + zombie_devgui_dog_round_skip(); + break; + case "print_variables": + zombie_devgui_dump_zombie_vars(); + break; + case "pack_current_weapon": + zombie_devgui_pack_current_weapon(); + break; + case "unpack_current_weapon": + zombie_devgui_unpack_current_weapon(); + break; + case "reopt_current_weapon": + zombie_devgui_reopt_current_weapon(); + break; + case "power_on": + flag_set( "power_on" ); + break; + case "power_off": + flag_clear( "power_on" ); + break; + case "zombie_dpad_none": + array_thread( get_players(), ::zombie_devgui_dpad_none ); + break; + case "zombie_dpad_damage": + array_thread( get_players(), ::zombie_devgui_dpad_damage ); + break; + case "zombie_dpad_kill": + array_thread( get_players(), ::zombie_devgui_dpad_death ); + break; + case "zombie_dpad_drink": + array_thread( get_players(), ::zombie_devgui_dpad_changeweapon ); + break; + case "director_easy": + zombie_devgui_director_easy(); + break; + case "open_sesame": + zombie_devgui_open_sesame(); + break; + case "allow_fog": + zombie_devgui_allow_fog(); + break; + case "disable_kill_thread_toggle": + zombie_devgui_disable_kill_thread_toggle(); + break; + case "check_kill_thread_every_frame_toggle": + zombie_devgui_check_kill_thread_every_frame_toggle(); + break; + case "kill_thread_test_mode_toggle": + zombie_devgui_kill_thread_test_mode_toggle(); + break; + case "zombie_failsafe_debug_flush": + level notify( "zombie_failsafe_debug_flush" ); + break; + case "spawn": + devgui_zombie_spawn(); + break; + case "spawn_all": + devgui_all_spawn(); + break; + case "": + default: + if ( isDefined( level.custom_devgui ) ) + { + [[ level.custom_devgui ]]( cmd ); + break; + } + } + setdvar( "zombie_devgui", "" ); + wait 0,5; +#/ + } + } + } +} + +devgui_all_spawn() +{ +/# + player = gethostplayer(); + devgui_bot_spawn( player.team ); + wait 0,1; + devgui_bot_spawn( player.team ); + wait 0,1; + devgui_bot_spawn( player.team ); + wait 0,1; + zombie_devgui_goto_round( 8 ); +#/ +} + +devgui_zombie_spawn() +{ +/# + player = get_players()[ 0 ]; + spawnername = undefined; + spawnername = "zombie_spawner"; + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + eye = player geteye(); + scale = 8000; + direction_vec = ( direction_vec[ 0 ] * scale, direction_vec[ 1 ] * scale, direction_vec[ 2 ] * scale ); + trace = bullettrace( eye, eye + direction_vec, 0, undefined ); + guy = undefined; + spawners = getentarray( spawnername, "script_noteworthy" ); + spawner = spawners[ 0 ]; + guy = maps/mp/zombies/_zm_utility::spawn_zombie( spawner ); + if ( isDefined( guy ) ) + { + guy.favoriteenemy = player; + guy.script_string = "zombie_chaser"; + guy thread maps/mp/zombies/_zm_spawner::zombie_spawn_init(); + wait 0,5; + guy.origin = trace[ "position" ]; + guy.angles = player.angles + vectorScale( ( 0, 1, 0 ), 180 ); + guy forceteleport( trace[ "position" ], player.angles + vectorScale( ( 0, 1, 0 ), 180 ) ); +#/ + } +} + +devgui_bot_spawn( team ) +{ +/# + player = gethostplayer(); + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + eye = player geteye(); + scale = 8000; + direction_vec = ( direction_vec[ 0 ] * scale, direction_vec[ 1 ] * scale, direction_vec[ 2 ] * scale ); + trace = bullettrace( eye, eye + direction_vec, 0, undefined ); + direction_vec = player.origin - trace[ "position" ]; + direction = vectorToAngle( direction_vec ); + bot = addtestclient(); + if ( !isDefined( bot ) ) + { + println( "Could not add test client" ); + return; + } + bot.pers[ "isBot" ] = 1; + bot.equipment_enabled = 0; + bot maps/mp/zombies/_zm::reset_rampage_bookmark_kill_times(); + bot.team = "allies"; + bot._player_entnum = bot getentitynumber(); + yaw = direction[ 1 ]; + bot thread devgui_bot_spawn_think( trace[ "position" ], yaw ); +#/ +} + +devgui_bot_spawn_think( origin, yaw ) +{ +/# + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self setorigin( origin ); + angles = ( 0, yaw, 0 ); + self setplayerangles( angles ); +#/ + } +} + +zombie_devgui_open_sesame() +{ +/# + setdvar( "zombie_unlock_all", 1 ); + flag_set( "power_on" ); + players = get_players(); + array_thread( players, ::zombie_devgui_give_money ); + zombie_doors = getentarray( "zombie_door", "targetname" ); + i = 0; + while ( i < zombie_doors.size ) + { + zombie_doors[ i ] notify( "trigger" ); + if ( is_true( zombie_doors[ i ].power_door_ignore_flag_wait ) ) + { + zombie_doors[ i ] notify( "power_on" ); + } + wait 0,05; + i++; + } + zombie_airlock_doors = getentarray( "zombie_airlock_buy", "targetname" ); + i = 0; + while ( i < zombie_airlock_doors.size ) + { + zombie_airlock_doors[ i ] notify( "trigger" ); + wait 0,05; + i++; + } + zombie_debris = getentarray( "zombie_debris", "targetname" ); + i = 0; + while ( i < zombie_debris.size ) + { + zombie_debris[ i ] notify( "trigger" ); + wait 0,05; + i++; + } + zombie_devgui_build( undefined ); + level notify( "open_sesame" ); + wait 1; + setdvar( "zombie_unlock_all", 0 ); +#/ +} + +any_player_in_noclip() +{ +/# + _a923 = get_players(); + _k923 = getFirstArrayKey( _a923 ); + while ( isDefined( _k923 ) ) + { + player = _a923[ _k923 ]; + if ( player isinmovemode( "ufo", "noclip" ) ) + { + return 1; + } + _k923 = getNextArrayKey( _a923, _k923 ); + } + return 0; +#/ +} + +diable_fog_in_noclip() +{ +/# + level.fog_disabled_in_noclip = 1; + level endon( "allowfoginnoclip" ); + flag_wait( "start_zombie_round_logic" ); + while ( 1 ) + { + while ( !any_player_in_noclip() ) + { + wait 1; + } + setdvar( "scr_fog_disable", "1" ); + setdvar( "r_fog_disable", "1" ); + if ( isDefined( level.culldist ) ) + { + setculldist( 0 ); + } + while ( any_player_in_noclip() ) + { + wait 1; + } + setdvar( "scr_fog_disable", "0" ); + setdvar( "r_fog_disable", "0" ); + if ( isDefined( level.culldist ) ) + { + setculldist( level.culldist ); + } +#/ + } +} + +zombie_devgui_allow_fog() +{ +/# + if ( level.fog_disabled_in_noclip ) + { + level notify( "allowfoginnoclip" ); + level.fog_disabled_in_noclip = 0; + setdvar( "scr_fog_disable", "0" ); + setdvar( "r_fog_disable", "0" ); + } + else + { + thread diable_fog_in_noclip(); +#/ + } +} + +zombie_devgui_give_money() +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + self maps/mp/zombies/_zm_score::add_to_player_score( 100000 ); +#/ +} + +zombie_devgui_turn_player( index ) +{ +/# + players = get_players(); + if ( !isDefined( index ) || index >= players.size ) + { + player = players[ 0 ]; + } + else + { + player = players[ index ]; + } + assert( isDefined( player ) ); + assert( isplayer( player ) ); + assert( isalive( player ) ); + level.devcheater = 1; + if ( player hasperk( "specialty_noname" ) ) + { + println( "Player turned HUMAN" ); + player maps/mp/zombies/_zm_turned::turn_to_human(); + } + else + { + println( "Player turned ZOMBIE" ); + player maps/mp/zombies/_zm_turned::turn_to_zombie(); +#/ + } +} + +zombie_devgui_debug_pers( index ) +{ +/# + players = get_players(); + if ( !isDefined( index ) || index >= players.size ) + { + player = players[ 0 ]; + } + else + { + player = players[ index ]; + } + assert( isDefined( player ) ); + assert( isplayer( player ) ); + assert( isalive( player ) ); + level.devcheater = 1; + println( "\n\n----------------------------------------------------------------------------------------------" ); + println( "Active Persistent upgrades [count=" + level.pers_upgrades_keys.size + "]" ); + pers_upgrade_index = 0; + while ( pers_upgrade_index < level.pers_upgrades_keys.size ) + { + name = level.pers_upgrades_keys[ pers_upgrade_index ]; + println( ( pers_upgrade_index + ">pers_upgrade name = " ) + name ); + pers_upgrade = level.pers_upgrades[ name ]; + i = 0; + while ( i < pers_upgrade.stat_names.size ) + { + stat_name = pers_upgrade.stat_names[ i ]; + stat_desired_value = pers_upgrade.stat_desired_values[ i ]; + player_current_stat_value = player maps/mp/zombies/_zm_stats::get_global_stat( stat_name ); + println( " " + i + ")stat_name = " + stat_name ); + println( " " + i + ")stat_desired_values = " + stat_desired_value ); + println( " " + i + ")player_current_stat_value = " + player_current_stat_value ); + i++; + } + if ( is_true( player.pers_upgrades_awarded[ name ] ) ) + { + println( "PLAYER HAS - " + name ); + pers_upgrade_index++; + continue; + } + else + { + println( "PLAYER DOES NOT HAVE - " + name ); + } + pers_upgrade_index++; + } + println( "----------------------------------------------------------------------------------------------\n\n" ); +#/ +} + +zombie_devgui_cool_jetgun() +{ +/# + if ( isDefined( level.zm_devgui_jetgun_never_overheat ) ) + { + self thread [[ level.zm_devgui_jetgun_never_overheat ]](); +#/ + } +} + +zombie_devgui_preserve_turbines() +{ +/# + self endon( "disconnect" ); + self notify( "preserve_turbines" ); + self endon( "preserve_turbines" ); + while ( !is_true( self.preserving_turbines ) ) + { + self.preserving_turbines = 1; + while ( 1 ) + { + self.turbine_health = 1200; + wait 1; + } + } + self.preserving_turbines = 0; +#/ +} + +zombie_devgui_equipment_stays_healthy() +{ +/# + self endon( "disconnect" ); + self notify( "preserve_equipment" ); + self endon( "preserve_equipment" ); + while ( !is_true( self.preserving_equipment ) ) + { + self.preserving_equipment = 1; + while ( 1 ) + { + self.equipment_damage = []; + wait 0,1; + } + } + self.preserving_equipment = 0; +#/ +} + +zombie_devgui_disown_equipment() +{ +/# + self.deployed_equipment = []; +#/ +} + +zombie_devgui_equipment_give( equipment ) +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( is_equipment_included( equipment ) ) + { + self maps/mp/zombies/_zm_equipment::equipment_buy( equipment ); +#/ + } +} + +zombie_devgui_buildable_drop() +{ +/# + self maps/mp/zombies/_zm_buildables::player_drop_piece(); +#/ +} + +zombie_devgui_build( buildable ) +{ +/# + player = get_players()[ 0 ]; + i = 0; + while ( i < level.buildable_stubs.size ) + { + if ( !isDefined( buildable ) || level.buildable_stubs[ i ].equipname == buildable ) + { + if ( isDefined( buildable ) || level.buildable_stubs[ i ].persistent != 3 ) + { + level.buildable_stubs[ i ] maps/mp/zombies/_zm_buildables::buildablestub_finish_build( player ); + } + } + i++; +#/ + } +} + +zombie_devgui_give_claymores() +{ +/# + self endon( "disconnect" ); + self notify( "give_planted_grenade_thread" ); + self endon( "give_planted_grenade_thread" ); + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( isDefined( self get_player_placeable_mine() ) ) + { + self takeweapon( self get_player_placeable_mine() ); + } + self thread maps/mp/zombies/_zm_weap_claymore::claymore_setup(); + while ( 1 ) + { + self givemaxammo( "claymore_zm" ); + wait 1; +#/ + } +} + +zombie_devgui_give_monkey() +{ +/# + self endon( "disconnect" ); + self notify( "give_tactical_grenade_thread" ); + self endon( "give_tactical_grenade_thread" ); + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( isDefined( self get_player_tactical_grenade() ) ) + { + self takeweapon( self get_player_tactical_grenade() ); + } + while ( isDefined( level.zombiemode_devgui_cymbal_monkey_give ) ) + { + self [[ level.zombiemode_devgui_cymbal_monkey_give ]](); + while ( 1 ) + { + self givemaxammo( "cymbal_monkey_zm" ); + wait 1; +#/ + } + } +} + +zombie_devgui_give_black_hole_bomb() +{ +/# + self endon( "disconnect" ); + self notify( "give_tactical_grenade_thread" ); + self endon( "give_tactical_grenade_thread" ); + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( isDefined( self get_player_tactical_grenade() ) ) + { + self takeweapon( self get_player_tactical_grenade() ); + } + while ( isDefined( level.zombiemode_devgui_black_hole_bomb_give ) ) + { + self [[ level.zombiemode_devgui_black_hole_bomb_give ]](); + while ( 1 ) + { + self givemaxammo( "zombie_black_hole_bomb" ); + wait 1; +#/ + } + } +} + +zombie_devgui_give_dolls() +{ +/# + self endon( "disconnect" ); + self notify( "give_tactical_grenade_thread" ); + self endon( "give_tactical_grenade_thread" ); + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( isDefined( self get_player_tactical_grenade() ) ) + { + self takeweapon( self get_player_tactical_grenade() ); + } + while ( isDefined( level.zombiemode_devgui_nesting_dolls_give ) ) + { + self [[ level.zombiemode_devgui_nesting_dolls_give ]](); + while ( 1 ) + { + self givemaxammo( "zombie_nesting_dolls" ); + wait 1; +#/ + } + } +} + +zombie_devgui_give_quantum_bomb() +{ +/# + self endon( "disconnect" ); + self notify( "give_tactical_grenade_thread" ); + self endon( "give_tactical_grenade_thread" ); + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( isDefined( self get_player_tactical_grenade() ) ) + { + self takeweapon( self get_player_tactical_grenade() ); + } + while ( isDefined( level.zombiemode_devgui_quantum_bomb_give ) ) + { + self [[ level.zombiemode_devgui_quantum_bomb_give ]](); + while ( 1 ) + { + self givemaxammo( "zombie_quantum_bomb" ); + wait 1; +#/ + } + } +} + +zombie_devgui_give_emp_bomb() +{ +/# + self endon( "disconnect" ); + self notify( "give_tactical_grenade_thread" ); + self endon( "give_tactical_grenade_thread" ); + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + level.devcheater = 1; + if ( isDefined( self get_player_tactical_grenade() ) ) + { + self takeweapon( self get_player_tactical_grenade() ); + } + while ( isDefined( level.zombiemode_devgui_emp_bomb_give ) ) + { + self [[ level.zombiemode_devgui_emp_bomb_give ]](); + while ( 1 ) + { + self givemaxammo( "emp_grenade_zm" ); + wait 1; +#/ + } + } +} + +zombie_devgui_invulnerable( playerindex, onoff ) +{ +/# + players = get_players(); + if ( !isDefined( playerindex ) ) + { + i = 0; + while ( i < players.size ) + { + zombie_devgui_invulnerable( i, onoff ); + i++; + } + } + else if ( players.size > playerindex ) + { + if ( onoff ) + { + players[ playerindex ] enableinvulnerability(); + return; + } + else + { + players[ playerindex ] disableinvulnerability(); +#/ + } + } +} + +zombie_devgui_kill() +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + self disableinvulnerability(); + death_from = ( randomfloatrange( -20, 20 ), randomfloatrange( -20, 20 ), randomfloatrange( -20, 20 ) ); + self dodamage( self.health + 666, self.origin + death_from ); +#/ +} + +zombie_devgui_toggle_ammo() +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + self notify( "devgui_toggle_ammo" ); + self endon( "devgui_toggle_ammo" ); + self.ammo4evah = !is_true( self.ammo4evah ); + while ( isDefined( self ) && self.ammo4evah ) + { + weapon = self getcurrentweapon(); + if ( weapon != "none" ) + { + max = weaponmaxammo( weapon ); + if ( isDefined( max ) ) + { + self setweaponammostock( weapon, max ); + } + } + wait 1; +#/ + } +} + +zombie_devgui_toggle_ignore() +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + self.ignoreme = !self.ignoreme; + if ( self.ignoreme ) + { + setdvar( "ai_showFailedPaths", 0 ); +#/ + } +} + +zombie_devgui_revive() +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + self reviveplayer(); + self notify( "stop_revive_trigger" ); + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + self.revivetrigger = undefined; + } + self allowjump( 1 ); + self.ignoreme = 0; + self.laststand = undefined; + self notify( "player_revived" ); +#/ +} + +zombie_devgui_give_health() +{ +/# + assert( isDefined( self ) ); + assert( isplayer( self ) ); + assert( isalive( self ) ); + self notify( "devgui_health" ); + self endon( "devgui_health" ); + self endon( "disconnect" ); + self endon( "death" ); + level.devcheater = 1; + while ( 1 ) + { + self.maxhealth = 100000; + self.health = 100000; + self waittill_any( "player_revived", "perk_used", "spawned_player" ); + wait 2; +#/ + } +} + +zombie_devgui_give_perk( perk ) +{ +/# + vending_triggers = getentarray( "zombie_vending", "targetname" ); + player = get_players()[ 0 ]; + level.devcheater = 1; + if ( vending_triggers.size < 1 ) + { + return; + } + i = 0; + while ( i < vending_triggers.size ) + { + if ( vending_triggers[ i ].script_noteworthy == perk ) + { + vending_triggers[ i ] notify( "trigger" ); + return; + } + i++; +#/ + } +} + +zombie_devgui_give_powerup( powerup_name, now ) +{ +/# + player = get_players()[ 0 ]; + found = 0; + level.devcheater = 1; + i = 0; + while ( i < level.zombie_powerup_array.size ) + { + if ( level.zombie_powerup_array[ i ] == powerup_name ) + { + level.zombie_powerup_index = i; + found = 1; + break; + } + else + { + i++; + } + } + if ( !found ) + { + return; + } + direction = player getplayerangles(); + direction_vec = anglesToForward( direction ); + eye = player geteye(); + scale = 8000; + direction_vec = ( direction_vec[ 0 ] * scale, direction_vec[ 1 ] * scale, direction_vec[ 2 ] * scale ); + trace = bullettrace( eye, eye + direction_vec, 0, undefined ); + level.zombie_devgui_power = 1; + level.zombie_vars[ "zombie_drop_item" ] = 1; + level.powerup_drop_count = 0; + if ( !isDefined( now ) || now ) + { + level thread maps/mp/zombies/_zm_powerups::powerup_drop( trace[ "position" ] ); +#/ + } +} + +zombie_devgui_goto_round( target_round ) +{ +/# + player = get_players()[ 0 ]; + if ( target_round < 1 ) + { + target_round = 1; + } + level.devcheater = 1; + level.zombie_total = 0; + maps/mp/zombies/_zm::ai_calculate_health( target_round ); + level.round_number = target_round - 1; + level notify( "kill_round" ); + wait 1; + zombies = get_round_enemy_array(); + while ( isDefined( zombies ) ) + { + i = 0; + while ( i < zombies.size ) + { + if ( is_true( zombies[ i ].ignore_devgui_death ) ) + { + i++; + continue; + } + else + { + zombies[ i ] dodamage( zombies[ i ].health + 666, zombies[ i ].origin ); + } + i++; +#/ + } + } +} + +zombie_devgui_monkey_round() +{ +/# + if ( isDefined( level.next_monkey_round ) ) + { + zombie_devgui_goto_round( level.next_monkey_round ); +#/ + } +} + +zombie_devgui_thief_round() +{ +/# + if ( isDefined( level.next_thief_round ) ) + { + zombie_devgui_goto_round( level.next_thief_round ); +#/ + } +} + +zombie_devgui_dog_round( num_dogs ) +{ +/# + if ( !isDefined( level.dogs_enabled ) || !level.dogs_enabled ) + { + return; + } + if ( !isDefined( level.dog_rounds_enabled ) || !level.dog_rounds_enabled ) + { + return; + } + if ( !isDefined( level.enemy_dog_spawns ) || level.enemy_dog_spawns.size < 1 ) + { + return; + } + if ( !flag( "dog_round" ) ) + { + setdvar( "force_dogs", num_dogs ); + } + zombie_devgui_goto_round( level.round_number + 1 ); +#/ +} + +zombie_devgui_dog_round_skip() +{ +/# + if ( isDefined( level.next_dog_round ) ) + { + zombie_devgui_goto_round( level.next_dog_round ); +#/ + } +} + +zombie_devgui_dump_zombie_vars() +{ +/# + if ( !isDefined( level.zombie_vars ) ) + { + return; + } + if ( level.zombie_vars.size > 0 ) + { + println( "#### Zombie Variables ####" ); + } + else + { + return; + } + var_names = getarraykeys( level.zombie_vars ); + i = 0; + while ( i < level.zombie_vars.size ) + { + key = var_names[ i ]; + println( ( key + ": " ) + level.zombie_vars[ key ] ); + i++; + } + println( "##### End Zombie Variables #####" ); +#/ +} + +zombie_devgui_pack_current_weapon() +{ +/# + players = get_players(); + reviver = players[ 0 ]; + level.devcheater = 1; + i = 0; + while ( i < players.size ) + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + weap = maps/mp/zombies/_zm_weapons::get_base_name( players[ i ] getcurrentweapon() ); + weapon = get_upgrade( weap ); + if ( isDefined( weapon ) ) + { + players[ i ] takeweapon( weap ); + players[ i ] giveweapon( weapon, 0, players[ i ] maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); + players[ i ] givestartammo( weapon ); + players[ i ] switchtoweapon( weapon ); + } + } + i++; +#/ + } +} + +zombie_devgui_unpack_current_weapon() +{ +/# + players = get_players(); + reviver = players[ 0 ]; + level.devcheater = 1; + i = 0; + while ( i < players.size ) + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + weap = players[ i ] getcurrentweapon(); + weapon = maps/mp/zombies/_zm_weapons::get_base_weapon_name( weap, 1 ); + if ( isDefined( weapon ) ) + { + players[ i ] takeweapon( weap ); + players[ i ] giveweapon( weapon, 0, players[ i ] maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); + players[ i ] givestartammo( weapon ); + players[ i ] switchtoweapon( weapon ); + } + } + i++; +#/ + } +} + +zombie_devgui_reopt_current_weapon() +{ +/# + players = get_players(); + reviver = players[ 0 ]; + level.devcheater = 1; + i = 0; + while ( i < players.size ) + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + weap = players[ i ] getcurrentweapon(); + weapon = weap; + if ( isDefined( weapon ) ) + { + if ( isDefined( players[ i ].pack_a_punch_weapon_options ) ) + { + } + players[ i ] takeweapon( weap ); + players[ i ] giveweapon( weapon, 0, players[ i ] maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); + players[ i ] givestartammo( weapon ); + players[ i ] switchtoweapon( weapon ); + } + } + i++; +#/ + } +} + +get_upgrade( weaponname ) +{ +/# + if ( isDefined( level.zombie_weapons[ weaponname ] ) && isDefined( level.zombie_weapons[ weaponname ].upgrade_name ) ) + { + return maps/mp/zombies/_zm_weapons::get_upgrade_weapon( weaponname, 0 ); + } + else + { + return maps/mp/zombies/_zm_weapons::get_upgrade_weapon( weaponname, 1 ); +#/ + } +} + +zombie_devgui_director_easy() +{ +/# + if ( isDefined( level.director_devgui_health ) ) + { + [[ level.director_devgui_health ]](); +#/ + } +} + +zombie_devgui_chest_never_move() +{ +/# + level notify( "devgui_chest_end_monitor" ); + level endon( "devgui_chest_end_monitor" ); + for ( ;; ) + { + level.chest_accessed = 0; + wait 5; +#/ + } +} + +zombie_devgui_disable_kill_thread_toggle() +{ +/# + if ( !is_true( level.disable_kill_thread ) ) + { + level.disable_kill_thread = 1; + } + else + { + level.disable_kill_thread = 0; +#/ + } +} + +zombie_devgui_check_kill_thread_every_frame_toggle() +{ +/# + if ( !is_true( level.check_kill_thread_every_frame ) ) + { + level.check_kill_thread_every_frame = 1; + } + else + { + level.check_kill_thread_every_frame = 0; +#/ + } +} + +zombie_devgui_kill_thread_test_mode_toggle() +{ +/# + if ( !is_true( level.kill_thread_test_mode ) ) + { + level.kill_thread_test_mode = 1; + } + else + { + level.kill_thread_test_mode = 0; +#/ + } +} + +showonespawnpoint( spawn_point, color, notification, height, print ) +{ +/# + if ( !isDefined( height ) || height <= 0 ) + { + height = get_player_height(); + } + if ( !isDefined( print ) ) + { + print = spawn_point.classname; + } + center = spawn_point.origin; + forward = anglesToForward( spawn_point.angles ); + right = anglesToRight( spawn_point.angles ); + forward = vectorScale( forward, 16 ); + right = vectorScale( right, 16 ); + a = ( center + forward ) - right; + b = center + forward + right; + c = ( center - forward ) + right; + d = center - forward - right; + thread lineuntilnotified( a, b, color, 0, notification ); + thread lineuntilnotified( b, c, color, 0, notification ); + thread lineuntilnotified( c, d, color, 0, notification ); + thread lineuntilnotified( d, a, color, 0, notification ); + thread lineuntilnotified( a, a + ( 0, 0, height ), color, 0, notification ); + thread lineuntilnotified( b, b + ( 0, 0, height ), color, 0, notification ); + thread lineuntilnotified( c, c + ( 0, 0, height ), color, 0, notification ); + thread lineuntilnotified( d, d + ( 0, 0, height ), color, 0, notification ); + a += ( 0, 0, height ); + b += ( 0, 0, height ); + c += ( 0, 0, height ); + d += ( 0, 0, height ); + thread lineuntilnotified( a, b, color, 0, notification ); + thread lineuntilnotified( b, c, color, 0, notification ); + thread lineuntilnotified( c, d, color, 0, notification ); + thread lineuntilnotified( d, a, color, 0, notification ); + center += ( 0, 0, height / 2 ); + arrow_forward = anglesToForward( spawn_point.angles ); + arrowhead_forward = anglesToForward( spawn_point.angles ); + arrowhead_right = anglesToRight( spawn_point.angles ); + arrow_forward = vectorScale( arrow_forward, 32 ); + arrowhead_forward = vectorScale( arrowhead_forward, 24 ); + arrowhead_right = vectorScale( arrowhead_right, 8 ); + a = center + arrow_forward; + b = ( center + arrowhead_forward ) - arrowhead_right; + c = center + arrowhead_forward + arrowhead_right; + thread lineuntilnotified( center, a, color, 0, notification ); + thread lineuntilnotified( a, b, color, 0, notification ); + thread lineuntilnotified( a, c, color, 0, notification ); + thread print3duntilnotified( spawn_point.origin + ( 0, 0, height ), print, color, 1, 1, notification ); + return; +#/ +} + +print3duntilnotified( origin, text, color, alpha, scale, notification ) +{ +/# + level endon( notification ); + for ( ;; ) + { + print3d( origin, text, color, alpha, scale ); + wait 0,05; +#/ + } +} + +lineuntilnotified( start, end, color, depthtest, notification ) +{ +/# + level endon( notification ); + for ( ;; ) + { + line( start, end, color, depthtest ); + wait 0,05; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_electric_cherry.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_electric_cherry.gsc new file mode 100644 index 0000000..04be636 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_electric_cherry.gsc @@ -0,0 +1,140 @@ +#include maps/mp/_visionset_mgr; +#include maps/mp/zombies/_zm_ai_basic; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + level.custom_laststand_func = ::electric_cherry_laststand; + level._effect[ "electric_cherry_explode" ] = loadfx( "maps/zombie_alcatraz/fx_alcatraz_electric_cherry_player" ); + level._effect[ "tesla_shock" ] = loadfx( "maps/zombie/fx_zombie_tesla_shock" ); + level._effect[ "tesla_shock_secondary" ] = loadfx( "maps/zombie/fx_zombie_tesla_shock_secondary" ); + set_zombie_var( "tesla_head_gib_chance", 50 ); +} + +electric_cherry_player_init() +{ +} + +electric_cherry_laststand() +{ + perk_radius = 500; + perk_dmg = 1000; + perk_points = 40; + perk_delay = 1,5; + self thread electric_cherry_visionset(); + wait perk_delay; + visionsetlaststand( "zm_electric_cherry", 1 ); + while ( isDefined( self ) ) + { + playfx( level._effect[ "electric_cherry_explode" ], self.origin ); + self playsound( "zmb_cherry_explode" ); + a_zombies = get_round_enemy_array(); + a_zombies = get_array_of_closest( self.origin, a_zombies, undefined, undefined, perk_radius ); + i = 0; + while ( i < a_zombies.size ) + { + if ( isDefined( self ) && isalive( self ) ) + { + if ( a_zombies[ i ].health <= perk_dmg ) + { + a_zombies[ i ] thread electric_cherry_death_fx(); + self maps/mp/zombies/_zm_score::add_to_player_score( perk_points ); + } + else + { + a_zombies[ i ] thread electric_cherry_stun(); + a_zombies[ i ] thread electric_cherry_shock_fx(); + } + wait 0,1; + a_zombies[ i ] dodamage( perk_dmg, self.origin, self ); + } + i++; + } + } +} + +electric_cherry_death_fx() +{ + self endon( "death" ); + tag = "J_SpineUpper"; + fx = "tesla_shock"; + if ( self.isdog ) + { + tag = "J_Spine1"; + } + self playsound( "zmb_elec_jib_zombie" ); + network_safe_play_fx_on_tag( "tesla_death_fx", 2, level._effect[ fx ], self, tag ); + if ( isDefined( self.tesla_head_gib_func ) && !self.head_gibbed ) + { + [[ self.tesla_head_gib_func ]](); + } +} + +electric_cherry_shock_fx() +{ + self endon( "death" ); + tag = "J_SpineUpper"; + fx = "tesla_shock_secondary"; + if ( self.isdog ) + { + tag = "J_Spine1"; + } + self playsound( "zmb_elec_jib_zombie" ); + network_safe_play_fx_on_tag( "tesla_shock_fx", 2, level._effect[ fx ], self, tag ); +} + +electric_cherry_stun() +{ + self endon( "death" ); + self notify( "stun_zombie" ); + self endon( "stun_zombie" ); + if ( self.health <= 0 ) + { +/# + iprintln( "trying to stun a dead zombie" ); +#/ + return; + } + if ( isDefined( self.stun_zombie ) ) + { + self thread [[ self.stun_zombie ]](); + return; + } + self thread maps/mp/zombies/_zm_ai_basic::start_inert(); +} + +electric_cherry_visionset() +{ + if ( isDefined( self ) && flag( "solo_game" ) ) + { + if ( isDefined( level.vsmgr_prio_visionset_zm_electric_cherry ) ) + { + if ( !isDefined( self.electric_cherry_visionset ) || self.electric_cherry_visionset == 0 ) + { + maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_electric_cherry", self ); + self.electric_cherry_visionset = 1; + } + } + } + wait 5; + if ( isDefined( self ) && isDefined( level.vsmgr_prio_visionset_zm_electric_cherry ) ) + { + if ( isDefined( self.electric_cherry_visionset ) && self.electric_cherry_visionset ) + { + maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_electric_cherry", self ); + self.electric_cherry_visionset = 0; + return; + } + else + { + if ( !flag( "solo_game" ) ) + { + visionsetlaststand( "zombie_last_stand", 1 ); + } + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_electrictrap.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_electrictrap.gsc new file mode 100644 index 0000000..1f4f05d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_electrictrap.gsc @@ -0,0 +1,412 @@ +#include maps/mp/zombies/_zm_traps; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_power; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_electrictrap_zm" ) ) + { + return; + } + level.electrictrap_name = "equip_electrictrap_zm"; + maps/mp/zombies/_zm_equipment::register_equipment( "equip_electrictrap_zm", &"ZOMBIE_EQUIP_ELECTRICTRAP_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_ELECTRICTRAP_HOWTO", "etrap_zm_icon", "electrictrap", undefined, ::transfertrap, ::droptrap, ::pickuptrap, ::placetrap ); + maps/mp/zombies/_zm_equipment::add_placeable_equipment( "equip_electrictrap_zm", "p6_anim_zm_buildable_etrap" ); + level thread onplayerconnect(); + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "equip_electrictrap", &"ZOMBIE_EQUIP_ELECTRICTRAP_PICKUP_HINT_STRING" ); + level._effect[ "etrap_on" ] = loadfx( "maps/zombie/fx_zmb_tranzit_electric_trap_on" ); + thread wait_init_damage(); +} + +wait_init_damage() +{ + while ( !isDefined( level.zombie_vars ) || !isDefined( level.zombie_vars[ "zombie_health_start" ] ) ) + { + wait 1; + } + level.etrap_damage = maps/mp/zombies/_zm::ai_zombie_health( 50 ); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + self thread setupwatchers(); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchelectrictrapuse(); + } +} + +setupwatchers() +{ + self waittill( "weapon_watchers_created" ); + watcher = maps/mp/gametypes_zm/_weaponobjects::getweaponobjectwatcher( "equip_electrictrap" ); + watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_equipment::equipment_onspawnretrievableweaponobject; +} + +watchelectrictrapuse() +{ + self notify( "watchElectricTrapUse" ); + self endon( "watchElectricTrapUse" ); + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "equipment_placed", weapon, weapname ); + if ( weapname == level.electrictrap_name ) + { + self cleanupoldtrap(); + self.buildableelectrictrap = weapon; + self thread startelectrictrapdeploy( weapon ); + } + } +} + +cleanupoldtrap() +{ + if ( isDefined( self.buildableelectrictrap ) ) + { + if ( isDefined( self.buildableelectrictrap.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.buildableelectrictrap.stub ); + self.buildableelectrictrap.stub = undefined; + } + self.buildableelectrictrap delete(); + } + if ( isDefined( level.electrap_sound_ent ) ) + { + level.electrap_sound_ent delete(); + level.electrap_sound_ent = undefined; + } +} + +watchforcleanup() +{ + self notify( "etrap_cleanup" ); + self endon( "etrap_cleanup" ); + self waittill_any( "death", "disconnect", "equip_electrictrap_zm_taken", "equip_electrictrap_zm_pickup" ); + cleanupoldtrap(); +} + +placetrap( origin, angles ) +{ + item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "p6_anim_zm_buildable_etrap", "equip_electrictrap_zm", origin, angles ); + if ( isDefined( item ) ) + { + item.owner = self; + item.zombie_attack_callback = ::zombie_attacked_trap; + } + return item; +} + +droptrap() +{ + item = self maps/mp/zombies/_zm_equipment::dropped_equipment_think( "p6_anim_zm_buildable_etrap", "equip_electrictrap_zm", self.origin, self.angles ); + if ( isDefined( item ) ) + { + item.electrictrap_health = self.electrictrap_health; + } + self.electrictrap_health = undefined; + return item; +} + +pickuptrap( item ) +{ + item.owner = self; + self.electrictrap_health = item.electrictrap_health; + item.electrictrap_health = undefined; +} + +transfertrap( fromplayer, toplayer ) +{ + buildableelectrictrap = toplayer.buildableelectrictrap; + electrictrap_health = toplayer.electrictrap_health; + toplayer.buildableelectrictrap = fromplayer.buildableelectrictrap; + toplayer.buildableelectrictrap.original_owner = toplayer; + toplayer notify( "equip_electrictrap_zm_taken" ); + toplayer thread startelectrictrapdeploy( toplayer.buildableelectrictrap ); + toplayer.electrictrap_health = fromplayer.electrictrap_health; + fromplayer.buildableelectrictrap = buildableelectrictrap; + fromplayer notify( "equip_electrictrap_zm_taken" ); + if ( isDefined( fromplayer.buildableelectrictrap ) ) + { + fromplayer thread startelectrictrapdeploy( fromplayer.buildableelectrictrap ); + fromplayer.buildableelectrictrap.original_owner = fromplayer; + fromplayer.buildableelectrictrap.owner = fromplayer; + } + else + { + fromplayer maps/mp/zombies/_zm_equipment::equipment_release( "equip_electrictrap_zm" ); + } + fromplayer.electrictrap_health = electrictrap_health; +} + +startelectrictrapdeploy( weapon ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_electrictrap_zm_taken" ); + self thread watchforcleanup(); + electricradius = 45; + if ( !isDefined( self.electrictrap_health ) ) + { + self.electrictrap_health = 60; + } + if ( isDefined( weapon ) ) + { +/# + weapon thread debugelectrictrap( electricradius ); +#/ + if ( isDefined( level.equipment_etrap_needs_power ) && level.equipment_etrap_needs_power ) + { + weapon.power_on = 0; + maps/mp/zombies/_zm_power::add_temp_powered_item( ::trap_power_on, ::trap_power_off, ::trap_in_range, ::maps/mp/zombies/_zm_power::cost_high, 1, weapon.power_on, weapon ); + } + else + { + weapon.power_on = 1; + } + if ( !weapon.power_on ) + { + self iprintlnbold( &"ZOMBIE_NEED_LOCAL_POWER" ); + } + self thread electrictrapthink( weapon, electricradius ); + if ( isDefined( level.equipment_etrap_needs_power ) && !level.equipment_etrap_needs_power ) + { + self thread electrictrapdecay( weapon ); + } + self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( weapon ); + weapon waittill( "death" ); + if ( isDefined( level.electrap_sound_ent ) ) + { + level.electrap_sound_ent playsound( "wpn_zmb_electrap_stop" ); + level.electrap_sound_ent delete(); + level.electrap_sound_ent = undefined; + } + self notify( "etrap_cleanup" ); + } +} + +trap_in_range( delta, origin, radius ) +{ + if ( distancesquared( self.target.origin, origin ) < ( radius * radius ) ) + { + return 1; + } + return 0; +} + +trap_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: trap on\n" ); +#/ + if ( !isDefined( self.target ) ) + { + return; + } + self.target.power_on = 1; + self.target.power_on_time = getTime(); + if ( !isDefined( level.electrap_sound_ent ) ) + { + level.electrap_sound_ent = spawn( "script_origin", self.target.origin ); + } + level.electrap_sound_ent playsound( "wpn_zmb_electrap_start" ); + level.electrap_sound_ent playloopsound( "wpn_zmb_electrap_loop", 2 ); + self.target thread trapfx(); +} + +trap_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: trap off\n" ); +#/ + if ( !isDefined( self.target ) ) + { + return; + } + self.target.power_on = 0; + if ( isDefined( level.electrap_sound_ent ) ) + { + level.electrap_sound_ent playsound( "wpn_zmb_electrap_stop" ); + level.electrap_sound_ent delete(); + level.electrap_sound_ent = undefined; + } +} + +trapfx() +{ + self endon( "disconnect" ); + while ( isDefined( self ) && isDefined( self.power_on ) && self.power_on ) + { + playfxontag( level._effect[ "etrap_on" ], self, "tag_origin" ); + wait 0,3; + } +} + +zombie_attacked_trap( zombie ) +{ + if ( isDefined( self.power_on ) && self.power_on ) + { + self zap_zombie( zombie ); + } +} + +electrocution_lockout( time ) +{ + level.electrocuting_zombie = 1; + wait time; + level.electrocuting_zombie = 0; +} + +zap_zombie( zombie ) +{ + if ( isDefined( zombie.ignore_electric_trap ) && zombie.ignore_electric_trap ) + { + return; + } + if ( zombie.health > level.etrap_damage ) + { + zombie dodamage( level.etrap_damage, self.origin ); + zombie.ignore_electric_trap = 1; + return; + } + self playsound( "wpn_zmb_electrap_zap" ); + if ( isDefined( level.electrocuting_zombie ) && !level.electrocuting_zombie ) + { + thread electrocution_lockout( 2 ); + zombie thread play_elec_vocals(); + zombie thread maps/mp/zombies/_zm_traps::electroctute_death_fx(); + zombie.is_on_fire = 0; + zombie notify( "stop_flame_damage" ); + } + zombie thread electrictrapkill( self ); +} + +etrap_choke() +{ + if ( !isDefined( level.etrap_choke_count ) ) + { + level.etrap_choke_count = 0; + } + level.etrap_choke_count++; + if ( level.etrap_choke_count >= 5 ) + { + wait 0,05; + level.etrap_choke_count = 0; + } +} + +electrictrapthink( weapon, electricradius ) +{ + weapon endon( "death" ); + radiussquared = electricradius * electricradius; + while ( isDefined( weapon ) ) + { + while ( weapon.power_on && ( getTime() - weapon.power_on_time ) > 2000 ) + { + zombies = getaiarray( level.zombie_team ); + _a350 = zombies; + _k350 = getFirstArrayKey( _a350 ); + while ( isDefined( _k350 ) ) + { + zombie = _a350[ _k350 ]; + if ( !isDefined( zombie ) || !isalive( zombie ) ) + { + } + else + { + if ( isDefined( zombie.ignore_electric_trap ) && zombie.ignore_electric_trap ) + { + break; + } + else + { + if ( distancesquared( weapon.origin, zombie.origin ) < radiussquared ) + { + weapon zap_zombie( zombie ); + wait 0,15; + } + etrap_choke(); + } + } + _k350 = getNextArrayKey( _a350, _k350 ); + } + players = get_players(); + _a369 = players; + _k369 = getFirstArrayKey( _a369 ); + while ( isDefined( _k369 ) ) + { + player = _a369[ _k369 ]; + if ( is_player_valid( player ) && distancesquared( weapon.origin, player.origin ) < radiussquared ) + { + player thread maps/mp/zombies/_zm_traps::player_elec_damage(); + etrap_choke(); + } + etrap_choke(); + _k369 = getNextArrayKey( _a369, _k369 ); + } + } + wait 0,1; + } +} + +electrictrapkill( weapon ) +{ + self endon( "death" ); + wait randomfloatrange( 0,1, 0,4 ); + self dodamage( self.health + 666, self.origin ); +} + +electrictrapdecay( weapon ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_electrictrap_zm_taken" ); + while ( isDefined( weapon ) ) + { + if ( weapon.power_on ) + { + self.electrictrap_health--; + + if ( self.electrictrap_health <= 0 ) + { + self cleanupoldtrap(); + self.electrictrap_health = undefined; + self thread maps/mp/zombies/_zm_equipment::equipment_release( "equip_electrictrap_zm" ); + return; + } + } + wait 1; + } +} + +debugelectrictrap( radius ) +{ +/# + while ( isDefined( self ) ) + { + if ( getDvarInt( #"EB512CB7" ) ) + { + circle( self.origin, radius, ( 1, 1, 1 ), 0, 1, 1 ); + } + wait 0,05; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_gasmask.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_gasmask.gsc new file mode 100644 index 0000000..998561e --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_gasmask.gsc @@ -0,0 +1,198 @@ +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_gasmask_zm" ) ) + { + return; + } + registerclientfield( "toplayer", "gasmaskoverlay", 7000, 1, "int" ); + maps/mp/zombies/_zm_equipment::register_equipment( "equip_gasmask_zm", &"ZOMBIE_EQUIP_GASMASK_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_GASMASK_HOWTO", undefined, "gasmask", ::gasmask_activation_watcher_thread ); + level.deathcard_spawn_func = ::remove_gasmask_on_player_bleedout; + precacheitem( "lower_equip_gasmask_zm" ); + onplayerconnect_callback( ::gasmask_on_player_connect ); +} + +gasmask_on_player_connect() +{ +} + +gasmask_removed_watcher_thread() +{ + self notify( "only_one_gasmask_removed_thread" ); + self endon( "only_one_gasmask_removed_thread" ); + self endon( "disconnect" ); + self waittill( "equip_gasmask_zm_taken" ); + if ( isDefined( level.zombiemode_gasmask_reset_player_model ) ) + { + ent_num = self.characterindex; + if ( isDefined( self.zm_random_char ) ) + { + ent_num = self.zm_random_char; + } + self [[ level.zombiemode_gasmask_reset_player_model ]]( ent_num ); + } + if ( isDefined( level.zombiemode_gasmask_reset_player_viewmodel ) ) + { + ent_num = self.characterindex; + if ( isDefined( self.zm_random_char ) ) + { + ent_num = self.zm_random_char; + } + self [[ level.zombiemode_gasmask_reset_player_viewmodel ]]( ent_num ); + } + self setclientfieldtoplayer( "gasmaskoverlay", 0 ); +} + +gasmask_activation_watcher_thread() +{ + self endon( "zombified" ); + self endon( "disconnect" ); + self endon( "equip_gasmask_zm_taken" ); + self thread gasmask_removed_watcher_thread(); + self thread remove_gasmask_on_game_over(); + if ( isDefined( level.zombiemode_gasmask_set_player_model ) ) + { + ent_num = self.characterindex; + if ( isDefined( self.zm_random_char ) ) + { + ent_num = self.zm_random_char; + } + self [[ level.zombiemode_gasmask_set_player_model ]]( ent_num ); + } + if ( isDefined( level.zombiemode_gasmask_set_player_viewmodel ) ) + { + ent_num = self.characterindex; + if ( isDefined( self.zm_random_char ) ) + { + ent_num = self.zm_random_char; + } + self [[ level.zombiemode_gasmask_set_player_viewmodel ]]( ent_num ); + } + for ( ;; ) + { + while ( 1 ) + { + self waittill_either( "equip_gasmask_zm_activate", "equip_gasmask_zm_deactivate" ); + if ( self maps/mp/zombies/_zm_equipment::is_equipment_active( "equip_gasmask_zm" ) ) + { + self increment_is_drinking(); + self setactionslot( 1, "" ); + if ( isDefined( level.zombiemode_gasmask_set_player_model ) ) + { + ent_num = self.characterindex; + if ( isDefined( self.zm_random_char ) ) + { + ent_num = self.zm_random_char; + } + self [[ level.zombiemode_gasmask_change_player_headmodel ]]( ent_num, 1 ); + } + clientnotify( "gmsk2" ); + self waittill( "weapon_change_complete" ); + self setclientfieldtoplayer( "gasmaskoverlay", 1 ); + } + else + { + self increment_is_drinking(); + self setactionslot( 1, "" ); + if ( isDefined( level.zombiemode_gasmask_set_player_model ) ) + { + ent_num = self.characterindex; + if ( isDefined( self.zm_random_char ) ) + { + ent_num = self.zm_random_char; + } + self [[ level.zombiemode_gasmask_change_player_headmodel ]]( ent_num, 0 ); + } + self takeweapon( "equip_gasmask_zm" ); + self giveweapon( "lower_equip_gasmask_zm" ); + self switchtoweapon( "lower_equip_gasmask_zm" ); + wait 0,05; + self setclientfieldtoplayer( "gasmaskoverlay", 0 ); + self waittill( "weapon_change_complete" ); + self takeweapon( "lower_equip_gasmask_zm" ); + self giveweapon( "equip_gasmask_zm" ); + } + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + self setactionslot( 1, "weapon", "equip_gasmask_zm" ); + self notify( "equipment_select_response_done" ); + } + } + else if ( isDefined( self.prev_weapon_before_equipment_change ) && self hasweapon( self.prev_weapon_before_equipment_change ) ) + { + if ( self.prev_weapon_before_equipment_change != self getcurrentweapon() ) + { + self switchtoweapon( self.prev_weapon_before_equipment_change ); + self waittill( "weapon_change_complete" ); + } + break; + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + if ( primaryweapons[ 0 ] != self getcurrentweapon() ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + self waittill( "weapon_change_complete" ); + } + break; + } + else + { + self switchtoweapon( get_player_melee_weapon() ); + } + } + } + self setactionslot( 1, "weapon", "equip_gasmask_zm" ); + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( self.intermission ) && !self.intermission ) + { + self decrement_is_drinking(); + } + self notify( "equipment_select_response_done" ); + } +} + +remove_gasmask_on_player_bleedout() +{ + self setclientfieldtoplayer( "gasmaskoverlay", 0 ); + wait_network_frame(); + wait_network_frame(); + self setclientfieldtoplayer( "gasmaskoverlay", 1 ); +} + +remove_gasmask_on_game_over() +{ + self endon( "equip_gasmask_zm_taken" ); + level waittill( "pre_end_game" ); + self setclientfieldtoplayer( "gasmaskoverlay", 0 ); +} + +gasmask_active() +{ + return self maps/mp/zombies/_zm_equipment::is_equipment_active( "equip_gasmask_zm" ); +} + +gasmask_debug_print( msg, color ) +{ +/# + if ( !getDvarInt( #"4D1BCA99" ) ) + { + return; + } + if ( !isDefined( color ) ) + { + color = ( 0, 0, 1 ); + } + print3d( self.origin + vectorScale( ( 0, 0, 1 ), 60 ), msg, color, 1, 1, 40 ); +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_hacker.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_hacker.gsc new file mode 100644 index 0000000..afc5de3 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_hacker.gsc @@ -0,0 +1,880 @@ +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_hacker_zm" ) ) + { + return; + } + maps/mp/zombies/_zm_equipment::register_equipment( "equip_hacker_zm", &"ZOMBIE_EQUIP_HACKER_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_HACKER_HOWTO", undefined, "hacker" ); + level._hackable_objects = []; + level._pooled_hackable_objects = []; + onplayerconnect_callback( ::hacker_on_player_connect ); + level thread hack_trigger_think(); + level thread hacker_trigger_pool_think(); + level thread hacker_round_reward(); + if ( getDvarInt( #"53BD7080" ) == 1 ) + { + level thread hacker_debug(); + } +} + +hacker_round_reward() +{ + while ( 1 ) + { + level waittill( "end_of_round" ); + if ( !isDefined( level._from_nml ) ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ] get_player_equipment() ) && players[ i ] get_player_equipment() == "equip_hacker_zm" ) + { + if ( isDefined( players[ i ].equipment_got_in_round[ "equip_hacker_zm" ] ) ) + { + got_in_round = players[ i ].equipment_got_in_round[ "equip_hacker_zm" ]; + rounds_kept = level.round_number - got_in_round; + rounds_kept -= 1; + if ( rounds_kept > 0 ) + { + rounds_kept = min( rounds_kept, 5 ); + score = rounds_kept * 500; + players[ i ] maps/mp/zombies/_zm_score::add_to_player_score( int( score ) ); + } + } + } + i++; + } + } + else level._from_nml = undefined; + } +} + +hacker_debug() +{ + while ( 1 ) + { + i = 0; + while ( i < level._hackable_objects.size ) + { + hackable = level._hackable_objects[ i ]; + if ( isDefined( hackable.pooled ) && hackable.pooled ) + { + if ( isDefined( hackable._trigger ) ) + { + col = vectorScale( ( 0, 0, 1 ), 255 ); + if ( isDefined( hackable.custom_debug_color ) ) + { + col = hackable.custom_debug_color; + } +/# + print3d( hackable.origin, "+", col, 1, 1 ); +#/ + } + else + { +/# + print3d( hackable.origin, "+", vectorScale( ( 0, 0, 1 ), 255 ), 1, 1 ); +#/ + } + i++; + continue; + } + else + { +/# + print3d( hackable.origin, "+", vectorScale( ( 0, 0, 1 ), 255 ), 1, 1 ); +#/ + } + i++; + } + wait 0,1; + } +} + +hacker_trigger_pool_think() +{ + if ( !isDefined( level._zombie_hacker_trigger_pool_size ) ) + { + level._zombie_hacker_trigger_pool_size = 8; + } + pool_active = 0; + level._hacker_pool = []; + while ( 1 ) + { + if ( pool_active ) + { + if ( !any_hackers_active() ) + { + destroy_pooled_items(); + } + else + { + sweep_pooled_items(); + add_eligable_pooled_items(); + } + } + else + { + if ( any_hackers_active() ) + { + pool_active = 1; + } + } + wait 0,1; + } +} + +destroy_pooled_items() +{ + pool_active = 0; + i = 0; + while ( i < level._hacker_pool.size ) + { + level._hacker_pool[ i ]._trigger delete(); + level._hacker_pool[ i ]._trigger = undefined; + i++; + } + level._hacker_pool = []; +} + +sweep_pooled_items() +{ + new_hacker_pool = []; + i = 0; + while ( i < level._hacker_pool.size ) + { + if ( level._hacker_pool[ i ] should_pooled_object_exist() ) + { + new_hacker_pool[ new_hacker_pool.size ] = level._hacker_pool[ i ]; + i++; + continue; + } + else + { + level._hacker_pool[ i ]._trigger delete(); + level._hacker_pool[ i ]._trigger = undefined; + } + i++; + } + level._hacker_pool = new_hacker_pool; +} + +should_pooled_object_exist() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] hacker_active() ) + { + if ( isDefined( self.entity ) ) + { + if ( self.entity != players[ i ] ) + { + if ( distance2dsquared( players[ i ].origin, self.entity.origin ) <= ( self.radius * self.radius ) ) + { + return 1; + } + } + } + else + { + if ( distance2dsquared( players[ i ].origin, self.origin ) <= ( self.radius * self.radius ) ) + { + return 1; + } + } + } + i++; + } + return 0; +} + +add_eligable_pooled_items() +{ + candidates = []; + i = 0; + while ( i < level._hackable_objects.size ) + { + hackable = level._hackable_objects[ i ]; + if ( isDefined( hackable.pooled ) && hackable.pooled && !isDefined( hackable._trigger ) ) + { + if ( !isinarray( level._hacker_pool, hackable ) ) + { + if ( hackable should_pooled_object_exist() ) + { + candidates[ candidates.size ] = hackable; + } + } + } + i++; + } + i = 0; + while ( i < candidates.size ) + { + candidate = candidates[ i ]; + height = 72; + radius = 32; + if ( isDefined( candidate.radius ) ) + { + radius = candidate.radius; + } + if ( isDefined( self.height ) ) + { + height = candidate.height; + } + trigger = spawn( "trigger_radius_use", candidate.origin, 0, radius, height ); + trigger usetriggerrequirelookat(); + trigger setcursorhint( "HINT_NOICON" ); + trigger.radius = radius; + trigger.height = height; + trigger.beinghacked = 0; + candidate._trigger = trigger; + level._hacker_pool[ level._hacker_pool.size ] = candidate; + i++; + } +} + +any_hackers_active() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] hacker_active() ) + { + return 1; + } + i++; + } + return 0; +} + +register_hackable( name, callback_func, qualifier_func ) +{ + structs = getstructarray( name, "script_noteworthy" ); + if ( !isDefined( structs ) ) + { +/# + println( "Error: register_hackable called on script_noteworthy " + name + " but no such structs exist." ); +#/ + return; + } + i = 0; + while ( i < structs.size ) + { + if ( !isinarray( level._hackable_objects, structs[ i ] ) ) + { + structs[ i ]._hack_callback_func = callback_func; + structs[ i ]._hack_qualifier_func = qualifier_func; + structs[ i ].pooled = level._hacker_pooled; + if ( isDefined( structs[ i ].targetname ) ) + { + structs[ i ].hacker_target = getent( structs[ i ].targetname, "targetname" ); + } + level._hackable_objects[ level._hackable_objects.size ] = structs[ i ]; + if ( isDefined( level._hacker_pooled ) ) + { + level._pooled_hackable_objects[ level._pooled_hackable_objects.size ] = structs[ i ]; + } + structs[ i ] thread hackable_object_thread(); + wait_network_frame(); + } + i++; + } +} + +register_hackable_struct( struct, callback_func, qualifier_func ) +{ + if ( !isinarray( level._hackable_objects, struct ) ) + { + struct._hack_callback_func = callback_func; + struct._hack_qualifier_func = qualifier_func; + struct.pooled = level._hacker_pooled; + if ( isDefined( struct.targetname ) ) + { + struct.hacker_target = getent( struct.targetname, "targetname" ); + } + level._hackable_objects[ level._hackable_objects.size ] = struct; + if ( isDefined( level._hacker_pooled ) ) + { + level._pooled_hackable_objects[ level._pooled_hackable_objects.size ] = struct; + } + struct thread hackable_object_thread(); + } +} + +register_pooled_hackable_struct( struct, callback_func, qualifier_func ) +{ + level._hacker_pooled = 1; + register_hackable_struct( struct, callback_func, qualifier_func ); + level._hacker_pooled = undefined; +} + +register_pooled_hackable( name, callback_func, qualifier_func ) +{ + level._hacker_pooled = 1; + register_hackable( name, callback_func, qualifier_func ); + level._hacker_pooled = undefined; +} + +deregister_hackable_struct( struct ) +{ + if ( isinarray( level._hackable_objects, struct ) ) + { + new_list = []; + i = 0; + while ( i < level._hackable_objects.size ) + { + if ( level._hackable_objects[ i ] != struct ) + { + new_list[ new_list.size ] = level._hackable_objects[ i ]; + i++; + continue; + } + else + { + level._hackable_objects[ i ] notify( "hackable_deregistered" ); + if ( isDefined( level._hackable_objects[ i ]._trigger ) ) + { + level._hackable_objects[ i ]._trigger delete(); + } + if ( isDefined( level._hackable_objects[ i ].pooled ) && level._hackable_objects[ i ].pooled ) + { + arrayremovevalue( level._hacker_pool, level._hackable_objects[ i ] ); + arrayremovevalue( level._pooled_hackable_objects, level._hackable_objects[ i ] ); + } + } + i++; + } + level._hackable_objects = new_list; + } +} + +deregister_hackable( noteworthy ) +{ + new_list = []; + i = 0; + while ( i < level._hackable_objects.size ) + { + if ( !isDefined( level._hackable_objects[ i ].script_noteworthy ) || level._hackable_objects[ i ].script_noteworthy != noteworthy ) + { + new_list[ new_list.size ] = level._hackable_objects[ i ]; + } + else + { + level._hackable_objects[ i ] notify( "hackable_deregistered" ); + if ( isDefined( level._hackable_objects[ i ]._trigger ) ) + { + level._hackable_objects[ i ]._trigger delete(); + } + } + if ( isDefined( level._hackable_objects[ i ].pooled ) && level._hackable_objects[ i ].pooled ) + { + arrayremovevalue( level._hacker_pool, level._hackable_objects[ i ] ); + } + i++; + } + level._hackable_objects = new_list; +} + +hack_trigger_think() +{ + while ( 1 ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + j = 0; + while ( j < level._hackable_objects.size ) + { + hackable = level._hackable_objects[ j ]; + if ( isDefined( hackable._trigger ) ) + { + qualifier_passed = 1; + if ( isDefined( hackable._hack_qualifier_func ) ) + { + qualifier_passed = hackable [[ hackable._hack_qualifier_func ]]( player ); + } + if ( player hacker_active() && qualifier_passed && !hackable._trigger.beinghacked ) + { + hackable._trigger setinvisibletoplayer( player, 0 ); + j++; + continue; + } + else + { + hackable._trigger setinvisibletoplayer( player, 1 ); + } + } + j++; + } + i++; + } + wait 0,1; + } +} + +is_facing( facee ) +{ + orientation = self getplayerangles(); + forwardvec = anglesToForward( orientation ); + forwardvec2d = ( forwardvec[ 0 ], forwardvec[ 1 ], 0 ); + unitforwardvec2d = vectornormalize( forwardvec2d ); + tofaceevec = facee.origin - self.origin; + tofaceevec2d = ( tofaceevec[ 0 ], tofaceevec[ 1 ], 0 ); + unittofaceevec2d = vectornormalize( tofaceevec2d ); + dotproduct = vectordot( unitforwardvec2d, unittofaceevec2d ); + dot_limit = 0,8; + if ( isDefined( facee.dot_limit ) ) + { + dot_limit = facee.dot_limit; + } + return dotproduct > dot_limit; +} + +can_hack( hackable ) +{ + if ( !isalive( self ) ) + { + return 0; + } + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return 0; + } + if ( !self hacker_active() ) + { + return 0; + } + if ( !isDefined( hackable._trigger ) ) + { + return 0; + } + if ( isDefined( hackable.player ) ) + { + if ( hackable.player != self ) + { + return 0; + } + } + if ( self throwbuttonpressed() ) + { + return 0; + } + if ( self fragbuttonpressed() ) + { + return 0; + } + if ( isDefined( hackable._hack_qualifier_func ) ) + { + if ( !( hackable [[ hackable._hack_qualifier_func ]]( self ) ) ) + { + return 0; + } + } + if ( !isinarray( level._hackable_objects, hackable ) ) + { + return 0; + } + radsquared = 1024; + if ( isDefined( hackable.radius ) ) + { + radsquared = hackable.radius * hackable.radius; + } + origin = hackable.origin; + if ( isDefined( hackable.entity ) ) + { + origin = hackable.entity.origin; + } + if ( distance2dsquared( self.origin, origin ) > radsquared ) + { + return 0; + } + if ( !isDefined( hackable.no_touch_check ) && !self istouching( hackable._trigger ) ) + { + return 0; + } + if ( !self is_facing( hackable ) ) + { + return 0; + } + if ( !isDefined( hackable.no_sight_check ) && !sighttracepassed( self.origin + vectorScale( ( 0, 0, 1 ), 50 ), origin, 0, undefined ) ) + { + return 0; + } + if ( !isDefined( hackable.no_bullet_trace ) && !bullettracepassed( self.origin + vectorScale( ( 0, 0, 1 ), 50 ), origin, 0, undefined ) ) + { + return 0; + } + return 1; +} + +is_hacking( hackable ) +{ + if ( can_hack( hackable ) ) + { + return self usebuttonpressed(); + } +} + +set_hack_hint_string() +{ + if ( isDefined( self._trigger ) ) + { + if ( isDefined( self.custom_string ) ) + { + self._trigger sethintstring( self.custom_string ); + return; + } + else if ( !isDefined( self.script_int ) || self.script_int <= 0 ) + { + self._trigger sethintstring( &"ZOMBIE_HACK_NO_COST" ); + return; + } + else + { + self._trigger sethintstring( &"ZOMBIE_HACK", self.script_int ); + } + } +} + +tidy_on_deregister( hackable ) +{ + self endon( "clean_up_tidy_up" ); + hackable waittill( "hackable_deregistered" ); + if ( isDefined( self.hackerprogressbar ) ) + { + self.hackerprogressbar maps/mp/gametypes_zm/_hud_util::destroyelem(); + } + if ( isDefined( self.hackertexthud ) ) + { + self.hackertexthud destroy(); + } +} + +hacker_do_hack( hackable ) +{ + timer = 0; + hacked = 0; + hackable._trigger.beinghacked = 1; + if ( !isDefined( self.hackerprogressbar ) ) + { + self.hackerprogressbar = self maps/mp/gametypes_zm/_hud_util::createprimaryprogressbar(); + } + if ( !isDefined( self.hackertexthud ) ) + { + self.hackertexthud = newclienthudelem( self ); + } + hack_duration = hackable.script_float; + if ( self hasperk( "specialty_fastreload" ) ) + { + hack_duration *= 0,66; + } + hack_duration = max( 1,5, hack_duration ); + self thread tidy_on_deregister( hackable ); + self.hackerprogressbar maps/mp/gametypes_zm/_hud_util::updatebar( 0,01, 1 / hack_duration ); + self.hackertexthud.alignx = "center"; + self.hackertexthud.aligny = "middle"; + self.hackertexthud.horzalign = "center"; + self.hackertexthud.vertalign = "bottom"; + self.hackertexthud.y = -113; + if ( issplitscreen() ) + { + self.hackertexthud.y = -107; + } + self.hackertexthud.foreground = 1; + self.hackertexthud.font = "default"; + self.hackertexthud.fontscale = 1,8; + self.hackertexthud.alpha = 1; + self.hackertexthud.color = ( 0, 0, 1 ); + self.hackertexthud settext( &"ZOMBIE_HACKING" ); + self playloopsound( "zmb_progress_bar", 0,5 ); + while ( self is_hacking( hackable ) ) + { + wait 0,05; + timer += 0,05; + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + break; + } + else if ( timer >= hack_duration ) + { + hacked = 1; + break; + } + else + { + } + } + self stoploopsound( 0,5 ); + if ( hacked ) + { + self playsound( "vox_mcomp_hack_success" ); + } + else self playsound( "vox_mcomp_hack_fail" ); + if ( isDefined( self.hackerprogressbar ) ) + { + self.hackerprogressbar maps/mp/gametypes_zm/_hud_util::destroyelem(); + } + if ( isDefined( self.hackertexthud ) ) + { + self.hackertexthud destroy(); + } + hackable set_hack_hint_string(); + if ( isDefined( hackable._trigger ) ) + { + hackable._trigger.beinghacked = 0; + } + self notify( "clean_up_tidy_up" ); + return hacked; +} + +lowreadywatcher( player ) +{ + player endon( "disconnected" ); + self endon( "kill_lowreadywatcher" ); + self waittill( "hackable_deregistered" ); +} + +hackable_object_thread() +{ + self endon( "hackable_deregistered" ); + height = 72; + radius = 64; + if ( isDefined( self.radius ) ) + { + radius = self.radius; + } + if ( isDefined( self.height ) ) + { + height = self.height; + } + if ( !isDefined( self.pooled ) ) + { + trigger = spawn( "trigger_radius_use", self.origin, 0, radius, height ); + trigger usetriggerrequirelookat(); + trigger setcursorhint( "HINT_NOICON" ); + trigger.radius = radius; + trigger.height = height; + trigger.beinghacked = 0; + self._trigger = trigger; + } + cost = 0; + if ( isDefined( self.script_int ) ) + { + cost = self.script_int; + } + duration = 1; + if ( isDefined( self.script_float ) ) + { + duration = self.script_float; + } + while ( 1 ) + { + wait 0,1; + while ( !isDefined( self._trigger ) ) + { + continue; + } + players = get_players(); + if ( isDefined( self._trigger ) ) + { + self._trigger sethintstring( "" ); + if ( isDefined( self.entity ) ) + { + self.origin = self.entity.origin; + self._trigger.origin = self.entity.origin; + if ( isDefined( self.trigger_offset ) ) + { + self._trigger.origin += self.trigger_offset; + } + } + } + i = 0; + while ( i < players.size ) + { + if ( players[ i ] can_hack( self ) ) + { + self set_hack_hint_string(); + break; + } + else + { + i++; + } + } + i = 0; + while ( i < players.size ) + { + hacker = players[ i ]; + if ( !hacker is_hacking( self ) ) + { + i++; + continue; + } + else if ( hacker.score >= cost || cost <= 0 ) + { + self thread lowreadywatcher( hacker ); + hack_success = hacker hacker_do_hack( self ); + self notify( "kill_lowreadywatcher" ); + if ( isDefined( hacker ) ) + { + } + if ( isDefined( hacker ) && hack_success ) + { + if ( cost ) + { + if ( cost > 0 ) + { + hacker maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + break; + } + else + { + hacker maps/mp/zombies/_zm_score::add_to_player_score( cost * -1 ); + } + } + hacker notify( "successful_hack" ); + if ( isDefined( self._hack_callback_func ) ) + { + self thread [[ self._hack_callback_func ]]( hacker ); + } + } + i++; + continue; + } + else + { + hacker play_sound_on_ent( "no_purchase" ); + hacker maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money", undefined, 1 ); + } + i++; + } + } +} + +hacker_on_player_connect() +{ + struct = spawnstruct(); + struct.origin = self.origin; + struct.radius = 48; + struct.height = 64; + struct.script_float = 10; + struct.script_int = 500; + struct.entity = self; + struct.trigger_offset = vectorScale( ( 0, 0, 1 ), 48 ); + register_pooled_hackable_struct( struct, ::player_hack, ::player_qualifier ); + struct thread player_hack_disconnect_watcher( self ); +} + +player_hack_disconnect_watcher( player ) +{ + player waittill( "disconnect" ); + deregister_hackable_struct( self ); +} + +player_hack( hacker ) +{ + if ( isDefined( self.entity ) ) + { + self.entity maps/mp/zombies/_zm_score::player_add_points( "hacker_transfer", 500 ); + } + if ( isDefined( hacker ) ) + { + hacker thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "hack_plr" ); + } +} + +player_qualifier( player ) +{ + if ( player == self.entity ) + { + return 0; + } + if ( self.entity maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return 0; + } + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return 0; + } + if ( isDefined( self.entity.sessionstate == "spectator" ) && self.entity.sessionstate == "spectator" ) + { + return 0; + } + return 1; +} + +hide_hint_when_hackers_active( custom_logic_func, custom_logic_func_param ) +{ + invis_to_any = 0; + while ( 1 ) + { + if ( isDefined( custom_logic_func ) ) + { + self [[ custom_logic_func ]]( custom_logic_func_param ); + } + if ( maps/mp/zombies/_zm_equip_hacker::any_hackers_active() ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] hacker_active() ) + { + self setinvisibletoplayer( players[ i ], 1 ); + invis_to_any = 1; + i++; + continue; + } + else + { + self setinvisibletoplayer( players[ i ], 0 ); + } + i++; + } + } + else while ( invis_to_any ) + { + invis_to_any = 0; + players = get_players(); + i = 0; + while ( i < players.size ) + { + self setinvisibletoplayer( players[ i ], 0 ); + i++; + } + } + wait 0,1; + } +} + +hacker_debug_print( msg, color ) +{ +/# + if ( !getDvarInt( #"428DE100" ) ) + { + return; + } + if ( !isDefined( color ) ) + { + color = ( 0, 0, 1 ); + } + print3d( self.origin + vectorScale( ( 0, 0, 1 ), 60 ), msg, color, 1, 1, 40 ); +#/ +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_turbine.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_turbine.gsc new file mode 100644 index 0000000..e2518e5 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_turbine.gsc @@ -0,0 +1,772 @@ +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_power; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +#using_animtree( "zombie_turbine" ); + +init() +{ + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_turbine_zm" ) ) + { + return; + } + level.turbine_name = "equip_turbine_zm"; + maps/mp/zombies/_zm_equipment::register_equipment( "equip_turbine_zm", &"ZOMBIE_EQUIP_TURBINE_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_TURBINE_HOWTO", "turbine_zm_icon", "turbine", undefined, ::transferturbine, ::dropturbine, ::pickupturbine, ::placeturbine ); + maps/mp/zombies/_zm_equipment::add_placeable_equipment( "equip_turbine_zm", "p6_anim_zm_buildable_turbine", ::destroy_placed_turbine ); + level thread onplayerconnect(); + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "equip_turbine", &"ZOMBIE_EQUIP_TURBINE_PICKUP_HINT_STRING" ); + level._effect[ "turbine_on" ] = loadfx( "maps/zombie/fx_zmb_tranzit_wind_turbine_on" ); + level._effect[ "turbine_med" ] = loadfx( "maps/zombie/fx_zmb_tranzit_wind_turbine_med" ); + level._effect[ "turbine_low" ] = loadfx( "maps/zombie/fx_zmb_tranzit_wind_turbine_low" ); + level._effect[ "turbine_aoe" ] = loadfx( "maps/zombie/fx_zmb_tranzit_wind_turbine_aoe" ); + level._turbine_disappear_fx = loadfx( "maps/zombie/fx_zmb_tranzit_turbine_explo" ); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + self thread setupwatchers(); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchturbineuse(); + } +} + +setupwatchers() +{ + self waittill( "weapon_watchers_created" ); + watcher = maps/mp/gametypes_zm/_weaponobjects::getweaponobjectwatcher( "equip_turbine" ); + watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_equipment::equipment_onspawnretrievableweaponobject; +} + +watchturbineuse() +{ + self notify( "watchTurbineUse" ); + self endon( "watchTurbineUse" ); + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "equipment_placed", weapon, weapname ); + if ( weapname == level.turbine_name ) + { + self cleanupoldturbine(); + self.buildableturbine = weapon; + self thread startturbinedeploy( weapon ); + level notify( "turbine_deployed" ); + } + } +} + +cleanupoldturbine( preserve_state ) +{ + if ( isDefined( self.localpower ) ) + { + maps/mp/zombies/_zm_power::end_local_power( self.localpower ); + self notify( "depower_on_disconnect" ); + self.localpower = undefined; + self.turbine_power_is_on = 0; + } + self.turbine_is_powering_on = 0; + if ( isDefined( self.buildableturbine ) ) + { + if ( isDefined( self.buildableturbine.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.buildableturbine.stub ); + self.buildableturbine.stub = undefined; + } + self.buildableturbine stoploopsound(); + self.buildableturbine delete(); + if ( isDefined( preserve_state ) && !preserve_state ) + { + self.turbine_health = undefined; + self.turbine_emped = undefined; + self.turbine_emp_time = undefined; + } + } +} + +watchforcleanup() +{ + self notify( "turbine_cleanup" ); + self endon( "turbine_cleanup" ); + evt = self waittill_any_return( "death", "disconnect", "equip_turbine_zm_taken", "equip_turbine_zm_pickup" ); + if ( isDefined( self ) ) + { + self cleanupoldturbine( evt == "equip_turbine_zm_pickup" ); + } +} + +depower_on_disconnect( localpower ) +{ + self notify( "depower_on_disconnect" ); + self endon( "depower_on_disconnect" ); + self waittill( "disconnect" ); + if ( isDefined( localpower ) ) + { + maps/mp/zombies/_zm_power::end_local_power( localpower ); + } +} + +placeturbine( origin, angles ) +{ + item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "p6_anim_zm_buildable_turbine", "equip_turbine_zm", origin, angles ); + return item; +} + +dropturbine() +{ + item = thread maps/mp/zombies/_zm_equipment::dropped_equipment_think( "p6_anim_zm_buildable_turbine", "equip_turbine_zm", self.origin, self.angles ); + if ( isDefined( item ) ) + { + item.turbine_power_on = self.turbine_power_on; + item.turbine_power_level = self.turbine_power_level; + item.turbine_round_start = self.turbine_round_start; + item.turbine_health = self.turbine_health; + item.turbine_emped = self.turbine_emped; + item.turbine_emp_time = self.turbine_emp_time; + } + self.turbine_is_powering_on = undefined; + self.turbine_power_on = undefined; + self.turbine_power_level = undefined; + self.turbine_round_start = undefined; + self.turbine_health = undefined; + self.turbine_emped = undefined; + self.turbine_emp_time = undefined; + return item; +} + +pickupturbine( item ) +{ + item.owner = self; + self.turbine_power_on = item.turbine_power_on; + item.turbine_power_on = undefined; + self.turbine_power_level = item.turbine_power_level; + self.turbine_round_start = item.turbine_round_start; + self.turbine_health = item.turbine_health; + item.turbine_health = undefined; + item.turbine_power_level = undefined; + item.turbine_round_start = undefined; + self.turbine_emped = item.turbine_emped; + self.turbine_emp_time = item.turbine_emp_time; + item.turbine_emped = undefined; + item.turbine_emp_time = undefined; + self.turbine_is_powering_on = undefined; +} + +transferturbine( fromplayer, toplayer ) +{ + while ( isDefined( toplayer.turbine_is_powering_on ) || toplayer.turbine_is_powering_on && isDefined( fromplayer.turbine_is_powering_on ) && fromplayer.turbine_is_powering_on ) + { + wait 0,05; + } + if ( isDefined( fromplayer.buildableturbine ) && isDefined( fromplayer.buildableturbine.dying ) && fromplayer.buildableturbine.dying ) + { + fromplayer cleanupoldturbine( 0 ); + } + if ( isDefined( toplayer.buildableturbine ) && isDefined( toplayer.buildableturbine.dying ) && toplayer.buildableturbine.dying ) + { + toplayer cleanupoldturbine( 0 ); + } + buildableturbine = toplayer.buildableturbine; + localpower = toplayer.localpower; + turbine_power_on = toplayer.turbine_power_on; + turbine_power_is_on = toplayer.turbine_power_is_on; + turbine_power_level = toplayer.turbine_power_level; + turbine_round_start = toplayer.turbine_round_start; + turbine_health = toplayer.turbine_health; + turbine_emped = toplayer.turbine_emped; + turbine_emp_time = toplayer.turbine_emp_time; + toplayer.buildableturbine = fromplayer.buildableturbine; + fromplayer.buildableturbine = buildableturbine; + toplayer.localpower = fromplayer.localpower; + fromplayer.localpower = localpower; + toplayer.turbine_power_on = fromplayer.turbine_power_on; + fromplayer.turbine_power_on = turbine_power_on; + toplayer.turbine_power_is_on = fromplayer.turbine_power_is_on; + fromplayer.turbine_power_is_on = turbine_power_is_on; + toplayer.turbine_power_level = fromplayer.turbine_power_level; + toplayer.turbine_round_start = fromplayer.turbine_round_start; + fromplayer.turbine_power_level = turbine_power_level; + fromplayer.turbine_round_start = turbine_round_start; + toplayer.turbine_health = fromplayer.turbine_health; + fromplayer.turbine_health = turbine_health; + toplayer.turbine_emped = fromplayer.turbine_emped; + fromplayer.turbine_emped = turbine_emped; + toplayer.turbine_emp_time = fromplayer.turbine_emp_time; + fromplayer.turbine_emp_time = turbine_emp_time; + toplayer.turbine_is_powering_on = undefined; + fromplayer.turbine_is_powering_on = undefined; + toplayer notify( "equip_turbine_zm_taken" ); + toplayer.buildableturbine.original_owner = toplayer; + toplayer thread startturbinedeploy( toplayer.buildableturbine ); + fromplayer notify( "equip_turbine_zm_taken" ); + if ( isDefined( fromplayer.buildableturbine ) ) + { + fromplayer thread startturbinedeploy( fromplayer.buildableturbine ); + fromplayer.buildableturbine.original_owner = fromplayer; + fromplayer.buildableturbine.owner = fromplayer; + } + else + { + fromplayer maps/mp/zombies/_zm_equipment::equipment_release( "equip_turbine_zm" ); + } +} + +startturbinedeploy( weapon ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self thread watchforcleanup(); + origin = weapon.origin; + powerradius = 335; + if ( !isDefined( self.turbine_health ) ) + { + self.turbine_health = 1200; + self.turbine_power_level = 4; + self.turbine_power_on = 1; + self.turbine_is_powering_on = undefined; + } + if ( !isDefined( self.turbine_round_start ) ) + { + self.turbine_round_start = level.round_number; + self.turbine_power_on = 1; + } + self thread turbinedecay(); + self thread turbinepowerdiminish( origin, powerradius ); + if ( isDefined( weapon ) ) + { +/# + self thread debugturbine( powerradius ); +#/ + self thread turbineaudio(); + self thread turbineanim(); + self thread turbinepowerthink( weapon, powerradius ); + if ( isDefined( weapon.equipment_can_move ) && weapon.equipment_can_move ) + { + self thread turbinepowermove( weapon ); + } + self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( weapon ); + weapon waittill( "death" ); + self thread turbinepoweroff( origin, powerradius ); + self notify( "turbine_cleanup" ); + } +} + +turbine_watch_for_emp( weapon, powerradius ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + while ( 1 ) + { + level waittill( "emp_detonate", origin, radius ); + if ( distancesquared( origin, self.buildableturbine.origin ) < ( radius * radius ) ) + { + break; + } + else + { + } + } + self.turbine_emped = 1; + self.turbine_emp_time = getTime(); + self notify( "turbine_power_change" ); +} + +turbinepowerthink( weapon, powerradius ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + origin = weapon.origin; + self thread turbine_watch_for_emp( weapon, powerradius ); + if ( isDefined( self.turbine_power_on ) || self.turbine_power_on && isDefined( self.turbine_emped ) && self.turbine_emped ) + { + self thread turbinepoweron( origin, powerradius ); + } + while ( isDefined( self.buildableturbine ) ) + { + self waittill( "turbine_power_change" ); + if ( isDefined( self.turbine_emped ) && self.turbine_emped ) + { + self thread turbinepoweroff( origin, powerradius ); + if ( isDefined( weapon ) ) + { + origin = weapon.origin; + } + self thread turbinepoweron( origin, powerradius ); + continue; + } + else + { + if ( isDefined( self.turbine_power_is_on ) && !self.turbine_power_is_on ) + { + self thread turbinepoweroff( origin, powerradius ); + break; + } + else + { + if ( isDefined( weapon ) ) + { + origin = weapon.origin; + } + self thread turbinepoweron( origin, powerradius ); + } + } + } +} + +turbinepowermove( weapon ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + origin = weapon.origin; + while ( 1 ) + { + if ( origin != weapon.origin ) + { + if ( isDefined( self.localpower ) ) + { + self.localpower = maps/mp/zombies/_zm_power::move_local_power( self.localpower, origin ); + } + origin = weapon.origin; + } + wait 0,5; + } +} + +turbinewarmup() +{ + if ( isDefined( self.turbine_emped ) && self.turbine_emped ) + { + emp_time = level.zombie_vars[ "emp_perk_off_time" ]; + now = getTime(); + emp_time_left = emp_time - ( ( now - self.turbine_emp_time ) / 1000 ); + if ( emp_time_left > 0 ) + { + wait emp_time_left; + } + self.turbine_emped = undefined; + self.turbine_emp_time = undefined; + } + playfxontag( level._effect[ "turbine_low" ], self.buildableturbine, "tag_animate" ); + wait 0,5; + playfxontag( level._effect[ "turbine_med" ], self.buildableturbine, "tag_animate" ); + wait 0,5; + playfxontag( level._effect[ "turbine_on" ], self.buildableturbine, "tag_animate" ); + wait 0,5; +} + +turbinepoweron( origin, powerradius ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + if ( isDefined( self.turbine_power_is_on ) && !self.turbine_power_is_on && isDefined( self.turbine_is_powering_on ) && !self.turbine_is_powering_on && isDefined( self.buildableturbine.dying ) && !self.buildableturbine.dying ) + { + self.turbine_is_powering_on = 1; + self.buildableturbine playloopsound( "zmb_turbine_loop", 2 ); + self turbinewarmup(); + if ( isDefined( self.localpower ) ) + { + maps/mp/zombies/_zm_power::end_local_power( self.localpower ); + } + self.localpower = undefined; + self.turbine_power_is_on = 0; + if ( isDefined( self.turbine_emped ) && !self.turbine_emped ) + { + self.localpower = maps/mp/zombies/_zm_power::add_local_power( origin, powerradius ); + self thread depower_on_disconnect( self.localpower ); + self.turbine_power_is_on = 1; + self thread turbineaudio(); + } + self.turbine_is_powering_on = 0; + self thread turbinefx(); + self thread turbinedecay(); + } +} + +turbinepoweroff( origin, powerradius ) +{ + if ( isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) + { + if ( isDefined( self.localpower ) ) + { + maps/mp/zombies/_zm_power::end_local_power( self.localpower ); + } + self notify( "depower_on_disconnect" ); + self.localpower = undefined; + self.turbine_power_is_on = 0; + self thread turbineaudio(); + if ( isDefined( self.buildableturbine.dying ) && !self.buildableturbine.dying ) + { + self thread turbineanim(); + } + } +} + +turbine_disappear_fx( origin, waittime ) +{ + if ( isDefined( waittime ) && waittime > 0 ) + { + wait waittime; + } + playfx( level._turbine_disappear_fx, origin ); + if ( isDefined( self.buildableturbine ) ) + { + playsoundatposition( "zmb_turbine_explo", self.buildableturbine.origin ); + } +} + +turbinefxonce( withaoe ) +{ + if ( isDefined( self ) && isDefined( self.buildableturbine ) && isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) + { + switch( self.turbine_power_level ) + { + case 3: + case 4: + playfxontag( level._effect[ "turbine_on" ], self.buildableturbine, "tag_animate" ); + break; + case 2: + playfxontag( level._effect[ "turbine_med" ], self.buildableturbine, "tag_animate" ); + break; + case 1: + playfxontag( level._effect[ "turbine_low" ], self.buildableturbine, "tag_animate" ); + break; + } + if ( withaoe ) + { + if ( isDefined( self.buildableturbine.equipment_can_move ) && self.buildableturbine.equipment_can_move && isDefined( self.buildableturbine.move_parent.ismoving ) && self.buildableturbine.move_parent.ismoving ) + { + playfxontag( level._effect[ "turbine_aoe" ], self.buildableturbine, "tag_animate" ); + } + else + { + playfx( level._effect[ "turbine_aoe" ], self.buildableturbine.origin ); + } + self.buildableturbine playsound( "zmb_turbine_pulse" ); + } + } +} + +turbinefx() +{ + self endon( "disconnect" ); + while ( isDefined( self ) && isDefined( self.buildableturbine ) && isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) + { + self turbinefxonce( 1 ); + wait 0,5; + self turbinefxonce( 0 ); + wait 0,5; + } +} + +turbineaudio() +{ + if ( !isDefined( self.buildableturbine ) ) + { + return; + } + if ( isDefined( self.turbine_power_is_on ) || !self.turbine_power_is_on && isDefined( self.turbine_emped ) && self.turbine_emped ) + { + self.buildableturbine stoploopsound(); + return; + } + self.buildableturbine playloopsound( "zmb_turbine_loop", 2 ); +} + +init_animtree() +{ + scriptmodelsuseanimtree( -1 ); +} + +turbineanim( wait_for_end ) +{ + if ( !isDefined( self.buildableturbine ) ) + { + return; + } + animlength = 0; + self.buildableturbine useanimtree( -1 ); + if ( isDefined( self.buildableturbine.dying ) && self.buildableturbine.dying ) + { + animlength = getanimlength( %o_zombie_buildable_turbine_death ); + self.buildableturbine setanim( %o_zombie_buildable_turbine_death ); + break; +} +else +{ + if ( isDefined( self.turbine_emped ) && self.turbine_emped ) + { + self.buildableturbine clearanim( %o_zombie_buildable_turbine_fullpower, 0 ); + return; + break; +} +else +{ + switch( self.turbine_power_level ) + { + case 3: + case 4: + animlength = getanimlength( %o_zombie_buildable_turbine_fullpower ); + self.buildableturbine setanim( %o_zombie_buildable_turbine_fullpower ); + break; + case 2: + animlength = getanimlength( %o_zombie_buildable_turbine_halfpower ); + self.buildableturbine setanim( %o_zombie_buildable_turbine_halfpower ); + break; + case 1: + animlength = getanimlength( %o_zombie_buildable_turbine_neardeath ); + self.buildableturbine setanim( %o_zombie_buildable_turbine_neardeath ); + break; + } +} +} +if ( isDefined( wait_for_end ) && wait_for_end ) +{ +wait animlength; +} +} + +turbinedecay() +{ + self notify( "turbineDecay" ); + self endon( "turbineDecay" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + roundlives = 4; + if ( !isDefined( self.turbine_power_level ) ) + { + self.turbine_power_level = roundlives; + } + while ( self.turbine_health > 0 ) + { + old_power_level = self.turbine_power_level; + if ( isDefined( self.turbine_emped ) && self.turbine_emped && isDefined( self.turbine_is_powering_on ) && self.turbine_is_powering_on ) + { + emp_time = level.zombie_vars[ "emp_perk_off_time" ]; + now = getTime(); + emp_time_left = emp_time - ( ( now - self.turbine_emp_time ) / 1000 ); + if ( emp_time_left <= 0 ) + { + self.turbine_emped = undefined; + self.turbine_emp_time = undefined; + self.turbine_power_is_on = 0; + old_power_level = -1; + } + } + if ( isDefined( self.turbine_emped ) && self.turbine_emped ) + { + self.turbine_power_level = 0; + } + else + { + if ( isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) + { + cost = 1; + if ( isDefined( self.localpower ) ) + { + cost += maps/mp/zombies/_zm_power::get_local_power_cost( self.localpower ); + } + self.turbine_health -= cost; + if ( self.turbine_health < 200 ) + { + self.turbine_power_level = 1; + break; + } + else if ( self.turbine_health < 600 ) + { + self.turbine_power_level = 2; + break; + } + else + { + self.turbine_power_level = 4; + } + } + } + if ( old_power_level != self.turbine_power_level ) + { + self notify( "turbine_power_change" ); + self thread turbineaudio(); + if ( isDefined( self.buildableturbine.dying ) && !self.buildableturbine.dying ) + { + self thread turbineanim(); + } + } + wait 1; + } + self destroy_placed_turbine(); + if ( isDefined( self.buildableturbine ) ) + { + turbine_disappear_fx( self.buildableturbine.origin ); + } + self thread wait_and_take_equipment(); + self.turbine_health = undefined; + self.turbine_power_level = undefined; + self.turbine_round_start = undefined; + self.turbine_power_on = undefined; + self.turbine_emped = undefined; + self.turbine_emp_time = undefined; + self cleanupoldturbine(); +} + +destroy_placed_turbine() +{ + if ( isDefined( self.buildableturbine ) ) + { + if ( isDefined( self.buildableturbine.dying ) && self.buildableturbine.dying ) + { + while ( isDefined( self.buildableturbine ) ) + { + wait 0,05; + } + return; + } + if ( isDefined( self.buildableturbine.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.buildableturbine.stub ); + } + thread turbine_disappear_fx( self.buildableturbine.origin, 0,75 ); + self.buildableturbine.dying = 1; + self turbineanim( 1 ); + } +} + +wait_and_take_equipment() +{ + wait 0,05; + self thread maps/mp/zombies/_zm_equipment::equipment_release( "equip_turbine_zm" ); +} + +turbinepowerdiminish( origin, powerradius ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + while ( isDefined( self.buildableturbine.dying ) && !self.buildableturbine.dying ) + { + if ( isDefined( self.turbine_power_level ) && isDefined( self.buildableturbine ) ) + { + switch( self.turbine_power_level ) + { + case 4: + break; + case 3: + case 2: + self.turbine_power_on = 1; + wait randomintrange( 12, 20 ); + self turbinepoweroff( origin, powerradius ); + self.turbine_power_on = 0; + wait randomintrange( 3, 8 ); + self turbinepoweron( origin, powerradius ); + break; + case 1: + self.turbine_power_on = 1; + wait randomintrange( 3, 7 ); + self turbinepoweroff( origin, powerradius ); + self.turbine_power_on = 0; + wait randomintrange( 6, 12 ); + self turbinepoweron( origin, powerradius ); + break; + } + } + wait 0,05; + } + } +} + +debugturbine( radius ) +{ +/# + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turbine_zm_taken" ); + self.buildableturbine endon( "death" ); + while ( isDefined( self.buildableturbine ) ) + { + if ( getDvarInt( #"EB512CB7" ) ) + { + color = ( 0, 0, 1 ); + text = ""; + if ( isDefined( self.turbine_health ) ) + { + text = "" + self.turbine_health + ""; + } + if ( isDefined( self.buildableturbine.dying ) && self.buildableturbine.dying ) + { + text = "dying"; + color = ( 0, 0, 1 ); + } + else + { + if ( isDefined( self.turbine_emped ) && self.turbine_emped ) + { + color = ( 0, 0, 1 ); + emp_time = level.zombie_vars[ "emp_perk_off_time" ]; + now = getTime(); + emp_time_left = int( emp_time - ( ( now - self.turbine_emp_time ) / 1000 ) ); + text = ( text + " emp(" ) + emp_time_left + ")"; + break; + } + else + { + if ( isDefined( self.turbine_is_powering_on ) && self.turbine_is_powering_on ) + { + text += " warmup"; + break; + } + else + { + if ( isDefined( self.turbine_power_is_on ) && self.turbine_power_is_on ) + { + if ( self.turbine_health < 200 ) + { + color = ( 0, 0, 1 ); + break; + } + else if ( self.turbine_health < 600 ) + { + color = ( 1, 0,7, 0 ); + break; + } + else + { + color = ( 0, 0, 1 ); + } + } + } + } + } + print3d( self.buildableturbine.origin + vectorScale( ( 0, 0, 1 ), 60 ), text, color, 1, 0,5, 1 ); + } + wait 0,05; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_turret.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_turret.gsc new file mode 100644 index 0000000..66e4673 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_equip_turret.gsc @@ -0,0 +1,350 @@ +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_mgturret; +#include maps/mp/zombies/_zm_power; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_turret_zm" ) ) + { + return; + } + precachemodel( "p6_anim_zm_buildable_turret" ); + precacheturret( "zombie_bullet_crouch_zm" ); + level.turret_name = "equip_turret_zm"; + maps/mp/zombies/_zm_equipment::register_equipment( "equip_turret_zm", &"ZOMBIE_EQUIP_TURRET_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_TURRET_HOWTO", "turret_zm_icon", "turret", undefined, ::transferturret, ::dropturret, ::pickupturret, ::placeturret ); + maps/mp/zombies/_zm_equipment::add_placeable_equipment( "equip_turret_zm", "p6_anim_zm_buildable_turret" ); + level thread onplayerconnect(); + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "equip_turret", &"ZOMBIE_EQUIP_TURRET_PICKUP_HINT_STRING" ); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + self thread setupwatchers(); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchturretuse(); + } +} + +setupwatchers() +{ + self waittill( "weapon_watchers_created" ); + watcher = maps/mp/gametypes_zm/_weaponobjects::getweaponobjectwatcher( "equip_turret" ); + watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_equipment::equipment_onspawnretrievableweaponobject; +} + +watchturretuse() +{ + self notify( "watchTurretUse" ); + self endon( "watchTurretUse" ); + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "equipment_placed", weapon, weapname ); + if ( weapname == level.turret_name ) + { + self cleanupoldturret(); + self.buildableturret = weapon; + self thread startturretdeploy( weapon ); + } + } +} + +cleanupoldturret() +{ + if ( isDefined( self.buildableturret ) ) + { + if ( isDefined( self.buildableturret.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.buildableturret.stub ); + self.buildableturret.stub = undefined; + } + if ( isDefined( self.buildableturret.turret ) ) + { + if ( isDefined( self.buildableturret.turret.sound_ent ) ) + { + self.buildableturret.turret.sound_ent delete(); + } + self.buildableturret.turret delete(); + } + if ( isDefined( self.buildableturret.sound_ent ) ) + { + self.buildableturret.sound_ent delete(); + self.buildableturret.sound_ent = undefined; + } + self.buildableturret delete(); + self.turret_health = undefined; + } + else + { + if ( isDefined( self.turret ) ) + { + self.turret notify( "stop_burst_fire_unmanned" ); + self.turret delete(); + } + } + self.turret = undefined; + self notify( "turret_cleanup" ); +} + +watchforcleanup() +{ + self notify( "turret_cleanup" ); + self endon( "turret_cleanup" ); + self waittill_any( "death", "disconnect", "equip_turret_zm_taken", "equip_turret_zm_pickup" ); + cleanupoldturret(); +} + +placeturret( origin, angles ) +{ + item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "p6_anim_zm_buildable_turret", "equip_turret_zm", origin, angles ); + if ( isDefined( item ) ) + { + item.owner = self; + } + return item; +} + +dropturret() +{ + item = self maps/mp/zombies/_zm_equipment::dropped_equipment_think( "p6_anim_zm_buildable_turret", "equip_turret_zm", self.origin, self.angles ); + if ( isDefined( item ) ) + { + item.turret_health = self.turret_health; + } + self.turret_health = undefined; + return item; +} + +pickupturret( item ) +{ + item.owner = self; + self.turret_health = item.turret_health; + item.turret_health = undefined; +} + +transferturret( fromplayer, toplayer ) +{ + buildableturret = toplayer.buildableturret; + turret = toplayer.turret; + toplayer.buildableturret = fromplayer.buildableturret; + toplayer.turret = fromplayer.turret; + fromplayer.buildableturret = buildableturret; + fromplayer.turret = turret; + toplayer.buildableturret.original_owner = toplayer; + toplayer notify( "equip_turret_zm_taken" ); + toplayer thread startturretdeploy( toplayer.buildableturret ); + fromplayer notify( "equip_turret_zm_taken" ); + if ( isDefined( fromplayer.buildableturret ) ) + { + fromplayer thread startturretdeploy( fromplayer.buildableturret ); + fromplayer.buildableturret.original_owner = fromplayer; + fromplayer.buildableturret.owner = fromplayer; + } + else + { + fromplayer maps/mp/zombies/_zm_equipment::equipment_release( "equip_turret_zm" ); + } + turret_health = toplayer.turret_health; + toplayer.turret_health = fromplayer.turret_health; + fromplayer.turret_health = turret_health; +} + +startturretdeploy( weapon ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "equip_turret_zm_taken" ); + self thread watchforcleanup(); + if ( !isDefined( self.turret_health ) ) + { + self.turret_health = 60; + } + if ( isDefined( weapon ) ) + { + weapon hide(); + wait 0,1; + if ( isDefined( weapon.power_on ) && weapon.power_on ) + { + weapon.turret notify( "stop_burst_fire_unmanned" ); + } + if ( !isDefined( weapon ) ) + { + return; + } + if ( isDefined( self.turret ) ) + { + self.turret notify( "stop_burst_fire_unmanned" ); + self.turret notify( "turret_deactivated" ); + self.turret delete(); + } + turret = spawnturret( "misc_turret", weapon.origin, "zombie_bullet_crouch_zm" ); + turret.turrettype = "sentry"; + turret setturrettype( turret.turrettype ); + turret setmodel( "p6_anim_zm_buildable_turret" ); + turret.origin = weapon.origin; + turret.angles = weapon.angles; + turret linkto( weapon ); + turret makeunusable(); + turret.owner = self; + turret setowner( turret.owner ); + turret maketurretunusable(); + turret setmode( "auto_nonai" ); + turret setdefaultdroppitch( 45 ); + turret setconvergencetime( 0,3 ); + turret setturretteam( self.team ); + turret.team = self.team; + turret.damage_own_team = 1; + turret.turret_active = 1; + weapon.turret = turret; + self.turret = turret; + if ( isDefined( level.equipment_turret_needs_power ) && level.equipment_turret_needs_power ) + { + weapon.power_on = 0; + maps/mp/zombies/_zm_power::add_temp_powered_item( ::turret_power_on, ::turret_power_off, ::turret_in_range, ::maps/mp/zombies/_zm_power::cost_high, 1, weapon.power_on, weapon ); + } + else + { + weapon.power_on = 1; + } + if ( weapon.power_on ) + { + turret thread maps/mp/zombies/_zm_mgturret::burst_fire_unmanned(); + } + else + { + self iprintlnbold( &"ZOMBIE_NEED_LOCAL_POWER" ); + } + if ( isDefined( level.equipment_turret_needs_power ) && !level.equipment_turret_needs_power ) + { + self thread turretdecay( weapon ); + } + self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( weapon ); + while ( isDefined( weapon ) ) + { + if ( !is_true( weapon.power_on ) ) + { + if ( isDefined( self.buildableturret.sound_ent ) ) + { + self.buildableturret.sound_ent playsound( "wpn_zmb_turret_stop" ); + self.buildableturret.sound_ent delete(); + self.buildableturret.sound_ent = undefined; + } + } + wait 0,1; + } + if ( isDefined( self.buildableturret.sound_ent ) ) + { + self.buildableturret.sound_ent playsound( "wpn_zmb_turret_stop" ); + self.buildableturret.sound_ent delete(); + self.buildableturret.sound_ent = undefined; + } + if ( isDefined( turret ) ) + { + turret notify( "stop_burst_fire_unmanned" ); + turret notify( "turret_deactivated" ); + turret delete(); + } + self.turret = undefined; + self notify( "turret_cleanup" ); + } +} + +turret_in_range( delta, origin, radius ) +{ + if ( distancesquared( self.target.origin, origin ) < ( radius * radius ) ) + { + return 1; + } + return 0; +} + +turret_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: turret on\n" ); +#/ + if ( !isDefined( self.target ) ) + { + return; + } + self.target.power_on = 1; + self.target.turret thread maps/mp/zombies/_zm_mgturret::burst_fire_unmanned(); + player = self.target.turret.owner; + if ( !isDefined( player.buildableturret.sound_ent ) ) + { + player.buildableturret.sound_ent = spawn( "script_origin", self.target.turret.origin ); + } + player.buildableturret.sound_ent playsound( "wpn_zmb_turret_start" ); + player.buildableturret.sound_ent playloopsound( "wpn_zmb_turret_loop", 2 ); +} + +turret_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: turret off\n" ); +#/ + if ( !isDefined( self.target ) ) + { + return; + } + self.target.power_on = 0; + self.target.turret notify( "stop_burst_fire_unmanned" ); + player = self.target.turret.owner; + if ( isDefined( player.buildableturret.sound_ent ) ) + { + player.buildableturret.sound_ent playsound( "wpn_zmb_turret_stop" ); + player.buildableturret.sound_ent delete(); + player.buildableturret.sound_ent = undefined; + } +} + +turretdecay( weapon ) +{ + self endon( "death" ); + self endon( "disconnect" ); + while ( isDefined( weapon ) ) + { + if ( weapon.power_on ) + { + self.turret_health--; + + if ( self.turret_health <= 0 ) + { + self cleanupoldturret(); + self thread maps/mp/zombies/_zm_equipment::equipment_release( "equip_turret_zm" ); + return; + } + } + wait 1; + } +} + +debugturret( radius ) +{ +/# + while ( isDefined( self ) ) + { + circle( self.origin, radius, ( 1, 1, 1 ), 0, 1, 1 ); + wait 0,05; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_equipment.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_equipment.gsc new file mode 100644 index 0000000..3541513 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_equipment.gsc @@ -0,0 +1,1659 @@ +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + init_equipment_upgrade(); + onplayerconnect_callback( ::equipment_placement_watcher ); + level._equipment_disappear_fx = loadfx( "maps/zombie/fx_zmb_tranzit_electrap_explo" ); + level._riotshield_dissapear_fx = loadfx( "maps/zombie/fx_zmb_tranzit_shield_explo" ); + level.placeable_equipment_destroy_fn = []; +} + +register_equipment( equipment_name, hint, howto_hint, hint_icon, equipmentvo, watcher_thread, transfer_fn, drop_fn, pickup_fn, place_fn ) +{ + if ( !isDefined( level.zombie_include_equipment ) || isDefined( level.zombie_include_equipment[ equipment_name ] ) && !level.zombie_include_equipment[ equipment_name ] ) + { + return; + } + precachestring( hint ); + if ( isDefined( hint_icon ) ) + { + precacheshader( hint_icon ); + } + struct = spawnstruct(); + if ( !isDefined( level.zombie_equipment ) ) + { + level.zombie_equipment = []; + } + struct.equipment_name = equipment_name; + struct.hint = hint; + struct.howto_hint = howto_hint; + struct.hint_icon = hint_icon; + struct.vox = equipmentvo; + struct.triggers = []; + struct.models = []; + struct.watcher_thread = watcher_thread; + struct.transfer_fn = transfer_fn; + struct.drop_fn = drop_fn; + struct.pickup_fn = pickup_fn; + struct.place_fn = place_fn; + level.zombie_equipment[ equipment_name ] = struct; +} + +is_equipment_included( equipment_name ) +{ + if ( !isDefined( level.zombie_include_equipment ) ) + { + return 0; + } + return isDefined( level.zombie_include_equipment[ equipment_name ] ); +} + +include_zombie_equipment( equipment_name ) +{ + if ( !isDefined( level.zombie_include_equipment ) ) + { + level.zombie_include_equipment = []; + } + level.zombie_include_equipment[ equipment_name ] = 1; + precacheitem( equipment_name ); +} + +limit_zombie_equipment( equipment_name, limited ) +{ + if ( !isDefined( level._limited_equipment ) ) + { + level._limited_equipment = []; + } + if ( limited ) + { + level._limited_equipment[ level._limited_equipment.size ] = equipment_name; + } + else + { + arrayremovevalue( level._limited_equipment, equipment_name, 0 ); + } +} + +init_equipment_upgrade() +{ + equipment_spawns = []; + equipment_spawns = getentarray( "zombie_equipment_upgrade", "targetname" ); + i = 0; + while ( i < equipment_spawns.size ) + { + hint_string = get_equipment_hint( equipment_spawns[ i ].zombie_equipment_upgrade ); + equipment_spawns[ i ] sethintstring( hint_string ); + equipment_spawns[ i ] setcursorhint( "HINT_NOICON" ); + equipment_spawns[ i ] usetriggerrequirelookat(); + equipment_spawns[ i ] add_to_equipment_trigger_list( equipment_spawns[ i ].zombie_equipment_upgrade ); + equipment_spawns[ i ] thread equipment_spawn_think(); + i++; + } +} + +get_equipment_hint( equipment_name ) +{ +/# + assert( isDefined( level.zombie_equipment[ equipment_name ] ), equipment_name + " was not included or is not registered with the equipment system." ); +#/ + return level.zombie_equipment[ equipment_name ].hint; +} + +get_equipment_howto_hint( equipment_name ) +{ +/# + assert( isDefined( level.zombie_equipment[ equipment_name ] ), equipment_name + " was not included or is not registered with the equipment system." ); +#/ + return level.zombie_equipment[ equipment_name ].howto_hint; +} + +get_equipment_icon( equipment_name ) +{ +/# + assert( isDefined( level.zombie_equipment[ equipment_name ] ), equipment_name + " was not included or is not registered with the equipment system." ); +#/ + return level.zombie_equipment[ equipment_name ].hint_icon; +} + +add_to_equipment_trigger_list( equipment_name ) +{ +/# + assert( isDefined( level.zombie_equipment[ equipment_name ] ), equipment_name + " was not included or is not registered with the equipment system." ); +#/ + level.zombie_equipment[ equipment_name ].triggers[ level.zombie_equipment[ equipment_name ].triggers.size ] = self; + level.zombie_equipment[ equipment_name ].models[ level.zombie_equipment[ equipment_name ].models.size ] = getent( self.target, "targetname" ); +} + +equipment_spawn_think() +{ + for ( ;; ) + { + self waittill( "trigger", player ); + if ( player in_revive_trigger() || player.is_drinking > 0 ) + { + wait 0,1; + continue; + } + else + { + if ( is_limited_equipment( self.zombie_equipment_upgrade ) ) + { + player setup_limited_equipment( self.zombie_equipment_upgrade ); + if ( isDefined( level.hacker_tool_positions ) ) + { + new_pos = random( level.hacker_tool_positions ); + self.origin = new_pos.trigger_org; + model = getent( self.target, "targetname" ); + model.origin = new_pos.model_org; + model.angles = new_pos.model_ang; + } + } + player equipment_give( self.zombie_equipment_upgrade ); + } + } +} + +set_equipment_invisibility_to_player( equipment, invisible ) +{ + triggers = level.zombie_equipment[ equipment ].triggers; + i = 0; + while ( i < triggers.size ) + { + if ( isDefined( triggers[ i ] ) ) + { + triggers[ i ] setinvisibletoplayer( self, invisible ); + } + i++; + } + models = level.zombie_equipment[ equipment ].models; + i = 0; + while ( i < models.size ) + { + if ( isDefined( models[ i ] ) ) + { + models[ i ] setinvisibletoplayer( self, invisible ); + } + i++; + } +} + +equipment_take( equipment ) +{ + if ( !isDefined( equipment ) ) + { + equipment = self get_player_equipment(); + } + if ( !isDefined( equipment ) ) + { + return; + } + if ( !self has_player_equipment( equipment ) ) + { + return; + } + current = 0; + current_weapon = 0; + if ( isDefined( self get_player_equipment() ) && equipment == self get_player_equipment() ) + { + current = 1; + } + if ( equipment == self getcurrentweapon() ) + { + current_weapon = 1; + } +/# + println( "ZM EQUIPMENT: " + self.name + " lost " + equipment + "\n" ); +#/ + if ( self.current_equipment_active[ equipment ] ) + { + self.current_equipment_active[ equipment ] = 0; + self notify( equipment + "_deactivate" ); + } + self notify( equipment + "_taken" ); + self takeweapon( equipment ); + if ( !is_limited_equipment( equipment ) || is_limited_equipment( equipment ) && !limited_equipment_in_use( equipment ) ) + { + self set_equipment_invisibility_to_player( equipment, 0 ); + } + if ( current ) + { + self set_player_equipment( undefined ); + self setactionslot( 1, "" ); + } + else + { + arrayremovevalue( self.deployed_equipment, equipment ); + } + if ( current_weapon ) + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } +} + +equipment_give( equipment ) +{ + if ( !isDefined( equipment ) ) + { + return; + } + if ( !isDefined( level.zombie_equipment[ equipment ] ) ) + { + return; + } + if ( self has_player_equipment( equipment ) ) + { + return; + } +/# + println( "ZM EQUIPMENT: " + self.name + " got " + equipment + "\n" ); +#/ + curr_weapon = self getcurrentweapon(); + curr_weapon_was_curr_equipment = self is_player_equipment( curr_weapon ); + self equipment_take(); + self set_player_equipment( equipment ); + self giveweapon( equipment ); + self setweaponammoclip( equipment, 1 ); + self thread show_equipment_hint( equipment ); + self notify( equipment + "_given" ); + self set_equipment_invisibility_to_player( equipment, 1 ); + self setactionslot( 1, "weapon", equipment ); + if ( isDefined( level.zombie_equipment[ equipment ].watcher_thread ) ) + { + self thread [[ level.zombie_equipment[ equipment ].watcher_thread ]](); + } + self thread equipment_slot_watcher( equipment ); + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", level.zombie_equipment[ equipment ].vox ); +} + +equipment_slot_watcher( equipment ) +{ + self notify( "kill_equipment_slot_watcher" ); + self endon( "kill_equipment_slot_watcher" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "weapon_change", curr_weapon, prev_weapon ); + self.prev_weapon_before_equipment_change = undefined; + if ( isDefined( prev_weapon ) && prev_weapon != "none" ) + { + prev_weapon_type = weaponinventorytype( prev_weapon ); + if ( prev_weapon_type == "primary" || prev_weapon_type == "altmode" ) + { + self.prev_weapon_before_equipment_change = prev_weapon; + } + } + if ( isDefined( level.zombie_equipment[ equipment ].watcher_thread ) ) + { + if ( curr_weapon == equipment ) + { + if ( self.current_equipment_active[ equipment ] == 1 ) + { + self notify( equipment + "_deactivate" ); + self.current_equipment_active[ equipment ] = 0; + } + else + { + if ( self.current_equipment_active[ equipment ] == 0 ) + { + self notify( equipment + "_activate" ); + self.current_equipment_active[ equipment ] = 1; + } + } + self waittill( "equipment_select_response_done" ); + } + continue; + } + else if ( curr_weapon == equipment && !self.current_equipment_active[ equipment ] ) + { + self notify( equipment + "_activate" ); + self.current_equipment_active[ equipment ] = 1; + continue; + } + else + { + if ( curr_weapon != equipment && self.current_equipment_active[ equipment ] ) + { + self notify( equipment + "_deactivate" ); + self.current_equipment_active[ equipment ] = 0; + } + } + } +} + +is_limited_equipment( equipment ) +{ + while ( isDefined( level._limited_equipment ) ) + { + i = 0; + while ( i < level._limited_equipment.size ) + { + if ( level._limited_equipment[ i ] == equipment ) + { + return 1; + } + i++; + } + } + return 0; +} + +limited_equipment_in_use( equipment ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + current_equipment = players[ i ] get_player_equipment(); + if ( isDefined( current_equipment ) && current_equipment == equipment ) + { + return 1; + } + i++; + } + if ( isDefined( level.dropped_equipment ) && isDefined( level.dropped_equipment[ equipment ] ) ) + { + return 1; + } + return 0; +} + +setup_limited_equipment( equipment ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] set_equipment_invisibility_to_player( equipment, 1 ); + i++; + } + self thread release_limited_equipment_on_disconnect( equipment ); + self thread release_limited_equipment_on_equipment_taken( equipment ); +} + +release_limited_equipment_on_equipment_taken( equipment ) +{ + self endon( "disconnect" ); + self waittill_either( equipment + "_taken", "spawned_spectator" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] set_equipment_invisibility_to_player( equipment, 0 ); + i++; + } +} + +release_limited_equipment_on_disconnect( equipment ) +{ + self endon( equipment + "_taken" ); + self waittill( "disconnect" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isalive( players[ i ] ) ) + { + players[ i ] set_equipment_invisibility_to_player( equipment, 0 ); + } + i++; + } +} + +is_equipment_active( equipment ) +{ + if ( !isDefined( self.current_equipment_active ) || !isDefined( self.current_equipment_active[ equipment ] ) ) + { + return 0; + } + return self.current_equipment_active[ equipment ]; +} + +init_equipment_hint_hudelem( x, y, alignx, aligny, fontscale, alpha ) +{ + self.x = x; + self.y = y; + self.alignx = alignx; + self.aligny = aligny; + self.fontscale = fontscale; + self.alpha = alpha; + self.sort = 20; +} + +setup_equipment_client_hintelem() +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( self.hintelem ) ) + { + self.hintelem = newclienthudelem( self ); + } + if ( level.splitscreen ) + { + self.hintelem init_equipment_hint_hudelem( 160, 90, "center", "middle", 1,6, 1 ); + } + else + { + self.hintelem init_equipment_hint_hudelem( 320, 220, "center", "bottom", 1,6, 1 ); + } +} + +show_equipment_hint( equipment ) +{ + self notify( "kill_previous_show_equipment_hint_thread" ); + self endon( "kill_previous_show_equipment_hint_thread" ); + self endon( "death" ); + self endon( "disconnect" ); + wait 0,5; + text = get_equipment_howto_hint( equipment ); + self setup_equipment_client_hintelem(); + self.hintelem settext( text ); + self.hintelem.font = "small"; + self.hintelem.fontscale = 1,25; + self.hintelem.hidewheninmenu = 1; + wait 3,5; + self.hintelem settext( "" ); + self.hintelem destroy(); +} + +equipment_onspawnretrievableweaponobject( watcher, player ) +{ + self waittill( "stationary" ); + waittillframeend; + equipment = watcher.name + "_zm"; +/# + if ( !isDefined( player.current_equipment ) || player.current_equipment != equipment ) + { + assert( player has_deployed_equipment( equipment ) ); + assert( !isDefined( player.current_equipment ) ); +#/ + } + if ( isDefined( player.current_equipment ) && player.current_equipment == equipment ) + { + player equipment_to_deployed( equipment ); + } + if ( isDefined( level.zombie_equipment[ equipment ].place_fn ) ) + { + plant_origin = self.origin; + plant_angles = self.angles; + if ( isDefined( level.check_force_deploy_origin ) ) + { + if ( player [[ level.check_force_deploy_origin ]]( self, plant_origin, plant_angles ) ) + { + plant_origin = player.origin; + plant_angles = player.angles; + } + } + else + { + if ( isDefined( level.check_force_deploy_z ) ) + { + if ( player [[ level.check_force_deploy_z ]]( self, plant_origin, plant_angles ) ) + { + plant_origin = ( plant_origin[ 0 ], plant_origin[ 1 ], player.origin[ 2 ] + 10 ); + } + } + } + replacement = player [[ level.zombie_equipment[ equipment ].place_fn ]]( plant_origin, plant_angles ); + if ( isDefined( replacement ) ) + { + replacement.owner = player; + replacement.original_owner = player; + replacement.name = self.name; + player notify( "equipment_placed" ); + if ( isDefined( level.equipment_planted ) ) + { + player [[ level.equipment_planted ]]( replacement, equipment, self ); + } + player maps/mp/zombies/_zm_buildables::track_buildables_planted( self ); + } + if ( isDefined( self ) ) + { + self delete(); + } + } +} + +equipment_retrieve( player ) +{ + if ( isDefined( self ) ) + { + self stoploopsound(); + original_owner = self.original_owner; + weaponname = self.name; + if ( player != original_owner ) + { + equipment_transfer( weaponname, original_owner, player ); + self.owner = player; + } + player equipment_from_deployed( weaponname ); + if ( isDefined( self.requires_pickup ) && self.requires_pickup ) + { + if ( isDefined( level.zombie_equipment[ weaponname ].pickup_fn ) ) + { + self.owner = player; + if ( isDefined( self.damage ) ) + { + player player_set_equipment_damage( weaponname, self.damage ); + } + player [[ level.zombie_equipment[ weaponname ].pickup_fn ]]( self ); + } + } + self.playdialog = 0; + weaponname = self.name; + self delete(); + if ( !player hasweapon( weaponname ) ) + { + player giveweapon( weaponname ); + clip_ammo = player getweaponammoclip( weaponname ); + clip_max_ammo = weaponclipsize( weaponname ); + if ( clip_ammo < clip_max_ammo ) + { + clip_ammo++; + } + player setweaponammoclip( weaponname, clip_ammo ); + } + player maps/mp/zombies/_zm_buildables::track_planted_buildables_pickedup( weaponname ); + } +} + +equipment_drop_to_planted( equipment, player ) +{ +/# + if ( !isDefined( player.current_equipment ) || player.current_equipment != equipment ) + { + assert( player has_deployed_equipment( equipment ) ); + assert( !isDefined( player.current_equipment ) ); +#/ + } + if ( isDefined( player.current_equipment ) && player.current_equipment == equipment ) + { + player equipment_to_deployed( equipment ); + } + if ( isDefined( level.zombie_equipment[ equipment ].place_fn ) ) + { + replacement = player [[ level.zombie_equipment[ equipment ].place_fn ]]( player.origin, player.angles ); + if ( isDefined( replacement ) ) + { + replacement.owner = player; + replacement.original_owner = player; + replacement.name = equipment; + if ( isDefined( level.equipment_planted ) ) + { + player [[ level.equipment_planted ]]( replacement, equipment, player ); + } + player notify( "equipment_placed" ); + player maps/mp/zombies/_zm_buildables::track_buildables_planted( replacement ); + } + } +} + +equipment_transfer( weaponname, fromplayer, toplayer ) +{ + if ( is_limited_equipment( weaponname ) ) + { +/# + println( "ZM EQUIPMENT: " + weaponname + " transferred from " + fromplayer.name + " to " + toplayer.name + "\n" ); +#/ + toplayer equipment_orphaned( weaponname ); + wait 0,05; +/# + assert( !toplayer has_player_equipment( weaponname ) ); +#/ +/# + assert( fromplayer has_player_equipment( weaponname ) ); +#/ + toplayer equipment_give( weaponname ); + toplayer equipment_to_deployed( weaponname ); + if ( isDefined( level.zombie_equipment[ weaponname ].transfer_fn ) ) + { + [[ level.zombie_equipment[ weaponname ].transfer_fn ]]( fromplayer, toplayer ); + } + fromplayer equipment_release( weaponname ); +/# + assert( toplayer has_player_equipment( weaponname ) ); +#/ +/# + assert( !fromplayer has_player_equipment( weaponname ) ); +#/ + equipment_damage = 0; + toplayer player_set_equipment_damage( weaponname, fromplayer player_get_equipment_damage( weaponname ) ); + fromplayer player_set_equipment_damage( equipment_damage ); + } + else + { +/# + println( "ZM EQUIPMENT: " + weaponname + " swapped from " + fromplayer.name + " to " + toplayer.name + "\n" ); +#/ + toplayer equipment_give( weaponname ); + if ( isDefined( toplayer.current_equipment ) && toplayer.current_equipment == weaponname ) + { + toplayer equipment_to_deployed( weaponname ); + } + if ( isDefined( level.zombie_equipment[ weaponname ].transfer_fn ) ) + { + [[ level.zombie_equipment[ weaponname ].transfer_fn ]]( fromplayer, toplayer ); + } + equipment_damage = toplayer player_get_equipment_damage( weaponname ); + toplayer player_set_equipment_damage( weaponname, fromplayer player_get_equipment_damage( weaponname ) ); + fromplayer player_set_equipment_damage( weaponname, equipment_damage ); + } +} + +equipment_release( equipment ) +{ +/# + println( "ZM EQUIPMENT: " + self.name + " release " + equipment + "\n" ); +#/ + self equipment_take( equipment ); +} + +equipment_drop( equipment ) +{ + if ( isDefined( level.zombie_equipment[ equipment ].place_fn ) ) + { + equipment_drop_to_planted( equipment, self ); +/# + println( "ZM EQUIPMENT: " + self.name + " drop to planted " + equipment + "\n" ); +#/ + } + else if ( isDefined( level.zombie_equipment[ equipment ].drop_fn ) ) + { + if ( isDefined( self.current_equipment ) && self.current_equipment == equipment ) + { + self equipment_to_deployed( equipment ); + } + item = self [[ level.zombie_equipment[ equipment ].drop_fn ]](); + if ( isDefined( item ) ) + { + if ( isDefined( level.equipment_planted ) ) + { + self [[ level.equipment_planted ]]( item, equipment, self ); + } + item.owner = undefined; + item.damage = self player_get_equipment_damage( equipment ); + } +/# + println( "ZM EQUIPMENT: " + self.name + " dropped " + equipment + "\n" ); +#/ + } + else + { + self equipment_take(); + } +} + +equipment_grab( equipment, item ) +{ +/# + println( "ZM EQUIPMENT: " + self.name + " picked up " + equipment + "\n" ); +#/ + self equipment_give( equipment ); + if ( isDefined( level.zombie_equipment[ equipment ].pickup_fn ) ) + { + item.owner = self; + self player_set_equipment_damage( equipment, item.damage ); + self [[ level.zombie_equipment[ equipment ].pickup_fn ]]( item ); + } +} + +equipment_orphaned( equipment ) +{ +/# + println( "ZM EQUIPMENT: " + self.name + " orphaned " + equipment + "\n" ); +#/ + self equipment_take( equipment ); +} + +equipment_to_deployed( equipment ) +{ +/# + println( "ZM EQUIPMENT: " + self.name + " deployed " + equipment + "\n" ); +#/ + if ( !isDefined( self.deployed_equipment ) ) + { + self.deployed_equipment = []; + } +/# + assert( self.current_equipment == equipment ); +#/ + self.deployed_equipment[ self.deployed_equipment.size ] = equipment; + self.current_equipment = undefined; + if ( isDefined( level.riotshield_name ) && equipment != level.riotshield_name ) + { + self takeweapon( equipment ); + } + self setactionslot( 1, "" ); +} + +equipment_from_deployed( equipment ) +{ +/# + println( "ZM EQUIPMENT: " + self.name + " retrieved " + equipment + "\n" ); +#/ + if ( isDefined( self.current_equipment ) && equipment != self.current_equipment ) + { + self equipment_drop( self.current_equipment ); + } +/# + assert( self has_deployed_equipment( equipment ) ); +#/ + self.current_equipment = equipment; + if ( isDefined( level.riotshield_name ) && equipment != level.riotshield_name ) + { + self giveweapon( equipment ); + } + if ( self hasweapon( equipment ) ) + { + self setweaponammoclip( equipment, 1 ); + } + self setactionslot( 1, "weapon", equipment ); + arrayremovevalue( self.deployed_equipment, equipment ); + self notify( equipment + "_pickup" ); +} + +eqstub_get_unitrigger_origin() +{ + if ( isDefined( self.origin_parent ) ) + { + return self.origin_parent.origin; + } + return self.origin + vectorScale( ( 0, 0, 0 ), 12 ); +} + +eqstub_on_spawn_trigger( trigger ) +{ + if ( isDefined( self.link_parent ) ) + { + trigger enablelinkto(); + trigger linkto( self.link_parent ); + trigger setmovingplatformenabled( 1 ); + } +} + +equipment_buy( equipment ) +{ +/# + println( "ZM EQUIPMENT: " + self.name + " bought " + equipment + "\n" ); +#/ + if ( isDefined( self.current_equipment ) && equipment != self.current_equipment ) + { + self equipment_drop( self.current_equipment ); + } + if ( equipment == "riotshield_zm" && isDefined( self.player_shield_reset_health ) ) + { + self [[ self.player_shield_reset_health ]](); + } + else + { + self player_set_equipment_damage( equipment, 0 ); + } + self equipment_give( equipment ); +} + +generate_equipment_unitrigger( classname, origin, angles, flags, radius, script_height, hint, icon, think, moving ) +{ + if ( !isDefined( radius ) ) + { + radius = 64; + } + if ( !isDefined( script_height ) ) + { + script_height = 64; + } + script_width = script_height; + if ( !isDefined( script_width ) ) + { + script_width = 64; + } + script_length = script_height; + if ( !isDefined( script_length ) ) + { + script_length = 64; + } + unitrigger_stub = spawnstruct(); + unitrigger_stub.origin = origin; + if ( isDefined( angles ) ) + { + unitrigger_stub.angles = angles; + } + if ( isDefined( script_length ) ) + { + unitrigger_stub.script_length = script_length; + } + else + { + unitrigger_stub.script_length = 13,5; + } + if ( isDefined( script_width ) ) + { + unitrigger_stub.script_width = script_width; + } + else + { + unitrigger_stub.script_width = 27,5; + } + if ( isDefined( script_height ) ) + { + unitrigger_stub.script_height = script_height; + } + else + { + unitrigger_stub.script_height = 24; + } + unitrigger_stub.radius = radius; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + unitrigger_stub.hint_string = hint; + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.require_look_at = 0; + switch( classname ) + { + case "trigger_radius": + unitrigger_stub.script_unitrigger_type = "unitrigger_radius"; + break; + case "trigger_radius_use": + unitrigger_stub.script_unitrigger_type = "unitrigger_radius_use"; + break; + case "trigger_box": + unitrigger_stub.script_unitrigger_type = "unitrigger_box"; + break; + case "trigger_box_use": + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + break; + } + unitrigger_stub.originfunc = ::eqstub_get_unitrigger_origin; + unitrigger_stub.onspawnfunc = ::eqstub_on_spawn_trigger; + if ( isDefined( moving ) && moving ) + { + maps/mp/zombies/_zm_unitrigger::register_unitrigger( unitrigger_stub, think ); + } + else + { + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, think ); + } + return unitrigger_stub; +} + +can_pick_up_equipment( equipment ) +{ + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || self in_revive_trigger() ) + { + return 0; + } + if ( self isthrowinggrenade() ) + { + return 0; + } + if ( isDefined( self.screecher_weapon ) ) + { + return 0; + } + if ( self is_jumping() ) + { + return 0; + } + if ( self is_player_equipment( equipment ) ) + { + return 0; + } + if ( isDefined( self.pickup_equipment ) && self.pickup_equipment ) + { + return 0; + } + return 1; +} + +placed_equipment_think( model, equipname, origin, angles, tradius, toffset ) +{ + pickupmodel = spawn( "script_model", origin ); + if ( isDefined( angles ) ) + { + pickupmodel.angles = angles; + } + pickupmodel setmodel( model ); + if ( isDefined( level.equipment_safe_to_drop ) ) + { + if ( !( self [[ level.equipment_safe_to_drop ]]( pickupmodel ) ) ) + { + equipment_disappear_fx( pickupmodel.origin ); + pickupmodel delete(); + self equipment_take( equipname ); + return undefined; + } + } + watchername = getsubstr( equipname, 0, equipname.size - 3 ); + if ( isDefined( level.retrievehints[ watchername ] ) ) + { + hint = level.retrievehints[ watchername ].hint; + } + else + { + hint = &"MP_GENERIC_PICKUP"; + } + icon = get_equipment_icon( equipname ); + if ( !isDefined( tradius ) ) + { + tradius = 32; + } + torigin = origin; + if ( isDefined( toffset ) ) + { + offset = 64; + tforward = anglesToForward( angles ); + torigin += toffset * tforward; + } + if ( isDefined( pickupmodel.canmove ) ) + { + pickupmodel.stub = generate_equipment_unitrigger( "trigger_radius_use", torigin + vectorScale( ( 0, 0, 0 ), 12 ), angles, 0, tradius, 64, hint, icon, ::placed_equipment_unitrigger_think, pickupmodel.canmove ); + } + pickupmodel.stub.model = pickupmodel; + pickupmodel.stub.equipname = equipname; + pickupmodel.equipname = equipname; + pickupmodel thread item_attract_zombies(); + pickupmodel thread item_watch_explosions(); + if ( is_limited_equipment( equipname ) ) + { + if ( !isDefined( level.dropped_equipment ) ) + { + level.dropped_equipment = []; + } + if ( isDefined( level.dropped_equipment[ equipname ] ) && isDefined( level.dropped_equipment[ equipname ].model ) ) + { + level.dropped_equipment[ equipname ].model dropped_equipment_destroy( 1 ); + } + level.dropped_equipment[ equipname ] = pickupmodel.stub; + } + destructible_equipment_list_add( pickupmodel ); + return pickupmodel; +} + +watch_player_visibility( equipment ) +{ + self endon( "kill_trigger" ); + while ( isDefined( self ) ) + { + players = getplayers(); + _a1003 = players; + _k1003 = getFirstArrayKey( _a1003 ); + while ( isDefined( _k1003 ) ) + { + player = _a1003[ _k1003 ]; + if ( !isDefined( player ) ) + { + } + else + { + invisible = !player can_pick_up_equipment( equipment ); + if ( isDefined( self ) ) + { + self setinvisibletoplayer( player, invisible ); + } + wait 0,05; + } + _k1003 = getNextArrayKey( _a1003, _k1003 ); + } + wait 1; + } +} + +placed_equipment_unitrigger_think() +{ + self endon( "kill_trigger" ); + self thread watch_player_visibility( self.stub.equipname ); + while ( 1 ) + { + self waittill( "trigger", player ); + while ( !player can_pick_up_equipment( self.stub.equipname ) ) + { + continue; + } + self thread pickup_placed_equipment( player ); + return; + } +} + +pickup_placed_equipment( player ) +{ +/# + if ( isDefined( player.pickup_equipment )assert( !player.pickup_equipment ); +#/ + player.pickup_equipment = 1; + stub = self.stub; + && isDefined( player.current_equipment ) && stub.equipname != player.current_equipment ) + { + player equipment_drop( player.current_equipment ); + } + if ( is_limited_equipment( stub.equipname ) ) + { + if ( isDefined( level.dropped_equipment ) && isDefined( level.dropped_equipment[ stub.equipname ] ) && level.dropped_equipment[ stub.equipname ] == stub ) + { + } + } + if ( isDefined( stub.model ) ) + { + stub.model equipment_retrieve( player ); + } + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( stub ); + wait 3; + player.pickup_equipment = 0; +} + +dropped_equipment_think( model, equipname, origin, angles, tradius, toffset ) +{ + pickupmodel = spawn( "script_model", origin ); + if ( isDefined( angles ) ) + { + pickupmodel.angles = angles; + } + pickupmodel setmodel( model ); + if ( isDefined( level.equipment_safe_to_drop ) ) + { + if ( !( self [[ level.equipment_safe_to_drop ]]( pickupmodel ) ) ) + { + equipment_disappear_fx( pickupmodel.origin ); + pickupmodel delete(); + self equipment_take( equipname ); + return; + } + } + watchername = getsubstr( equipname, 0, equipname.size - 3 ); + if ( isDefined( level.retrievehints[ watchername ] ) ) + { + hint = level.retrievehints[ watchername ].hint; + } + else + { + hint = &"MP_GENERIC_PICKUP"; + } + icon = get_equipment_icon( equipname ); + if ( !isDefined( tradius ) ) + { + tradius = 32; + } + torigin = origin; + if ( isDefined( toffset ) ) + { + offset = 64; + tforward = anglesToForward( angles ); + torigin = torigin + ( toffset * tforward ) + vectorScale( ( 0, 0, 0 ), 8 ); + } + if ( isDefined( pickupmodel.canmove ) ) + { + pickupmodel.stub = generate_equipment_unitrigger( "trigger_radius_use", torigin, angles, 0, tradius, 64, hint, icon, ::dropped_equipment_unitrigger_think, pickupmodel.canmove ); + } + pickupmodel.stub.model = pickupmodel; + pickupmodel.stub.equipname = equipname; + pickupmodel.equipname = equipname; + if ( isDefined( level.equipment_planted ) ) + { + self [[ level.equipment_planted ]]( pickupmodel, equipname, self ); + } + if ( !isDefined( level.dropped_equipment ) ) + { + level.dropped_equipment = []; + } + if ( isDefined( level.dropped_equipment[ equipname ] ) ) + { + level.dropped_equipment[ equipname ].model dropped_equipment_destroy( 1 ); + } + level.dropped_equipment[ equipname ] = pickupmodel.stub; + destructible_equipment_list_add( pickupmodel ); + pickupmodel thread item_attract_zombies(); + return pickupmodel; +} + +dropped_equipment_unitrigger_think() +{ + self endon( "kill_trigger" ); + self thread watch_player_visibility( self.stub.equipname ); + while ( 1 ) + { + self waittill( "trigger", player ); + while ( !player can_pick_up_equipment( self.stub.equipname ) ) + { + continue; + } + self thread pickup_dropped_equipment( player ); + return; + } +} + +pickup_dropped_equipment( player ) +{ + player.pickup_equipment = 1; + stub = self.stub; + if ( isDefined( player.current_equipment ) && stub.equipname != player.current_equipment ) + { + player equipment_drop( player.current_equipment ); + } + player equipment_grab( stub.equipname, stub.model ); + stub.model dropped_equipment_destroy(); + wait 3; + player.pickup_equipment = 0; +} + +dropped_equipment_destroy( gusto ) +{ + stub = self.stub; + if ( isDefined( gusto ) && gusto ) + { + equipment_disappear_fx( self.origin ); + } + if ( isDefined( level.dropped_equipment ) ) + { + } + if ( isDefined( stub.model ) ) + { + stub.model delete(); + } + if ( isDefined( self.original_owner ) || is_limited_equipment( stub.equipname ) && maps/mp/zombies/_zm_weapons::is_weapon_included( stub.equipname ) ) + { + self.original_owner equipment_take( stub.equipname ); + } + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( stub ); +} + +add_placeable_equipment( equipment, modelname, destroy_fn ) +{ + if ( !isDefined( level.placeable_equipment ) ) + { + level.placeable_equipment = []; + } + level.placeable_equipment[ equipment ] = modelname; + precachemodel( modelname ); + precacheitem( equipment + "_turret" ); + if ( !isDefined( level.placeable_equipment_destroy_fn ) ) + { + level.placeable_equipment_destroy_fn = []; + } + level.placeable_equipment_destroy_fn[ equipment ] = destroy_fn; +} + +is_placeable_equipment( equipment ) +{ + if ( isDefined( level.placeable_equipment ) && isDefined( level.placeable_equipment[ equipment ] ) ) + { + return 1; + } + return 0; +} + +equipment_placement_watcher() +{ + self endon( "death_or_disconnect" ); + for ( ;; ) + { + self waittill( "weapon_change", weapon ); + if ( self.sessionstate != "spectator" && is_placeable_equipment( weapon ) ) + { + self thread equipment_watch_placement( weapon ); + } + } +} + +equipment_watch_placement( equipment ) +{ + carry_offset = vectorScale( ( 0, 0, 0 ), 22 ); + carry_angles = ( 0, 0, 0 ); + placeturret = spawnturret( "auto_turret", self.origin, equipment + "_turret" ); + placeturret.angles = self.angles; + placeturret setmodel( level.placeable_equipment[ equipment ] ); + placeturret setturretcarried( 1 ); + placeturret setturretowner( self ); + self carryturret( placeturret, carry_offset, carry_angles ); + self thread watch_melee_swipes( equipment, placeturret ); + ended = self waittill_any_return( "weapon_change", "grenade_fire", "death", "disconnect" ); + if ( ended == "weapon_change" ) + { + if ( self hasweapon( equipment ) ) + { + self setweaponammoclip( equipment, 1 ); + } + } + self stopcarryturret( placeturret ); + placeturret setturretcarried( 0 ); + placeturret delete(); +} + +watch_melee_swipes( equipment, turret ) +{ + self endon( "weapon_change" ); + self endon( "grenade_fire" ); + self endon( "death" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "melee_swipe", zombie ); + while ( distancesquared( zombie.origin, self.origin ) > ( zombie.meleeattackdist * zombie.meleeattackdist ) ) + { + continue; + } + tpos = turret.origin; + self player_damage_equipment( equipment, 200, zombie.origin ); + if ( self.equipment_damage[ equipment ] >= 1000 ) + { + thread equipment_disappear_fx( tpos ); + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons[ 0 ] ) ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + if ( isalive( self ) ) + { + self playlocalsound( level.zmb_laugh_alias ); + } + self maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + self equipment_release( equipment ); + return; + } + } +} + +player_get_equipment_damage( equipment ) +{ + if ( isDefined( self.equipment_damage ) && isDefined( self.equipment_damage[ equipment ] ) ) + { + return self.equipment_damage[ equipment ]; + } + return 0; +} + +player_set_equipment_damage( equipment, damage ) +{ + if ( !isDefined( self.equipment_damage ) ) + { + self.equipment_damage = []; + } + self.equipment_damage[ equipment ] = damage; +} + +player_damage_equipment( equipment, damage, origin ) +{ + if ( !isDefined( self.equipment_damage ) ) + { + self.equipment_damage = []; + } + if ( !isDefined( self.equipment_damage[ equipment ] ) ) + { + self.equipment_damage[ equipment ] = 0; + } + self.equipment_damage[ equipment ] += damage; + if ( self.equipment_damage[ equipment ] > 1000 ) + { + if ( isDefined( level.placeable_equipment_destroy_fn[ equipment ] ) ) + { + self [[ level.placeable_equipment_destroy_fn[ equipment ] ]](); + } + else + { + equipment_disappear_fx( origin ); + } + self equipment_release( equipment ); + } +} + +item_damage( damage ) +{ + if ( isDefined( self.isriotshield ) && self.isriotshield ) + { + if ( isDefined( level.riotshield_damage_callback ) && isDefined( self.owner ) ) + { + self.owner [[ level.riotshield_damage_callback ]]( damage, 0 ); + } + else + { + if ( isDefined( level.deployed_riotshield_damage_callback ) ) + { + self [[ level.deployed_riotshield_damage_callback ]]( damage ); + } + } + } + else + { + if ( isDefined( self.owner ) ) + { + self.owner player_damage_equipment( self.equipname, damage, self.origin ); + return; + } + else + { + if ( !isDefined( self.damage ) ) + { + self.damage = 0; + } + self.damage += damage; + if ( self.damage > 1000 ) + { + self thread dropped_equipment_destroy( 1 ); + } + } + } +} + +item_watch_damage() +{ + self endon( "death" ); + self setcandamage( 1 ); + self.health = 1000; + while ( 1 ) + { + self waittill( "damage", amount ); + self item_damage( amount ); + } +} + +item_watch_explosions() +{ + self endon( "death" ); + while ( 1 ) + { + level waittill( "grenade_exploded", position, radius, idamage, odamage ); + wait randomfloatrange( 0,05, 0,3 ); + distsqrd = distancesquared( self.origin, position ); + if ( distsqrd < ( radius * radius ) ) + { + dist = sqrt( distsqrd ); + dist /= radius; + damage = odamage + ( ( idamage - odamage ) * ( 1 - dist ) ); + self item_damage( damage * 5 ); + } + } +} + +get_item_health() +{ +/# + damage = 0; + if ( isDefined( self.isriotshield ) && self.isriotshield ) + { + damagemax = level.zombie_vars[ "riotshield_hit_points" ]; + if ( isDefined( self.owner ) ) + { + damage = self.owner.shielddamagetaken; + } + else + { + if ( isDefined( level.deployed_riotshield_damage_callback ) ) + { + damage = self.shielddamagetaken; + } + } + } + else + { + if ( isDefined( self.owner ) ) + { + damagemax = 1000; + damage = self.owner player_get_equipment_damage( self.equipname ); + } + else + { + damagemax = 1000; + if ( isDefined( self.damage ) ) + { + damage = self.damage; + } + } + } + return ( damagemax - damage ) / damagemax; +#/ +} + +debughealth() +{ +/# + self endon( "death" ); + while ( 1 ) + { + if ( getDvarInt( #"EB512CB7" ) ) + { + health = self get_item_health(); + color = ( 1 - health, health, 0 ); + text = "" + ( health * 100 ) + ""; + print3d( self.origin, text, color, 1, 0,5, 1 ); + } + wait 0,05; +#/ + } +} + +item_choke() +{ + if ( !isDefined( level.item_choke_count ) ) + { + level.item_choke_count = 0; + } + level.item_choke_count++; + if ( level.item_choke_count >= 10 ) + { + wait 0,05; + level.item_choke_count = 0; + } +} + +is_equipment_ignored( equipname ) +{ + if ( isDefined( level.equipment_ignored_by_zombies ) && isDefined( level.equipment_ignored_by_zombies[ equipname ] ) ) + { + return 1; + } + return 0; +} + +enemies_ignore_equipment( equipname ) +{ + if ( !isDefined( level.equipment_ignored_by_zombies ) ) + { + level.equipment_ignored_by_zombies = []; + } + level.equipment_ignored_by_zombies[ equipname ] = equipname; +} + +item_attract_zombies() +{ + self endon( "death" ); +/# + self thread debughealth(); +#/ + if ( is_equipment_ignored( self.equipname ) ) + { + return; + } + while ( 1 ) + { + vdistmax = 36; + distmax = 4096; + distmin = 2025; + ai = getaiarray( level.zombie_team ); + i = 0; + while ( i < ai.size ) + { + if ( !isDefined( ai[ i ] ) ) + { + i++; + continue; + } + else if ( isDefined( level.ignore_equipment ) ) + { + if ( self [[ level.ignore_equipment ]]( ai[ i ] ) ) + { + i++; + continue; + } + } + else + { + vdist = abs( ai[ i ].origin[ 2 ] - self.origin[ 2 ] ); + distsqrd = distance2dsquared( ai[ i ].origin, self.origin ); + if ( isDefined( self.equipname ) && self.equipname == "riotshield_zm" ) + { + vdistmax = 108; + } + should_attack = 0; + if ( isDefined( level.should_attack_equipment ) ) + { + should_attack = self [[ level.should_attack_equipment ]]( distsqrd ); + } + if ( distsqrd < distmax && distsqrd > distmin || vdist < vdistmax && should_attack ) + { + if ( isDefined( ai[ i ].isscreecher ) && !ai[ i ].isscreecher && !ai[ i ] is_quad() && !ai[ i ] is_leaper() ) + { + ai[ i ] thread attack_item( self ); + item_choke(); + } + } + item_choke(); + } + i++; + } + wait 0,1; + } +} + +attack_item( item ) +{ + self endon( "death" ); + item endon( "death" ); + self endon( "start_inert" ); + if ( isDefined( self.doing_equipment_attack ) && self.doing_equipment_attack ) + { + return 0; + } + self thread attack_item_stop( item ); + if ( getDvar( "zombie_equipment_attack_freq" ) == "" ) + { + setdvar( "zombie_equipment_attack_freq", "15" ); + } + freq = getDvarInt( "zombie_equipment_attack_freq" ); + self.doing_equipment_attack = 1; + self maps/mp/zombies/_zm_spawner::zombie_history( "doing equipment attack 1 - " + getTime() ); + self.item = item; + if ( !isDefined( self ) || !isalive( self ) ) + { + return; + } + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "attack", self.animname ); + if ( isDefined( level.attack_item ) ) + { + self [[ level.attack_item ]](); + } + melee_anim = "zm_window_melee"; + if ( !self.has_legs ) + { + melee_anim = "zm_walk_melee_crawl"; + if ( self.a.gib_ref == "no_legs" ) + { + melee_anim = "zm_stumpy_melee"; + } + else + { + if ( self.zombie_move_speed == "run" || self.zombie_move_speed == "sprint" ) + { + melee_anim = "zm_run_melee_crawl"; + } + } + } + self orientmode( "face point", item.origin ); + self animscripted( self.origin, flat_angle( vectorToAngle( item.origin - self.origin ) ), melee_anim ); + item thread item_damage( 100 ); + item playsound( "fly_riotshield_zm_impact_flesh" ); + wait ( randomint( 100 ) / 100 ); + self.doing_equipment_attack = 0; + self maps/mp/zombies/_zm_spawner::zombie_history( "doing equipment attack 0 from wait - " + getTime() ); + self orientmode( "face default" ); + if ( isDefined( item.zombie_attack_callback ) ) + { + item [[ item.zombie_attack_callback ]]( self ); + } +} + +attack_item_stop( item ) +{ + self notify( "attack_item_stop" ); + self endon( "attack_item_stop" ); + self endon( "death" ); + item waittill( "death" ); + self stopanimscripted(); + self.doing_equipment_attack = 0; + self maps/mp/zombies/_zm_spawner::zombie_history( "doing equipment attack 0 from death - " + getTime() ); + self.item = undefined; + if ( isDefined( level.attack_item_stop ) ) + { + self [[ level.attack_item_stop ]](); + } +} + +window_notetracks( msg, equipment ) +{ + self endon( "death" ); + equipment endon( "death" ); + while ( self.doing_equipment_attack ) + { + self waittill( msg, notetrack ); + if ( notetrack == "end" ) + { + return; + } + if ( notetrack == "fire" ) + { + equipment item_damage( 100 ); + } + } +} + +destructible_equipment_list_check() +{ + if ( !isDefined( level.destructible_equipment ) ) + { + level.destructible_equipment = []; + } + i = 0; + while ( i < level.destructible_equipment.size ) + { + if ( !isDefined( level.destructible_equipment[ i ] ) ) + { + arrayremoveindex( level.destructible_equipment, i ); + continue; + } + else + { + i++; + } + } +} + +destructible_equipment_list_add( item ) +{ + destructible_equipment_list_check(); + level.destructible_equipment[ level.destructible_equipment.size ] = item; +} + +get_destructible_equipment_list() +{ + destructible_equipment_list_check(); + return level.destructible_equipment; +} + +equipment_disappear_fx( origin, fx ) +{ + effect = level._equipment_disappear_fx; + if ( isDefined( fx ) ) + { + effect = fx; + } + playfx( effect, origin ); + wait 1,1; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_ffotd.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_ffotd.gsc new file mode 100644 index 0000000..cf982af --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_ffotd.gsc @@ -0,0 +1,77 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +main_start() +{ +} + +main_end() +{ +} + +player_in_exploit_area( player_trigger_origin, player_trigger_radius ) +{ + if ( distancesquared( player_trigger_origin, self.origin ) < ( player_trigger_radius * player_trigger_radius ) ) + { +/# + iprintlnbold( "player exploit detectect" ); +#/ + return 1; + } + return 0; +} + +path_exploit_fix( zombie_trigger_origin, zombie_trigger_radius, zombie_trigger_height, player_trigger_origin, player_trigger_radius, zombie_goto_point ) +{ + spawnflags = 9; + zombie_trigger = spawn( "trigger_radius", zombie_trigger_origin, spawnflags, zombie_trigger_radius, zombie_trigger_height ); + zombie_trigger setteamfortrigger( level.zombie_team ); +/# + thread debug_exploit( zombie_trigger_origin, zombie_trigger_radius, player_trigger_origin, player_trigger_radius, zombie_goto_point ); +#/ + while ( 1 ) + { + zombie_trigger waittill( "trigger", who ); + if ( !is_true( who.reroute ) ) + { + who thread exploit_reroute( zombie_trigger, player_trigger_origin, player_trigger_radius, zombie_goto_point ); + } + } +} + +exploit_reroute( zombie_trigger, player_trigger_origin, player_trigger_radius, zombie_goto_point ) +{ + self endon( "death" ); + self.reroute = 1; + while ( 1 ) + { + if ( self istouching( zombie_trigger ) ) + { + player = self.favoriteenemy; + if ( isDefined( player ) && player player_in_exploit_area( player_trigger_origin, player_trigger_radius ) ) + { + self.reroute_origin = zombie_goto_point; + } + else + { + } + } + else wait 0,2; + } + self.reroute = 0; +} + +debug_exploit( player_origin, player_radius, enemy_origin, enemy_radius, zombie_goto_point ) +{ +/# + while ( isDefined( self ) ) + { + circle( player_origin, player_radius, ( 1, 1, 0 ), 0, 1, 1 ); + circle( enemy_origin, enemy_radius, ( 1, 1, 0 ), 0, 1, 1 ); + line( player_origin, enemy_origin, ( 1, 1, 0 ), 1 ); + line( enemy_origin, zombie_goto_point, ( 1, 1, 0 ), 1 ); + wait 0,05; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module.gsc new file mode 100644 index 0000000..07e1d1c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module.gsc @@ -0,0 +1,491 @@ +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/zombies/_zm_audio_announcer; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +register_game_module( index, module_name, pre_init_func, post_init_func, pre_init_zombie_spawn_func, post_init_zombie_spawn_func, hub_start_func ) +{ + if ( !isDefined( level._game_modules ) ) + { + level._game_modules = []; + level._num_registered_game_modules = 0; + } + i = 0; + while ( i < level._num_registered_game_modules ) + { + if ( !isDefined( level._game_modules[ i ] ) ) + { + i++; + continue; + } + else + { + if ( isDefined( level._game_modules[ i ].index ) && level._game_modules[ i ].index == index ) + { +/# + assert( level._game_modules[ i ].index != index, "A Game module is already registered for index (" + index + ")" ); +#/ + } + } + i++; + } + level._game_modules[ level._num_registered_game_modules ] = spawnstruct(); + level._game_modules[ level._num_registered_game_modules ].index = index; + level._game_modules[ level._num_registered_game_modules ].module_name = module_name; + level._game_modules[ level._num_registered_game_modules ].pre_init_func = pre_init_func; + level._game_modules[ level._num_registered_game_modules ].post_init_func = post_init_func; + level._game_modules[ level._num_registered_game_modules ].pre_init_zombie_spawn_func = pre_init_zombie_spawn_func; + level._game_modules[ level._num_registered_game_modules ].post_init_zombie_spawn_func = post_init_zombie_spawn_func; + level._game_modules[ level._num_registered_game_modules ].hub_start_func = hub_start_func; + level._num_registered_game_modules++; +} + +set_current_game_module( game_module_index ) +{ + if ( !isDefined( game_module_index ) ) + { + level.current_game_module = level.game_module_classic_index; + level.scr_zm_game_module = level.game_module_classic_index; + return; + } + game_module = get_game_module( game_module_index ); + if ( !isDefined( game_module ) ) + { +/# + assert( isDefined( game_module ), "unknown game module (" + game_module_index + ")" ); +#/ + return; + } + level.current_game_module = game_module_index; +} + +get_current_game_module() +{ + return get_game_module( level.current_game_module ); +} + +get_game_module( game_module_index ) +{ + if ( !isDefined( game_module_index ) ) + { + return undefined; + } + i = 0; + while ( i < level._game_modules.size ) + { + if ( level._game_modules[ i ].index == game_module_index ) + { + return level._game_modules[ i ]; + } + i++; + } + return undefined; +} + +game_module_pre_zombie_spawn_init() +{ + current_module = get_current_game_module(); + if ( !isDefined( current_module ) || !isDefined( current_module.pre_init_zombie_spawn_func ) ) + { + return; + } + self [[ current_module.pre_init_zombie_spawn_func ]](); +} + +game_module_post_zombie_spawn_init() +{ + current_module = get_current_game_module(); + if ( !isDefined( current_module ) || !isDefined( current_module.post_init_zombie_spawn_func ) ) + { + return; + } + self [[ current_module.post_init_zombie_spawn_func ]](); +} + +kill_all_zombies() +{ + ai = get_round_enemy_array(); + _a115 = ai; + _k115 = getFirstArrayKey( _a115 ); + while ( isDefined( _k115 ) ) + { + zombie = _a115[ _k115 ]; + if ( isDefined( zombie ) ) + { + zombie dodamage( zombie.maxhealth * 2, zombie.origin, zombie, zombie, "none", "MOD_SUICIDE" ); + wait 0,05; + } + _k115 = getNextArrayKey( _a115, _k115 ); + } +} + +freeze_players( freeze ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] freeze_player_controls( freeze ); + i++; + } +} + +turn_power_on_and_open_doors() +{ + level.local_doors_stay_open = 1; + level.power_local_doors_globally = 1; + flag_set( "power_on" ); + level setclientfield( "zombie_power_on", 1 ); + zombie_doors = getentarray( "zombie_door", "targetname" ); + _a144 = zombie_doors; + _k144 = getFirstArrayKey( _a144 ); + while ( isDefined( _k144 ) ) + { + door = _a144[ _k144 ]; + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "electric_door" ) + { + door notify( "power_on" ); + } + else + { + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" ) + { + door notify( "local_power_on" ); + } + } + _k144 = getNextArrayKey( _a144, _k144 ); + } +} + +respawn_spectators_and_freeze_players() +{ + players = get_players(); + _a161 = players; + _k161 = getFirstArrayKey( _a161 ); + while ( isDefined( _k161 ) ) + { + player = _a161[ _k161 ]; + if ( player.sessionstate == "spectator" ) + { + if ( isDefined( player.spectate_hud ) ) + { + player.spectate_hud destroy(); + } + player [[ level.spawnplayer ]](); + } + player freeze_player_controls( 1 ); + _k161 = getNextArrayKey( _a161, _k161 ); + } +} + +damage_callback_no_pvp_damage( einflictor, eattacker, idamage, idflags, smeansofdeath, sweapon, vpoint, vdir, shitloc, psoffsettime ) +{ + if ( isDefined( eattacker ) && isplayer( eattacker ) && eattacker == self ) + { + return idamage; + } + if ( isDefined( eattacker ) && !isplayer( eattacker ) ) + { + return idamage; + } + if ( !isDefined( eattacker ) ) + { + return idamage; + } + return 0; +} + +respawn_players() +{ + players = get_players(); + _a196 = players; + _k196 = getFirstArrayKey( _a196 ); + while ( isDefined( _k196 ) ) + { + player = _a196[ _k196 ]; + player [[ level.spawnplayer ]](); + player freeze_player_controls( 1 ); + _k196 = getNextArrayKey( _a196, _k196 ); + } +} + +zombie_goto_round( target_round ) +{ + level notify( "restart_round" ); + if ( target_round < 1 ) + { + target_round = 1; + } + level.zombie_total = 0; + maps/mp/zombies/_zm::ai_calculate_health( target_round ); + zombies = get_round_enemy_array(); + while ( isDefined( zombies ) ) + { + i = 0; + while ( i < zombies.size ) + { + zombies[ i ] dodamage( zombies[ i ].health + 666, zombies[ i ].origin ); + i++; + } + } + respawn_players(); + wait 1; +} + +wait_for_team_death_and_round_end() +{ + level endon( "game_module_ended" ); + level endon( "end_game" ); + checking_for_round_end = 0; + level.isresetting_grief = 0; + while ( 1 ) + { + cdc_alive = 0; + cia_alive = 0; + players = get_players(); + _a244 = players; + _k244 = getFirstArrayKey( _a244 ); + while ( isDefined( _k244 ) ) + { + player = _a244[ _k244 ]; + if ( !isDefined( player._encounters_team ) ) + { + } + else if ( player._encounters_team == "A" ) + { + if ( is_player_valid( player ) ) + { + cia_alive++; + } + } + else + { + if ( is_player_valid( player ) ) + { + cdc_alive++; + } + } + _k244 = getNextArrayKey( _a244, _k244 ); + } + if ( cia_alive == 0 && cdc_alive == 0 && !level.isresetting_grief && isDefined( level.host_ended_game ) && !level.host_ended_game ) + { + wait 0,5; + if ( isDefined( level._grief_reset_message ) ) + { + level thread [[ level._grief_reset_message ]](); + } + level.isresetting_grief = 1; + level notify( "end_round_think" ); + level.zombie_vars[ "spectators_respawn" ] = 1; + level notify( "keep_griefing" ); + checking_for_round_end = 0; + zombie_goto_round( level.round_number ); + level thread reset_grief(); + level thread maps/mp/zombies/_zm::round_think( 1 ); + } + else + { + if ( !checking_for_round_end ) + { + if ( cia_alive == 0 ) + { + level thread check_for_round_end( "B" ); + checking_for_round_end = 1; + break; + } + else + { + if ( cdc_alive == 0 ) + { + level thread check_for_round_end( "A" ); + checking_for_round_end = 1; + } + } + } + } + if ( cia_alive > 0 && cdc_alive > 0 ) + { + level notify( "stop_round_end_check" ); + checking_for_round_end = 0; + } + wait 0,05; + } +} + +reset_grief() +{ + wait 1; + level.isresetting_grief = 0; +} + +check_for_round_end( winner ) +{ + level endon( "keep_griefing" ); + level endon( "stop_round_end_check" ); + level waittill( "end_of_round" ); + level.gamemodulewinningteam = winner; + level.zombie_vars[ "spectators_respawn" ] = 0; + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] freezecontrols( 1 ); + if ( players[ i ]._encounters_team == winner ) + { + players[ i ] thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "grief_won" ); + i++; + continue; + } + else + { + players[ i ] thread maps/mp/zombies/_zm_audio_announcer::leaderdialogonplayer( "grief_lost" ); + } + i++; + } + level notify( "game_module_ended" ); + level._game_module_game_end_check = undefined; + maps/mp/gametypes_zm/_zm_gametype::track_encounters_win_stats( level.gamemodulewinningteam ); + level notify( "end_game" ); +} + +wait_for_team_death() +{ + wait 15; + winner = undefined; + while ( !isDefined( winner ) ) + { + cdc_alive = 0; + cia_alive = 0; + players = get_players(); + _a418 = players; + _k418 = getFirstArrayKey( _a418 ); + while ( isDefined( _k418 ) ) + { + player = _a418[ _k418 ]; + if ( player._encounters_team == "A" ) + { + if ( is_player_valid( player ) || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && isDefined( player.lives ) && player.lives > 0 ) + { + cia_alive++; + } + } + else + { + if ( is_player_valid( player ) || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive && isDefined( player.lives ) && player.lives > 0 ) + { + cdc_alive++; + } + } + _k418 = getNextArrayKey( _a418, _k418 ); + } + if ( cia_alive == 0 ) + { + winner = "B"; + } + else + { + if ( cdc_alive == 0 ) + { + winner = "A"; + } + } + wait 0,05; + } + level notify( "game_module_ended" ); +} + +make_supersprinter() +{ + self set_zombie_run_cycle( "super_sprint" ); +} + +game_module_custom_intermission( intermission_struct ) +{ + self closemenu(); + self closeingamemenu(); + level endon( "stop_intermission" ); + self endon( "disconnect" ); + self endon( "death" ); + self notify( "_zombie_game_over" ); + self.score = self.score_total; + self.sessionstate = "intermission"; + self.spectatorclient = -1; + self.killcamentity = -1; + self.archivetime = 0; + self.psoffsettime = 0; + self.friendlydamage = undefined; + s_point = getstruct( intermission_struct, "targetname" ); + if ( !isDefined( level.intermission_cam_model ) ) + { + level.intermission_cam_model = spawn( "script_model", s_point.origin ); + level.intermission_cam_model.angles = s_point.angles; + level.intermission_cam_model setmodel( "tag_origin" ); + } + self.game_over_bg = newclienthudelem( self ); + self.game_over_bg.horzalign = "fullscreen"; + self.game_over_bg.vertalign = "fullscreen"; + self.game_over_bg setshader( "black", 640, 480 ); + self.game_over_bg.alpha = 1; + self spawn( level.intermission_cam_model.origin, level.intermission_cam_model.angles ); + self camerasetposition( level.intermission_cam_model ); + self camerasetlookat(); + self cameraactivate( 1 ); + self linkto( level.intermission_cam_model ); + level.intermission_cam_model moveto( getstruct( s_point.target, "targetname" ).origin, 12 ); + if ( isDefined( level.intermission_cam_model.angles ) ) + { + level.intermission_cam_model rotateto( getstruct( s_point.target, "targetname" ).angles, 12 ); + } + self.game_over_bg fadeovertime( 2 ); + self.game_over_bg.alpha = 0; + wait 2; + self.game_over_bg thread maps/mp/zombies/_zm::fade_up_over_time( 1 ); +} + +create_fireworks( launch_spots, min_wait, max_wait, randomize ) +{ + level endon( "stop_fireworks" ); + while ( 1 ) + { + if ( isDefined( randomize ) && randomize ) + { + launch_spots = array_randomize( launch_spots ); + } + _a516 = launch_spots; + _k516 = getFirstArrayKey( _a516 ); + while ( isDefined( _k516 ) ) + { + spot = _a516[ _k516 ]; + level thread fireworks_launch( spot ); + wait randomfloatrange( min_wait, max_wait ); + _k516 = getNextArrayKey( _a516, _k516 ); + } + wait randomfloatrange( min_wait, max_wait ); + } +} + +fireworks_launch( launch_spot ) +{ + firework = spawn( "script_model", launch_spot.origin + ( randomintrange( -60, 60 ), randomintrange( -60, 60 ), 0 ) ); + firework setmodel( "tag_origin" ); + wait_network_frame(); + playfxontag( level._effect[ "fw_trail_cheap" ], firework, "tag_origin" ); + firework playloopsound( "zmb_souls_loop", 0,75 ); + dest = launch_spot; + while ( isDefined( dest ) && isDefined( dest.target ) ) + { + random_offset = ( randomintrange( -60, 60 ), randomintrange( -60, 60 ), 0 ); + new_dests = getstructarray( dest.target, "targetname" ); + new_dest = random( new_dests ); + dest = new_dest; + dist = distance( new_dest.origin + random_offset, firework.origin ); + time = dist / 700; + firework moveto( new_dest.origin + random_offset, time ); + firework waittill( "movedone" ); + } + firework playsound( "zmb_souls_end" ); + playfx( level._effect[ "fw_pre_burst" ], firework.origin ); + firework delete(); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_cleansed.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_cleansed.gsc new file mode 100644 index 0000000..9c08b8c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_cleansed.gsc @@ -0,0 +1,17 @@ +#include maps/mp/zombies/_zm_turned; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +register_game_module() +{ +} + +onstartgametype( name ) +{ +} + +onstartcleansedgametype() +{ +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_grief.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_grief.gsc new file mode 100644 index 0000000..14a2eba --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_grief.gsc @@ -0,0 +1,11 @@ +#include maps/mp/zombies/_zm_game_module_utility; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +register_game_module() +{ + level.game_module_grief_index = 9; + maps/mp/zombies/_zm_game_module::register_game_module( level.game_module_grief_index, "zgrief", ::onpreinitgametype, ::onpostinitgametype, undefined, ::onspawnzombie, ::onstartgametype ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_meat.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_meat.gsc new file mode 100644 index 0000000..e083fb3 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_meat.gsc @@ -0,0 +1,6 @@ +#include maps/mp/zombies/_zm_game_module_utility; +#include maps/mp/zombies/_zm_game_module_meat_utility; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_meat_utility.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_meat_utility.gsc new file mode 100644 index 0000000..101f026 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_meat_utility.gsc @@ -0,0 +1,685 @@ +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/gametypes_zm/zmeat; +#include maps/mp/zombies/_zm_audio_announcer; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_game_module_utility; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +award_grenades_for_team( team ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ]._meat_team ) || players[ i ]._meat_team != team ) + { + i++; + continue; + } + else + { + lethal_grenade = players[ i ] get_player_lethal_grenade(); + players[ i ] giveweapon( lethal_grenade ); + players[ i ] setweaponammoclip( lethal_grenade, 4 ); + } + i++; + } +} + +get_players_on_meat_team( team ) +{ + players = get_players(); + players_on_team = []; + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ]._meat_team ) || players[ i ]._meat_team != team ) + { + i++; + continue; + } + else + { + players_on_team[ players_on_team.size ] = players[ i ]; + } + i++; + } + return players_on_team; +} + +get_alive_players_on_meat_team( team ) +{ + players = get_players(); + players_on_team = []; + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ]._meat_team ) || players[ i ]._meat_team != team ) + { + i++; + continue; + } + else + { + if ( players[ i ].sessionstate == "spectator" || players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + i++; + continue; + } + else + { + players_on_team[ players_on_team.size ] = players[ i ]; + } + } + i++; + } + return players_on_team; +} + +init_minigun_ring() +{ + if ( isDefined( level._minigun_ring ) ) + { + return; + } + ring_pos = getstruct( level._meat_location + "_meat_minigun", "script_noteworthy" ); + if ( !isDefined( ring_pos ) ) + { + return; + } + level._minigun_ring = spawn( "script_model", ring_pos.origin ); + level._minigun_ring.angles = ring_pos.angles; + level._minigun_ring setmodel( ring_pos.script_parameters ); + level._minigun_ring_clip = getent( level._meat_location + "_meat_minigun_clip", "script_noteworthy" ); + if ( isDefined( level._minigun_ring_clip ) ) + { + level._minigun_ring_clip linkto( level._minigun_ring ); + } + else + { + iprintlnbold( "BUG: no level._minigun_ring_clip" ); + } + level._minigun_ring_trig = getent( level._meat_location + "_meat_minigun_trig", "targetname" ); + if ( isDefined( level._minigun_ring_trig ) ) + { + level._minigun_ring_trig enablelinkto(); + level._minigun_ring_trig linkto( level._minigun_ring ); + level._minigun_icon = spawn( "script_model", level._minigun_ring_trig.origin ); + level._minigun_icon setmodel( getweaponmodel( "minigun_zm" ) ); + level._minigun_icon linkto( level._minigun_ring ); + level._minigun_icon setclientfield( "ring_glowfx", 1 ); + level thread ring_toss( level._minigun_ring_trig, "minigun" ); + } + else + { + iprintlnbold( "BUG: no level._minigun_ring_trig" ); + } + level._minigun_ring thread move_ring( ring_pos ); + level._minigun_ring thread rotate_ring( 1 ); +} + +init_ammo_ring() +{ + if ( isDefined( level._ammo_ring ) ) + { + return; + } + name = level._meat_location + "_meat_ammo"; + ring_pos = getstruct( name, "script_noteworthy" ); + if ( !isDefined( ring_pos ) ) + { + return; + } + level._ammo_ring = spawn( "script_model", ring_pos.origin ); + level._ammo_ring.angles = ring_pos.angles; + level._ammo_ring setmodel( ring_pos.script_parameters ); + name = level._meat_location + "_meat_ammo_clip"; + level._ammo_ring_clip = getent( name, "script_noteworthy" ); + if ( isDefined( level._ammo_ring_clip ) ) + { + level._ammo_ring_clip linkto( level._ammo_ring ); + } + else + { + iprintlnbold( "BUG: no level._ammo_ring_clip" ); + } + name = level._meat_location + "_meat_ammo_trig"; + level._ammo_ring_trig = getent( name, "targetname" ); + if ( isDefined( level._ammo_ring_clip ) ) + { + level._ammo_ring_trig enablelinkto(); + level._ammo_ring_trig linkto( level._ammo_ring ); + level._ammo_icon = spawn( "script_model", level._ammo_ring_trig.origin ); + level._ammo_icon setmodel( "zombie_ammocan" ); + level._ammo_icon linkto( level._ammo_ring ); + level._ammo_icon setclientfield( "ring_glowfx", 1 ); + level thread ring_toss( level._ammo_ring_trig, "ammo" ); + } + else + { + iprintlnbold( "BUG: no level._ammo_ring_trig" ); + } + level._ammo_ring thread move_ring( ring_pos ); + level._ammo_ring thread rotate_ring( 1 ); +} + +init_splitter_ring() +{ + if ( isDefined( level._splitter_ring ) ) + { + return; + } + ring_pos = getstruct( level._meat_location + "_meat_splitter", "script_noteworthy" ); + if ( !isDefined( ring_pos ) ) + { + return; + } + level._splitter_ring = spawn( "script_model", ring_pos.origin ); + level._splitter_ring.angles = ring_pos.angles; + level._splitter_ring setmodel( ring_pos.script_parameters ); + level._splitter_ring_trig1 = getent( level._meat_location + "_meat_splitter_trig_1", "targetname" ); + level._splitter_ring_trig2 = getent( level._meat_location + "_meat_splitter_trig_2", "targetname" ); + if ( isDefined( level._splitter_ring_trig1 ) && isDefined( level._splitter_ring_trig2 ) ) + { + level._splitter_ring_trig1 enablelinkto(); + level._splitter_ring_trig2 enablelinkto(); + } + else + { + iprintlnbold( "BUG: missing at least one level._splitter_ring_trig" ); + } + level._splitter_ring notsolid(); + level._meat_icon = spawn( "script_model", level._splitter_ring.origin ); + level._meat_icon setmodel( getweaponmodel( get_gamemode_var( "item_meat_name" ) ) ); + level._meat_icon linkto( level._splitter_ring ); + level._meat_icon setclientfield( "ring_glow_meatfx", 1 ); + if ( isDefined( level._splitter_ring_trig1 ) && isDefined( level._splitter_ring_trig2 ) ) + { + level._splitter_ring_trig1 linkto( level._splitter_ring ); + level._splitter_ring_trig2 linkto( level._splitter_ring ); + level thread ring_toss( level._splitter_ring_trig1, "splitter" ); + level thread ring_toss( level._splitter_ring_trig2, "splitter" ); + } + level._splitter_ring thread move_ring( ring_pos ); +} + +ring_toss( trig, type ) +{ + level endon( "end_game" ); + while ( 1 ) + { + while ( isDefined( level._ring_triggered ) && level._ring_triggered ) + { + wait 0,05; + } + if ( isDefined( level.item_meat ) && isDefined( level.item_meat.meat_is_moving ) && level.item_meat.meat_is_moving ) + { + if ( level.item_meat istouching( trig ) ) + { + level thread ring_toss_prize( type, trig ); + level._ring_triggered = 1; + level thread ring_cooldown(); + } + } + wait 0,05; + } +} + +ring_cooldown() +{ + wait 3; + level._ring_triggered = 0; +} + +ring_toss_prize( type, trig ) +{ + switch( type ) + { + case "splitter": + level thread meat_splitter( trig ); + break; + case "minigun": + level thread minigun_prize( trig ); + break; + case "ammo": + level thread ammo_prize( trig ); + break; + } +} + +meat_splitter( trig ) +{ + level endon( "meat_grabbed" ); + level endon( "meat_kicked" ); + while ( isDefined( level.item_meat ) && level.item_meat istouching( trig ) ) + { + wait 0,05; + } + exit_trig = getent( trig.target, "targetname" ); + exit_struct = getstruct( trig.target, "targetname" ); + while ( isDefined( level.item_meat ) && !level.item_meat istouching( exit_trig ) ) + { + wait 0,05; + } + while ( isDefined( level.item_meat ) && level.item_meat istouching( exit_trig ) ) + { + wait 0,05; + } + if ( !isDefined( level.item_meat ) ) + { + return; + } + playfx( level._effect[ "fw_burst" ], exit_trig.origin ); + flare_dir = vectornormalize( anglesToForward( exit_struct.angles ) ); + velocity = vectorScale( flare_dir, randomintrange( 400, 600 ) ); + velocity1 = ( velocity[ 0 ] + 75, velocity[ 1 ] + 75, randomintrange( 75, 125 ) ); + velocity2 = ( velocity[ 0 ] - 75, velocity[ 1 ] - 75, randomintrange( 75, 125 ) ); + velocity3 = ( velocity[ 0 ], velocity[ 1 ], 100 ); + level._fake_meats = []; + level._meat_splitter_activated = 1; + org = exit_trig.origin; + player = get_players()[ 0 ]; + player._spawning_meat = 1; + player endon( "disconnect" ); + thread split_meat( player, org, velocity1, velocity2, velocity ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "meat_ring_splitter", undefined, undefined, 1 ); + wait 0,1; + while ( isDefined( level.splitting_meat ) && level.splitting_meat ) + { + wait 0,05; + } + player._spawning_meat = 0; +} + +split_meat( player, org, vel1, vel2, vel3 ) +{ + level.splitting_meat = 1; + level.item_meat cleanup_meat(); + wait_network_frame(); + level._fake_meats[ level._fake_meats.size ] = player magicgrenadetype( get_gamemode_var( "item_meat_name" ), org, vel1 ); + wait_network_frame(); + level._fake_meats[ level._fake_meats.size ] = player magicgrenadetype( get_gamemode_var( "item_meat_name" ), org, vel2 ); + wait_network_frame(); + level._fake_meats[ level._fake_meats.size ] = player magicgrenadetype( get_gamemode_var( "item_meat_name" ), org, vel3 ); + real_meat = random( level._fake_meats ); + _a330 = level._fake_meats; + _k330 = getFirstArrayKey( _a330 ); + while ( isDefined( _k330 ) ) + { + meat = _a330[ _k330 ]; + if ( real_meat != meat ) + { + meat._fake_meat = 1; + meat thread maps/mp/gametypes_zm/zmeat::delete_on_real_meat_pickup(); + } + else + { + meat._fake_meat = 0; + level.item_meat = meat; + } + _k330 = getNextArrayKey( _a330, _k330 ); + } + level.splitting_meat = 0; +} + +minigun_prize( trig ) +{ + while ( isDefined( level.item_meat ) && level.item_meat istouching( trig ) ) + { + wait 0,05; + } + if ( !isDefined( level.item_meat ) ) + { + return; + } + if ( isDefined( level._minigun_toss_cooldown ) && level._minigun_toss_cooldown ) + { + return; + } + level thread minigun_toss_cooldown(); + if ( !is_player_valid( level._last_person_to_throw_meat ) ) + { + return; + } + level._last_person_to_throw_meat thread maps/mp/zombies/_zm_powerups::powerup_vo( "minigun" ); + level thread maps/mp/zombies/_zm_powerups::minigun_weapon_powerup( level._last_person_to_throw_meat ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "meat_ring_minigun", undefined, undefined, 1 ); +} + +ammo_prize( trig ) +{ + while ( isDefined( level.item_meat ) && level.item_meat istouching( trig ) ) + { + wait 0,05; + } + if ( !isDefined( level.item_meat ) ) + { + return; + } + if ( isDefined( level._ammo_toss_cooldown ) && level._ammo_toss_cooldown ) + { + return; + } + playfx( level._effect[ "poltergeist" ], trig.origin ); + level thread ammo_toss_cooldown(); + level._last_person_to_throw_meat thread maps/mp/zombies/_zm_powerups::powerup_vo( "full_ammo" ); + level thread maps/mp/zombies/_zm_powerups::full_ammo_powerup( undefined, level._last_person_to_throw_meat ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "meat_ring_ammo", undefined, undefined, 1 ); +} + +minigun_toss_cooldown() +{ + level._minigun_toss_cooldown = 1; + if ( isDefined( level._minigun_icon ) ) + { + level._minigun_icon delete(); + } + waittill_any_or_timeout( 120, "meat_end" ); + playfx( level._effect[ "poltergeist" ], level._minigun_ring_trig.origin ); + level._minigun_icon = spawn( "script_model", level._minigun_ring_trig.origin ); + level._minigun_icon setmodel( getweaponmodel( "minigun_zm" ) ); + level._minigun_icon linkto( level._minigun_ring ); + level._minigun_icon setclientfield( "ring_glowfx", 1 ); + level._minigun_toss_cooldown = 0; +} + +ammo_toss_cooldown() +{ + level._ammo_toss_cooldown = 1; + if ( isDefined( level._ammo_icon ) ) + { + level._ammo_icon delete(); + } + waittill_any_or_timeout( 60, "meat_end" ); + playfx( level._effect[ "poltergeist" ], level._ammo_ring_trig.origin ); + level._ammo_icon = spawn( "script_model", level._ammo_ring_trig.origin ); + level._ammo_icon setmodel( "zombie_ammocan" ); + level._ammo_icon linkto( level._ammo_ring ); + level._ammo_icon setclientfield( "ring_glowfx", 1 ); + level._ammo_toss_cooldown = 0; +} + +wait_for_team_death( team ) +{ + level endon( "meat_end" ); + encounters_team = undefined; + while ( 1 ) + { + wait 1; + while ( isDefined( level._checking_for_save ) && level._checking_for_save ) + { + wait 0,1; + } + alive_team_players = get_alive_players_on_meat_team( team ); + while ( alive_team_players.size > 0 ) + { + encounters_team = alive_team_players[ 0 ]._encounters_team; + } + } + if ( !isDefined( encounters_team ) ) + { + return; + } + winning_team = "A"; + if ( encounters_team == "A" ) + { + winning_team = "B"; + } + level notify( "meat_end" ); +} + +check_should_save_player( team ) +{ + if ( !isDefined( level._meat_on_team ) ) + { + return 0; + } + level._checking_for_save = 1; + players = get_players_on_meat_team( team ); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( isDefined( level._last_person_to_throw_meat ) && level._last_person_to_throw_meat == player ) + { + while ( isDefined( level.item_meat.meat_is_moving ) && !level.item_meat.meat_is_moving && isDefined( level._meat_splitter_activated ) || level._meat_splitter_activated && isDefined( level.item_meat.meat_is_flying ) && level.item_meat.meat_is_flying ) + { + if ( level._meat_on_team != player._meat_team ) + { + break; + } + else if ( isDefined( level.item_meat.meat_is_rolling ) && level.item_meat.meat_is_rolling && level._meat_on_team == player._meat_team ) + { + break; + } + else + { + wait 0,05; + } + } + if ( !isDefined( player ) ) + { + level._checking_for_save = 0; + return 0; + } + if ( isDefined( player.last_damage_from_zombie_or_player ) && !player.last_damage_from_zombie_or_player ) + { + level._checking_for_save = 0; + return 0; + } + if ( level._meat_on_team != player._meat_team && isDefined( level._last_person_to_throw_meat ) && level._last_person_to_throw_meat == player ) + { + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + level thread revive_saved_player( player ); + return 1; + } + } + } + i++; + } + level._checking_for_save = 0; + return 0; +} + +watch_save_player() +{ + if ( !isDefined( level._meat_on_team ) ) + { + return 0; + } + if ( !isDefined( level._last_person_to_throw_meat ) || level._last_person_to_throw_meat != self ) + { + return 0; + } + level._checking_for_save = 1; + while ( isDefined( level.splitting_meat ) || level.splitting_meat && isDefined( level.item_meat ) && isDefined( level.item_meat.meat_is_moving ) || level.item_meat.meat_is_moving && isDefined( level.item_meat.meat_is_flying ) && level.item_meat.meat_is_flying ) + { + if ( level._meat_on_team != self._meat_team ) + { + } + else if ( isDefined( level.item_meat ) && isDefined( level.item_meat.meat_is_rolling ) && level.item_meat.meat_is_rolling && level._meat_on_team == self._meat_team ) + { + } + else + { + wait 0,05; + } + } + if ( level._meat_on_team != self._meat_team && isDefined( level._last_person_to_throw_meat ) && level._last_person_to_throw_meat == self ) + { + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + level thread revive_saved_player( self ); + return 1; + } + } + level._checking_for_save = 0; + return 0; +} + +revive_saved_player( player ) +{ + player endon( "disconnect" ); + player iprintlnbold( &"ZOMBIE_PLAYER_SAVED" ); + player playsound( level.zmb_laugh_alias ); + wait 0,25; + playfx( level._effect[ "poltergeist" ], player.origin ); + playsoundatposition( "zmb_bolt", player.origin ); + earthquake( 0,5, 0,75, player.origin, 1000 ); + player thread maps/mp/zombies/_zm_laststand::auto_revive( player ); + player._saved_by_throw++; + level._checking_for_save = 0; +} + +get_game_module_players( player ) +{ + return get_players_on_meat_team( player._meat_team ); +} + +item_meat_spawn( origin ) +{ + org = origin; + player = get_players()[ 0 ]; + player._spawning_meat = 1; + player magicgrenadetype( get_gamemode_var( "item_meat_name" ), org, ( 0, 0, 1 ) ); + playsoundatposition( "zmb_spawn_powerup", org ); + wait 0,1; + player._spawning_meat = undefined; +} + +init_item_meat( gametype ) +{ + if ( gametype == "zgrief" ) + { + set_gamemode_var_once( "item_meat_name", "item_meat_zm" ); + set_gamemode_var_once( "item_meat_model", "t6_wpn_zmb_meat_world" ); + } + else + { + set_gamemode_var_once( "item_meat_name", "item_head_zm" ); + set_gamemode_var_once( "item_meat_model", "t6_wpn_zmb_severedhead_world" ); + } + precacheitem( get_gamemode_var( "item_meat_name" ) ); + set_gamemode_var_once( "start_item_meat_name", get_gamemode_var( "item_meat_name" ) ); + level.meat_weaponidx = getweaponindexfromname( get_gamemode_var( "item_meat_name" ) ); + level.meat_pickupsound = getweaponpickupsound( level.meat_weaponidx ); + level.meat_pickupsoundplayer = getweaponpickupsoundplayer( level.meat_weaponidx ); +} + +meat_intro( launch_spot ) +{ + flag_wait( "start_encounters_match_logic" ); + wait 3; + level thread multi_launch( launch_spot ); + launch_meat( launch_spot ); + drop_meat( level._meat_start_point ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "meat_drop", undefined, undefined, 1 ); +} + +launch_meat( launch_spot ) +{ + level waittill( "launch_meat" ); + spots = getstructarray( launch_spot, "targetname" ); + if ( isDefined( spots ) && spots.size > 0 ) + { + spot = random( spots ); + meat = spawn( "script_model", spot.origin ); + meat setmodel( "tag_origin" ); + wait_network_frame(); + playfxontag( level._effect[ "fw_trail" ], meat, "tag_origin" ); + meat playloopsound( "zmb_souls_loop", 0,75 ); + dest = spot; + while ( isDefined( dest ) && isDefined( dest.target ) ) + { + new_dest = getstruct( dest.target, "targetname" ); + dest = new_dest; + dist = distance( new_dest.origin, meat.origin ); + time = dist / 700; + meat moveto( new_dest.origin, time ); + meat waittill( "movedone" ); + } + meat playsound( "zmb_souls_end" ); + playfx( level._effect[ "fw_burst" ], meat.origin ); + wait randomfloatrange( 0,2, 0,5 ); + meat playsound( "zmb_souls_end" ); + playfx( level._effect[ "fw_burst" ], meat.origin + ( randomintrange( 50, 150 ), randomintrange( 50, 150 ), randomintrange( -20, 20 ) ) ); + wait randomfloatrange( 0,5, 0,75 ); + meat playsound( "zmb_souls_end" ); + playfx( level._effect[ "fw_burst" ], meat.origin + ( randomintrange( -150, -50 ), randomintrange( -150, 50 ), randomintrange( -20, 20 ) ) ); + wait randomfloatrange( 0,5, 0,75 ); + meat playsound( "zmb_souls_end" ); + playfx( level._effect[ "fw_burst" ], meat.origin ); + meat delete(); + } +} + +multi_launch( launch_spot ) +{ + spots = getstructarray( launch_spot, "targetname" ); + if ( isDefined( spots ) && spots.size > 0 ) + { + x = 0; + while ( x < 3 ) + { + i = 0; + while ( i < spots.size ) + { + delay = randomfloatrange( 0,1, 0,25 ); + level thread fake_launch( spots[ i ], delay ); + i++; + } + wait randomfloatrange( 0,25, 0,75 ); + if ( x > 1 ) + { + level notify( "launch_meat" ); + } + x++; + } + } + else wait randomfloatrange( 0,25, 0,75 ); + level notify( "launch_meat" ); +} + +fake_launch( launch_spot, delay ) +{ + wait delay; + wait randomfloatrange( 0,1, 4 ); + meat = spawn( "script_model", launch_spot.origin + ( randomintrange( -60, 60 ), randomintrange( -60, 60 ), 0 ) ); + meat setmodel( "tag_origin" ); + wait_network_frame(); + playfxontag( level._effect[ "fw_trail_cheap" ], meat, "tag_origin" ); + meat playloopsound( "zmb_souls_loop", 0,75 ); + dest = launch_spot; + while ( isDefined( dest ) && isDefined( dest.target ) ) + { + random_offset = ( randomintrange( -60, 60 ), randomintrange( -60, 60 ), 0 ); + new_dest = getstruct( dest.target, "targetname" ); + dest = new_dest; + dist = distance( new_dest.origin + random_offset, meat.origin ); + time = dist / 700; + meat moveto( new_dest.origin + random_offset, time ); + meat waittill( "movedone" ); + } + meat playsound( "zmb_souls_end" ); + playfx( level._effect[ "fw_pre_burst" ], meat.origin ); + meat delete(); +} + +drop_meat( drop_spot ) +{ + meat = spawn( "script_model", drop_spot + vectorScale( ( 0, 0, 1 ), 600 ) ); + meat setmodel( "tag_origin" ); + dist = distance( meat.origin, drop_spot ); + time = dist / 400; + wait 2; + meat moveto( drop_spot, time ); + wait_network_frame(); + playfxontag( level._effect[ "fw_drop" ], meat, "tag_origin" ); + meat waittill( "movedone" ); + playfx( level._effect[ "fw_impact" ], drop_spot ); + level notify( "reset_meat" ); + meat delete(); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_standard.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_standard.gsc new file mode 100644 index 0000000..e69de29 diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_turned.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_turned.gsc new file mode 100644 index 0000000..98be664 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_turned.gsc @@ -0,0 +1,64 @@ +#include maps/mp/zombies/_zm_game_module_cleansed; +#include maps/mp/zombies/_zm_turned; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +register_game_module() +{ + level.game_module_turned_index = 6; + maps/mp/zombies/_zm_game_module::register_game_module( level.game_module_turned_index, "zturned", ::maps/mp/zombies/_zm_game_module_cleansed::onpreinitgametype, ::onpostinitgametype, undefined, ::maps/mp/zombies/_zm_game_module_cleansed::onspawnzombie, ::maps/mp/zombies/_zm_game_module_cleansed::onstartgametype ); +} + +register_turned_match( start_func, end_func, name ) +{ + if ( !isDefined( level._registered_turned_matches ) ) + { + level._registered_turned_matches = []; + } + match = spawnstruct(); + match.match_name = name; + match.match_start_func = start_func; + match.match_end_func = end_func; + level._registered_turned_matches[ level._registered_turned_matches.size ] = match; +} + +get_registered_turned_match( name ) +{ + _a41 = level._registered_turned_matches; + _k41 = getFirstArrayKey( _a41 ); + while ( isDefined( _k41 ) ) + { + struct = _a41[ _k41 ]; + if ( struct.match_name == name ) + { + return struct; + } + _k41 = getNextArrayKey( _a41, _k41 ); + } +} + +set_current_turned_match( name ) +{ + level._current_turned_match = name; +} + +get_current_turned_match() +{ + return level._current_turned_match; +} + +init_zombie_weapon() +{ + maps/mp/zombies/_zm_turned::init(); +} + +onpostinitgametype() +{ + if ( level.scr_zm_game_module != level.game_module_turned_index ) + { + return; + } + level thread init_zombie_weapon(); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_utility.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_utility.gsc new file mode 100644 index 0000000..7c90b48 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_game_module_utility.gsc @@ -0,0 +1,46 @@ +#include maps/mp/zombies/_zm_game_module_meat; +#include maps/mp/zombies/_zm_game_module_meat_utility; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/_utility; + +init_item_meat() +{ + level.item_meat_name = "item_meat_zm"; + precacheitem( level.item_meat_name ); +} + +move_ring( ring ) +{ + positions = getstructarray( ring.target, "targetname" ); + positions = array_randomize( positions ); + level endon( "end_game" ); + while ( 1 ) + { + _a23 = positions; + _k23 = getFirstArrayKey( _a23 ); + while ( isDefined( _k23 ) ) + { + position = _a23[ _k23 ]; + self moveto( position.origin, randomintrange( 30, 45 ) ); + self waittill( "movedone" ); + _k23 = getNextArrayKey( _a23, _k23 ); + } + } +} + +rotate_ring( forward ) +{ + level endon( "end_game" ); + dir = -360; + if ( forward ) + { + dir = 360; + } + while ( 1 ) + { + self rotateyaw( dir, 9 ); + wait 9; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_gump.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_gump.gsc new file mode 100644 index 0000000..4fc63ca --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_gump.gsc @@ -0,0 +1,67 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + registerclientfield( "toplayer", "blackscreen", 1, 1, "int" ); + if ( !isDefined( level.uses_gumps ) ) + { + level.uses_gumps = 0; + } + if ( isDefined( level.uses_gumps ) && level.uses_gumps ) + { + onplayerconnect_callback( ::player_connect_gump ); + } +} + +player_teleport_blackscreen_on() +{ + if ( isDefined( level.uses_gumps ) && level.uses_gumps ) + { + self setclientfieldtoplayer( "blackscreen", 1 ); + wait 0,05; + self setclientfieldtoplayer( "blackscreen", 0 ); + } +} + +player_connect_gump() +{ +} + +player_watch_spectate_change() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "spectator_cycle" ); + self setclientfieldtoplayer( "blackscreen", 1 ); + wait 0,05; + self setclientfieldtoplayer( "blackscreen", 0 ); + } +} + +gump_test() +{ +/# + wait 10; + pos1 = ( -4904, -7657, 4 ); + pos3 = ( 7918, -6506, 177 ); + pos2 = ( 1986, -73, 4 ); + players = get_players(); + if ( isDefined( players[ 0 ] ) ) + { + players[ 0 ] setorigin( pos1 ); + } + wait 0,05; + if ( isDefined( players[ 1 ] ) ) + { + players[ 1 ] setorigin( pos2 ); + } + wait 0,05; + if ( isDefined( players[ 2 ] ) ) + { + players[ 2 ] setorigin( pos3 ); +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_boards.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_boards.gsc new file mode 100644 index 0000000..bb691eb --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_boards.gsc @@ -0,0 +1,118 @@ +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +hack_boards() +{ + windows = getstructarray( "exterior_goal", "targetname" ); + i = 0; + while ( i < windows.size ) + { + window = windows[ i ]; + struct = spawnstruct(); + spot = window; + if ( isDefined( window.trigger_location ) ) + { + spot = window.trigger_location; + } + org = groundpos( spot.origin ) + vectorScale( ( 0, 0, 1 ), 4 ); + r = 96; + h = 96; + if ( isDefined( spot.radius ) ) + { + r = spot.radius; + } + if ( isDefined( spot.height ) ) + { + h = spot.height; + } + struct.origin = org + vectorScale( ( 0, 0, 1 ), 48 ); + struct.radius = r; + struct.height = h; + struct.script_float = 2; + struct.script_int = 0; + struct.window = window; + struct.no_bullet_trace = 1; + struct.no_sight_check = 1; + struct.dot_limit = 0,7; + struct.no_touch_check = 1; + struct.last_hacked_round = 0; + struct.num_hacks = 0; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( struct, ::board_hack, ::board_qualifier ); + i++; + } +} + +board_hack( hacker ) +{ + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self ); + num_chunks_checked = 0; + last_repaired_chunk = undefined; + if ( self.last_hacked_round != level.round_number ) + { + self.last_hacked_round = level.round_number; + self.num_hacks = 0; + } + self.num_hacks++; + if ( self.num_hacks < 3 ) + { + hacker maps/mp/zombies/_zm_score::add_to_player_score( 100 ); + } + else + { + cost = int( min( 300, hacker.score ) ); + if ( cost ) + { + hacker maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + } + } + while ( 1 ) + { + if ( all_chunks_intact( self.window.barrier_chunks ) ) + { + break; + } + else chunk = get_random_destroyed_chunk( self, self.window.barrier_chunks ); + if ( !isDefined( chunk ) ) + { + break; + } + else self.window thread maps/mp/zombies/_zm_blockers::replace_chunk( self, chunk, undefined, 0, 1 ); + last_repaired_chunk = chunk; + if ( isDefined( self.clip ) ) + { + self.window.clip enable_trigger(); + self.window.clip disconnectpaths(); + } + else + { + blocker_disconnect_paths( self.window.neg_start, self.window.neg_end ); + } + wait_network_frame(); + num_chunks_checked++; + if ( num_chunks_checked >= 20 ) + { + break; + } + else + { + } + } + while ( isDefined( last_repaired_chunk ) && last_repaired_chunk.state == "mid_repair" ) + { + wait 0,05; + } + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( self, ::board_hack, ::board_qualifier ); +} + +board_qualifier( player ) +{ + if ( all_chunks_intact( self.window.barrier_chunks ) || no_valid_repairable_boards( self, self.window.barrier_chunks ) ) + { + return 0; + } + return 1; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_box.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_box.gsc new file mode 100644 index 0000000..2cb5d54 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_box.gsc @@ -0,0 +1,363 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_magicbox; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +box_hacks() +{ + boxes = getstructarray( "treasure_chest_use", "targetname" ); + i = 0; + while ( i < boxes.size ) + { + box = boxes[ i ]; + box.box_hacks[ "respin" ] = ::init_box_respin; + box.box_hacks[ "respin_respin" ] = ::init_box_respin_respin; + box.box_hacks[ "summon_box" ] = ::init_summon_box; + box.last_hacked_round = 0; + i++; + } + level._zombiemode_chest_joker_chance_override_func = ::check_for_free_locations; + level._zombiemode_custom_box_move_logic = ::custom_box_move_logic; + level._zombiemode_check_firesale_loc_valid_func = ::custom_check_firesale_loc_valid_func; + init_summon_hacks(); +} + +custom_check_firesale_loc_valid_func() +{ + if ( self.last_hacked_round >= level.round_number ) + { + return 0; + } + return 1; +} + +custom_box_move_logic() +{ + num_hacked_locs = 0; + i = 0; + while ( i < level.chests.size ) + { + if ( level.chests[ i ].last_hacked_round >= level.round_number ) + { + num_hacked_locs++; + } + i++; + } + if ( num_hacked_locs == 0 ) + { + maps/mp/zombies/_zm_magicbox::default_box_move_logic(); + return; + } + found_loc = 0; + original_spot = level.chest_index; + while ( !found_loc ) + { + level.chest_index++; + if ( original_spot == level.chest_index ) + { + level.chest_index++; + } + level.chest_index %= level.chests.size; + if ( level.chests[ level.chest_index ].last_hacked_round < level.round_number ) + { + found_loc = 1; + } + } +} + +check_for_free_locations( chance ) +{ + boxes = level.chests; + stored_chance = chance; + chance = -1; + i = 0; + while ( i < boxes.size ) + { + if ( i == level.chest_index ) + { + i++; + continue; + } + else + { + if ( boxes[ i ].last_hacked_round < level.round_number ) + { + chance = stored_chance; + break; + } + } + else + { + i++; + } + } + return chance; +} + +init_box_respin( chest, player ) +{ + self thread box_respin_think( chest, player ); +} + +box_respin_think( chest, player ) +{ + respin_hack = spawnstruct(); + respin_hack.origin = self.origin + vectorScale( ( 0, 0, 1 ), 24 ); + respin_hack.radius = 48; + respin_hack.height = 72; + respin_hack.script_int = 600; + respin_hack.script_float = 1,5; + respin_hack.player = player; + respin_hack.no_bullet_trace = 1; + respin_hack.chest = chest; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( respin_hack, ::respin_box, ::hack_box_qualifier ); + self.weapon_model waittill_either( "death", "kill_respin_think_thread" ); + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( respin_hack ); +} + +respin_box_thread( hacker ) +{ + if ( isDefined( self.chest.chest_origin.weapon_model ) ) + { + self.chest.chest_origin.weapon_model notify( "kill_respin_think_thread" ); + } + self.chest.no_fly_away = 1; + self.chest.zbarrier notify( "box_hacked_respin" ); + self.chest disable_trigger(); + play_sound_at_pos( "open_chest", self.chest.chest_origin.origin ); + play_sound_at_pos( "music_chest", self.chest.chest_origin.origin ); + maps/mp/zombies/_zm_weapons::unacquire_weapon_toggle( self.chest.chest_origin.weapon_string ); + self.chest.zbarrier thread maps/mp/zombies/_zm_magicbox::treasure_chest_weapon_spawn( self.chest, hacker, 1 ); + self.chest.zbarrier waittill( "randomization_done" ); + self.chest.no_fly_away = undefined; + if ( !flag( "moving_chest_now" ) ) + { + self.chest enable_trigger(); + self.chest thread maps/mp/zombies/_zm_magicbox::treasure_chest_timeout(); + } +} + +respin_box( hacker ) +{ + self thread respin_box_thread( hacker ); +} + +hack_box_qualifier( player ) +{ + if ( player == self.chest.chest_user && isDefined( self.chest.weapon_out ) ) + { + return 1; + } + return 0; +} + +init_box_respin_respin( chest, player ) +{ + self thread box_respin_respin_think( chest, player ); +} + +box_respin_respin_think( chest, player ) +{ + respin_hack = spawnstruct(); + respin_hack.origin = self.origin + vectorScale( ( 0, 0, 1 ), 24 ); + respin_hack.radius = 48; + respin_hack.height = 72; + respin_hack.script_int = -950; + respin_hack.script_float = 1,5; + respin_hack.player = player; + respin_hack.no_bullet_trace = 1; + respin_hack.chest = chest; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( respin_hack, ::respin_respin_box, ::hack_box_qualifier ); + self.weapon_model waittill_either( "death", "kill_respin_respin_think_thread" ); + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( respin_hack ); +} + +respin_respin_box( hacker ) +{ + org = self.chest.chest_origin.origin; + if ( isDefined( self.chest.chest_origin.weapon_model ) ) + { + self.chest.chest_origin.weapon_model notify( "kill_respin_respin_think_thread" ); + self.chest.chest_origin.weapon_model notify( "kill_weapon_movement" ); + self.chest.chest_origin.weapon_model moveto( org + vectorScale( ( 0, 0, 1 ), 40 ), 0,5 ); + } + if ( isDefined( self.chest.chest_origin.weapon_model_dw ) ) + { + self.chest.chest_origin.weapon_model_dw notify( "kill_weapon_movement" ); + self.chest.chest_origin.weapon_model_dw moveto( ( org + vectorScale( ( 0, 0, 1 ), 40 ) ) - vectorScale( ( 0, 0, 1 ), 3 ), 0,5 ); + } + self.chest.zbarrier notify( "box_hacked_rerespin" ); + self.chest.box_rerespun = 1; + self thread fake_weapon_powerup_thread( self.chest.chest_origin.weapon_model, self.chest.chest_origin.weapon_model_dw ); +} + +fake_weapon_powerup_thread( weapon1, weapon2 ) +{ + weapon1 endon( "death" ); + playfxontag( level._effect[ "powerup_on_solo" ], weapon1, "tag_origin" ); + playsoundatposition( "zmb_spawn_powerup", weapon1.origin ); + weapon1 playloopsound( "zmb_spawn_powerup_loop" ); + self thread fake_weapon_powerup_timeout( weapon1, weapon2 ); + while ( isDefined( weapon1 ) ) + { + waittime = randomfloatrange( 2,5, 5 ); + yaw = randomint( 360 ); + if ( yaw > 300 ) + { + yaw = 300; + } + else + { + if ( yaw < 60 ) + { + yaw = 60; + } + } + yaw = weapon1.angles[ 1 ] + yaw; + weapon1 rotateto( ( -60 + randomint( 120 ), yaw, -45 + randomint( 90 ) ), waittime, waittime * 0,5, waittime * 0,5 ); + if ( isDefined( weapon2 ) ) + { + weapon2 rotateto( ( -60 + randomint( 120 ), yaw, -45 + randomint( 90 ) ), waittime, waittime * 0,5, waittime * 0,5 ); + } + wait randomfloat( waittime - 0,1 ); + } +} + +fake_weapon_powerup_timeout( weapon1, weapon2 ) +{ + weapon1 endon( "death" ); + wait 15; + i = 0; + while ( i < 40 ) + { + if ( i % 2 ) + { + weapon1 hide(); + if ( isDefined( weapon2 ) ) + { + weapon2 hide(); + } + } + else + { + weapon1 show(); + if ( isDefined( weapon2 ) ) + { + weapon2 hide(); + } + } + if ( i < 15 ) + { + wait 0,5; + i++; + continue; + } + else if ( i < 25 ) + { + wait 0,25; + i++; + continue; + } + else + { + wait 0,1; + } + i++; + } + self.chest notify( "trigger" ); + if ( isDefined( weapon1 ) ) + { + weapon1 delete(); + } + if ( isDefined( weapon2 ) ) + { + weapon2 delete(); + } +} + +init_summon_hacks() +{ + chests = getentarray( "treasure_chest_use", "targetname" ); + i = 0; + while ( i < chests.size ) + { + chest = chests[ i ]; + chest init_summon_box( chest.hidden ); + i++; + } +} + +init_summon_box( create ) +{ + if ( create ) + { + if ( isDefined( self._summon_hack_struct ) ) + { + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self._summon_hack_struct ); + self._summon_hack_struct = undefined; + } + struct = spawnstruct(); + struct.origin = self.chest_box.origin + vectorScale( ( 0, 0, 1 ), 24 ); + struct.radius = 48; + struct.height = 72; + struct.script_int = 1200; + struct.script_float = 5; + struct.no_bullet_trace = 1; + struct.chest = self; + self._summon_hack_struct = struct; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( struct, ::summon_box, ::summon_box_qualifier ); + } + else + { + if ( isDefined( self._summon_hack_struct ) ) + { + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self._summon_hack_struct ); + self._summon_hack_struct = undefined; + } + } +} + +summon_box_thread( hacker ) +{ + self.chest.last_hacked_round = level.round_number + randomintrange( 2, 5 ); + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self ); + self.chest thread maps/mp/zombies/_zm_magicbox::show_chest(); + self.chest notify( "kill_chest_think" ); + self.chest.auto_open = 1; + self.chest.no_charge = 1; + self.chest.no_fly_away = 1; + self.chest.forced_user = hacker; + self.chest thread maps/mp/zombies/_zm_magicbox::treasure_chest_think(); + self.chest.chest_lid waittill( "lid_closed" ); + self.chest.chest_lid waittill( "rotatedone" ); + self.chest.forced_user = undefined; + self.chest.auto_open = undefined; + self.chest.no_charge = undefined; + self.chest.no_fly_away = undefined; + self.chest thread maps/mp/zombies/_zm_magicbox::hide_chest(); +} + +summon_box( hacker ) +{ + self thread summon_box_thread( hacker ); + if ( isDefined( hacker ) ) + { + hacker thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "hack_box" ); + } +} + +summon_box_qualifier( player ) +{ + if ( self.chest.last_hacked_round > level.round_number ) + { + return 0; + } + if ( isDefined( self.chest.zbarrier.chest_moving ) && self.chest.zbarrier.chest_moving ) + { + return 0; + } + return 1; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_doors.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_doors.gsc new file mode 100644 index 0000000..b040348 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_doors.gsc @@ -0,0 +1,107 @@ +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +door_struct_debug() +{ + while ( 1 ) + { + wait 0,1; + origin = self.origin; + point = origin; + i = 1; + while ( i < 5 ) + { + point = origin + ( anglesToForward( self.door.angles ) * ( i * 2 ) ); + passed = bullettracepassed( point, origin, 0, undefined ); + color = vectorScale( ( 1, 0, 0 ), 255 ); + if ( !passed ) + { + color = vectorScale( ( 1, 0, 0 ), 255 ); + } +/# + print3d( point, "+", color, 1, 1 ); +#/ + i++; + } + } +} + +hack_doors( targetname, door_activate_func ) +{ + if ( !isDefined( targetname ) ) + { + targetname = "zombie_door"; + } + doors = getentarray( targetname, "targetname" ); + if ( !isDefined( door_activate_func ) ) + { + door_activate_func = ::maps/mp/zombies/_zm_blockers::door_opened; + } + i = 0; + while ( i < doors.size ) + { + door = doors[ i ]; + struct = spawnstruct(); + struct.origin = door.origin + ( anglesToForward( door.angles ) * 2 ); + struct.radius = 48; + struct.height = 72; + struct.script_float = 32,7; + struct.script_int = 200; + struct.door = door; + struct.no_bullet_trace = 1; + struct.door_activate_func = door_activate_func; + trace_passed = 0; + door thread hide_door_buy_when_hacker_active( struct ); + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( struct, ::door_hack ); + door thread watch_door_for_open( struct ); + i++; + } +} + +hide_door_buy_when_hacker_active( door_struct ) +{ + self endon( "death" ); + self endon( "door_hacked" ); + self endon( "door_opened" ); + maps/mp/zombies/_zm_equip_hacker::hide_hint_when_hackers_active(); +} + +watch_door_for_open( door_struct ) +{ + self waittill( "door_opened" ); + self endon( "door_hacked" ); + remove_all_door_hackables_that_target_door( door_struct.door ); +} + +door_hack( hacker ) +{ + self.door notify( "door_hacked" ); + self.door notify( "kill_door_think" ); + remove_all_door_hackables_that_target_door( self.door ); + self.door [[ self.door_activate_func ]](); + self.door._door_open = 1; +} + +remove_all_door_hackables_that_target_door( door ) +{ + candidates = []; + i = 0; + while ( i < level._hackable_objects.size ) + { + obj = level._hackable_objects[ i ]; + if ( isDefined( obj.door ) && obj.door.target == door.target ) + { + candidates[ candidates.size ] = obj; + } + i++; + } + i = 0; + while ( i < candidates.size ) + { + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( candidates[ i ] ); + i++; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_packapunch.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_packapunch.gsc new file mode 100644 index 0000000..c9fba2a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_packapunch.gsc @@ -0,0 +1,46 @@ +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +hack_packapunch() +{ + vending_weapon_upgrade_trigger = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + perk = getent( vending_weapon_upgrade_trigger[ 0 ].target, "targetname" ); + if ( isDefined( perk ) ) + { + struct = spawnstruct(); + struct.origin = perk.origin + ( anglesToRight( perk.angles ) * 26 ) + vectorScale( ( 0, 0, 1 ), 48 ); + struct.radius = 48; + struct.height = 48; + struct.script_float = 5; + struct.script_int = -1000; + level._pack_hack_struct = struct; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( level._pack_hack_struct, ::packapunch_hack ); + level._pack_hack_struct pack_trigger_think(); + } +} + +pack_trigger_think() +{ + if ( !flag_exists( "enter_nml" ) ) + { + return; + } + while ( 1 ) + { + flag_wait( "enter_nml" ); + self.script_int = -1000; + while ( flag( "enter_nml" ) ) + { + wait 1; + } + } +} + +packapunch_hack( hacker ) +{ + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( level._pack_hack_struct ); + level._pack_hack_struct.script_int = 0; + level notify( "packapunch_hacked" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_perks.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_perks.gsc new file mode 100644 index 0000000..09481d7 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_perks.gsc @@ -0,0 +1,72 @@ +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +hack_perks() +{ + vending_triggers = getentarray( "zombie_vending", "targetname" ); + i = 0; + while ( i < vending_triggers.size ) + { + struct = spawnstruct(); + machine = getentarray( vending_triggers[ i ].target, "targetname" ); + struct.origin = machine[ 0 ].origin + ( anglesToRight( machine[ 0 ].angles ) * 18 ) + vectorScale( ( 0, 0, 1 ), 48 ); + struct.radius = 48; + struct.height = 64; + struct.script_float = 5; + while ( !isDefined( vending_triggers[ i ].cost ) ) + { + wait 0,05; + } + struct.script_int = int( vending_triggers[ i ].cost * -1 ); + struct.perk = vending_triggers[ i ]; + vending_triggers[ i ].hackable = struct; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( struct, ::perk_hack, ::perk_hack_qualifier ); + i++; + } + level._solo_revive_machine_expire_func = ::solo_revive_expire_func; +} + +solo_revive_expire_func() +{ + if ( isDefined( self.hackable ) ) + { + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self.hackable ); + self.hackable = undefined; + } +} + +perk_hack_qualifier( player ) +{ + if ( isDefined( player._retain_perks ) ) + { + return 0; + } + if ( player hasperk( self.perk.script_noteworthy ) ) + { + return 1; + } + return 0; +} + +perk_hack( hacker ) +{ + if ( flag( "solo_game" ) && self.perk.script_noteworthy == "specialty_quickrevive" ) + { + hacker.lives--; + + } + hacker notify( self.perk.script_noteworthy + "_stop" ); + hacker playsoundtoplayer( "evt_perk_throwup", hacker ); + while ( isDefined( hacker.perk_hud ) ) + { + keys = getarraykeys( hacker.perk_hud ); + i = 0; + while ( i < hacker.perk_hud.size ) + { + hacker.perk_hud[ keys[ i ] ].x = i * 30; + i++; + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_powerups.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_powerups.gsc new file mode 100644 index 0000000..318339f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_powerups.gsc @@ -0,0 +1,79 @@ +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +unhackable_powerup( name ) +{ + ret = 0; + switch( name ) + { + case "bonus_points_player": + case "bonus_points_team": + case "lose_points_team": + case "random_weapon": + ret = 1; + break; + } + return ret; +} + +hack_powerups() +{ + while ( 1 ) + { + level waittill( "powerup_dropped", powerup ); + if ( !unhackable_powerup( powerup.powerup_name ) ) + { + struct = spawnstruct(); + struct.origin = powerup.origin; + struct.radius = 65; + struct.height = 72; + struct.script_float = 5; + struct.script_int = 5000; + struct.powerup = powerup; + powerup thread powerup_pickup_watcher( struct ); + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( struct, ::powerup_hack ); + } + } +} + +powerup_pickup_watcher( powerup_struct ) +{ + self endon( "hacked" ); + self waittill( "death" ); + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( powerup_struct ); +} + +powerup_hack( hacker ) +{ + self.powerup notify( "hacked" ); + if ( isDefined( self.powerup.zombie_grabbable ) && self.powerup.zombie_grabbable ) + { + self.powerup notify( "powerup_timedout" ); + origin = self.powerup.origin; + self.powerup delete(); + self.powerup = maps/mp/zombies/_zm_net::network_safe_spawn( "powerup", 1, "script_model", origin ); + if ( isDefined( self.powerup ) ) + { + self.powerup maps/mp/zombies/_zm_powerups::powerup_setup( "full_ammo" ); + self.powerup thread maps/mp/zombies/_zm_powerups::powerup_timeout(); + self.powerup thread maps/mp/zombies/_zm_powerups::powerup_wobble(); + self.powerup thread maps/mp/zombies/_zm_powerups::powerup_grab(); + } + } + else + { + if ( self.powerup.powerup_name == "full_ammo" ) + { + self.powerup maps/mp/zombies/_zm_powerups::powerup_setup( "fire_sale" ); + } + else + { + self.powerup maps/mp/zombies/_zm_powerups::powerup_setup( "full_ammo" ); + } + } + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_wallbuys.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_wallbuys.gsc new file mode 100644 index 0000000..219b432 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_hackables_wallbuys.gsc @@ -0,0 +1,55 @@ +#include maps/mp/zombies/_zm_equip_hacker; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +hack_wallbuys() +{ + weapon_spawns = getentarray( "weapon_upgrade", "targetname" ); + i = 0; + while ( i < weapon_spawns.size ) + { + if ( weapontype( weapon_spawns[ i ].zombie_weapon_upgrade ) == "grenade" ) + { + i++; + continue; + } + else if ( weapontype( weapon_spawns[ i ].zombie_weapon_upgrade ) == "melee" ) + { + i++; + continue; + } + else if ( weapontype( weapon_spawns[ i ].zombie_weapon_upgrade ) == "mine" ) + { + i++; + continue; + } + else if ( weapontype( weapon_spawns[ i ].zombie_weapon_upgrade ) == "bomb" ) + { + i++; + continue; + } + else + { + struct = spawnstruct(); + struct.origin = weapon_spawns[ i ].origin; + struct.radius = 48; + struct.height = 48; + struct.script_float = 2; + struct.script_int = 3000; + struct.wallbuy = weapon_spawns[ i ]; + maps/mp/zombies/_zm_equip_hacker::register_pooled_hackable_struct( struct, ::wallbuy_hack ); + } + i++; + } + bowie_triggers = getentarray( "bowie_upgrade", "targetname" ); + array_thread( bowie_triggers, ::maps/mp/zombies/_zm_equip_hacker::hide_hint_when_hackers_active ); +} + +wallbuy_hack( hacker ) +{ + self.wallbuy.hacked = 1; + model = getent( self.wallbuy.target, "targetname" ); + model rotateroll( 180, 0,5 ); + maps/mp/zombies/_zm_equip_hacker::deregister_hackable_struct( self ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_jump_pad.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_jump_pad.gsc new file mode 100644 index 0000000..a6f669f --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_jump_pad.gsc @@ -0,0 +1,557 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( is_true( level._uses_jump_pads ) ) + { + level jump_pad_init(); + } +} + +jump_pad_init() +{ + level._jump_pad_override = []; + jump_pad_triggers = getentarray( "trig_jump_pad", "targetname" ); + if ( !isDefined( jump_pad_triggers ) ) + { + return; + } + i = 0; + while ( i < jump_pad_triggers.size ) + { + jump_pad_triggers[ i ].start = getstruct( jump_pad_triggers[ i ].target, "targetname" ); + jump_pad_triggers[ i ].destination = getstructarray( jump_pad_triggers[ i ].start.target, "targetname" ); + if ( isDefined( jump_pad_triggers[ i ].script_string ) ) + { + jump_pad_triggers[ i ].overrides = strtok( jump_pad_triggers[ i ].script_string, "," ); + } + jump_pad_triggers[ i ] thread jump_pad_think(); + i++; + } + onplayerconnect_callback( ::jump_pad_player_variables ); +} + +jump_pad_player_variables() +{ + self._padded = 0; + self.lander = 0; +} + +jump_pad_think() +{ + self endon( "destroyed" ); + end_point = undefined; + start_point = undefined; + z_velocity = undefined; + z_dist = undefined; + fling_this_way = undefined; + jump_time = undefined; + world_gravity = getDvarInt( "bg_gravity" ); + gravity_pulls = -13,3; + top_velocity_sq = 810000; + forward_scaling = 1; + if ( isDefined( self.script_flag_wait ) ) + { + if ( !isDefined( level.flag[ self.script_flag_wait ] ) ) + { + flag_init( self.script_flag_wait ); + } + flag_wait( self.script_flag_wait ); + } + while ( isDefined( self ) ) + { + self waittill( "trigger", who ); + if ( isplayer( who ) ) + { + self thread trigger_thread( who, ::jump_pad_start, ::jump_pad_cancel ); + } + } +} + +jump_pad_start( ent_player, endon_condition ) +{ + self endon( "endon_condition" ); + ent_player endon( "left_jump_pad" ); + ent_player endon( "death" ); + ent_player endon( "disconnect" ); + end_point = undefined; + start_point = undefined; + z_velocity = undefined; + z_dist = undefined; + fling_this_way = undefined; + jump_time = undefined; + world_gravity = getDvarInt( "bg_gravity" ); + gravity_pulls = -13,3; + top_velocity_sq = 810000; + forward_scaling = 1; + start_point = self.start; + while ( isDefined( self.name ) ) + { + self._action_overrides = strtok( self.name, "," ); + while ( isDefined( self._action_overrides ) ) + { + i = 0; + while ( i < self._action_overrides.size ) + { + ent_player jump_pad_player_overrides( self._action_overrides[ i ] ); + i++; + } + } + } + if ( isDefined( self.script_wait ) ) + { + if ( self.script_wait < 1 ) + { + self playsound( "evt_jump_pad_charge_short" ); + } + else + { + self playsound( "evt_jump_pad_charge" ); + } + wait self.script_wait; + } + else + { + self playsound( "evt_jump_pad_charge" ); + wait 1; + } + if ( isDefined( self.script_parameters ) && isDefined( level._jump_pad_override[ self.script_parameters ] ) ) + { + end_point = self [[ level._jump_pad_override[ self.script_parameters ] ]]( ent_player ); + } + if ( !isDefined( end_point ) ) + { + end_point = self.destination[ randomint( self.destination.size ) ]; + } + if ( isDefined( self.script_string ) && isDefined( level._jump_pad_override[ self.script_string ] ) ) + { + info_array = self [[ level._jump_pad_override[ self.script_string ] ]]( start_point, end_point ); + fling_this_way = info_array[ 0 ]; + jump_time = info_array[ 1 ]; + } + else + { + end_spot = end_point.origin; + if ( !is_true( self.script_airspeed ) ) + { + rand_end = ( randomfloat( -1, 1 ), randomfloat( -1, 1 ), 0 ); + rand_scale = randomint( 100 ); + rand_spot = vectorScale( rand_end, rand_scale ); + end_spot = end_point.origin + rand_spot; + } + pad_dist = distance( start_point.origin, end_spot ); + z_dist = end_spot[ 2 ] - start_point.origin[ 2 ]; + jump_velocity = end_spot - start_point.origin; + if ( z_dist > 40 && z_dist < 135 ) + { + z_dist *= 2,5; + forward_scaling = 1,1; +/# + if ( getDvarInt( #"D5FD01C3" ) ) + { + if ( getDvar( #"E2494021" ) != "" ) + { + z_dist *= getDvarFloat( #"E2494021" ); + } + if ( getDvar( #"4E3BC729" ) != "" ) + { + forward_scaling = getDvarFloat( #"4E3BC729" ); +#/ + } + } + } + else + { + if ( z_dist >= 135 ) + { + z_dist *= 2,7; + forward_scaling = 1,3; +/# + if ( getDvarInt( #"D5FD01C3" ) ) + { + if ( getDvar( #"E2494021" ) != "" ) + { + z_dist *= getDvarFloat( #"E2494021" ); + } + if ( getDvar( #"4E3BC729" ) != "" ) + { + forward_scaling = getDvarFloat( #"4E3BC729" ); +#/ + } + } + } + else + { + if ( z_dist < 0 ) + { + z_dist *= 2,4; + forward_scaling = 1; +/# + if ( getDvarInt( #"D5FD01C3" ) ) + { + if ( getDvar( #"E2494021" ) != "" ) + { + z_dist *= getDvarFloat( #"E2494021" ); + } + if ( getDvar( #"4E3BC729" ) != "" ) + { + forward_scaling = getDvarFloat( #"4E3BC729" ); +#/ + } + } + } + } + } + z_velocity = 2 * z_dist * world_gravity; + if ( z_velocity < 0 ) + { + z_velocity *= -1; + } + if ( z_dist < 0 ) + { + z_dist *= -1; + } + jump_time = sqrt( ( 2 * pad_dist ) / world_gravity ); + jump_time_2 = sqrt( ( 2 * z_dist ) / world_gravity ); + jump_time += jump_time_2; + if ( jump_time < 0 ) + { + jump_time *= -1; + } + x = ( jump_velocity[ 0 ] * forward_scaling ) / jump_time; + y = ( jump_velocity[ 1 ] * forward_scaling ) / jump_time; + z = z_velocity / jump_time; + fling_this_way = ( x, y, z ); + } + if ( isDefined( end_point.target ) ) + { + poi_spot = getstruct( end_point.target, "targetname" ); + } + else + { + poi_spot = end_point; + } + if ( !isDefined( self.script_index ) ) + { + ent_player.script_index = undefined; + } + else + { + ent_player.script_index = self.script_index; + } + if ( isDefined( self.script_start ) && self.script_start == 1 ) + { + if ( !is_true( ent_player._padded ) ) + { + self playsound( "evt_jump_pad_launch" ); + playfx( level._effect[ "jump_pad_jump" ], self.origin ); + ent_player thread jump_pad_move( fling_this_way, jump_time, poi_spot, self ); + if ( isDefined( self.script_label ) ) + { + level notify( self.script_label ); + } + return; + } + } + else + { + if ( ent_player isonground() && !is_true( ent_player._padded ) ) + { + self playsound( "evt_jump_pad_launch" ); + playfx( level._effect[ "jump_pad_jump" ], self.origin ); + ent_player thread jump_pad_move( fling_this_way, jump_time, poi_spot, self ); + if ( isDefined( self.script_label ) ) + { + level notify( self.script_label ); + } + return; + } + } + wait 0,5; + if ( ent_player istouching( self ) ) + { + self jump_pad_start( ent_player, endon_condition ); + } +} + +jump_pad_cancel( ent_player ) +{ + ent_player notify( "left_jump_pad" ); + if ( isDefined( ent_player.poi_spot ) && !is_true( ent_player._padded ) ) + { + } + while ( isDefined( self.name ) ) + { + self._action_overrides = strtok( self.name, "," ); + while ( isDefined( self._action_overrides ) ) + { + i = 0; + while ( i < self._action_overrides.size ) + { + ent_player jump_pad_player_overrides( self._action_overrides[ i ] ); + i++; + } + } + } +} + +jump_pad_move( vec_direction, flt_time, struct_poi, trigger ) +{ + self endon( "death" ); + self endon( "disconnect" ); + start_time = getTime(); + jump_time = flt_time * 500; + attract_dist = undefined; + num_attractors = 30; + added_poi_value = 0; + start_turned_on = 1; + poi_start_func = undefined; + while ( is_true( self.divetoprone ) || is_true( self._padded ) ) + { + wait 0,05; + } + self._padded = 1; + self.lander = 1; + self setstance( "stand" ); + wait 0,1; + if ( isDefined( trigger.script_label ) ) + { + if ( issubstr( trigger.script_label, "low" ) ) + { + self.jump_pad_current = undefined; + self.jump_pad_previous = undefined; + } + else if ( !isDefined( self.jump_pad_current ) ) + { + self.jump_pad_current = trigger; + } + else + { + self.jump_pad_previous = self.jump_pad_current; + self.jump_pad_current = trigger; + } + } + if ( isDefined( self.poi_spot ) ) + { + level jump_pad_ignore_poi_cleanup( self.poi_spot ); + self.poi_spot deactivate_zombie_point_of_interest(); + self.poi_spot delete(); + } + if ( isDefined( struct_poi ) ) + { + self.poi_spot = spawn( "script_origin", struct_poi.origin ); + if ( isDefined( level._pad_poi_ignore ) ) + { + level [[ level._pad_poi_ignore ]]( self.poi_spot ); + } + self thread jump_pad_enemy_follow_or_ignore( self.poi_spot ); + if ( isDefined( level._jump_pad_poi_start_override ) && !is_true( self.script_index ) ) + { + poi_start_func = level._jump_pad_poi_start_override; + } + if ( isDefined( level._jump_pad_poi_end_override ) ) + { + poi_end_func = level._jump_pad_poi_end_override; + } + self.poi_spot create_zombie_point_of_interest( attract_dist, num_attractors, added_poi_value, start_turned_on, poi_start_func ); + self thread disconnect_failsafe_pad_poi_clean(); + } + self setorigin( self.origin + ( 0, 0, 1 ) ); + if ( randomintrange( 0, 101 ) < 20 ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "jumppad" ); + } + while ( ( getTime() - start_time ) < jump_time ) + { + self setvelocity( vec_direction ); + wait 0,05; + } + while ( !self isonground() ) + { + wait 0,05; + } + self._padded = 0; + self.lander = 0; + jump_pad_triggers = getentarray( "trig_jump_pad", "targetname" ); + i = 0; + while ( i < jump_pad_triggers.size ) + { + if ( self istouching( jump_pad_triggers[ i ] ) ) + { + level thread failsafe_pad_poi_clean( jump_pad_triggers[ i ], self.poi_spot ); + return; + } + i++; + } + if ( isDefined( self.poi_spot ) ) + { + level jump_pad_ignore_poi_cleanup( self.poi_spot ); + self.poi_spot delete(); + } +} + +disconnect_failsafe_pad_poi_clean() +{ + self notify( "kill_disconnect_failsafe_pad_poi_clean" ); + self endon( "kill_disconnect_failsafe_pad_poi_clean" ); + self.poi_spot endon( "death" ); + self waittill( "disconnect" ); + if ( isDefined( self.poi_spot ) ) + { + level jump_pad_ignore_poi_cleanup( self.poi_spot ); + self.poi_spot deactivate_zombie_point_of_interest(); + self.poi_spot delete(); + } +} + +failsafe_pad_poi_clean( ent_trig, ent_poi ) +{ + if ( isDefined( ent_trig.script_wait ) ) + { + wait ent_trig.script_wait; + } + else + { + wait 0,5; + } + if ( isDefined( ent_poi ) ) + { + level jump_pad_ignore_poi_cleanup( ent_poi ); + ent_poi deactivate_zombie_point_of_interest(); + ent_poi delete(); + } +} + +jump_pad_enemy_follow_or_ignore( ent_poi ) +{ + self endon( "death" ); + self endon( "disconnect" ); + zombies = getaiarray( level.zombie_team ); + players = getplayers(); + valid_players = 0; + p = 0; + while ( p < players.size ) + { + if ( is_player_valid( players[ p ] ) ) + { + valid_players++; + } + p++; + } + i = 0; + while ( i < zombies.size ) + { + ignore_poi = 0; + if ( !isDefined( zombies[ i ] ) ) + { + i++; + continue; + } + else enemy = zombies[ i ].favoriteenemy; + if ( isDefined( enemy ) ) + { + if ( players.size > 1 && valid_players > 1 ) + { + if ( enemy != self || isDefined( enemy.jump_pad_previous ) && enemy.jump_pad_previous == enemy.jump_pad_current ) + { + ignore_poi = 1; + } + } + } + if ( is_true( ignore_poi ) ) + { + zombies[ i ] thread add_poi_to_ignore_list( ent_poi ); + i++; + continue; + } + else + { + zombies[ i ].ignore_distance_tracking = 1; + zombies[ i ]._pad_follow = 1; + zombies[ i ] thread stop_chasing_the_sky( ent_poi ); + } + i++; + } +} + +jump_pad_ignore_poi_cleanup( ent_poi ) +{ + zombies = getaiarray( level.zombie_team ); + i = 0; + while ( i < zombies.size ) + { + if ( isDefined( zombies[ i ] ) ) + { + if ( is_true( zombies[ i ]._pad_follow ) ) + { + zombies[ i ]._pad_follow = 0; + zombies[ i ] notify( "stop_chasing_the_sky" ); + zombies[ i ].ignore_distance_tracking = 0; + } + if ( isDefined( ent_poi ) ) + { + zombies[ i ] thread remove_poi_from_ignore_list( ent_poi ); + } + } + i++; + } +} + +stop_chasing_the_sky( ent_poi ) +{ + self endon( "death" ); + self endon( "stop_chasing_the_sky" ); + while ( is_true( self._pad_follow ) ) + { + while ( isDefined( self.favoriteenemy ) ) + { + players = getplayers(); + i = 0; + while ( i < players.size ) + { + if ( is_player_valid( players[ i ] ) && players[ i ] != self.favoriteenemy ) + { + if ( distance2dsquared( players[ i ].origin, self.origin ) < 10000 ) + { + self add_poi_to_ignore_list( ent_poi ); + return; + } + } + i++; + } + } + wait 0,1; + } + self._pad_follow = 0; + self.ignore_distance_tracking = 0; + self notify( "stop_chasing_the_sky" ); +} + +jump_pad_player_overrides( st_behavior, int_clean ) +{ + if ( !isDefined( st_behavior ) || !isstring( st_behavior ) ) + { + return; + } + if ( !isDefined( int_clean ) ) + { + int_clean = 0; + } + switch( st_behavior ) + { + case "no_sprint": + if ( !int_clean ) + { + } + default: + if ( isDefined( level._jump_pad_level_behavior ) ) + { + self [[ level._jump_pad_level_behavior ]]( st_behavior, int_clean ); + } + } + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_laststand.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_laststand.gsc new file mode 100644 index 0000000..e4db3a9 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_laststand.gsc @@ -0,0 +1,1445 @@ +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_chugabud; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_pers_upgrades; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/_demo; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +laststand_global_init() +{ + level.const_laststand_getup_count_start = 0; + level.const_laststand_getup_bar_start = 0,5; + level.const_laststand_getup_bar_regen = 0,0025; + level.const_laststand_getup_bar_damage = 0,1; +} + +init() +{ + if ( level.script == "frontend" ) + { + return; + } + laststand_global_init(); + level.revive_tool = "syrette_zm"; + precacheitem( level.revive_tool ); + precachestring( &"GAME_BUTTON_TO_REVIVE_PLAYER" ); + precachestring( &"GAME_PLAYER_NEEDS_TO_BE_REVIVED" ); + precachestring( &"GAME_PLAYER_IS_REVIVING_YOU" ); + precachestring( &"GAME_REVIVING" ); + if ( !isDefined( level.laststandpistol ) ) + { + level.laststandpistol = "m1911"; + precacheitem( level.laststandpistol ); + } + level thread revive_hud_think(); + level.primaryprogressbarx = 0; + level.primaryprogressbary = 110; + level.primaryprogressbarheight = 4; + level.primaryprogressbarwidth = 120; + level.primaryprogressbary_ss = 280; + if ( getDvar( "revive_trigger_radius" ) == "" ) + { + setdvar( "revive_trigger_radius", "40" ); + } + level.laststandgetupallowed = 0; +} + +player_is_in_laststand() +{ + if ( isDefined( self.no_revive_trigger ) && !self.no_revive_trigger ) + { + return isDefined( self.revivetrigger ); + } + else + { + if ( isDefined( self.laststand ) ) + { + return self.laststand; + } + } +} + +player_num_in_laststand() +{ + num = 0; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] player_is_in_laststand() ) + { + num++; + } + i++; + } + return num; +} + +player_all_players_in_laststand() +{ + return player_num_in_laststand() == get_players().size; +} + +player_any_player_in_laststand() +{ + return player_num_in_laststand() > 0; +} + +player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self ) + { + if ( level.gametype == "zcleansed" ) + { + maps/mp/_demo::bookmark( "kill", getTime(), self, attacker, 0, einflictor ); + } + if ( level.gametype == "zcleansed" ) + { + if ( isDefined( attacker.is_zombie ) && !attacker.is_zombie ) + { + attacker.kills++; + } + else + { + attacker.downs++; + } + } + else + { + attacker.kills++; + } + attacker maps/mp/zombies/_zm_stats::increment_client_stat( "kills" ); + attacker maps/mp/zombies/_zm_stats::increment_player_stat( "kills" ); + if ( isDefined( sweapon ) ) + { + dmgweapon = sweapon; + if ( is_alt_weapon( dmgweapon ) ) + { + dmgweapon = weaponaltweaponname( dmgweapon ); + } + attacker addweaponstat( dmgweapon, "kills", 1 ); + } + if ( is_headshot( sweapon, shitloc, smeansofdeath ) ) + { + attacker.headshots++; + attacker maps/mp/zombies/_zm_stats::increment_client_stat( "headshots" ); + attacker addweaponstat( sweapon, "headshots", 1 ); + attacker maps/mp/zombies/_zm_stats::increment_player_stat( "headshots" ); + } + } + self increment_downed_stat(); + if ( flag( "solo_game" ) && getnumconnectedplayers() < 2 ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "deaths" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "deaths" ); + self maps/mp/zombies/_zm_pers_upgrades::pers_upgrade_jugg_player_death_stat(); + } +} + +increment_downed_stat() +{ + if ( level.gametype != "zcleansed" ) + { + self.downs++; + } + self maps/mp/zombies/_zm_stats::increment_client_stat( "downs" ); + self add_weighted_down(); + self maps/mp/zombies/_zm_stats::increment_player_stat( "downs" ); + zonename = self get_current_zone(); + if ( !isDefined( zonename ) ) + { + zonename = ""; + } + self recordplayerdownzombies( zonename ); +} + +playerlaststand( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) +{ + self notify( "entering_last_stand" ); + if ( isDefined( level._game_module_player_laststand_callback ) ) + { + self [[ level._game_module_player_laststand_callback ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + } + if ( self player_is_in_laststand() ) + { + return; + } + if ( isDefined( self.in_zombify_call ) && self.in_zombify_call ) + { + return; + } + self thread player_last_stand_stats( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + if ( isDefined( level.playerlaststand_func ) ) + { + [[ level.playerlaststand_func ]]( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ); + } + self.health = 1; + self.laststand = 1; + self.ignoreme = 1; + self thread maps/mp/gametypes_zm/_gameobjects::onplayerlaststand(); + self thread maps/mp/zombies/_zm_buildables::onplayerlaststand(); + if ( isDefined( self.no_revive_trigger ) && !self.no_revive_trigger ) + { + self revive_trigger_spawn(); + } + else + { + self undolaststand(); + } + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + self takeallweapons(); + if ( isDefined( attacker ) && isplayer( attacker ) && attacker != self ) + { + attacker notify( "killed_a_zombie_player" ); + } + } + else + { + self laststand_disable_player_weapons(); + self laststand_give_pistol(); + } + if ( isDefined( level.playersuicideallowed ) && level.playersuicideallowed && get_players().size > 1 ) + { + if ( !isDefined( level.canplayersuicide ) || self [[ level.canplayersuicide ]]() ) + { + self thread suicide_trigger_spawn(); + } + } + if ( isDefined( self.disabled_perks ) ) + { + self.disabled_perks = []; + } + if ( level.laststandgetupallowed ) + { + self thread laststand_getup(); + } + else + { + bleedout_time = getDvarFloat( "player_lastStandBleedoutTime" ); + self thread laststand_bleedout( bleedout_time ); + } + if ( level.gametype != "zcleansed" ) + { + maps/mp/_demo::bookmark( "zm_player_downed", getTime(), self ); + } + self notify( "player_downed" ); + self thread refire_player_downed(); + self thread cleanup_laststand_on_disconnect(); +} + +refire_player_downed() +{ + self endon( "player_revived" ); + self endon( "death" ); + self endon( "disconnect" ); + wait 1; + if ( self.num_perks ) + { + self notify( "player_downed" ); + } +} + +laststand_allowed( sweapon, smeansofdeath, shitloc ) +{ + if ( level.laststandpistol == "none" ) + { + return 0; + } + return 1; +} + +laststand_disable_player_weapons() +{ + weaponinventory = self getweaponslist( 1 ); + self.lastactiveweapon = self getcurrentweapon(); + if ( self isthrowinggrenade() && is_offhand_weapon( self.lastactiveweapon ) ) + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self.lastactiveweapon = primaryweapons[ 0 ]; + self switchtoweaponimmediate( self.lastactiveweapon ); + } + } + self setlaststandprevweap( self.lastactiveweapon ); + self.laststandpistol = undefined; + self.hadpistol = 0; + if ( isDefined( self.weapon_taken_by_losing_specialty_additionalprimaryweapon ) && self.lastactiveweapon == self.weapon_taken_by_losing_specialty_additionalprimaryweapon ) + { + self.lastactiveweapon = "none"; + self.weapon_taken_by_losing_specialty_additionalprimaryweapon = undefined; + } + i = 0; + while ( i < weaponinventory.size ) + { + weapon = weaponinventory[ i ]; + class = weaponclass( weapon ); + if ( issubstr( weapon, "knife_ballistic_" ) ) + { + class = "knife"; + } + if ( class != "pistol" && class != "pistol spread" && class == "pistolspread" && !isDefined( self.laststandpistol ) ) + { + self.laststandpistol = weapon; + self.hadpistol = 1; + } + if ( weapon == "syrette_zm" ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "failed_sacrifices" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "failed_sacrifices" ); + } + else + { + if ( is_zombie_perk_bottle( weapon ) ) + { + self takeweapon( weapon ); + self.lastactiveweapon = "none"; + i++; + continue; + } + } + else if ( isDefined( get_gamemode_var( "item_meat_name" ) ) ) + { + if ( weapon == get_gamemode_var( "item_meat_name" ) ) + { + self takeweapon( weapon ); + self.lastactiveweapon = "none"; + i++; + continue; + } + } + i++; + } + if ( isDefined( self.hadpistol ) && self.hadpistol == 1 && isDefined( level.zombie_last_stand_pistol_memory ) ) + { + self [[ level.zombie_last_stand_pistol_memory ]](); + } + if ( !isDefined( self.laststandpistol ) ) + { + self.laststandpistol = level.laststandpistol; + } + self disableweaponcycling(); + self notify( "weapons_taken_for_last_stand" ); +} + +laststand_enable_player_weapons() +{ + if ( isDefined( self.hadpistol ) && !self.hadpistol && isDefined( self.laststandpistol ) ) + { + self takeweapon( self.laststandpistol ); + } + if ( isDefined( self.hadpistol ) && self.hadpistol == 1 && isDefined( level.zombie_last_stand_ammo_return ) ) + { + [[ level.zombie_last_stand_ammo_return ]](); + } + self enableweaponcycling(); + self enableoffhandweapons(); + if ( isDefined( self.lastactiveweapon ) && self.lastactiveweapon != "none" && !is_placeable_mine( self.lastactiveweapon ) && !is_equipment( self.lastactiveweapon ) ) + { + self switchtoweapon( self.lastactiveweapon ); + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } +} + +laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ) +{ + self endon( "do_revive_ended_normally" ); + revivetrigger = playerbeingrevived.revivetrigger; + playerbeingrevived waittill( "disconnect" ); + if ( isDefined( revivetrigger ) ) + { + revivetrigger delete(); + } + self cleanup_suicide_hud(); + if ( isDefined( self.reviveprogressbar ) ) + { + self.reviveprogressbar destroyelem(); + } + if ( isDefined( self.revivetexthud ) ) + { + self.revivetexthud destroy(); + } + self revive_give_back_weapons( revivergun ); +} + +laststand_clean_up_reviving_any( playerbeingrevived ) +{ + self endon( "do_revive_ended_normally" ); + playerbeingrevived waittill_any( "disconnect", "zombified", "stop_revive_trigger" ); + self.is_reviving_any--; + + if ( self.is_reviving_any <= 0 ) + { + self.is_reviving_any = 0; + } +} + +laststand_give_pistol() +{ +/# + assert( isDefined( self.laststandpistol ) ); +#/ +/# + assert( self.laststandpistol != "none" ); +#/ + if ( isDefined( level.zombie_last_stand ) ) + { + [[ level.zombie_last_stand ]](); + } + else + { + self giveweapon( self.laststandpistol ); + self givemaxammo( self.laststandpistol ); + self switchtoweapon( self.laststandpistol ); + } +} + +laststand_bleedout( delay ) +{ + self endon( "player_revived" ); + self endon( "player_suicide" ); + self endon( "zombified" ); + self endon( "disconnect" ); + if ( isDefined( self.is_zombie ) || self.is_zombie && isDefined( self.no_revive_trigger ) && self.no_revive_trigger ) + { + self notify( "bled_out" ); + wait_network_frame(); + self bleed_out(); + return; + } + setclientsysstate( "lsm", "1", self ); + self.bleedout_time = delay; + while ( self.bleedout_time > int( delay * 0,5 ) ) + { + self.bleedout_time -= 1; + wait 1; + } + visionsetlaststand( "zombie_death", delay * 0,5 ); + while ( self.bleedout_time > 0 ) + { + self.bleedout_time -= 1; + wait 1; + } + while ( isDefined( self.revivetrigger ) && isDefined( self.revivetrigger.beingrevived ) && self.revivetrigger.beingrevived == 1 ) + { + wait 0,1; + } + self notify( "bled_out" ); + wait_network_frame(); + self bleed_out(); +} + +bleed_out() +{ + self cleanup_suicide_hud(); + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + } + self.revivetrigger = undefined; + setclientsysstate( "lsm", "0", self ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "deaths" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "deaths" ); + self maps/mp/zombies/_zm_pers_upgrades::pers_upgrade_jugg_player_death_stat(); + self recordplayerdeathzombies(); + self maps/mp/zombies/_zm_equipment::equipment_take(); + if ( level.gametype != "zcleansed" ) + { + maps/mp/_demo::bookmark( "zm_player_bledout", getTime(), self, undefined, 1 ); + } + level notify( "bleed_out" ); + self undolaststand(); + if ( isDefined( level.is_zombie_level ) && level.is_zombie_level ) + { + self thread [[ level.player_becomes_zombie ]](); + } + else + { + if ( isDefined( level.is_specops_level ) && level.is_specops_level ) + { + self thread [[ level.spawnspectator ]](); + return; + } + else + { + self.ignoreme = 0; + } + } +} + +cleanup_suicide_hud() +{ + if ( isDefined( self.suicideprompt ) ) + { + self.suicideprompt destroy(); + } + self.suicideprompt = undefined; +} + +clean_up_suicide_hud_on_end_game() +{ + self endon( "disconnect" ); + self endon( "zombified" ); + self endon( "stop_revive_trigger" ); + self endon( "player_revived" ); + self endon( "bled_out" ); + level waittill_any( "end_game", "stop_suicide_trigger" ); + self cleanup_suicide_hud(); + if ( isDefined( self.suicidetexthud ) ) + { + self.suicidetexthud destroy(); + } + if ( isDefined( self.suicideprogressbar ) ) + { + self.suicideprogressbar destroyelem(); + } +} + +clean_up_suicide_hud_on_bled_out() +{ + self endon( "disconnect" ); + self endon( "zombified" ); + self endon( "stop_revive_trigger" ); + self waittill_any( "bled_out", "player_revived", "fake_death" ); + self cleanup_suicide_hud(); + if ( isDefined( self.suicideprogressbar ) ) + { + self.suicideprogressbar destroyelem(); + } + if ( isDefined( self.suicidetexthud ) ) + { + self.suicidetexthud destroy(); + } +} + +suicide_trigger_spawn() +{ + radius = getDvarInt( "revive_trigger_radius" ); + self.suicideprompt = newclienthudelem( self ); + self.suicideprompt.alignx = "center"; + self.suicideprompt.aligny = "middle"; + self.suicideprompt.horzalign = "center"; + self.suicideprompt.vertalign = "bottom"; + self.suicideprompt.y = -170; + if ( self issplitscreen() ) + { + self.suicideprompt.y = -132; + } + self.suicideprompt.foreground = 1; + self.suicideprompt.font = "default"; + self.suicideprompt.fontscale = 1,5; + self.suicideprompt.alpha = 1; + self.suicideprompt.color = ( 1, 1, 1 ); + self.suicideprompt.hidewheninmenu = 1; + self thread suicide_trigger_think(); +} + +suicide_trigger_think() +{ + self endon( "disconnect" ); + self endon( "zombified" ); + self endon( "stop_revive_trigger" ); + self endon( "player_revived" ); + self endon( "bled_out" ); + self endon( "fake_death" ); + level endon( "end_game" ); + level endon( "stop_suicide_trigger" ); + self thread clean_up_suicide_hud_on_end_game(); + self thread clean_up_suicide_hud_on_bled_out(); + while ( self usebuttonpressed() ) + { + wait 1; + } + if ( !isDefined( self.suicideprompt ) ) + { + return; + } + while ( 1 ) + { + wait 0,1; + while ( !isDefined( self.suicideprompt ) ) + { + continue; + } + self.suicideprompt settext( &"ZOMBIE_BUTTON_TO_SUICIDE" ); + while ( !self is_suiciding() ) + { + continue; + } + self.pre_suicide_weapon = self getcurrentweapon(); + self giveweapon( level.suicide_weapon ); + self switchtoweapon( level.suicide_weapon ); + duration = self docowardswayanims(); + suicide_success = suicide_do_suicide( duration ); + self.laststand = undefined; + self takeweapon( level.suicide_weapon ); + if ( suicide_success ) + { + self notify( "player_suicide" ); + wait_network_frame(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "suicides" ); + self bleed_out(); + return; + } + self switchtoweapon( self.pre_suicide_weapon ); + self.pre_suicide_weapon = undefined; + } +} + +suicide_do_suicide( duration ) +{ + level endon( "end_game" ); + level endon( "stop_suicide_trigger" ); + suicidetime = duration; + timer = 0; + suicided = 0; + self.suicideprompt settext( "" ); + if ( !isDefined( self.suicideprogressbar ) ) + { + self.suicideprogressbar = self createprimaryprogressbar(); + } + if ( !isDefined( self.suicidetexthud ) ) + { + self.suicidetexthud = newclienthudelem( self ); + } + self.suicideprogressbar updatebar( 0,01, 1 / suicidetime ); + self.suicidetexthud.alignx = "center"; + self.suicidetexthud.aligny = "middle"; + self.suicidetexthud.horzalign = "center"; + self.suicidetexthud.vertalign = "bottom"; + self.suicidetexthud.y = -173; + if ( self issplitscreen() ) + { + self.suicidetexthud.y = -147; + } + self.suicidetexthud.foreground = 1; + self.suicidetexthud.font = "default"; + self.suicidetexthud.fontscale = 1,8; + self.suicidetexthud.alpha = 1; + self.suicidetexthud.color = ( 1, 1, 1 ); + self.suicidetexthud.hidewheninmenu = 1; + self.suicidetexthud settext( &"ZOMBIE_SUICIDING" ); + while ( self is_suiciding() ) + { + wait 0,05; + timer += 0,05; + if ( timer >= suicidetime ) + { + suicided = 1; + break; + } + else + { + } + } + if ( isDefined( self.suicideprogressbar ) ) + { + self.suicideprogressbar destroyelem(); + } + if ( isDefined( self.suicidetexthud ) ) + { + self.suicidetexthud destroy(); + } + if ( isDefined( self.suicideprompt ) ) + { + self.suicideprompt settext( &"ZOMBIE_BUTTON_TO_SUICIDE" ); + } + return suicided; +} + +can_suicide() +{ + if ( !isalive( self ) ) + { + return 0; + } + if ( !self player_is_in_laststand() ) + { + return 0; + } + if ( !isDefined( self.suicideprompt ) ) + { + return 0; + } + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + return 0; + } + if ( isDefined( level.intermission ) && level.intermission ) + { + return 0; + } + return 1; +} + +is_suiciding( revivee ) +{ + if ( self usebuttonpressed() ) + { + return can_suicide(); + } +} + +revive_trigger_spawn() +{ + if ( isDefined( level.revive_trigger_spawn_override_link ) ) + { + [[ level.revive_trigger_spawn_override_link ]]( self ); + } + else + { + radius = getDvarInt( "revive_trigger_radius" ); + self.revivetrigger = spawn( "trigger_radius", ( 1, 1, 1 ), 0, radius, radius ); + self.revivetrigger sethintstring( "" ); + self.revivetrigger setcursorhint( "HINT_NOICON" ); + self.revivetrigger setmovingplatformenabled( 1 ); + self.revivetrigger enablelinkto(); + self.revivetrigger.origin = self.origin; + self.revivetrigger linkto( self ); + self.revivetrigger.beingrevived = 0; + self.revivetrigger.createtime = getTime(); + } + self thread revive_trigger_think(); +} + +revive_trigger_think() +{ + self endon( "disconnect" ); + self endon( "zombified" ); + self endon( "stop_revive_trigger" ); + level endon( "end_game" ); + self endon( "death" ); + while ( 1 ) + { + wait 0,1; + self.revivetrigger sethintstring( "" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + d = 0; + d = self depthinwater(); + if ( players[ i ] can_revive( self ) || d > 20 ) + { + self.revivetrigger setrevivehintstring( &"GAME_BUTTON_TO_REVIVE_PLAYER", self.team ); + break; + } + else + { + i++; + } + } + i = 0; + while ( i < players.size ) + { + reviver = players[ i ]; + if ( self == reviver || !reviver is_reviving( self ) ) + { + i++; + continue; + } + else + { + gun = reviver getcurrentweapon(); +/# + assert( isDefined( gun ) ); +#/ + if ( gun == level.revive_tool ) + { + i++; + continue; + } + else + { + reviver giveweapon( level.revive_tool ); + reviver switchtoweapon( level.revive_tool ); + reviver setweaponammostock( level.revive_tool, 1 ); + revive_success = reviver revive_do_revive( self, gun ); + reviver revive_give_back_weapons( gun ); + if ( isplayer( self ) ) + { + self allowjump( 1 ); + } + self.laststand = undefined; + if ( revive_success ) + { + if ( isplayer( self ) ) + { + maps/mp/zombies/_zm_chugabud::player_revived_cleanup_chugabud_corpse(); + } + self thread revive_success( reviver ); + self cleanup_suicide_hud(); + return; + } + } + } + i++; + } + } +} + +revive_give_back_weapons( gun ) +{ + self takeweapon( level.revive_tool ); + if ( self player_is_in_laststand() ) + { + return; + } + if ( gun != "none" && !is_placeable_mine( gun ) && gun != "equip_gasmask_zm" && gun != "lower_equip_gasmask_zm" && self hasweapon( gun ) ) + { + self switchtoweapon( gun ); + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } +} + +can_revive( revivee ) +{ + if ( !isDefined( revivee.revivetrigger ) ) + { + return 0; + } + if ( !isalive( self ) ) + { + return 0; + } + if ( self player_is_in_laststand() ) + { + return 0; + } + if ( self.team != revivee.team ) + { + return 0; + } + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + return 0; + } + if ( self has_powerup_weapon() ) + { + return 0; + } + if ( isDefined( level.can_revive_use_depthinwater_test ) && level.can_revive_use_depthinwater_test && revivee depthinwater() > 10 ) + { + return 1; + } + if ( isDefined( level.can_revive ) && !( [[ level.can_revive ]]( revivee ) ) ) + { + return 0; + } + if ( isDefined( level.can_revive_game_module ) && !( [[ level.can_revive_game_module ]]( revivee ) ) ) + { + return 0; + } + ignore_sight_checks = 0; + ignore_touch_checks = 0; + if ( isDefined( level.revive_trigger_should_ignore_sight_checks ) ) + { + ignore_sight_checks = [[ level.revive_trigger_should_ignore_sight_checks ]]( self ); + if ( ignore_sight_checks && isDefined( revivee.revivetrigger.beingrevived ) && revivee.revivetrigger.beingrevived == 1 ) + { + ignore_touch_checks = 1; + } + } + if ( !ignore_touch_checks ) + { + if ( !self istouching( revivee.revivetrigger ) ) + { + return 0; + } + } + if ( !ignore_sight_checks ) + { + if ( !self is_facing( revivee ) ) + { + return 0; + } + if ( !sighttracepassed( self.origin + vectorScale( ( 1, 1, 1 ), 50 ), revivee.origin + vectorScale( ( 1, 1, 1 ), 30 ), 0, undefined ) ) + { + return 0; + } + if ( !bullettracepassed( self.origin + vectorScale( ( 1, 1, 1 ), 50 ), revivee.origin + vectorScale( ( 1, 1, 1 ), 30 ), 0, undefined ) ) + { + return 0; + } + } + return 1; +} + +is_reviving( revivee ) +{ + if ( self usebuttonpressed() ) + { + return can_revive( revivee ); + } +} + +is_reviving_any() +{ + if ( isDefined( self.is_reviving_any ) ) + { + return self.is_reviving_any; + } +} + +is_facing( facee ) +{ + orientation = self getplayerangles(); + forwardvec = anglesToForward( orientation ); + forwardvec2d = ( forwardvec[ 0 ], forwardvec[ 1 ], 0 ); + unitforwardvec2d = vectornormalize( forwardvec2d ); + tofaceevec = facee.origin - self.origin; + tofaceevec2d = ( tofaceevec[ 0 ], tofaceevec[ 1 ], 0 ); + unittofaceevec2d = vectornormalize( tofaceevec2d ); + dotproduct = vectordot( unitforwardvec2d, unittofaceevec2d ); + return dotproduct > 0,9; +} + +revive_do_revive( playerbeingrevived, revivergun ) +{ +/# + assert( self is_reviving( playerbeingrevived ) ); +#/ + revivetime = 3; + if ( self hasperk( "specialty_quickrevive" ) ) + { + revivetime /= 2; + } + if ( isDefined( self.pers_upgrades_awarded[ "revive" ] ) && self.pers_upgrades_awarded[ "revive" ] ) + { + revivetime *= 0,5; + } + timer = 0; + revived = 0; + playerbeingrevived.revivetrigger.beingrevived = 1; + playerbeingrevived.revive_hud settext( &"GAME_PLAYER_IS_REVIVING_YOU", self ); + playerbeingrevived revive_hud_show_n_fade( 3 ); + playerbeingrevived.revivetrigger sethintstring( "" ); + if ( isplayer( playerbeingrevived ) ) + { + playerbeingrevived startrevive( self ); + } + if ( !isDefined( self.reviveprogressbar ) ) + { + self.reviveprogressbar = self createprimaryprogressbar(); + } + if ( !isDefined( self.revivetexthud ) ) + { + self.revivetexthud = newclienthudelem( self ); + } + self thread laststand_clean_up_on_disconnect( playerbeingrevived, revivergun ); + if ( !isDefined( self.is_reviving_any ) ) + { + self.is_reviving_any = 0; + } + self.is_reviving_any++; + self thread laststand_clean_up_reviving_any( playerbeingrevived ); + self.reviveprogressbar updatebar( 0,01, 1 / revivetime ); + self.revivetexthud.alignx = "center"; + self.revivetexthud.aligny = "middle"; + self.revivetexthud.horzalign = "center"; + self.revivetexthud.vertalign = "bottom"; + self.revivetexthud.y = -113; + if ( self issplitscreen() ) + { + self.revivetexthud.y = -347; + } + self.revivetexthud.foreground = 1; + self.revivetexthud.font = "default"; + self.revivetexthud.fontscale = 1,8; + self.revivetexthud.alpha = 1; + self.revivetexthud.color = ( 1, 1, 1 ); + self.revivetexthud.hidewheninmenu = 1; + if ( isDefined( self.pers_upgrades_awarded[ "revive" ] ) && self.pers_upgrades_awarded[ "revive" ] ) + { + self.revivetexthud.color = ( 0,5, 0,5, 1 ); + } + self.revivetexthud settext( &"GAME_REVIVING" ); + self thread check_for_failed_revive( playerbeingrevived ); + while ( self is_reviving( playerbeingrevived ) ) + { + wait 0,05; + timer += 0,05; + if ( self player_is_in_laststand() ) + { + break; + } + else if ( isDefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 ) + { + break; + } + else + { + if ( timer >= revivetime ) + { + revived = 1; + break; + } + else + { + } + } + } + if ( isDefined( self.reviveprogressbar ) ) + { + self.reviveprogressbar destroyelem(); + } + if ( isDefined( self.revivetexthud ) ) + { + self.revivetexthud destroy(); + } + if ( isDefined( playerbeingrevived.revivetrigger.auto_revive ) && playerbeingrevived.revivetrigger.auto_revive == 1 ) + { + } + else if ( !revived ) + { + if ( isplayer( playerbeingrevived ) ) + { + playerbeingrevived stoprevive( self ); + } + } + playerbeingrevived.revivetrigger sethintstring( &"GAME_BUTTON_TO_REVIVE_PLAYER" ); + playerbeingrevived.revivetrigger.beingrevived = 0; + self notify( "do_revive_ended_normally" ); + self.is_reviving_any--; + + if ( !revived ) + { + playerbeingrevived thread checkforbleedout( self ); + } + return revived; +} + +checkforbleedout( player ) +{ + self endon( "player_revived" ); + self endon( "player_suicide" ); + self endon( "disconnect" ); + player endon( "disconnect" ); + if ( is_classic() ) + { + player.failed_revives++; + player notify( "player_failed_revive" ); + } +} + +auto_revive( reviver, dont_enable_weapons ) +{ + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger.auto_revive = 1; + while ( self.revivetrigger.beingrevived == 1 ) + { + while ( 1 ) + { + if ( self.revivetrigger.beingrevived == 0 ) + { + break; + } + else + { + wait_network_frame(); + } + } + } + self.revivetrigger.auto_trigger = 0; + } + self reviveplayer(); + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + setclientsysstate( "lsm", "0", self ); + self notify( "stop_revive_trigger" ); + if ( isDefined( self.revivetrigger ) ) + { + self.revivetrigger delete(); + self.revivetrigger = undefined; + } + self cleanup_suicide_hud(); + if ( !isDefined( dont_enable_weapons ) || dont_enable_weapons == 0 ) + { + self laststand_enable_player_weapons(); + } + self allowjump( 1 ); + self.ignoreme = 0; + self.laststand = undefined; + if ( isDefined( level.isresetting_grief ) && !level.isresetting_grief ) + { + reviver.revives++; + reviver maps/mp/zombies/_zm_stats::increment_client_stat( "revives" ); + reviver maps/mp/zombies/_zm_stats::increment_player_stat( "revives" ); + self recordplayerrevivezombies( reviver ); + maps/mp/_demo::bookmark( "zm_player_revived", getTime(), self, reviver ); + } + self notify( "player_revived" ); +} + +remote_revive( reviver ) +{ + if ( !self player_is_in_laststand() ) + { + return; + } + self auto_revive( reviver ); +} + +revive_success( reviver ) +{ + if ( !isplayer( self ) ) + { + self notify( "player_revived" ); + return; + } + maps/mp/_demo::bookmark( "zm_player_revived", getTime(), self, reviver ); + self notify( "player_revived" ); + self reviveplayer(); + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + if ( isDefined( level.isresetting_grief ) && !level.isresetting_grief ) + { + reviver.revives++; + reviver maps/mp/zombies/_zm_stats::increment_client_stat( "revives" ); + reviver maps/mp/zombies/_zm_stats::increment_player_stat( "revives" ); + self recordplayerrevivezombies( reviver ); + reviver.upgrade_fx_origin = self.origin; + } + if ( is_classic() ) + { + reviver maps/mp/zombies/_zm_stats::increment_client_stat( "pers_revivenoperk", 0 ); + } + reviver thread check_for_sacrifice(); + if ( isDefined( level.missioncallbacks ) ) + { + } + setclientsysstate( "lsm", "0", self ); + self.revivetrigger delete(); + self.revivetrigger = undefined; + self cleanup_suicide_hud(); + self laststand_enable_player_weapons(); + self.ignoreme = 0; +} + +revive_force_revive( reviver ) +{ +/# + assert( isDefined( self ) ); +#/ +/# + assert( isplayer( self ) ); +#/ +/# + assert( self player_is_in_laststand() ); +#/ + self thread revive_success( reviver ); +} + +revive_hud_create() +{ + self.revive_hud = newclienthudelem( self ); + self.revive_hud.alignx = "center"; + self.revive_hud.aligny = "middle"; + self.revive_hud.horzalign = "center"; + self.revive_hud.vertalign = "bottom"; + self.revive_hud.foreground = 1; + self.revive_hud.font = "default"; + self.revive_hud.fontscale = 1,5; + self.revive_hud.alpha = 0; + self.revive_hud.color = ( 1, 1, 1 ); + self.revive_hud.hidewheninmenu = 1; + self.revive_hud settext( "" ); + self.revive_hud.y = -160; +} + +revive_hud_think() +{ + self endon( "disconnect" ); + while ( 1 ) + { + wait 0,1; + while ( !player_any_player_in_laststand() ) + { + continue; + } + players = get_players(); + playertorevive = undefined; + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ].revivetrigger ) || !isDefined( players[ i ].revivetrigger.createtime ) ) + { + i++; + continue; + } + else + { + if ( !isDefined( playertorevive ) || playertorevive.revivetrigger.createtime > players[ i ].revivetrigger.createtime ) + { + playertorevive = players[ i ]; + } + } + i++; + } + if ( isDefined( playertorevive ) ) + { + i = 0; + while ( i < players.size ) + { + if ( players[ i ] player_is_in_laststand() ) + { + i++; + continue; + } + else if ( getDvar( "g_gametype" ) == "vs" ) + { + if ( players[ i ].team != playertorevive.team ) + { + i++; + continue; + } + } + else if ( is_encounter() ) + { + if ( players[ i ].sessionteam != playertorevive.sessionteam ) + { + i++; + continue; + } + else if ( isDefined( level.hide_revive_message ) && level.hide_revive_message ) + { + i++; + continue; + } + } + else + { + players[ i ] thread faderevivemessageover( playertorevive, 3 ); + } + i++; + } + playertorevive.revivetrigger.createtime = undefined; + wait 3,5; + } + } +} + +faderevivemessageover( playertorevive, time ) +{ + revive_hud_show(); + self.revive_hud settext( &"GAME_PLAYER_NEEDS_TO_BE_REVIVED", playertorevive ); + self.revive_hud fadeovertime( time ); + self.revive_hud.alpha = 0; +} + +revive_hud_show() +{ +/# + assert( isDefined( self ) ); +#/ +/# + assert( isDefined( self.revive_hud ) ); +#/ + self.revive_hud.alpha = 1; +} + +revive_hud_show_n_fade( time ) +{ + revive_hud_show(); + self.revive_hud fadeovertime( time ); + self.revive_hud.alpha = 0; +} + +drawcylinder( pos, rad, height ) +{ +/# + currad = rad; + curheight = height; + r = 0; + while ( r < 20 ) + { + theta = ( r / 20 ) * 360; + theta2 = ( ( r + 1 ) / 20 ) * 360; + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, 0 ), pos + ( cos( theta2 ) * currad, sin( theta2 ) * currad, 0 ) ); + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, curheight ), pos + ( cos( theta2 ) * currad, sin( theta2 ) * currad, curheight ) ); + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, 0 ), pos + ( cos( theta ) * currad, sin( theta ) * currad, curheight ) ); + r++; +#/ + } +} + +get_lives_remaining() +{ +/# + assert( level.laststandgetupallowed, "Lives only exist in the Laststand type GETUP." ); +#/ + if ( level.laststandgetupallowed && isDefined( self.laststand_info ) && isDefined( self.laststand_info.type_getup_lives ) ) + { + return max( 0, self.laststand_info.type_getup_lives ); + } + return 0; +} + +update_lives_remaining( increment ) +{ +/# + assert( level.laststandgetupallowed, "Lives only exist in the Laststand type GETUP." ); +#/ +/# + assert( isDefined( increment ), "Must specify increment true or false" ); +#/ + if ( isDefined( increment ) ) + { + } + else + { + } + increment = 0; + if ( increment ) + { + } + else + { + } + self.laststand_info.type_getup_lives = max( 0, self.laststand_info.type_getup_lives - 1, self.laststand_info.type_getup_lives + 1 ); + self notify( "laststand_lives_updated" ); +} + +player_getup_setup() +{ +/# + println( "ZM >> player_getup_setup called" ); +#/ + self.laststand_info = spawnstruct(); + self.laststand_info.type_getup_lives = level.const_laststand_getup_count_start; +} + +laststand_getup() +{ + self endon( "player_revived" ); + self endon( "disconnect" ); +/# + println( "ZM >> laststand_getup called" ); +#/ + self update_lives_remaining( 0 ); + setclientsysstate( "lsm", "1", self ); + self.laststand_info.getup_bar_value = level.const_laststand_getup_bar_start; + self thread laststand_getup_hud(); + self thread laststand_getup_damage_watcher(); + while ( self.laststand_info.getup_bar_value < 1 ) + { + self.laststand_info.getup_bar_value += level.const_laststand_getup_bar_regen; + wait 0,05; + } + self auto_revive( self ); + setclientsysstate( "lsm", "0", self ); +} + +laststand_getup_damage_watcher() +{ + self endon( "player_revived" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "damage" ); + self.laststand_info.getup_bar_value -= level.const_laststand_getup_bar_damage; + if ( self.laststand_info.getup_bar_value < 0 ) + { + self.laststand_info.getup_bar_value = 0; + } + } +} + +laststand_getup_hud() +{ + self endon( "player_revived" ); + self endon( "disconnect" ); + hudelem = newclienthudelem( self ); + hudelem.alignx = "left"; + hudelem.aligny = "middle"; + hudelem.horzalign = "left"; + hudelem.vertalign = "middle"; + hudelem.x = 5; + hudelem.y = 170; + hudelem.font = "big"; + hudelem.fontscale = 1,5; + hudelem.foreground = 1; + hudelem.hidewheninmenu = 1; + hudelem.hidewhendead = 1; + hudelem.sort = 2; + hudelem.label = &"SO_WAR_LASTSTAND_GETUP_BAR"; + self thread laststand_getup_hud_destroy( hudelem ); + while ( 1 ) + { + hudelem setvalue( self.laststand_info.getup_bar_value ); + wait 0,05; + } +} + +laststand_getup_hud_destroy( hudelem ) +{ + self waittill_either( "player_revived", "disconnect" ); + hudelem destroy(); +} + +check_for_sacrifice() +{ + self delay_notify( "sacrifice_denied", 1 ); + self endon( "sacrifice_denied" ); + self waittill( "player_downed" ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "sacrifices" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "sacrifices" ); +} + +check_for_failed_revive( playerbeingrevived ) +{ + self endon( "disconnect" ); + playerbeingrevived endon( "disconnect" ); + playerbeingrevived endon( "player_suicide" ); + self notify( "checking_for_failed_revive" ); + self endon( "checking_for_failed_revive" ); + playerbeingrevived endon( "player_revived" ); + playerbeingrevived waittill( "bled_out" ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "failed_revives" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "failed_revives" ); +} + +add_weighted_down() +{ + if ( !level.curr_gametype_affects_rank ) + { + return; + } + weighted_down = 1000; + if ( level.round_number > 0 ) + { + weighted_down = int( 1000 / ceil( level.round_number / 5 ) ); + } + self addplayerstat( "weighted_downs", weighted_down ); +} + +cleanup_laststand_on_disconnect() +{ + self endon( "player_revived" ); + self endon( "player_suicide" ); + self endon( "bled_out" ); + trig = self.revivetrigger; + self waittill( "disconnect" ); + if ( isDefined( trig ) ) + { + trig delete(); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_magicbox.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_magicbox.gsc new file mode 100644 index 0000000..fa3676b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_magicbox.gsc @@ -0,0 +1,1484 @@ +#include maps/mp/zombies/_zm_stats; +#include maps/mp/_demo; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_audio_announcer; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) + { + maps/mp/zombies/_zm_magicbox_lock::init(); + } + if ( is_classic() ) + { + level.chests = getstructarray( "treasure_chest_use", "targetname" ); + treasure_chest_init( "start_chest" ); + } + if ( level.createfx_enabled ) + { + return; + } + registerclientfield( "zbarrier", "magicbox_glow", 1000, 1, "int" ); + level thread magicbox_host_migration(); +} + +treasure_chest_init( start_chest_name ) +{ + flag_init( "moving_chest_enabled" ); + flag_init( "moving_chest_now" ); + flag_init( "chest_has_been_used" ); + level.chest_moves = 0; + level.chest_level = 0; + if ( level.chests.size == 0 ) + { + return; + } + i = 0; + while ( i < level.chests.size ) + { + level.chests[ i ].box_hacks = []; + level.chests[ i ].orig_origin = level.chests[ i ].origin; + level.chests[ i ] get_chest_pieces(); + if ( isDefined( level.chests[ i ].zombie_cost ) ) + { + level.chests[ i ].old_cost = level.chests[ i ].zombie_cost; + i++; + continue; + } + else + { + level.chests[ i ].old_cost = 950; + } + i++; + } + if ( !level.enable_magic ) + { + _a84 = level.chests; + _k84 = getFirstArrayKey( _a84 ); + while ( isDefined( _k84 ) ) + { + chest = _a84[ _k84 ]; + chest hide_chest(); + _k84 = getNextArrayKey( _a84, _k84 ); + } + return; + } + level.chest_accessed = 0; + if ( level.chests.size > 1 ) + { + flag_set( "moving_chest_enabled" ); + level.chests = array_randomize( level.chests ); + } + else + { + level.chest_index = 0; + level.chests[ 0 ].no_fly_away = 1; + } + init_starting_chest_location( start_chest_name ); + array_thread( level.chests, ::treasure_chest_think ); +} + +init_starting_chest_location( start_chest_name ) +{ + level.chest_index = 0; + start_chest_found = 0; + if ( level.chests.size == 1 ) + { + start_chest_found = 1; + if ( isDefined( level.chests[ level.chest_index ].zbarrier ) ) + { + level.chests[ level.chest_index ].zbarrier set_magic_box_zbarrier_state( "initial" ); + } + } + else + { + i = 0; + while ( i < level.chests.size ) + { + if ( isDefined( level.random_pandora_box_start ) && level.random_pandora_box_start == 1 ) + { + if ( start_chest_found || isDefined( level.chests[ i ].start_exclude ) && level.chests[ i ].start_exclude == 1 ) + { + level.chests[ i ] hide_chest(); + } + else + { + level.chest_index = i; + level.chests[ level.chest_index ].hidden = 0; + if ( isDefined( level.chests[ level.chest_index ].zbarrier ) ) + { + level.chests[ level.chest_index ].zbarrier set_magic_box_zbarrier_state( "initial" ); + } + start_chest_found = 1; + } + i++; + continue; + } + else + { + if ( !start_chest_found || !isDefined( level.chests[ i ].script_noteworthy ) && !issubstr( level.chests[ i ].script_noteworthy, start_chest_name ) ) + { + level.chests[ i ] hide_chest(); + i++; + continue; + } + else + { + level.chest_index = i; + level.chests[ level.chest_index ].hidden = 0; + if ( isDefined( level.chests[ level.chest_index ].zbarrier ) ) + { + level.chests[ level.chest_index ].zbarrier set_magic_box_zbarrier_state( "initial" ); + } + start_chest_found = 1; + } + } + i++; + } + } + if ( !isDefined( level.pandora_show_func ) ) + { + level.pandora_show_func = ::default_pandora_show_func; + } + level.chests[ level.chest_index ] thread [[ level.pandora_show_func ]](); +} + +set_treasure_chest_cost( cost ) +{ + level.zombie_treasure_chest_cost = cost; +} + +get_chest_pieces() +{ + self.chest_box = getent( self.script_noteworthy + "_zbarrier", "script_noteworthy" ); + self.chest_rubble = []; + rubble = getentarray( self.script_noteworthy + "_rubble", "script_noteworthy" ); + i = 0; + while ( i < rubble.size ) + { + if ( distancesquared( self.origin, rubble[ i ].origin ) < 10000 ) + { + self.chest_rubble[ self.chest_rubble.size ] = rubble[ i ]; + } + i++; + } + self.zbarrier = getent( self.script_noteworthy + "_zbarrier", "script_noteworthy" ); + if ( isDefined( self.zbarrier ) ) + { + self.zbarrier zbarrierpieceuseboxriselogic( 3 ); + self.zbarrier zbarrierpieceuseboxriselogic( 4 ); + } + self.unitrigger_stub = spawnstruct(); + self.unitrigger_stub.origin = self.origin + ( anglesToRight( self.angles ) * -22,5 ); + self.unitrigger_stub.angles = self.angles; + self.unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + self.unitrigger_stub.script_width = 104; + self.unitrigger_stub.script_height = 50; + self.unitrigger_stub.script_length = 45; + self.unitrigger_stub.trigger_target = self; + unitrigger_force_per_player_triggers( self.unitrigger_stub, 1 ); + self.unitrigger_stub.prompt_and_visibility_func = ::piecetrigger_update_prompt; + self.zbarrier.owner = self; +} + +piecetrigger_update_prompt( player ) +{ + can_use = self piecestub_update_prompt( player ); + if ( isDefined( self.hint_string ) ) + { + self sethintstring( self.hint_string ); + } + return can_use; +} + +piecestub_update_prompt( player ) +{ + self setcursorhint( "HINT_NOICON" ); + if ( !self trigger_visible_to_player( player ) ) + { + return 0; + } + if ( isDefined( self.stub.trigger_target.grab_weapon_hint ) && self.stub.trigger_target.grab_weapon_hint ) + { + self.hint_string = &"ZOMBIE_TRADE_WEAPONS"; + } + else + { + if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox && isDefined( self.stub.trigger_target.is_locked ) && self.stub.trigger_target.is_locked ) + { + self.hint_string = get_hint_string( self, "locked_magic_box_cost" ); + } + else + { + if ( isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) + { + self.hint_string = get_hint_string( self, "powerup_fire_sale_cost" ); + } + else + { + self.hint_string = get_hint_string( self, "default_treasure_chest_" + self.stub.trigger_target.zombie_cost ); + } + } + } + return 1; +} + +trigger_visible_to_player( player ) +{ + self setinvisibletoplayer( player ); + visible = 1; + if ( isDefined( self.stub.trigger_target.chest_user ) && !isDefined( self.stub.trigger_target.box_rerespun ) ) + { + if ( player != self.stub.trigger_target.chest_user || is_placeable_mine( self.stub.trigger_target.chest_user getcurrentweapon() ) && self.stub.trigger_target.chest_user hacker_active() ) + { + visible = 0; + } + } + else + { + if ( !player can_buy_weapon() ) + { + visible = 0; + } + } + if ( !visible ) + { + return 0; + } + self setvisibletoplayer( player ); + return 1; +} + +magicbox_unitrigger_think() +{ + self endon( "kill_trigger" ); + while ( 1 ) + { + self waittill( "trigger", player ); + self.stub.trigger_target notify( "trigger" ); + } +} + +play_crazi_sound() +{ + self playlocalsound( level.zmb_laugh_alias ); +} + +show_chest() +{ + self.zbarrier set_magic_box_zbarrier_state( "arriving" ); + self.zbarrier waittill( "arrived" ); + self thread [[ level.pandora_show_func ]](); + thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); + self.zbarrier playsound( "zmb_box_poof_land" ); + self.zbarrier playsound( "zmb_couch_slam" ); + self.hidden = 0; + if ( isDefined( self.box_hacks[ "summon_box" ] ) ) + { + self [[ self.box_hacks[ "summon_box" ] ]]( 0 ); + } +} + +hide_chest( doboxleave ) +{ + if ( isDefined( self.unitrigger_stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + } + if ( isDefined( self.pandora_light ) ) + { + self.pandora_light delete(); + } + self.hidden = 1; + if ( isDefined( self.box_hacks ) && isDefined( self.box_hacks[ "summon_box" ] ) ) + { + self [[ self.box_hacks[ "summon_box" ] ]]( 1 ); + } + if ( isDefined( self.zbarrier ) ) + { + if ( isDefined( doboxleave ) && doboxleave ) + { + self.zbarrier playsound( "zmb_box_move" ); + playsoundatposition( "zmb_whoosh", self.zbarrier.origin ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "boxmove" ); + self.zbarrier thread magic_box_zbarrier_leave(); + self.zbarrier waittill( "left" ); + playfx( level._effect[ "poltergeist" ], self.zbarrier.origin, anglesToUp( self.angles ), anglesToForward( self.angles ) ); + playsoundatposition( "zmb_box_poof", self.zbarrier.origin ); + return; + } + else + { + self.zbarrier thread set_magic_box_zbarrier_state( "away" ); + } + } +} + +magic_box_zbarrier_leave() +{ + self set_magic_box_zbarrier_state( "leaving" ); + self waittill( "left" ); + self set_magic_box_zbarrier_state( "away" ); +} + +default_pandora_fx_func() +{ + self endon( "death" ); + self.pandora_light = spawn( "script_model", self.zbarrier.origin ); + self.pandora_light.angles = self.zbarrier.angles + vectorScale( ( 0, 1, 0 ), 90 ); + self.pandora_light setmodel( "tag_origin" ); + if ( isDefined( level._box_initialized ) && !level._box_initialized ) + { + flag_wait( "start_zombie_round_logic" ); + level._box_initialized = 1; + } + wait 1; + if ( isDefined( self ) && isDefined( self.pandora_light ) ) + { + playfxontag( level._effect[ "lght_marker" ], self.pandora_light, "tag_origin" ); + } +} + +default_pandora_show_func( anchor, anchortarget, pieces ) +{ + if ( !isDefined( self.pandora_light ) ) + { + if ( !isDefined( level.pandora_fx_func ) ) + { + level.pandora_fx_func = ::default_pandora_fx_func; + } + self thread [[ level.pandora_fx_func ]](); + } + playsoundatposition( "zmb_box_poof", self.origin ); + playfx( level._effect[ "lght_marker_flare" ], self.pandora_light.origin ); +} + +unregister_unitrigger_on_kill_think() +{ + self waittill( "kill_chest_think" ); + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); +} + +treasure_chest_think() +{ + self endon( "kill_chest_think" ); + user = undefined; + user_cost = undefined; + self.box_rerespun = undefined; + self.weapon_out = undefined; + self thread unregister_unitrigger_on_kill_think(); + for ( ;; ) + { + while ( 1 ) + { + if ( !isDefined( self.forced_user ) ) + { + self waittill( "trigger", user ); + while ( user == level ) + { + continue; + } + } + else user = self.forced_user; + while ( user in_revive_trigger() ) + { + wait 0,1; + } + while ( user.is_drinking > 0 ) + { + wait 0,1; + } + while ( isDefined( self.disabled ) && self.disabled ) + { + wait 0,1; + } + while ( user getcurrentweapon() == "none" ) + { + wait 0,1; + } + if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox && isDefined( self.is_locked ) && self.is_locked && user.score >= level.locked_magic_box_cost ) + { + user maps/mp/zombies/_zm_score::minus_to_player_score( level.locked_magic_box_cost ); + self.zbarrier set_magic_box_zbarrier_state( "unlocking" ); + self.unitrigger_stub run_visibility_function_for_all_triggers(); + wait 0,1; + } + } + else if ( isDefined( self.auto_open ) && is_player_valid( user ) ) + { + if ( !isDefined( self.no_charge ) ) + { + user maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + user_cost = self.zombie_cost; + } + else + { + user_cost = 0; + } + self.chest_user = user; + break; + } + else if ( is_player_valid( user ) && user.score >= self.zombie_cost ) + { + user maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + user_cost = self.zombie_cost; + self.chest_user = user; + break; + } + else while ( user.score < self.zombie_cost ) + { + user maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_box" ); + } + wait 0,05; + } + flag_set( "chest_has_been_used" ); + maps/mp/_demo::bookmark( "zm_player_use_magicbox", getTime(), user ); + user maps/mp/zombies/_zm_stats::increment_client_stat( "use_magicbox" ); + user maps/mp/zombies/_zm_stats::increment_player_stat( "use_magicbox" ); + self thread watch_for_emp_close(); + if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) + { + self thread maps/mp/zombies/_zm_magicbox_lock::watch_for_lock(); + } + self._box_open = 1; + self._box_opened_by_fire_sale = 0; + if ( isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] && !isDefined( self.auto_open ) && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) + { + self._box_opened_by_fire_sale = 1; + } + if ( isDefined( self.chest_lid ) ) + { + self.chest_lid thread treasure_chest_lid_open(); + } + if ( isDefined( self.zbarrier ) ) + { + play_sound_at_pos( "open_chest", self.origin ); + play_sound_at_pos( "music_chest", self.origin ); + self.zbarrier set_magic_box_zbarrier_state( "open" ); + } + self.timedout = 0; + self.weapon_out = 1; + self.zbarrier thread treasure_chest_weapon_spawn( self, user ); + self.zbarrier thread treasure_chest_glowfx(); + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + self.zbarrier waittill_any( "randomization_done", "box_hacked_respin" ); + if ( flag( "moving_chest_now" ) && !self._box_opened_by_fire_sale && isDefined( user_cost ) ) + { + user maps/mp/zombies/_zm_score::add_to_player_score( user_cost, 0 ); + } + if ( flag( "moving_chest_now" ) && !level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) + { + self thread treasure_chest_move( self.chest_user ); + } + else + { + self.grab_weapon_hint = 1; + self.chest_user = user; + thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); + if ( isDefined( self.zbarrier ) && !is_true( self.zbarrier.closed_by_emp ) ) + { + self thread treasure_chest_timeout(); + } + while ( isDefined( self.closed_by_emp ) && !self.closed_by_emp ) + { + self waittill( "trigger", grabber ); + self.weapon_out = undefined; + if ( isDefined( level.magic_box_grab_by_anyone ) && level.magic_box_grab_by_anyone ) + { + if ( isplayer( grabber ) ) + { + user = grabber; + } + } + while ( isDefined( grabber.is_drinking ) && grabber.is_drinking > 0 ) + { + wait 0,1; + } + while ( grabber == user && user getcurrentweapon() == "none" ) + { + wait 0,1; + } + if ( grabber != level && isDefined( self.box_rerespun ) && self.box_rerespun ) + { + user = grabber; + } + if ( grabber == user || grabber == level ) + { + self.box_rerespun = undefined; + current_weapon = "none"; + if ( is_player_valid( user ) ) + { + current_weapon = user getcurrentweapon(); + } + if ( grabber == user && is_player_valid( user ) && user.is_drinking > 0 && !is_placeable_mine( current_weapon ) && !is_equipment( current_weapon ) && level.revive_tool != current_weapon ) + { + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_accept" ); + self notify( "user_grabbed_weapon" ); + user thread treasure_chest_give_weapon( self.zbarrier.weapon_string ); + maps/mp/_demo::bookmark( "zm_player_grabbed_magicbox", getTime(), user ); + user maps/mp/zombies/_zm_stats::increment_client_stat( "grabbed_from_magicbox" ); + user maps/mp/zombies/_zm_stats::increment_player_stat( "grabbed_from_magicbox" ); + } + else if ( grabber == level ) + { + unacquire_weapon_toggle( self.zbarrier.weapon_string ); + self.timedout = 1; + if ( is_player_valid( user ) ) + { + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %S", user.name, user.score, level.round_number, self.zombie_cost, self.zbarrier.weapon_string, self.origin, "magic_reject" ); + } + } + } + else + { + wait 0,05; + } + } + self.grab_weapon_hint = 0; + self.zbarrier notify( "weapon_grabbed" ); + if ( isDefined( self._box_opened_by_fire_sale ) && !self._box_opened_by_fire_sale ) + { + level.chest_accessed += 1; + } + if ( level.chest_moves > 0 && isDefined( level.pulls_since_last_ray_gun ) ) + { + level.pulls_since_last_ray_gun += 1; + } + if ( isDefined( level.pulls_since_last_tesla_gun ) ) + { + level.pulls_since_last_tesla_gun += 1; + } + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.unitrigger_stub ); + if ( isDefined( self.chest_lid ) ) + { + self.chest_lid thread treasure_chest_lid_close( self.timedout ); + } + if ( isDefined( self.zbarrier ) ) + { + self.zbarrier set_magic_box_zbarrier_state( "close" ); + play_sound_at_pos( "close_chest", self.origin ); + self.zbarrier waittill( "closed" ); + wait 1; + } + else + { + wait 3; + } + if ( isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] || self [[ level._zombiemode_check_firesale_loc_valid_func ]]() && self == level.chests[ level.chest_index ] ) + { + thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); + } + } + self._box_open = 0; + self._box_opened_by_fire_sale = 0; + self.chest_user = undefined; + self notify( "chest_accessed" ); + self thread treasure_chest_think(); +} + +watch_for_emp_close() +{ + self endon( "chest_accessed" ); + self.closed_by_emp = 0; + if ( isDefined( self.zbarrier ) ) + { + self.zbarrier.closed_by_emp = 0; + } + while ( 1 ) + { + level waittill( "emp_detonate", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + break; + } + else + { + } + } + if ( flag( "moving_chest_now" ) ) + { + return; + } + self.closed_by_emp = 1; + if ( isDefined( self.zbarrier ) ) + { + self.zbarrier.closed_by_emp = 1; + self.zbarrier notify( "box_hacked_respin" ); + if ( isDefined( self.zbarrier.weapon_model ) ) + { + self.zbarrier.weapon_model notify( "kill_weapon_movement" ); + } + if ( isDefined( self.zbarrier.weapon_model_dw ) ) + { + self.zbarrier.weapon_model_dw notify( "kill_weapon_movement" ); + } + } + wait 0,1; + self notify( "trigger" ); +} + +can_buy_weapon() +{ + if ( isDefined( self.is_drinking ) && self.is_drinking > 0 ) + { + return 0; + } + if ( self hacker_active() ) + { + return 0; + } + current_weapon = self getcurrentweapon(); + if ( is_placeable_mine( current_weapon ) || is_equipment_that_blocks_purchase( current_weapon ) ) + { + return 0; + } + if ( self in_revive_trigger() ) + { + return 0; + } + if ( current_weapon == "none" ) + { + return 0; + } + return 1; +} + +default_box_move_logic() +{ + index = -1; + i = 0; + while ( i < level.chests.size ) + { + if ( issubstr( level.chests[ i ].script_noteworthy, "move" + ( level.chest_moves + 1 ) ) && i != level.chest_index ) + { + index = i; + break; + } + else + { + i++; + } + } + if ( index != -1 ) + { + level.chest_index = index; + } + else + { + level.chest_index++; + } + if ( level.chest_index >= level.chests.size ) + { + temp_chest_name = level.chests[ level.chest_index - 1 ].script_noteworthy; + level.chest_index = 0; + level.chests = array_randomize( level.chests ); + if ( temp_chest_name == level.chests[ level.chest_index ].script_noteworthy ) + { + level.chest_index++; + } + } +} + +treasure_chest_move( player_vox ) +{ + level waittill( "weapon_fly_away_start" ); + players = get_players(); + array_thread( players, ::play_crazi_sound ); + if ( isDefined( player_vox ) ) + { + player_vox delay_thread( randomintrange( 2, 7 ), ::maps/mp/zombies/_zm_audio::create_and_play_dialog, "general", "box_move" ); + } + level waittill( "weapon_fly_away_end" ); + if ( isDefined( self.zbarrier ) ) + { + self hide_chest( 1 ); + } + wait 0,1; + post_selection_wait_duration = 7; + if ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 1 && self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) + { + current_sale_time = level.zombie_vars[ "zombie_powerup_fire_sale_time" ]; + wait_network_frame(); + self thread fire_sale_fix(); + level.zombie_vars[ "zombie_powerup_fire_sale_time" ] = current_sale_time; + while ( level.zombie_vars[ "zombie_powerup_fire_sale_time" ] > 0 ) + { + wait 0,1; + } + } + else post_selection_wait_duration += 5; + level.verify_chest = 0; + if ( isDefined( level._zombiemode_custom_box_move_logic ) ) + { + [[ level._zombiemode_custom_box_move_logic ]](); + } + else + { + default_box_move_logic(); + } + if ( isDefined( level.chests[ level.chest_index ].box_hacks[ "summon_box" ] ) ) + { + level.chests[ level.chest_index ] [[ level.chests[ level.chest_index ].box_hacks[ "summon_box" ] ]]( 0 ); + } + wait post_selection_wait_duration; + playfx( level._effect[ "poltergeist" ], level.chests[ level.chest_index ].zbarrier.origin ); + level.chests[ level.chest_index ] show_chest(); + flag_clear( "moving_chest_now" ); + self.zbarrier.chest_moving = 0; +} + +fire_sale_fix() +{ + if ( !isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) ) + { + return; + } + if ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) + { + self.old_cost = 950; + self thread show_chest(); + self.zombie_cost = 10; + self set_hint_string( self, "powerup_fire_sale_cost" ); + wait_network_frame(); + level waittill( "fire_sale_off" ); + while ( isDefined( self._box_open ) && self._box_open ) + { + wait 0,1; + } + self hide_chest( 1 ); + self.zombie_cost = self.old_cost; + } +} + +check_for_desirable_chest_location() +{ + if ( !isDefined( level.desirable_chest_location ) ) + { + return level.chest_index; + } + if ( level.chests[ level.chest_index ].script_noteworthy == level.desirable_chest_location ) + { + level.desirable_chest_location = undefined; + return level.chest_index; + } + i = 0; + while ( i < level.chests.size ) + { + if ( level.chests[ i ].script_noteworthy == level.desirable_chest_location ) + { + level.desirable_chest_location = undefined; + return i; + } + i++; + } +/# + iprintln( level.desirable_chest_location + " is an invalid box location!" ); +#/ + level.desirable_chest_location = undefined; + return level.chest_index; +} + +rotateroll_box() +{ + angles = 40; + angles2 = 0; + while ( isDefined( self ) ) + { + self rotateroll( angles + angles2, 0,5 ); + wait 0,7; + angles2 = 40; + self rotateroll( angles * -2, 0,5 ); + wait 0,7; + } +} + +verify_chest_is_open() +{ + i = 0; + while ( i < level.open_chest_location.size ) + { + if ( isDefined( level.open_chest_location[ i ] ) ) + { + if ( level.open_chest_location[ i ] == level.chests[ level.chest_index ].script_noteworthy ) + { + level.verify_chest = 1; + return; + } + } + i++; + } + level.verify_chest = 0; +} + +treasure_chest_timeout() +{ + self endon( "user_grabbed_weapon" ); + self.zbarrier endon( "box_hacked_respin" ); + self.zbarrier endon( "box_hacked_rerespin" ); + wait 12; + self notify( "trigger" ); +} + +treasure_chest_lid_open() +{ + openroll = 105; + opentime = 0,5; + self rotateroll( 105, opentime, opentime * 0,5 ); + play_sound_at_pos( "open_chest", self.origin ); + play_sound_at_pos( "music_chest", self.origin ); +} + +treasure_chest_lid_close( timedout ) +{ + closeroll = -105; + closetime = 0,5; + self rotateroll( closeroll, closetime, closetime * 0,5 ); + play_sound_at_pos( "close_chest", self.origin ); + self notify( "lid_closed" ); +} + +treasure_chest_chooserandomweapon( player ) +{ + keys = getarraykeys( level.zombie_weapons ); + return keys[ randomint( keys.size ) ]; +} + +treasure_chest_canplayerreceiveweapon( player, weapon, pap_triggers ) +{ + if ( !get_is_in_box( weapon ) ) + { + return 0; + } + if ( player has_weapon_or_upgrade( weapon ) ) + { + return 0; + } + if ( !maps/mp/zombies/_zm_weapons::limited_weapon_below_quota( weapon, player, pap_triggers ) ) + { + return 0; + } + return 1; +} + +treasure_chest_chooseweightedrandomweapon( player ) +{ + keys = array_randomize( getarraykeys( level.zombie_weapons ) ); + pap_triggers = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + i = 0; + while ( i < keys.size ) + { + if ( treasure_chest_canplayerreceiveweapon( player, keys[ i ], pap_triggers ) ) + { + return keys[ i ]; + } + i++; + } + return keys[ 0 ]; +} + +weapon_is_dual_wield( name ) +{ + switch( name ) + { + case "cz75dw_upgraded_zm": + case "cz75dw_zm": + case "fivesevendw_upgraded_zm": + case "fivesevendw_zm": + case "hs10_upgraded_zm": + case "m1911_upgraded_zm": + case "microwavegundw_upgraded_zm": + case "microwavegundw_zm": + case "pm63_upgraded_zm": + return 1; + default: + return 0; + } +} + +weapon_show_hint_choke() +{ + level._weapon_show_hint_choke = 0; + while ( 1 ) + { + wait 0,05; + level._weapon_show_hint_choke = 0; + } +} + +decide_hide_show_hint( endon_notify, second_endon_notify ) +{ + self endon( "death" ); + if ( isDefined( endon_notify ) ) + { + self endon( endon_notify ); + } + if ( isDefined( second_endon_notify ) ) + { + self endon( second_endon_notify ); + } + if ( !isDefined( level._weapon_show_hint_choke ) ) + { + level thread weapon_show_hint_choke(); + } + use_choke = 0; + if ( isDefined( level._use_choke_weapon_hints ) && level._use_choke_weapon_hints == 1 ) + { + use_choke = 1; + } + while ( 1 ) + { + last_update = getTime(); + if ( isDefined( self.chest_user ) && !isDefined( self.box_rerespun ) ) + { + if ( is_placeable_mine( self.chest_user getcurrentweapon() ) || self.chest_user hacker_active() ) + { + self setinvisibletoplayer( self.chest_user ); + } + else + { + self setvisibletoplayer( self.chest_user ); + } + } + else + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] can_buy_weapon() ) + { + self setinvisibletoplayer( players[ i ], 0 ); + i++; + continue; + } + else + { + self setinvisibletoplayer( players[ i ], 1 ); + } + i++; + } + } + if ( use_choke ) + { + while ( level._weapon_show_hint_choke > 4 && getTime() < ( last_update + 150 ) ) + { + wait 0,05; + } + } + else wait 0,1; + level._weapon_show_hint_choke++; + } +} + +get_left_hand_weapon_model_name( name ) +{ + switch( name ) + { + case "microwavegundw_zm": + return getweaponmodel( "microwavegunlh_zm" ); + case "microwavegundw_upgraded_zm": + return getweaponmodel( "microwavegunlh_upgraded_zm" ); + default: + return getweaponmodel( name ); + } +} + +clean_up_hacked_box() +{ + self waittill( "box_hacked_respin" ); + self endon( "box_spin_done" ); + if ( isDefined( self.weapon_model ) ) + { + self.weapon_model delete(); + self.weapon_model = undefined; + } + if ( isDefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw delete(); + self.weapon_model_dw = undefined; + } + self hidezbarrierpiece( 3 ); + self hidezbarrierpiece( 4 ); + self setzbarrierpiecestate( 3, "closed" ); + self setzbarrierpiecestate( 4, "closed" ); +} + +treasure_chest_weapon_spawn( chest, player, respin ) +{ + if ( isDefined( level.using_locked_magicbox ) && level.using_locked_magicbox ) + { + self.owner endon( "box_locked" ); + self thread maps/mp/zombies/_zm_magicbox_lock::clean_up_locked_box(); + } + self endon( "box_hacked_respin" ); + self thread clean_up_hacked_box(); +/# + assert( isDefined( player ) ); +#/ + self.weapon_string = undefined; + modelname = undefined; + rand = undefined; + number_cycles = 40; + if ( isDefined( chest.zbarrier ) ) + { + chest.zbarrier thread magic_box_do_weapon_rise(); + } + i = 0; + while ( i < number_cycles ) + { + if ( i < 20 ) + { + wait 0,05; + i++; + continue; + } + else if ( i < 30 ) + { + wait 0,1; + i++; + continue; + } + else if ( i < 35 ) + { + wait 0,2; + i++; + continue; + } + else + { + if ( i < 38 ) + { + wait 0,3; + } + } + i++; + } + rand = treasure_chest_chooseweightedrandomweapon( player ); +/# + weapon = getDvar( "scr_force_weapon" ); + if ( weapon != "" && isDefined( level.zombie_weapons[ weapon ] ) ) + { + rand = weapon; + setdvar( "scr_force_weapon", "" ); +#/ + } + self.weapon_string = rand; + wait 0,1; + v_float = anglesToUp( self.angles ) * 40; + self.model_dw = undefined; + self.weapon_model = spawn_weapon_model( rand, undefined, self.origin + v_float, self.angles + vectorScale( ( 0, 1, 0 ), 180 ) ); + if ( weapon_is_dual_wield( rand ) ) + { + self.weapon_model_dw = spawn_weapon_model( rand, get_left_hand_weapon_model_name( rand ), self.weapon_model.origin - vectorScale( ( 0, 1, 0 ), 3 ), self.weapon_model.angles ); + } + if ( getDvar( "magic_chest_movable" ) == "1" && isDefined( chest._box_opened_by_fire_sale ) && !chest._box_opened_by_fire_sale && isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] && !( self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) ) + { + random = randomint( 100 ); + if ( !isDefined( level.chest_min_move_usage ) ) + { + level.chest_min_move_usage = 4; + } + if ( level.chest_accessed < level.chest_min_move_usage ) + { + chance_of_joker = -1; + } + else chance_of_joker = level.chest_accessed + 20; + if ( level.chest_moves == 0 && level.chest_accessed >= 8 ) + { + chance_of_joker = 100; + } + if ( level.chest_accessed >= 4 && level.chest_accessed < 8 ) + { + if ( random < 15 ) + { + chance_of_joker = 100; + } + else + { + chance_of_joker = -1; + } + } + if ( level.chest_moves > 0 ) + { + if ( level.chest_accessed >= 8 && level.chest_accessed < 13 ) + { + if ( random < 30 ) + { + chance_of_joker = 100; + } + else + { + chance_of_joker = -1; + } + } + if ( level.chest_accessed >= 13 ) + { + if ( random < 50 ) + { + chance_of_joker = 100; + } + else + { + chance_of_joker = -1; + } + } + } + if ( isDefined( chest.no_fly_away ) ) + { + chance_of_joker = -1; + } + if ( isDefined( level._zombiemode_chest_joker_chance_override_func ) ) + { + chance_of_joker = [[ level._zombiemode_chest_joker_chance_override_func ]]( chance_of_joker ); + } + if ( chance_of_joker > random ) + { + self.weapon_string = undefined; + self.weapon_model setmodel( "zombie_teddybear" ); + self.weapon_model.angles = self.angles + vectorScale( ( 0, 1, 0 ), 90 ); + if ( isDefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw delete(); + self.weapon_model_dw = undefined; + } + self.chest_moving = 1; + flag_set( "moving_chest_now" ); + level.chest_accessed = 0; + level.chest_moves++; + } + } + self notify( "randomization_done" ); + if ( flag( "moving_chest_now" ) && level.zombie_vars[ "zombie_powerup_fire_sale_on" ] && !( self [[ level._zombiemode_check_firesale_loc_valid_func ]]() ) ) + { + wait 0,5; + level notify( "weapon_fly_away_start" ); + wait 2; + if ( isDefined( self.weapon_model ) ) + { + v_fly_away = self.origin + ( anglesToUp( self.angles ) * 500 ); + self.weapon_model moveto( v_fly_away, 4, 3 ); + } + if ( isDefined( self.weapon_model_dw ) ) + { + v_fly_away = self.origin + ( anglesToUp( self.angles ) * 500 ); + self.weapon_model_dw moveto( v_fly_away, 4, 3 ); + } + self.weapon_model waittill( "movedone" ); + self.weapon_model delete(); + if ( isDefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw delete(); + self.weapon_model_dw = undefined; + } + self notify( "box_moving" ); + level notify( "weapon_fly_away_end" ); + } + else + { + acquire_weapon_toggle( rand, player ); + if ( rand == "tesla_gun_zm" || rand == "ray_gun_zm" ) + { + if ( rand == "ray_gun_zm" ) + { + level.pulls_since_last_ray_gun = 0; + } + if ( rand == "tesla_gun_zm" ) + { + level.pulls_since_last_tesla_gun = 0; + level.player_seen_tesla_gun = 1; + } + } + if ( !isDefined( respin ) ) + { + if ( isDefined( chest.box_hacks[ "respin" ] ) ) + { + self [[ chest.box_hacks[ "respin" ] ]]( chest, player ); + } + } + else + { + if ( isDefined( chest.box_hacks[ "respin_respin" ] ) ) + { + self [[ chest.box_hacks[ "respin_respin" ] ]]( chest, player ); + } + } + self.weapon_model thread timer_til_despawn( v_float ); + if ( isDefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw thread timer_til_despawn( v_float ); + } + self waittill( "weapon_grabbed" ); + if ( !chest.timedout ) + { + if ( isDefined( self.weapon_model ) ) + { + self.weapon_model delete(); + } + if ( isDefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw delete(); + } + } + } + self.weapon_string = undefined; + self notify( "box_spin_done" ); +} + +chest_get_min_usage() +{ + min_usage = 4; + return min_usage; +} + +chest_get_max_usage() +{ + max_usage = 6; + players = get_players(); + if ( level.chest_moves == 0 ) + { + if ( players.size == 1 ) + { + max_usage = 3; + } + else if ( players.size == 2 ) + { + max_usage = 4; + } + else if ( players.size == 3 ) + { + max_usage = 5; + } + else + { + max_usage = 6; + } + } + else if ( players.size == 1 ) + { + max_usage = 4; + } + else if ( players.size == 2 ) + { + max_usage = 4; + } + else if ( players.size == 3 ) + { + max_usage = 5; + } + else + { + max_usage = 7; + } + return max_usage; +} + +timer_til_despawn( v_float ) +{ + self endon( "kill_weapon_movement" ); + putbacktime = 12; + self moveto( self.origin - ( v_float * 0,85 ), putbacktime, putbacktime * 0,5 ); + wait putbacktime; + if ( isDefined( self ) ) + { + self delete(); + } +} + +treasure_chest_glowfx() +{ + self setclientfield( "magicbox_glow", 1 ); + self waittill_any( "weapon_grabbed", "box_moving" ); + self setclientfield( "magicbox_glow", 0 ); +} + +treasure_chest_give_weapon( weapon_string ) +{ + self.last_box_weapon = getTime(); + self maps/mp/zombies/_zm_weapons::weapon_give( weapon_string, 0, 1 ); +} + +magic_box_teddy_twitches() +{ + self endon( "zbarrier_state_change" ); + self setzbarrierpiecestate( 0, "closed" ); + while ( 1 ) + { + wait randomfloatrange( 180, 1800 ); + self setzbarrierpiecestate( 0, "opening" ); + wait randomfloatrange( 180, 1800 ); + self setzbarrierpiecestate( 0, "closing" ); + } +} + +magic_box_initial() +{ + self setzbarrierpiecestate( 1, "open" ); +} + +magic_box_arrives() +{ + self setzbarrierpiecestate( 1, "opening" ); + while ( self getzbarrierpiecestate( 1 ) == "opening" ) + { + wait 0,05; + } + self notify( "arrived" ); +} + +magic_box_leaves() +{ + self setzbarrierpiecestate( 1, "closing" ); + while ( self getzbarrierpiecestate( 1 ) == "closing" ) + { + wait 0,1; + } + self notify( "left" ); +} + +magic_box_opens() +{ + self setzbarrierpiecestate( 2, "opening" ); + while ( self getzbarrierpiecestate( 2 ) == "opening" ) + { + wait 0,1; + } + self notify( "opened" ); +} + +magic_box_closes() +{ + self setzbarrierpiecestate( 2, "closing" ); + while ( self getzbarrierpiecestate( 2 ) == "closing" ) + { + wait 0,1; + } + self notify( "closed" ); +} + +magic_box_do_weapon_rise() +{ + self endon( "box_hacked_respin" ); + self setzbarrierpiecestate( 3, "closed" ); + self setzbarrierpiecestate( 4, "closed" ); + wait_network_frame(); + self zbarrierpieceuseboxriselogic( 3 ); + self zbarrierpieceuseboxriselogic( 4 ); + self showzbarrierpiece( 3 ); + self showzbarrierpiece( 4 ); + self setzbarrierpiecestate( 3, "opening" ); + self setzbarrierpiecestate( 4, "opening" ); + while ( self getzbarrierpiecestate( 3 ) != "open" ) + { + wait 0,5; + } + self hidezbarrierpiece( 3 ); + self hidezbarrierpiece( 4 ); +} + +magic_box_do_teddy_flyaway() +{ + self showzbarrierpiece( 3 ); + self setzbarrierpiecestate( 3, "closing" ); +} + +is_chest_active() +{ + curr_state = self.zbarrier get_magic_box_zbarrier_state(); + if ( curr_state != "initial" || curr_state == "open" && curr_state == "close" ) + { + return 1; + } + return 0; +} + +get_magic_box_zbarrier_state() +{ + return self.state; +} + +set_magic_box_zbarrier_state( state ) +{ + i = 0; + while ( i < self getnumzbarrierpieces() ) + { + self hidezbarrierpiece( i ); + i++; + } + self notify( "zbarrier_state_change" ); + switch( state ) + { + case "away": + self showzbarrierpiece( 0 ); + self thread magic_box_teddy_twitches(); + self.state = "away"; + break; + case "arriving": + self showzbarrierpiece( 1 ); + self thread magic_box_arrives(); + self.state = "arriving"; + break; + case "initial": + self showzbarrierpiece( 1 ); + self thread magic_box_initial(); + thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.owner.unitrigger_stub, ::magicbox_unitrigger_think ); + self.state = "initial"; + break; + case "open": + self showzbarrierpiece( 2 ); + self thread magic_box_opens(); + self.state = "open"; + break; + case "close": + self showzbarrierpiece( 2 ); + self thread magic_box_closes(); + self.state = "close"; + break; + case "leaving": + self showzbarrierpiece( 1 ); + self thread magic_box_leaves(); + self.state = "leaving"; + break; + default: + if ( isDefined( level.custom_magicbox_state_handler ) ) + { + self [[ level.custom_magicbox_state_handler ]]( state ); + } + break; + } +} + +magicbox_host_migration() +{ + level endon( "end_game" ); + level notify( "mb_hostmigration" ); + level endon( "mb_hostmigration" ); + while ( 1 ) + { + level waittill( "host_migration_end" ); + while ( !isDefined( level.chests ) ) + { + continue; + } + _a1983 = level.chests; + _k1983 = getFirstArrayKey( _a1983 ); + while ( isDefined( _k1983 ) ) + { + chest = _a1983[ _k1983 ]; + if ( !is_true( chest.hidden ) ) + { + if ( isDefined( chest ) && isDefined( chest.pandora_light ) ) + { + playfxontag( level._effect[ "lght_marker" ], chest.pandora_light, "tag_origin" ); + } + } + wait_network_frame(); + _k1983 = getNextArrayKey( _a1983, _k1983 ); + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_magicbox_lock.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_magicbox_lock.gsc new file mode 100644 index 0000000..0a610a2 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_magicbox_lock.gsc @@ -0,0 +1,84 @@ +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_magicbox_lock; +#include maps/mp/zombies/_zm_magicbox; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + precachemodel( "p6_anim_strongbox_lock" ); + level.locked_magic_box_cost = 2000; + level.custom_magicbox_state_handler = ::set_locked_magicbox_state; + add_zombie_hint( "locked_magic_box_cost", &"ZOMBIE_LOCKED_BOX_COST" ); +} + +watch_for_lock() +{ + self endon( "user_grabbed_weapon" ); + self endon( "chest_accessed" ); + self waittill( "box_locked" ); + self notify( "kill_chest_think" ); + self.grab_weapon_hint = 0; + wait 0,1; + self thread maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( self.unitrigger_stub, ::magicbox_unitrigger_think ); + self.unitrigger_stub run_visibility_function_for_all_triggers(); + self thread treasure_chest_think(); +} + +clean_up_locked_box() +{ + self endon( "box_spin_done" ); + self.owner waittill( "box_locked" ); + if ( isDefined( self.weapon_model ) ) + { + self.weapon_model delete(); + self.weapon_model = undefined; + } + if ( isDefined( self.weapon_model_dw ) ) + { + self.weapon_model_dw delete(); + self.weapon_model_dw = undefined; + } + self hidezbarrierpiece( 3 ); + self hidezbarrierpiece( 4 ); + self setzbarrierpiecestate( 3, "closed" ); + self setzbarrierpiecestate( 4, "closed" ); +} + +magic_box_locks() +{ + self.owner.is_locked = 1; + self.owner notify( "box_locked" ); + if ( !isDefined( self.angles ) ) + { + self.angles = ( 0, 0, 1 ); + } + forward = anglesToRight( self.angles ); + self.lock_model = spawn( "script_model", self.origin + ( -15 * forward ) + vectorScale( ( 0, 0, 1 ), 8 ) ); + self.lock_model.angles = self.angles; + self.lock_model setmodel( "p6_anim_strongbox_lock" ); +} + +magic_box_unlocks() +{ + self.owner.is_locked = 0; + self.lock_model delete(); +} + +set_locked_magicbox_state( state ) +{ + switch( state ) + { + case "locking": + self showzbarrierpiece( 1 ); + self thread magic_box_locks(); + self.state = "locking"; + break; + case "unlocking": + self showzbarrierpiece( 1 ); + self thread magic_box_unlocks(); + self.state = "close"; + break; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_melee_weapon.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_melee_weapon.gsc new file mode 100644 index 0000000..9bf2d2b --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_melee_weapon.gsc @@ -0,0 +1,503 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + precacheitem( weapon_name ); + precacheitem( flourish_weapon_name ); + add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon ); + melee_weapon_triggers = getentarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_weapon_triggers.size ) + { + knife_model = getent( melee_weapon_triggers[ i ].target, "targetname" ); + if ( isDefined( knife_model ) ) + { + knife_model hide(); + } + melee_weapon_triggers[ i ] thread melee_weapon_think( weapon_name, cost, has_weapon, give_weapon, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ); + melee_weapon_triggers[ i ] sethintstring( hint_string, cost ); + melee_weapon_triggers[ i ] setcursorhint( "HINT_NOICON" ); + melee_weapon_triggers[ i ] usetriggerrequirelookat(); + i++; + } + melee_weapon_structs = getstructarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_weapon_structs.size ) + { + if ( isDefined( melee_weapon_structs[ i ].trigger_stub ) ) + { + melee_weapon_structs[ i ].trigger_stub.hint_string = hint_string; + melee_weapon_structs[ i ].trigger_stub.cost = cost; + melee_weapon_structs[ i ].trigger_stub.weapon_name = weapon_name; + melee_weapon_structs[ i ].trigger_stub.has_weapon = has_weapon; + melee_weapon_structs[ i ].trigger_stub.give_weapon = give_weapon; + melee_weapon_structs[ i ].trigger_stub.vo_dialog_id = vo_dialog_id; + melee_weapon_structs[ i ].trigger_stub.flourish_weapon_name = flourish_weapon_name; + melee_weapon_structs[ i ].trigger_stub.ballistic_weapon_name = ballistic_weapon_name; + melee_weapon_structs[ i ].trigger_stub.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name; + melee_weapon_structs[ i ].trigger_stub.trigger_func = ::melee_weapon_think; + melee_weapon_structs[ i ].trigger_stub.flourish_fn = flourish_fn; + } + i++; + } + register_melee_weapon_for_level( weapon_name ); + if ( !isDefined( level.ballistic_weapon_name ) ) + { + level.ballistic_weapon_name = []; + } + level.ballistic_weapon_name[ weapon_name ] = ballistic_weapon_name; + if ( !isDefined( level.ballistic_upgraded_weapon_name ) ) + { + level.ballistic_upgraded_weapon_name = []; + } + level.ballistic_upgraded_weapon_name[ weapon_name ] = ballistic_upgraded_weapon_name; +} + +add_melee_weapon( weapon_name, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, cost, wallbuy_targetname, hint_string, vo_dialog_id, has_weapon, give_weapon, take_weapon, flourish_fn ) +{ + melee_weapon = spawnstruct(); + melee_weapon.weapon_name = weapon_name; + melee_weapon.flourish_weapon_name = flourish_weapon_name; + melee_weapon.ballistic_weapon_name = ballistic_weapon_name; + melee_weapon.ballistic_upgraded_weapon_name = ballistic_upgraded_weapon_name; + melee_weapon.cost = cost; + melee_weapon.wallbuy_targetname = wallbuy_targetname; + melee_weapon.hint_string = hint_string; + melee_weapon.vo_dialog_id = vo_dialog_id; + melee_weapon.has_weapon = has_weapon; + melee_weapon.give_weapon = give_weapon; + melee_weapon.take_weapon = take_weapon; + melee_weapon.flourish_fn = flourish_fn; + if ( !isDefined( level._melee_weapons ) ) + { + level._melee_weapons = []; + } + level._melee_weapons[ level._melee_weapons.size ] = melee_weapon; +} + +spectator_respawn_all() +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self [[ level._melee_weapons[ i ].take_weapon ]](); + i++; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + self spectator_respawn( level._melee_weapons[ i ].wallbuy_targetname, level._melee_weapons[ i ].take_weapon, level._melee_weapons[ i ].has_weapon ); + i++; + } +} + +spectator_respawn( wallbuy_targetname, take_weapon, has_weapon ) +{ + melee_triggers = getentarray( wallbuy_targetname, "targetname" ); + players = get_players(); + i = 0; + while ( i < melee_triggers.size ) + { + melee_triggers[ i ] setvisibletoall(); + while ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + j = 0; + while ( j < players.size ) + { + if ( players[ j ] [[ has_weapon ]]() ) + { + melee_triggers[ i ] setinvisibletoplayer( players[ j ] ); + } + j++; + } + } + i++; + } +} + +trigger_hide_all() +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self trigger_hide( level._melee_weapons[ i ].wallbuy_targetname ); + i++; + } +} + +trigger_hide( wallbuy_targetname ) +{ + melee_triggers = getentarray( wallbuy_targetname, "targetname" ); + i = 0; + while ( i < melee_triggers.size ) + { + melee_triggers[ i ] setinvisibletoplayer( self ); + i++; + } +} + +has_any_ballistic_knife() +{ + if ( self hasweapon( "knife_ballistic_zm" ) ) + { + return 1; + } + if ( self hasweapon( "knife_ballistic_upgraded_zm" ) ) + { + return 1; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( self hasweapon( level._melee_weapons[ i ].ballistic_weapon_name ) ) + { + return 1; + } + if ( self hasweapon( level._melee_weapons[ i ].ballistic_upgraded_weapon_name ) ) + { + return 1; + } + i++; + } + return 0; +} + +has_upgraded_ballistic_knife() +{ + if ( self hasweapon( "knife_ballistic_upgraded_zm" ) ) + { + return 1; + } + i = 0; + while ( i < level._melee_weapons.size ) + { + if ( self hasweapon( level._melee_weapons[ i ].ballistic_upgraded_weapon_name ) ) + { + return 1; + } + i++; + } + return 0; +} + +give_ballistic_knife( weapon_string, upgraded ) +{ + current_melee_weapon = self get_player_melee_weapon(); + if ( isDefined( current_melee_weapon ) ) + { + if ( upgraded && isDefined( level.ballistic_upgraded_weapon_name ) && isDefined( level.ballistic_upgraded_weapon_name[ current_melee_weapon ] ) ) + { + weapon_string = level.ballistic_upgraded_weapon_name[ current_melee_weapon ]; + } + if ( !upgraded && isDefined( level.ballistic_weapon_name ) && isDefined( level.ballistic_weapon_name[ current_melee_weapon ] ) ) + { + weapon_string = level.ballistic_weapon_name[ current_melee_weapon ]; + } + } + return weapon_string; +} + +change_melee_weapon( weapon_name, current_weapon ) +{ + current_melee_weapon = self get_player_melee_weapon(); + if ( isDefined( current_melee_weapon ) ) + { + self takeweapon( current_melee_weapon ); + unacquire_weapon_toggle( current_melee_weapon ); + } + self set_player_melee_weapon( weapon_name ); + had_ballistic = 0; + had_ballistic_upgraded = 0; + ballistic_was_primary = 0; + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + primary_weapon = primaryweapons[ i ]; + if ( issubstr( primary_weapon, "knife_ballistic_" ) ) + { + had_ballistic = 1; + if ( primary_weapon == current_weapon ) + { + ballistic_was_primary = 1; + } + self notify( "zmb_lost_knife" ); + self takeweapon( primary_weapon ); + unacquire_weapon_toggle( primary_weapon ); + if ( issubstr( primary_weapon, "upgraded" ) ) + { + had_ballistic_upgraded = 1; + } + } + i++; + } + if ( had_ballistic ) + { + if ( had_ballistic_upgraded ) + { + new_ballistic = level.ballistic_upgraded_weapon_name[ weapon_name ]; + if ( ballistic_was_primary ) + { + current_weapon = new_ballistic; + } + self giveweapon( new_ballistic, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( new_ballistic ) ); + } + else + { + new_ballistic = level.ballistic_weapon_name[ weapon_name ]; + if ( ballistic_was_primary ) + { + current_weapon = new_ballistic; + } + self giveweapon( new_ballistic, 0 ); + } + } + return current_weapon; +} + +melee_weapon_think( weapon_name, cost, has_weapon, give_weapon, flourish_fn, vo_dialog_id, flourish_weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ) +{ + self.first_time_triggered = 0; + while ( isDefined( self.stub ) ) + { + self endon( "kill_trigger" ); + if ( isDefined( self.stub.first_time_triggered ) ) + { + self.first_time_triggered = self.stub.first_time_triggered; + } + weapon_name = self.stub.weapon_name; + cost = self.stub.cost; + has_weapon = self.stub.has_weapon; + give_weapon = self.stub.give_weapon; + flourish_fn = self.stub.flourish_fn; + vo_dialog_id = self.stub.vo_dialog_id; + flourish_weapon_name = self.stub.flourish_weapon_name; + ballistic_weapon_name = self.stub.ballistic_weapon_name; + ballistic_upgraded_weapon_name = self.stub.ballistic_upgraded_weapon_name; + players = getplayers(); + while ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + i = 0; + while ( i < players.size ) + { + if ( players[ i ] [[ has_weapon ]]() ) + { + self setinvisibletoplayer( players[ i ] ); + } + i++; + } + } + } + for ( ;; ) + { + self waittill( "trigger", player ); + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + continue; + } + else if ( player in_revive_trigger() ) + { + wait 0,1; + continue; + } + else if ( player isthrowinggrenade() ) + { + wait 0,1; + continue; + } + else if ( player.is_drinking > 0 ) + { + wait 0,1; + continue; + } + else if ( player hasweapon( weapon_name ) || player has_powerup_weapon() ) + { + wait 0,1; + continue; + } + else + { + if ( player isswitchingweapons() ) + { + wait 0,1; + break; + } + else current_weapon = player getcurrentweapon(); + if ( !is_placeable_mine( current_weapon ) || is_equipment( current_weapon ) && player has_powerup_weapon() ) + { + wait 0,1; + break; + } + else + { + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( player.intermission ) && player.intermission ) + { + wait 0,1; + break; + } + else + { + player_has_weapon = player [[ has_weapon ]](); + if ( !player_has_weapon ) + { + if ( player.score >= cost ) + { + if ( self.first_time_triggered == 0 ) + { + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread melee_weapon_show( player ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.first_time_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.first_time_triggered = 1; + } + } + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, cost, weapon_name, self.origin, "weapon" ); + player thread give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, give_weapon, flourish_fn, self ); + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon", undefined, 1 ); + } + break; + } + else + { + if ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + self setinvisibletoplayer( player ); + } + } + } + } + } + } +} + +melee_weapon_show( player ) +{ + player_angles = vectorToAngle( player.origin - self.origin ); + player_yaw = player_angles[ 1 ]; + weapon_yaw = self.angles[ 1 ]; + yaw_diff = angleClamp180( player_yaw - weapon_yaw ); + if ( yaw_diff > 0 ) + { + yaw = weapon_yaw - 90; + } + else + { + yaw = weapon_yaw + 90; + } + self.og_origin = self.origin; + self.origin += anglesToForward( ( 0, yaw, 0 ) ) * 8; + wait 0,05; + self show(); + play_sound_at_pos( "weapon_show", self.origin, self ); + time = 1; + self moveto( self.og_origin, time ); +} + +give_melee_weapon( vo_dialog_id, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name, give_weapon, flourish_fn, trigger ) +{ + if ( isDefined( flourish_fn ) ) + { + self thread [[ flourish_fn ]](); + } + gun = self do_melee_weapon_flourish_begin( flourish_weapon_name ); + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", vo_dialog_id ); + self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" ); + self do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ); + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + return; + } + self [[ give_weapon ]](); + if ( isDefined( level._allow_melee_weapon_switching ) && !level._allow_melee_weapon_switching ) + { + trigger setinvisibletoplayer( self ); + self trigger_hide_all(); + } +} + +do_melee_weapon_flourish_begin( flourish_weapon_name ) +{ + self increment_is_drinking(); + self disable_player_move_states( 1 ); + gun = self getcurrentweapon(); + weapon = flourish_weapon_name; + self giveweapon( weapon ); + self switchtoweapon( weapon ); + return gun; +} + +do_melee_weapon_flourish_end( gun, flourish_weapon_name, weapon_name, ballistic_weapon_name, ballistic_upgraded_weapon_name ) +{ +/# + assert( !is_zombie_perk_bottle( gun ) ); +#/ +/# + assert( gun != level.revive_tool ); +#/ + self enable_player_move_states(); + weapon = flourish_weapon_name; + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + self takeweapon( weapon ); + self.lastactiveweapon = "none"; + return; + } + self takeweapon( weapon ); + self giveweapon( weapon_name ); + gun = change_melee_weapon( weapon_name, gun ); + if ( self hasweapon( "knife_zm" ) ) + { + self takeweapon( "knife_zm" ); + } + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + return; + } + else if ( gun == "knife_zm" ) + { + self switchtoweapon( weapon_name ); + self decrement_is_drinking(); + return; + } + else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) ) + { + self switchtoweapon( gun ); + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } + self waittill( "weapon_change_complete" ); + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( self.intermission ) && !self.intermission ) + { + self decrement_is_drinking(); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_mgturret.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_mgturret.gsc new file mode 100644 index 0000000..d3aee82 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_mgturret.gsc @@ -0,0 +1,339 @@ +#include common_scripts/utility; +#include maps/mp/_utility; + +main() +{ + if ( getDvar( #"7C9A91DF" ) == "" ) + { + setdvar( "mgTurret", "off" ); + } + level.magic_distance = 24; + turretinfos = getentarray( "turretInfo", "targetname" ); + index = 0; + while ( index < turretinfos.size ) + { + turretinfos[ index ] delete(); + index++; + } +} + +set_difficulty( difficulty ) +{ + init_turret_difficulty_settings(); + turrets = getentarray( "misc_turret", "classname" ); + index = 0; + while ( index < turrets.size ) + { + if ( isDefined( turrets[ index ].script_skilloverride ) ) + { + switch( turrets[ index ].script_skilloverride ) + { + case "easy": + difficulty = "easy"; + break; + break; + case "medium": + difficulty = "medium"; + break; + break; + case "hard": + difficulty = "hard"; + break; + break; + case "fu": + difficulty = "fu"; + break; + break; + default: + } + } + turret_set_difficulty( turrets[ index ], difficulty ); + index++; + } + } +} + +init_turret_difficulty_settings() +{ + level.mgturretsettings[ "easy" ][ "convergenceTime" ] = 2,5; + level.mgturretsettings[ "easy" ][ "suppressionTime" ] = 3; + level.mgturretsettings[ "easy" ][ "accuracy" ] = 0,38; + level.mgturretsettings[ "easy" ][ "aiSpread" ] = 2; + level.mgturretsettings[ "easy" ][ "playerSpread" ] = 0,5; + level.mgturretsettings[ "medium" ][ "convergenceTime" ] = 1,5; + level.mgturretsettings[ "medium" ][ "suppressionTime" ] = 3; + level.mgturretsettings[ "medium" ][ "accuracy" ] = 0,38; + level.mgturretsettings[ "medium" ][ "aiSpread" ] = 2; + level.mgturretsettings[ "medium" ][ "playerSpread" ] = 0,5; + level.mgturretsettings[ "hard" ][ "convergenceTime" ] = 0,8; + level.mgturretsettings[ "hard" ][ "suppressionTime" ] = 3; + level.mgturretsettings[ "hard" ][ "accuracy" ] = 0,38; + level.mgturretsettings[ "hard" ][ "aiSpread" ] = 2; + level.mgturretsettings[ "hard" ][ "playerSpread" ] = 0,5; + level.mgturretsettings[ "fu" ][ "convergenceTime" ] = 0,4; + level.mgturretsettings[ "fu" ][ "suppressionTime" ] = 3; + level.mgturretsettings[ "fu" ][ "accuracy" ] = 0,38; + level.mgturretsettings[ "fu" ][ "aiSpread" ] = 2; + level.mgturretsettings[ "fu" ][ "playerSpread" ] = 0,5; +} + +turret_set_difficulty( turret, difficulty ) +{ + turret.convergencetime = level.mgturretsettings[ difficulty ][ "convergenceTime" ]; + turret.suppressiontime = level.mgturretsettings[ difficulty ][ "suppressionTime" ]; + turret.accuracy = level.mgturretsettings[ difficulty ][ "accuracy" ]; + turret.aispread = level.mgturretsettings[ difficulty ][ "aiSpread" ]; + turret.playerspread = level.mgturretsettings[ difficulty ][ "playerSpread" ]; +} + +turret_suppression_fire( targets ) +{ + self endon( "death" ); + self endon( "stop_suppression_fire" ); + if ( !isDefined( self.suppresionfire ) ) + { + self.suppresionfire = 1; + } + for ( ;; ) + { + while ( self.suppresionfire ) + { + self settargetentity( targets[ randomint( targets.size ) ] ); + wait ( 2 + randomfloat( 2 ) ); + } + self cleartargetentity(); + while ( !self.suppresionfire ) + { + wait 1; + } + } +} + +burst_fire_settings( setting ) +{ + if ( setting == "delay" ) + { + return 0,2; + } + else + { + if ( setting == "delay_range" ) + { + return 0,5; + } + else + { + if ( setting == "burst" ) + { + return 0,5; + } + else + { + if ( setting == "burst_range" ) + { + return 4; + } + } + } + } +} + +burst_fire( turret, manual_target ) +{ + turret endon( "death" ); + turret endon( "stopfiring" ); + self endon( "stop_using_built_in_burst_fire" ); + if ( isDefined( turret.script_delay_min ) ) + { + turret_delay = turret.script_delay_min; + } + else + { + turret_delay = burst_fire_settings( "delay" ); + } + if ( isDefined( turret.script_delay_max ) ) + { + turret_delay_range = turret.script_delay_max - turret_delay; + } + else + { + turret_delay_range = burst_fire_settings( "delay_range" ); + } + if ( isDefined( turret.script_burst_min ) ) + { + turret_burst = turret.script_burst_min; + } + else + { + turret_burst = burst_fire_settings( "burst" ); + } + if ( isDefined( turret.script_burst_max ) ) + { + turret_burst_range = turret.script_burst_max - turret_burst; + } + else + { + turret_burst_range = burst_fire_settings( "burst_range" ); + } + while ( 1 ) + { + turret startfiring(); + if ( isDefined( manual_target ) ) + { + turret thread random_spread( manual_target ); + } + turret do_shoot(); + wait ( turret_burst + randomfloat( turret_burst_range ) ); + turret stopshootturret(); + turret stopfiring(); + wait ( turret_delay + randomfloat( turret_delay_range ) ); + } +} + +burst_fire_unmanned() +{ + self notify( "stop_burst_fire_unmanned" ); + self endon( "stop_burst_fire_unmanned" ); + self endon( "death" ); + self endon( "remote_start" ); + level endon( "game_ended" ); + if ( isDefined( self.controlled ) && self.controlled ) + { + return; + } + if ( isDefined( self.script_delay_min ) ) + { + turret_delay = self.script_delay_min; + } + else + { + turret_delay = burst_fire_settings( "delay" ); + } + if ( isDefined( self.script_delay_max ) ) + { + turret_delay_range = self.script_delay_max - turret_delay; + } + else + { + turret_delay_range = burst_fire_settings( "delay_range" ); + } + if ( isDefined( self.script_burst_min ) ) + { + turret_burst = self.script_burst_min; + } + else + { + turret_burst = burst_fire_settings( "burst" ); + } + if ( isDefined( self.script_burst_max ) ) + { + turret_burst_range = self.script_burst_max - turret_burst; + } + else + { + turret_burst_range = burst_fire_settings( "burst_range" ); + } + pauseuntiltime = getTime(); + turretstate = "start"; + self.script_shooting = 0; + for ( ;; ) + { + if ( isDefined( self.manual_targets ) ) + { + self cleartargetentity(); + self settargetentity( self.manual_targets[ randomint( self.manual_targets.size ) ] ); + } + duration = ( pauseuntiltime - getTime() ) * 0,001; + if ( self isfiringturret() && duration <= 0 ) + { + if ( turretstate != "fire" ) + { + turretstate = "fire"; + self playsound( "mpl_turret_alert" ); + self thread do_shoot(); + self.script_shooting = 1; + } + duration = turret_burst + randomfloat( turret_burst_range ); + self thread turret_timer( duration ); + self waittill( "turretstatechange" ); + self.script_shooting = 0; + duration = turret_delay + randomfloat( turret_delay_range ); + pauseuntiltime = getTime() + int( duration * 1000 ); + continue; + } + else + { + if ( turretstate != "aim" ) + { + turretstate = "aim"; + } + self thread turret_timer( duration ); + self waittill( "turretstatechange" ); + } + } +} + +avoid_synchronization( time ) +{ + if ( !isDefined( level._zm_mgturret_firing ) ) + { + level._zm_mgturret_firing = 0; + } + level._zm_mgturret_firing++; + wait time; + level._zm_mgturret_firing--; + +} + +do_shoot() +{ + self endon( "death" ); + self endon( "turretstatechange" ); + for ( ;; ) + { + while ( is_true( level._zm_mgturret_firing ) ) + { + wait 0,1; + } + thread avoid_synchronization( 0,1 ); + self shootturret(); + wait 0,112; + } +} + +turret_timer( duration ) +{ + if ( duration <= 0 ) + { + return; + } + self endon( "turretstatechange" ); + wait duration; + if ( isDefined( self ) ) + { + self notify( "turretstatechange" ); + } +} + +random_spread( ent ) +{ + self endon( "death" ); + self notify( "stop random_spread" ); + self endon( "stop random_spread" ); + self endon( "stopfiring" ); + self settargetentity( ent ); + self.manual_target = ent; + while ( 1 ) + { + if ( isplayer( ent ) ) + { + ent.origin = self.manual_target getorigin(); + } + else + { + ent.origin = self.manual_target.origin; + } + ent.origin += ( 20 - randomfloat( 40 ), 20 - randomfloat( 40 ), 20 - randomfloat( 60 ) ); + wait 0,2; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_net.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_net.gsc new file mode 100644 index 0000000..2ace21e --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_net.gsc @@ -0,0 +1,100 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +network_choke_init( id, max ) +{ + if ( !isDefined( level.zombie_network_choke_ids_max ) ) + { + level.zombie_network_choke_ids_max = []; + level.zombie_network_choke_ids_count = []; + } + level.zombie_network_choke_ids_max[ id ] = max; + level.zombie_network_choke_ids_count[ id ] = 0; + level thread network_choke_thread( id ); +} + +network_choke_thread( id ) +{ + while ( 1 ) + { + wait_network_frame(); + wait_network_frame(); + level.zombie_network_choke_ids_count[ id ] = 0; + } +} + +network_choke_safe( id ) +{ + return level.zombie_network_choke_ids_count[ id ] < level.zombie_network_choke_ids_max[ id ]; +} + +network_choke_action( id, choke_action, arg1, arg2, arg3 ) +{ +/# + assert( isDefined( level.zombie_network_choke_ids_max[ id ] ), "Network Choke: " + id + " undefined" ); +#/ + while ( !network_choke_safe( id ) ) + { + wait 0,05; + } + level.zombie_network_choke_ids_count[ id ]++; + if ( !isDefined( arg1 ) ) + { + return [[ choke_action ]](); + } + if ( !isDefined( arg2 ) ) + { + return [[ choke_action ]]( arg1 ); + } + if ( !isDefined( arg3 ) ) + { + return [[ choke_action ]]( arg1, arg2 ); + } + return [[ choke_action ]]( arg1, arg2, arg3 ); +} + +network_entity_valid( entity ) +{ + if ( !isDefined( entity ) ) + { + return 0; + } + return 1; +} + +network_safe_init( id, max ) +{ + if ( !isDefined( level.zombie_network_choke_ids_max ) || !isDefined( level.zombie_network_choke_ids_max[ id ] ) ) + { + network_choke_init( id, max ); + } +/# + assert( max == level.zombie_network_choke_ids_max[ id ] ); +#/ +} + +_network_safe_spawn( classname, origin ) +{ + return spawn( classname, origin ); +} + +network_safe_spawn( id, max, classname, origin ) +{ + network_safe_init( id, max ); + return network_choke_action( id, ::_network_safe_spawn, classname, origin ); +} + +_network_safe_play_fx_on_tag( fx, entity, tag ) +{ + if ( network_entity_valid( entity ) ) + { + playfxontag( fx, entity, tag ); + } +} + +network_safe_play_fx_on_tag( id, max, fx, entity, tag ) +{ + network_safe_init( id, max ); + network_choke_action( id, ::_network_safe_play_fx_on_tag, fx, entity, tag ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_perks.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_perks.gsc new file mode 100644 index 0000000..991c300 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_perks.gsc @@ -0,0 +1,3844 @@ +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_vulture; +#include maps/mp/_visionset_mgr; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/_demo; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_power; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_magicbox; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !level.createfx_enabled ) + { + perks_register_clientfield(); + } + if ( !level.enable_magic ) + { + return; + } + perk_machine_spawn_init(); + vending_weapon_upgrade_trigger = []; + vending_triggers = getentarray( "zombie_vending", "targetname" ); + i = 0; + while ( i < vending_triggers.size ) + { + if ( isDefined( vending_triggers[ i ].script_noteworthy ) && vending_triggers[ i ].script_noteworthy == "specialty_weapupgrade" ) + { + vending_weapon_upgrade_trigger[ vending_weapon_upgrade_trigger.size ] = vending_triggers[ i ]; + arrayremovevalue( vending_triggers, vending_triggers[ i ] ); + } + i++; + } + old_packs = getentarray( "zombie_vending_upgrade", "targetname" ); + i = 0; + while ( i < old_packs.size ) + { + vending_weapon_upgrade_trigger[ vending_weapon_upgrade_trigger.size ] = old_packs[ i ]; + i++; + } + flag_init( "pack_machine_in_use" ); + if ( vending_triggers.size < 1 ) + { + return; + } + if ( vending_weapon_upgrade_trigger.size >= 1 ) + { + array_thread( vending_weapon_upgrade_trigger, ::vending_weapon_upgrade ); + } + if ( !isDefined( level.custom_vending_precaching ) ) + { + level.custom_vending_precaching = ::default_vending_precaching; + } + [[ level.custom_vending_precaching ]](); + if ( !isDefined( level.packapunch_timeout ) ) + { + level.packapunch_timeout = 15; + } + set_zombie_var( "zombie_perk_cost", 2000 ); + set_zombie_var( "zombie_perk_juggernaut_health", 160 ); + set_zombie_var( "zombie_perk_juggernaut_health_upgrade", 190 ); + array_thread( vending_triggers, ::vending_trigger_think ); + array_thread( vending_triggers, ::electric_perks_dialog ); + level thread turn_doubletap_on(); + if ( isDefined( level.zombiemode_using_marathon_perk ) && level.zombiemode_using_marathon_perk ) + { + level thread turn_marathon_on(); + } + if ( isDefined( level.zombiemode_using_divetonuke_perk ) && level.zombiemode_using_divetonuke_perk ) + { + level thread turn_divetonuke_on(); + level.zombiemode_divetonuke_perk_func = ::divetonuke_explode; + level._effect[ "divetonuke_groundhit" ] = loadfx( "maps/zombie/fx_zmb_phdflopper_exp" ); + set_zombie_var( "zombie_perk_divetonuke_radius", 300 ); + set_zombie_var( "zombie_perk_divetonuke_min_damage", 1000 ); + set_zombie_var( "zombie_perk_divetonuke_max_damage", 5000 ); + } + level thread turn_jugger_on(); + level thread turn_revive_on(); + level thread turn_sleight_on(); + if ( isDefined( level.zombiemode_using_deadshot_perk ) && level.zombiemode_using_deadshot_perk ) + { + level thread turn_deadshot_on(); + } + if ( isDefined( level.zombiemode_using_tombstone_perk ) && level.zombiemode_using_tombstone_perk ) + { + level thread turn_tombstone_on(); + } + if ( isDefined( level.zombiemode_using_additionalprimaryweapon_perk ) && level.zombiemode_using_additionalprimaryweapon_perk ) + { + level thread turn_additionalprimaryweapon_on(); + } + if ( isDefined( level.zombiemode_using_chugabud_perk ) && level.zombiemode_using_chugabud_perk ) + { + level thread turn_chugabud_on(); + } + if ( isDefined( level.zombiemode_using_electric_cherry_perk ) && level.zombiemode_using_electric_cherry_perk ) + { + level thread turn_electric_cherry_on(); + } + if ( isDefined( level.zombiemode_using_vulture_perk ) && level.zombiemode_using_vulture_perk ) + { + level thread turn_vulture_on(); + } + level thread turn_packapunch_on(); + if ( isDefined( level.quantum_bomb_register_result_func ) ) + { + [[ level.quantum_bomb_register_result_func ]]( "give_nearest_perk", ::quantum_bomb_give_nearest_perk_result, 10, ::quantum_bomb_give_nearest_perk_validation ); + } + level thread perk_hostmigration(); +} + +default_vending_precaching() +{ + if ( isDefined( level.zombiemode_using_pack_a_punch ) && level.zombiemode_using_pack_a_punch ) + { + precacheitem( "zombie_knuckle_crack" ); + precachemodel( "p6_anim_zm_buildable_pap" ); + precachemodel( "p6_anim_zm_buildable_pap_on" ); + precachestring( &"ZOMBIE_PERK_PACKAPUNCH" ); + precachestring( &"ZOMBIE_PERK_PACKAPUNCH_ATT" ); + level._effect[ "packapunch_fx" ] = loadfx( "maps/zombie/fx_zombie_packapunch" ); + } + if ( isDefined( level.zombiemode_using_additionalprimaryweapon_perk ) && level.zombiemode_using_additionalprimaryweapon_perk ) + { + precacheitem( "zombie_perk_bottle_additionalprimaryweapon" ); + precacheshader( "specialty_additionalprimaryweapon_zombies" ); + precachemodel( "zombie_vending_three_gun" ); + precachemodel( "zombie_vending_three_gun_on" ); + precachestring( &"ZOMBIE_PERK_ADDITIONALWEAPONPERK" ); + level._effect[ "additionalprimaryweapon_light" ] = loadfx( "misc/fx_zombie_cola_arsenal_on" ); + } + if ( isDefined( level.zombiemode_using_deadshot_perk ) && level.zombiemode_using_deadshot_perk ) + { + precacheitem( "zombie_perk_bottle_deadshot" ); + precacheshader( "specialty_ads_zombies" ); + precachemodel( "zombie_vending_ads" ); + precachemodel( "zombie_vending_ads_on" ); + precachestring( &"ZOMBIE_PERK_DEADSHOT" ); + level._effect[ "deadshot_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" ); + } + if ( isDefined( level.zombiemode_using_divetonuke_perk ) && level.zombiemode_using_divetonuke_perk ) + { + precacheitem( "zombie_perk_bottle_nuke" ); + precacheshader( "specialty_divetonuke_zombies" ); + precachemodel( "zombie_vending_nuke" ); + precachemodel( "zombie_vending_nuke_on" ); + precachestring( &"ZOMBIE_PERK_DIVETONUKE" ); + level._effect[ "divetonuke_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" ); + } + if ( isDefined( level.zombiemode_using_doubletap_perk ) && level.zombiemode_using_doubletap_perk ) + { + precacheitem( "zombie_perk_bottle_doubletap" ); + precacheshader( "specialty_doubletap_zombies" ); + precachemodel( "zombie_vending_doubletap2" ); + precachemodel( "zombie_vending_doubletap2_on" ); + precachestring( &"ZOMBIE_PERK_DOUBLETAP" ); + level._effect[ "doubletap_light" ] = loadfx( "misc/fx_zombie_cola_dtap_on" ); + } + if ( isDefined( level.zombiemode_using_juggernaut_perk ) && level.zombiemode_using_juggernaut_perk ) + { + precacheitem( "zombie_perk_bottle_jugg" ); + precacheshader( "specialty_juggernaut_zombies" ); + precachemodel( "zombie_vending_jugg" ); + precachemodel( "zombie_vending_jugg_on" ); + precachestring( &"ZOMBIE_PERK_JUGGERNAUT" ); + level._effect[ "jugger_light" ] = loadfx( "misc/fx_zombie_cola_jugg_on" ); + } + if ( isDefined( level.zombiemode_using_marathon_perk ) && level.zombiemode_using_marathon_perk ) + { + precacheitem( "zombie_perk_bottle_marathon" ); + precacheshader( "specialty_marathon_zombies" ); + precachemodel( "zombie_vending_marathon" ); + precachemodel( "zombie_vending_marathon_on" ); + precachestring( &"ZOMBIE_PERK_MARATHON" ); + level._effect[ "marathon_light" ] = loadfx( "maps/zombie/fx_zmb_cola_staminup_on" ); + } + if ( isDefined( level.zombiemode_using_revive_perk ) && level.zombiemode_using_revive_perk ) + { + precacheitem( "zombie_perk_bottle_revive" ); + precacheshader( "specialty_quickrevive_zombies" ); + precachemodel( "zombie_vending_revive" ); + precachemodel( "zombie_vending_revive_on" ); + precachestring( &"ZOMBIE_PERK_QUICKREVIVE" ); + level._effect[ "revive_light" ] = loadfx( "misc/fx_zombie_cola_revive_on" ); + level._effect[ "revive_light_flicker" ] = loadfx( "maps/zombie/fx_zmb_cola_revive_flicker" ); + } + if ( isDefined( level.zombiemode_using_sleightofhand_perk ) && level.zombiemode_using_sleightofhand_perk ) + { + precacheitem( "zombie_perk_bottle_sleight" ); + precacheshader( "specialty_fastreload_zombies" ); + precachemodel( "zombie_vending_sleight" ); + precachemodel( "zombie_vending_sleight_on" ); + precachestring( &"ZOMBIE_PERK_FASTRELOAD" ); + level._effect[ "sleight_light" ] = loadfx( "misc/fx_zombie_cola_on" ); + } + if ( isDefined( level.zombiemode_using_tombstone_perk ) && level.zombiemode_using_tombstone_perk ) + { + precacheitem( "zombie_perk_bottle_tombstone" ); + precacheshader( "specialty_tombstone_zombies" ); + precachemodel( "zombie_vending_tombstone" ); + precachemodel( "zombie_vending_tombstone_on" ); + precachemodel( "ch_tombstone1" ); + precachestring( &"ZOMBIE_PERK_TOMBSTONE" ); + level._effect[ "tombstone_light" ] = loadfx( "misc/fx_zombie_cola_on" ); + } + if ( isDefined( level.zombiemode_using_chugabud_perk ) && level.zombiemode_using_chugabud_perk ) + { + precacheitem( "zombie_perk_bottle_whoswho" ); + precacheshader( "specialty_quickrevive_zombies" ); + precachemodel( "p6_zm_vending_chugabud" ); + precachemodel( "p6_zm_vending_chugabud_on" ); + precachemodel( "ch_tombstone1" ); + precachestring( &"ZOMBIE_PERK_TOMBSTONE" ); + level._effect[ "tombstone_light" ] = loadfx( "misc/fx_zombie_cola_on" ); + } + if ( isDefined( level.zombiemode_using_electric_cherry_perk ) && level.zombiemode_using_electric_cherry_perk ) + { + precacheitem( "zombie_perk_bottle_cherry" ); + precacheshader( "specialty_fastreload_zombies" ); + precachemodel( "p6_zm_vending_electric_cherry_off" ); + precachemodel( "p6_zm_vending_electric_cherry_on" ); + precachestring( &"ZOMBIE_PERK_FASTRELOAD" ); + level._effect[ "sleight_light" ] = loadfx( "misc/fx_zombie_cola_on" ); + } + if ( isDefined( level.zombiemode_using_vulture_perk ) && level.zombiemode_using_vulture_perk ) + { + precacheitem( "zombie_perk_bottle_vulture" ); + precacheshader( "specialty_vulture_zombies" ); + precachemodel( "zombie_vending_revive" ); + precachemodel( "zombie_vending_revive_on" ); + precachestring( &"ZOMBIE_PERK_VULTURE" ); + level._effect[ "vulture_light" ] = loadfx( "misc/fx_zombie_cola_revive_on" ); + level._effect[ "vulture_light_flicker" ] = loadfx( "maps/zombie/fx_zmb_cola_revive_flicker" ); + } +} + +pap_weapon_move_in( trigger, origin_offset, angles_offset ) +{ + level endon( "Pack_A_Punch_off" ); + trigger endon( "pap_player_disconnected" ); + trigger.worldgun rotateto( self.angles + angles_offset + vectorScale( ( 0, -1, 0 ), 90 ), 0,35, 0, 0 ); + offsetdw = vectorScale( ( 0, -1, 0 ), 3 ); + if ( isDefined( trigger.worldgun.worldgundw ) ) + { + trigger.worldgun.worldgundw rotateto( self.angles + angles_offset + vectorScale( ( 0, -1, 0 ), 90 ), 0,35, 0, 0 ); + } + wait 0,5; + trigger.worldgun moveto( self.origin + origin_offset, 0,5, 0, 0 ); + if ( isDefined( trigger.worldgun.worldgundw ) ) + { + trigger.worldgun.worldgundw moveto( self.origin + origin_offset + offsetdw, 0,5, 0, 0 ); + } +} + +pap_weapon_move_out( trigger, origin_offset, interact_offset ) +{ + level endon( "Pack_A_Punch_off" ); + trigger endon( "pap_player_disconnected" ); + offsetdw = vectorScale( ( 0, -1, 0 ), 3 ); + trigger.worldgun moveto( self.origin + interact_offset, 0,5, 0, 0 ); + if ( isDefined( trigger.worldgun.worldgundw ) ) + { + trigger.worldgun.worldgundw moveto( self.origin + interact_offset + offsetdw, 0,5, 0, 0 ); + } + wait 0,5; + trigger.worldgun moveto( self.origin + origin_offset, level.packapunch_timeout, 0, 0 ); + if ( isDefined( trigger.worldgun.worldgundw ) ) + { + trigger.worldgun.worldgundw moveto( self.origin + origin_offset + offsetdw, level.packapunch_timeout, 0, 0 ); + } +} + +fx_ent_failsafe() +{ + wait 25; + self delete(); +} + +third_person_weapon_upgrade( current_weapon, upgrade_weapon, packa_rollers, perk_machine, trigger ) +{ + level endon( "Pack_A_Punch_off" ); + trigger endon( "pap_player_disconnected" ); + rel_entity = trigger.perk_machine; + origin_offset = ( 0, -1, 0 ); + angles_offset = ( 0, -1, 0 ); + origin_base = self.origin; + angles_base = self.angles; + if ( isDefined( rel_entity ) ) + { + if ( isDefined( level.pap_interaction_height ) ) + { + origin_offset = ( 0, 0, level.pap_interaction_height ); + } + else + { + origin_offset = vectorScale( ( 0, -1, 0 ), 35 ); + } + angles_offset = vectorScale( ( 0, -1, 0 ), 90 ); + origin_base = rel_entity.origin; + angles_base = rel_entity.angles; + } + else + { + rel_entity = self; + } + forward = anglesToForward( angles_base + angles_offset ); + interact_offset = origin_offset + ( forward * -25 ); + if ( !isDefined( perk_machine.fx_ent ) ) + { + perk_machine.fx_ent = spawn( "script_model", origin_base + origin_offset + ( 0, 1, -34 ) ); + perk_machine.fx_ent.angles = angles_base + angles_offset; + perk_machine.fx_ent setmodel( "tag_origin" ); + perk_machine.fx_ent linkto( perk_machine ); + } + fx = playfxontag( level._effect[ "packapunch_fx" ], perk_machine.fx_ent, "tag_origin" ); + offsetdw = vectorScale( ( 0, -1, 0 ), 3 ); + weoptions = self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( current_weapon ); + trigger.worldgun = spawn_weapon_model( current_weapon, undefined, origin_base + interact_offset, self.angles, weoptions ); + worldgundw = undefined; + if ( maps/mp/zombies/_zm_magicbox::weapon_is_dual_wield( current_weapon ) ) + { + worldgundw = spawn_weapon_model( current_weapon, maps/mp/zombies/_zm_magicbox::get_left_hand_weapon_model_name( current_weapon ), origin_base + interact_offset + offsetdw, self.angles, weoptions ); + } + trigger.worldgun.worldgundw = worldgundw; + if ( isDefined( level.custom_pap_move_in ) ) + { + perk_machine [[ level.custom_pap_move_in ]]( trigger, origin_offset, angles_offset, perk_machine ); + } + else + { + perk_machine pap_weapon_move_in( trigger, origin_offset, angles_offset ); + } + self playsound( "zmb_perks_packa_upgrade" ); + if ( isDefined( perk_machine.wait_flag ) ) + { + perk_machine.wait_flag rotateto( perk_machine.wait_flag.angles + vectorScale( ( 0, -1, 0 ), 179 ), 0,25, 0, 0 ); + } + wait 0,35; + trigger.worldgun delete(); + if ( isDefined( worldgundw ) ) + { + worldgundw delete(); + } + wait 3; + if ( isDefined( self ) ) + { + self playsound( "zmb_perks_packa_ready" ); + } + upoptions = self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( upgrade_weapon ); + trigger.current_weapon = current_weapon; + trigger.upgrade_name = upgrade_weapon; + trigger.worldgun = spawn_weapon_model( upgrade_weapon, undefined, origin_base + origin_offset, angles_base + angles_offset + vectorScale( ( 0, -1, 0 ), 90 ), upoptions ); + worldgundw = undefined; + if ( maps/mp/zombies/_zm_magicbox::weapon_is_dual_wield( upgrade_weapon ) ) + { + worldgundw = spawn_weapon_model( upgrade_weapon, maps/mp/zombies/_zm_magicbox::get_left_hand_weapon_model_name( upgrade_weapon ), origin_base + origin_offset + offsetdw, angles_base + angles_offset + vectorScale( ( 0, -1, 0 ), 90 ), upoptions ); + } + trigger.worldgun.worldgundw = worldgundw; + if ( isDefined( perk_machine.wait_flag ) ) + { + perk_machine.wait_flag rotateto( perk_machine.wait_flag.angles - vectorScale( ( 0, -1, 0 ), 179 ), 0,25, 0, 0 ); + } + if ( isDefined( level.custom_pap_move_out ) ) + { + rel_entity thread [[ level.custom_pap_move_out ]]( trigger, origin_offset, interact_offset ); + } + else + { + rel_entity thread pap_weapon_move_out( trigger, origin_offset, interact_offset ); + } + return trigger.worldgun; +} + +vending_machine_trigger_think() +{ + self endon( "death" ); + level endon( "Pack_A_Punch_off" ); + if ( !maps/mp/zombies/_zm_equipment::is_equipment_included( "equip_hacker_zm" ) ) + { + return; + } + while ( 1 ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] hacker_active() || players[ i ] getcurrentweapon() == "riotshield_zm" ) + { + self setinvisibletoplayer( players[ i ], 1 ); + i++; + continue; + } + else + { + self setinvisibletoplayer( players[ i ], 0 ); + } + i++; + } + wait 0,1; + } +} + +vending_weapon_upgrade() +{ + level endon( "Pack_A_Punch_off" ); + wait 0,01; + perk_machine = getent( self.target, "targetname" ); + self.perk_machine = perk_machine; + perk_machine_sound = getentarray( "perksacola", "targetname" ); + packa_rollers = spawn( "script_origin", self.origin ); + packa_timer = spawn( "script_origin", self.origin ); + packa_rollers linkto( self ); + packa_timer linkto( self ); + if ( isDefined( perk_machine.target ) ) + { + perk_machine.wait_flag = getent( perk_machine.target, "targetname" ); + } + pap_is_buildable = self is_buildable(); + if ( pap_is_buildable ) + { + self trigger_off(); + perk_machine hide(); + if ( isDefined( perk_machine.wait_flag ) ) + { + perk_machine.wait_flag hide(); + } + wait_for_buildable( "pap" ); + self trigger_on(); + perk_machine show(); + if ( isDefined( perk_machine.wait_flag ) ) + { + perk_machine.wait_flag show(); + } + } + self usetriggerrequirelookat(); + self sethintstring( &"ZOMBIE_NEED_POWER" ); + self setcursorhint( "HINT_NOICON" ); + power_off = !self maps/mp/zombies/_zm_power::pap_is_on(); + if ( power_off ) + { + level waittill( "Pack_A_Punch_on" ); + } + self enable_trigger(); + self thread vending_machine_trigger_think(); + self thread maps/mp/zombies/_zm_magicbox::decide_hide_show_hint( "Pack_A_Punch_off" ); + perk_machine playloopsound( "zmb_perks_packa_loop" ); + self thread shutoffpapsounds( perk_machine, packa_rollers, packa_timer ); + self thread vending_weapon_upgrade_cost(); + for ( ;; ) + { + self waittill( "trigger", player ); + index = maps/mp/zombies/_zm_weapons::get_player_index( player ); + current_weapon = player getcurrentweapon(); + if ( current_weapon == "microwavegun_zm" ) + { + current_weapon = "microwavegundw_zm"; + } + current_weapon = player maps/mp/zombies/_zm_weapons::switch_from_alt_weapon( current_weapon ); + if ( player maps/mp/zombies/_zm_magicbox::can_buy_weapon() && !player maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( player.intermission ) && !player.intermission || player isthrowinggrenade() && !player maps/mp/zombies/_zm_weapons::can_upgrade_weapon( current_weapon ) ) + { + wait 0,1; + continue; + } + else + { + if ( isDefined( level.pap_moving ) && level.pap_moving ) + { + break; + } + else + { + if ( player isswitchingweapons() ) + { + wait 0,1; + if ( player isswitchingweapons() ) + { + break; + } + } + else if ( !maps/mp/zombies/_zm_weapons::is_weapon_or_base_included( current_weapon ) ) + { + break; + } + else current_cost = self.cost; + player.restore_ammo = undefined; + player.restore_clip = undefined; + player.restore_stock = undefined; + player_restore_clip_size = undefined; + player.restore_max = undefined; + upgrade_as_attachment = will_upgrade_weapon_as_attachment( current_weapon ); + if ( upgrade_as_attachment ) + { + current_cost = self.attachment_cost; + player.restore_ammo = 1; + player.restore_clip = player getweaponammoclip( current_weapon ); + player.restore_clip_size = weaponclipsize( current_weapon ); + player.restore_stock = player getweaponammostock( current_weapon ); + player.restore_max = weaponmaxammo( current_weapon ); + } + if ( player.score < current_cost ) + { + self playsound( "deny" ); + if ( isDefined( level.custom_pap_deny_vo_func ) ) + { + player [[ level.custom_pap_deny_vo_func ]](); + } + else + { + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + } + break; + } + else + { + flag_set( "pack_machine_in_use" ); + maps/mp/_demo::bookmark( "zm_player_use_packapunch", getTime(), player ); + player maps/mp/zombies/_zm_stats::increment_client_stat( "use_pap" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "use_pap" ); + self thread destroy_weapon_in_blackout( player ); + self thread destroy_weapon_on_disconnect( player ); + player maps/mp/zombies/_zm_score::minus_to_player_score( current_cost ); + sound = "evt_bottle_dispense"; + playsoundatposition( sound, self.origin ); + self thread maps/mp/zombies/_zm_audio::play_jingle_or_stinger( "mus_perks_packa_sting" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", "upgrade_wait" ); + self disable_trigger(); + if ( isDefined( upgrade_as_attachment ) && !upgrade_as_attachment ) + { + player thread do_player_general_vox( "general", "pap_wait", 10, 100 ); + } + else + { + player thread do_player_general_vox( "general", "pap_wait2", 10, 100 ); + } + player thread do_knuckle_crack(); + self.current_weapon = current_weapon; + upgrade_name = maps/mp/zombies/_zm_weapons::get_upgrade_weapon( current_weapon, upgrade_as_attachment ); + player third_person_weapon_upgrade( current_weapon, upgrade_name, packa_rollers, perk_machine, self ); + self enable_trigger(); + self sethintstring( &"ZOMBIE_GET_UPGRADED" ); + if ( isDefined( player ) ) + { + self setvisibletoplayer( player ); + self thread wait_for_player_to_take( player, current_weapon, packa_timer, upgrade_as_attachment ); + } + self thread wait_for_timeout( current_weapon, packa_timer, player ); + self waittill_any( "pap_timeout", "pap_taken", "pap_player_disconnected" ); + self.current_weapon = ""; + if ( isDefined( self.worldgun ) && isDefined( self.worldgun.worldgundw ) ) + { + self.worldgun.worldgundw delete(); + } + if ( isDefined( self.worldgun ) ) + { + self.worldgun delete(); + } + if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + { + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH_ATT", self.cost ); + } + else + { + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH", self.cost ); + } + self setvisibletoall(); + flag_clear( "pack_machine_in_use" ); + } + } + } + } +} + +shutoffpapsounds( ent1, ent2, ent3 ) +{ + while ( 1 ) + { + level waittill( "Pack_A_Punch_off" ); + level thread turnonpapsounds( ent1 ); + ent1 stoploopsound( 0,1 ); + ent2 stoploopsound( 0,1 ); + ent3 stoploopsound( 0,1 ); + } +} + +turnonpapsounds( ent ) +{ + level waittill( "Pack_A_Punch_on" ); + ent playloopsound( "zmb_perks_packa_loop" ); +} + +vending_weapon_upgrade_cost() +{ + level endon( "Pack_A_Punch_off" ); + while ( 1 ) + { + self.cost = 5000; + self.attachment_cost = 2000; + if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + { + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH_ATT", self.cost ); + } + else + { + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH", self.cost ); + } + level waittill( "powerup bonfire sale" ); + self.cost = 1000; + self.attachment_cost = 1000; + if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + { + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH_ATT", self.cost ); + } + else + { + self sethintstring( &"ZOMBIE_PERK_PACKAPUNCH", self.cost ); + } + level waittill( "bonfire_sale_off" ); + } +} + +wait_for_player_to_take( player, weapon, packa_timer, upgrade_as_attachment ) +{ + current_weapon = self.current_weapon; + upgrade_name = self.upgrade_name; +/# + assert( isDefined( current_weapon ), "wait_for_player_to_take: weapon does not exist" ); +#/ +/# + assert( isDefined( upgrade_name ), "wait_for_player_to_take: upgrade_weapon does not exist" ); +#/ + upgrade_weapon = upgrade_name; + self endon( "pap_timeout" ); + level endon( "Pack_A_Punch_off" ); + while ( 1 ) + { + packa_timer playloopsound( "zmb_perks_packa_ticktock" ); + self waittill( "trigger", trigger_player ); + if ( isDefined( level.pap_grab_by_anyone ) && level.pap_grab_by_anyone ) + { + player = trigger_player; + } + packa_timer stoploopsound( 0,05 ); + if ( trigger_player == player ) + { + player maps/mp/zombies/_zm_stats::increment_client_stat( "pap_weapon_grabbed" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "pap_weapon_grabbed" ); + current_weapon = player getcurrentweapon(); +/# + if ( current_weapon == "none" ) + { + iprintlnbold( "WEAPON IS NONE, PACKAPUNCH RETRIEVAL DENIED" ); +#/ + } + if ( is_player_valid( player ) && player.is_drinking > 0 && !is_placeable_mine( current_weapon ) && !is_equipment( current_weapon ) && level.revive_tool != current_weapon && current_weapon != "none" && !player hacker_active() ) + { + maps/mp/_demo::bookmark( "zm_player_grabbed_packapunch", getTime(), player ); + self notify( "pap_taken" ); + player notify( "pap_taken" ); + player.pap_used = 1; + if ( isDefined( upgrade_as_attachment ) && !upgrade_as_attachment ) + { + player thread do_player_general_vox( "general", "pap_arm", 15, 100 ); + } + else + { + player thread do_player_general_vox( "general", "pap_arm2", 15, 100 ); + } + weapon_limit = 2; + if ( player hasperk( "specialty_additionalprimaryweapon" ) ) + { + weapon_limit = 3; + } + player maps/mp/zombies/_zm_weapons::take_fallback_weapon(); + primaries = player getweaponslistprimaries(); + if ( isDefined( primaries ) && primaries.size >= weapon_limit ) + { + player maps/mp/zombies/_zm_weapons::weapon_give( upgrade_weapon ); + } + else + { + player giveweapon( upgrade_weapon, 0, player maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( upgrade_weapon ) ); + player givestartammo( upgrade_weapon ); + } + player switchtoweapon( upgrade_weapon ); + if ( isDefined( player.restore_ammo ) && player.restore_ammo ) + { + new_clip = player.restore_clip + ( weaponclipsize( upgrade_weapon ) - player.restore_clip_size ); + new_stock = player.restore_stock + ( weaponmaxammo( upgrade_weapon ) - player.restore_max ); + player setweaponammostock( upgrade_weapon, new_stock ); + player setweaponammoclip( upgrade_weapon, new_clip ); + } + player.restore_ammo = undefined; + player.restore_clip = undefined; + player.restore_stock = undefined; + player.restore_max = undefined; + player.restore_clip_size = undefined; + player maps/mp/zombies/_zm_weapons::play_weapon_vo( upgrade_weapon ); + return; + } + } + wait 0,05; + } +} + +wait_for_timeout( weapon, packa_timer, player ) +{ + self endon( "pap_taken" ); + self endon( "pap_player_disconnected" ); + self thread wait_for_disconnect( player ); + wait level.packapunch_timeout; + self notify( "pap_timeout" ); + packa_timer stoploopsound( 0,05 ); + packa_timer playsound( "zmb_perks_packa_deny" ); + maps/mp/zombies/_zm_weapons::unacquire_weapon_toggle( weapon ); + if ( isDefined( player ) ) + { + player maps/mp/zombies/_zm_stats::increment_client_stat( "pap_weapon_not_grabbed" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "pap_weapon_not_grabbed" ); + } +} + +wait_for_disconnect( player ) +{ + self endon( "pap_taken" ); + self endon( "pap_timeout" ); + while ( isDefined( player ) ) + { + wait 0,1; + } +/# + println( "*** PAP : User disconnected." ); +#/ + self notify( "pap_player_disconnected" ); +} + +destroy_weapon_on_disconnect( player ) +{ + self endon( "pap_timeout" ); + self endon( "pap_taken" ); + level endon( "Pack_A_Punch_off" ); + player waittill( "disconnect" ); + if ( isDefined( self.worldgun ) ) + { + if ( isDefined( self.worldgun.worldgundw ) ) + { + self.worldgun.worldgundw delete(); + } + self.worldgun delete(); + } +} + +destroy_weapon_in_blackout( player ) +{ + self endon( "pap_timeout" ); + self endon( "pap_taken" ); + self endon( "pap_player_disconnected" ); + level waittill( "Pack_A_Punch_off" ); + if ( isDefined( self.worldgun ) ) + { + self.worldgun rotateto( self.worldgun.angles + ( randomint( 90 ) - 45, 0, randomint( 360 ) - 180 ), 1,5, 0, 0 ); + player playlocalsound( level.zmb_laugh_alias ); + wait 1,5; + if ( isDefined( self.worldgun.worldgundw ) ) + { + self.worldgun.worldgundw delete(); + } + self.worldgun delete(); + } +} + +do_knuckle_crack() +{ + gun = self upgrade_knuckle_crack_begin(); + self waittill_any( "fake_death", "death", "player_downed", "weapon_change_complete" ); + self upgrade_knuckle_crack_end( gun ); +} + +upgrade_knuckle_crack_begin() +{ + self increment_is_drinking(); + self disable_player_move_states( 1 ); + primaries = self getweaponslistprimaries(); + gun = self getcurrentweapon(); + weapon = "zombie_knuckle_crack"; + if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment( gun ) ) + { + self notify( "zmb_lost_knife" ); + self takeweapon( gun ); + } + else + { + return; + } + self giveweapon( weapon ); + self switchtoweapon( weapon ); + return gun; +} + +upgrade_knuckle_crack_end( gun ) +{ +/# + assert( !is_zombie_perk_bottle( gun ) ); +#/ +/# + assert( gun != level.revive_tool ); +#/ + self enable_player_move_states(); + weapon = "zombie_knuckle_crack"; + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + self takeweapon( weapon ); + return; + } + self decrement_is_drinking(); + self takeweapon( weapon ); + primaries = self getweaponslistprimaries(); + if ( self.is_drinking > 0 ) + { + return; + } + else if ( isDefined( primaries ) && primaries.size > 0 ) + { + self switchtoweapon( primaries[ 0 ] ); + } + else + { + if ( self hasweapon( level.laststandpistol ) ) + { + self switchtoweapon( level.laststandpistol ); + return; + } + else + { + self maps/mp/zombies/_zm_weapons::give_fallback_weapon(); + } + } +} + +turn_packapunch_on() +{ + vending_weapon_upgrade_trigger = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + i = 0; + while ( i < vending_weapon_upgrade_trigger.size ) + { + perk = getent( vending_weapon_upgrade_trigger[ i ].target, "targetname" ); + if ( isDefined( perk ) ) + { + perk setmodel( "p6_anim_zm_buildable_pap" ); + } + i++; + } + for ( ;; ) + { + level waittill( "Pack_A_Punch_on" ); + i = 0; + while ( i < vending_weapon_upgrade_trigger.size ) + { + perk = getent( vending_weapon_upgrade_trigger[ i ].target, "targetname" ); + if ( isDefined( perk ) ) + { + perk thread activate_packapunch(); + } + i++; + } + level waittill( "Pack_A_Punch_off" ); + i = 0; + while ( i < vending_weapon_upgrade_trigger.size ) + { + perk = getent( vending_weapon_upgrade_trigger[ i ].target, "targetname" ); + if ( isDefined( perk ) ) + { + perk thread deactivate_packapunch(); + } + i++; + } + } +} + +activate_packapunch() +{ + self setmodel( "p6_anim_zm_buildable_pap_on" ); + self playsound( "zmb_perks_power_on" ); + self vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + timer = 0; + duration = 0,05; +} + +deactivate_packapunch() +{ + self setmodel( "p6_anim_zm_buildable_pap" ); +} + +turn_sleight_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_sleight", "targetname" ); + machine_triggers = getentarray( "vending_sleight", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_sleight" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "sleight_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_sleight_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "sleight_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + array_thread( machine_triggers, ::set_power_on, 1 ); + level notify( "specialty_fastreload_power_on" ); + level waittill( "sleight_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +use_solo_revive() +{ + if ( isDefined( level.using_solo_revive ) ) + { + return level.using_solo_revive; + } + players = get_players(); + solo_mode = 0; + if ( players.size == 1 || isDefined( level.force_solo_quick_revive ) && level.force_solo_quick_revive ) + { + solo_mode = 1; + } + level.using_solo_revive = solo_mode; + return solo_mode; +} + +turn_revive_on() +{ + level endon( "stop_quickrevive_logic" ); + machine = getentarray( "vending_revive", "targetname" ); + machine_triggers = getentarray( "vending_revive", "target" ); + machine_model = undefined; + machine_clip = undefined; + flag_wait( "start_zombie_round_logic" ); + players = get_players(); + solo_mode = 0; + if ( use_solo_revive() ) + { + solo_mode = 1; + } + start_state = 0; + start_state = solo_mode; + while ( 1 ) + { + machine = getentarray( "vending_revive", "targetname" ); + machine_triggers = getentarray( "vending_revive", "target" ); + i = 0; + while ( i < machine.size ) + { + if ( flag_exists( "solo_game" ) && flag_exists( "solo_revive" ) && flag( "solo_game" ) && flag( "solo_revive" ) ) + { + machine[ i ] hide(); + } + machine[ i ] setmodel( "zombie_vending_revive" ); + if ( isDefined( level.quick_revive_final_pos ) ) + { + level.quick_revive_default_origin = level.quick_revive_final_pos; + } + if ( !isDefined( level.quick_revive_default_origin ) ) + { + level.quick_revive_default_origin = machine[ i ].origin; + level.quick_revive_default_angles = machine[ i ].angles; + } + level.quick_revive_machine = machine[ i ]; + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + if ( isDefined( start_state ) && !start_state ) + { + level waittill( "revive_on" ); + } + start_state = 0; + i = 0; + while ( i < machine.size ) + { + if ( isDefined( machine[ i ].classname ) && machine[ i ].classname == "script_model" ) + { + if ( isDefined( machine[ i ].script_noteworthy ) && machine[ i ].script_noteworthy == "clip" ) + { + machine_clip = machine[ i ]; + i++; + continue; + } + else + { + machine[ i ] setmodel( "zombie_vending_revive_on" ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine_model = machine[ i ]; + machine[ i ] thread perk_fx( "revive_light" ); + machine[ i ] notify( "stop_loopsound" ); + machine[ i ] thread play_loop_on_machine(); + if ( isDefined( machine_triggers[ i ] ) ) + { + machine_clip = machine_triggers[ i ].clip; + } + if ( isDefined( machine_triggers[ i ] ) ) + { + blocker_model = machine_triggers[ i ].blocker_model; + } + } + } + i++; + } + wait_network_frame(); + if ( solo_mode && isDefined( machine_model ) && !is_true( machine_model.ishidden ) ) + { + machine_model thread revive_solo_fx( machine_clip, blocker_model ); + } + array_thread( machine_triggers, ::set_power_on, 1 ); + level notify( "specialty_quickrevive_power_on" ); + if ( isDefined( machine_model ) ) + { + machine_model.ishidden = 0; + } + notify_str = level waittill_any_return( "revive_off", "revive_hide" ); + should_hide = 0; + if ( notify_str == "revive_hide" ) + { + should_hide = 1; + } + i = 0; + while ( i < machine.size ) + { + if ( isDefined( machine[ i ].classname ) && machine[ i ].classname == "script_model" ) + { + machine[ i ] turn_perk_off( should_hide ); + } + i++; + } + } +} + +revive_solo_fx( machine_clip, blocker_model ) +{ + if ( level flag_exists( "solo_revive" ) && flag( "solo_revive" ) && !flag( "solo_game" ) ) + { + return; + } + if ( isDefined( machine_clip ) ) + { + level.quick_revive_machine_clip = machine_clip; + } + if ( !isDefined( level.solo_revive_init ) ) + { + level.solo_revive_init = 1; + flag_init( "solo_revive" ); + } + level notify( "revive_solo_fx" ); + level endon( "revive_solo_fx" ); + self endon( "death" ); + flag_wait( "solo_revive" ); + if ( isDefined( level.revive_solo_fx_func ) ) + { + level thread [[ level.revive_solo_fx_func ]](); + } + wait 2; + self playsound( "zmb_box_move" ); + playsoundatposition( "zmb_whoosh", self.origin ); + if ( isDefined( self._linked_ent ) ) + { + self unlink(); + } + self moveto( self.origin + vectorScale( ( 0, -1, 0 ), 40 ), 3 ); + if ( isDefined( level.custom_vibrate_func ) ) + { + [[ level.custom_vibrate_func ]]( self ); + } + else + { + direction = self.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + self vibrate( direction, 10, 0,5, 5 ); + } + self waittill( "movedone" ); + playfx( level._effect[ "poltergeist" ], self.origin ); + playsoundatposition( "zmb_box_poof", self.origin ); + level clientnotify( "drb" ); + if ( isDefined( self.fx ) ) + { + self.fx unlink(); + self.fx delete(); + } + if ( isDefined( machine_clip ) ) + { + machine_clip trigger_off(); + machine_clip connectpaths(); + } + if ( isDefined( blocker_model ) ) + { + blocker_model show(); + } + level notify( "revive_hide" ); +} + +turn_jugger_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_jugg", "targetname" ); + machine_triggers = getentarray( "vending_jugg", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_jugg" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "juggernog_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_jugg_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "jugger_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_armorvest_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "juggernog_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +turn_doubletap_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_doubletap", "targetname" ); + machine_triggers = getentarray( "vending_doubletap", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_doubletap2" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "doubletap_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_doubletap2_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "doubletap_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_rof_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "doubletap_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +turn_marathon_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_marathon", "targetname" ); + machine_triggers = getentarray( "vending_marathon", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_marathon" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "marathon_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_marathon_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "marathon_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_longersprint_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "marathon_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +turn_divetonuke_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_divetonuke", "targetname" ); + machine_triggers = getentarray( "vending_divetonuke", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_nuke" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "divetonuke_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_nuke_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "divetonuke_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_flakjacket_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "divetonuke_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +divetonuke_explode( attacker, origin ) +{ + radius = level.zombie_vars[ "zombie_perk_divetonuke_radius" ]; + min_damage = level.zombie_vars[ "zombie_perk_divetonuke_min_damage" ]; + max_damage = level.zombie_vars[ "zombie_perk_divetonuke_max_damage" ]; + radiusdamage( origin, radius, max_damage, min_damage, attacker, "MOD_GRENADE_SPLASH" ); + playfx( level._effect[ "divetonuke_groundhit" ], origin ); + attacker playsound( "zmb_phdflop_explo" ); + attacker setclientfieldtoplayer( "dive2nuke_visionset", 1 ); + wait_network_frame(); + wait_network_frame(); + attacker setclientfieldtoplayer( "dive2nuke_visionset", 0 ); +} + +turn_deadshot_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_deadshot", "targetname" ); + machine_triggers = getentarray( "vending_deadshot", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_ads" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "deadshot_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_ads_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "deadshot_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_deadshot_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "deadshot_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +turn_tombstone_on() +{ + level endon( "tombstone_removed" ); + while ( 1 ) + { + machine = getentarray( "vending_tombstone", "targetname" ); + machine_triggers = getentarray( "vending_tombstone", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_tombstone" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "tombstone_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_tombstone_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "tombstone_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_scavenger_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "tombstone_off" ); + array_thread( machine, ::turn_perk_off ); + players = get_players(); + _a1593 = players; + _k1593 = getFirstArrayKey( _a1593 ); + while ( isDefined( _k1593 ) ) + { + player = _a1593[ _k1593 ]; + player.hasperkspecialtytombstone = undefined; + _k1593 = getNextArrayKey( _a1593, _k1593 ); + } + } +} + +turn_additionalprimaryweapon_on() +{ + while ( 1 ) + { + machine = getentarray( "vending_additionalprimaryweapon", "targetname" ); + machine_triggers = getentarray( "vending_additionalprimaryweapon", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_three_gun" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + if ( level.script != "zombie_cod5_prototype" && level.script != "zombie_cod5_sumpf" ) + { + flag_wait( "power_on" ); + } + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_three_gun_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "additionalprimaryweapon_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_additionalprimaryweapon_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "additionalprimaryweapon_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +turn_chugabud_on() +{ + maps/mp/zombies/_zm_chugabud::init(); + if ( isDefined( level.vsmgr_prio_visionset_zm_whos_who ) ) + { + maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_whos_who", 5000, level.vsmgr_prio_visionset_zm_whos_who, 1, 1 ); + } + while ( 1 ) + { + machine = getentarray( "vending_chugabud", "targetname" ); + machine_triggers = getentarray( "vending_chugabud", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "p6_zm_vending_chugabud" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "chugabud_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "p6_zm_vending_chugabud_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "tombstone_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_finalstand_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "chugabud_off" ); + array_thread( machine, ::turn_perk_off ); + players = get_players(); + _a1679 = players; + _k1679 = getFirstArrayKey( _a1679 ); + while ( isDefined( _k1679 ) ) + { + player = _a1679[ _k1679 ]; + player.hasperkspecialtychugabud = undefined; + _k1679 = getNextArrayKey( _a1679, _k1679 ); + } + } +} + +turn_electric_cherry_on() +{ + maps/mp/zombies/_zm_electric_cherry::init(); + if ( isDefined( level.vsmgr_prio_visionset_zm_electric_cherry ) ) + { + maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_electric_cherry", 5000, level.vsmgr_prio_visionset_zm_electric_cherry, 1, 1 ); + } + while ( 1 ) + { + machine = getentarray( "vending_electriccherry", "targetname" ); + machine_triggers = getentarray( "vending_electriccherry", "target" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "p6_zm_vending_electric_cherry_off" ); + i++; + } + array_thread( machine_triggers, ::set_power_on, 0 ); + level waittill( "electric_cherry_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "p6_zm_vending_electric_cherry_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "jugger_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + level notify( "specialty_grenadepulldeath_power_on" ); + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "electric_cherry_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +turn_sixth_sense_on() +{ +} + +turn_oneinch_punch_on() +{ +} + +turn_vulture_on() +{ + maps/mp/zombies/_zm_vulture::init_vulture(); + while ( 1 ) + { + machine = getentarray( "vending_vulture", "targetname" ); + machine_triggers = getentarray( "vending_vulture", "target" ); + array_thread( machine_triggers, ::set_power_on, 0 ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_revive" ); + i++; + } + level waittill( "vulture_on" ); + level notify( "specialty_nomotionsensor" + "_power_on" ); + i = 0; + while ( i < machine.size ) + { + machine[ i ] setmodel( "zombie_vending_revive_on" ); + machine[ i ] vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + machine[ i ] playsound( "zmb_perks_power_on" ); + machine[ i ] thread perk_fx( "vulture_light" ); + machine[ i ] thread play_loop_on_machine(); + i++; + } + array_thread( machine_triggers, ::set_power_on, 1 ); + level waittill( "vulture_off" ); + array_thread( machine, ::turn_perk_off ); + } +} + +set_power_on( state ) +{ + self.power_on = state; +} + +turn_perk_off( ishidden ) +{ + self notify( "stop_loopsound" ); + newmachine = spawn( "script_model", self.origin ); + newmachine.angles = self.angles; + newmachine.targetname = self.targetname; + if ( is_true( ishidden ) ) + { + newmachine.ishidden = 1; + newmachine hide(); + } + self delete(); +} + +play_loop_on_machine() +{ + sound_ent = spawn( "script_origin", self.origin ); + sound_ent playloopsound( "zmb_perks_machine_loop" ); + sound_ent linkto( self ); + self waittill( "stop_loopsound" ); + sound_ent unlink(); + sound_ent delete(); +} + +perk_fx( fx, turnofffx ) +{ + if ( isDefined( turnofffx ) ) + { + self.perk_fx = 0; + } + else + { + wait 3; + if ( isDefined( self ) && !is_true( self.perk_fx ) ) + { + playfxontag( level._effect[ fx ], self, "tag_origin" ); + self.perk_fx = 1; + } + } +} + +electric_perks_dialog() +{ + self endon( "death" ); + wait 0,01; + flag_wait( "start_zombie_round_logic" ); + players = get_players(); + if ( players.size == 1 ) + { + return; + } + self endon( "warning_dialog" ); + level endon( "switch_flipped" ); + timer = 0; + while ( 1 ) + { + wait 0,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !isDefined( players[ i ] ) ) + { + i++; + continue; + } + else dist = distancesquared( players[ i ].origin, self.origin ); + if ( dist > 4900 ) + { + timer = 0; + i++; + continue; + } + else if ( dist < 4900 && timer < 3 ) + { + wait 0,5; + timer++; + } + if ( dist < 4900 && timer == 3 ) + { + if ( !isDefined( players[ i ] ) ) + { + i++; + continue; + } + else + { + players[ i ] thread do_player_vo( "vox_start", 5 ); + wait 3; + self notify( "warning_dialog" ); +/# + iprintlnbold( "warning_given" ); +#/ + } + } + i++; + } + } +} + +vending_trigger_think() +{ + self endon( "death" ); + wait 0,01; + perk = self.script_noteworthy; + solo = 0; + start_on = 0; + level.revive_machine_is_solo = 0; + if ( isDefined( perk ) || perk == "specialty_quickrevive" && perk == "specialty_quickrevive_upgrade" ) + { + flag_wait( "start_zombie_round_logic" ); + solo = use_solo_revive(); + self endon( "stop_quickrevive_logic" ); + level.quick_revive_trigger = self; + if ( solo ) + { + if ( !is_true( level.revive_machine_is_solo ) ) + { + start_on = 1; + players = get_players(); + _a1994 = players; + _k1994 = getFirstArrayKey( _a1994 ); + while ( isDefined( _k1994 ) ) + { + player = _a1994[ _k1994 ]; + if ( !isDefined( player.lives ) ) + { + player.lives = 0; + } + _k1994 = getNextArrayKey( _a1994, _k1994 ); + } + level maps/mp/zombies/_zm::zombiemode_solo_last_stand_pistol(); + } + level.revive_machine_is_solo = 1; + } + } + self sethintstring( &"ZOMBIE_NEED_POWER" ); + self setcursorhint( "HINT_NOICON" ); + self usetriggerrequirelookat(); + cost = level.zombie_vars[ "zombie_perk_cost" ]; + switch( perk ) + { + case "specialty_armorvest": + case "specialty_armorvest_upgrade": + cost = 2500; + break; + case "specialty_quickrevive": + case "specialty_quickrevive_upgrade": + if ( solo ) + { + cost = 500; + } + else + { + cost = 1500; + } + break; + case "specialty_fastreload": + case "specialty_fastreload_upgrade": + cost = 3000; + break; + case "specialty_rof": + case "specialty_rof_upgrade": + cost = 2000; + break; + case "specialty_longersprint": + case "specialty_longersprint_upgrade": + cost = 2000; + break; + case "specialty_flakjacket": + case "specialty_flakjacket_upgrade": + cost = 2000; + break; + case "specialty_deadshot": + case "specialty_deadshot_upgrade": + cost = 1500; + break; + case "specialty_additionalprimaryweapon": + case "specialty_additionalprimaryweapon_upgrade": + cost = 4000; + break; + case "specialty_grenadepulldeath": + case "specialty_grenadepulldeath_upgrade": + cost = 2000; + break; + case "specialty_nomotionsensor": + cost = 2000; + break; + } + self.cost = cost; + if ( !start_on ) + { + notify_name = perk + "_power_on"; + level waittill( notify_name ); + } + start_on = 0; + if ( !isDefined( level._perkmachinenetworkchoke ) ) + { + level._perkmachinenetworkchoke = 0; + } + else + { + level._perkmachinenetworkchoke++; + } + i = 0; + while ( i < level._perkmachinenetworkchoke ) + { + wait_network_frame(); + i++; + } + self thread maps/mp/zombies/_zm_audio::perks_a_cola_jingle_timer(); + self thread check_player_has_perk( perk ); + switch( perk ) + { + case "specialty_armorvest": + case "specialty_armorvest_upgrade": + self sethintstring( &"ZOMBIE_PERK_JUGGERNAUT", cost ); + break; + case "specialty_quickrevive": + case "specialty_quickrevive_upgrade": + if ( solo ) + { + self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE_SOLO", cost ); + } + else + { + self sethintstring( &"ZOMBIE_PERK_QUICKREVIVE", cost ); + } + break; + case "specialty_fastreload": + case "specialty_fastreload_upgrade": + self sethintstring( &"ZOMBIE_PERK_FASTRELOAD", cost ); + break; + case "specialty_rof": + case "specialty_rof_upgrade": + self sethintstring( &"ZOMBIE_PERK_DOUBLETAP", cost ); + break; + case "specialty_longersprint": + case "specialty_longersprint_upgrade": + self sethintstring( &"ZOMBIE_PERK_MARATHON", cost ); + break; + case "specialty_flakjacket": + case "specialty_flakjacket_upgrade": + self sethintstring( &"ZOMBIE_PERK_DIVETONUKE", cost ); + break; + case "specialty_deadshot": + case "specialty_deadshot_upgrade": + self sethintstring( &"ZOMBIE_PERK_DEADSHOT", cost ); + break; + case "specialty_additionalprimaryweapon": + case "specialty_additionalprimaryweapon_upgrade": + self sethintstring( &"ZOMBIE_PERK_ADDITIONALPRIMARYWEAPON", cost ); + break; + case "specialty_scavenger": + case "specialty_scavenger_upgrade": + self sethintstring( &"ZOMBIE_PERK_TOMBSTONE", cost ); + break; + case "specialty_finalstand": + case "specialty_finalstand_upgrade": + self sethintstring( &"ZOMBIE_PERK_CHUGABUD", cost ); + break; + case "specialty_grenadepulldeath": + case "specialty_grenadepulldeath_upgrade": + self sethintstring( &"ZOMBIE_PERK_FASTRELOAD", cost ); + break; + case "specialty_nomotionsensor": + self sethintstring( &"ZOMBIE_PERK_VULTURE", cost ); + break; + default: + self sethintstring( ( perk + " Cost: " ) + level.zombie_vars[ "zombie_perk_cost" ] ); + } + for ( ;; ) + { + self waittill( "trigger", player ); + index = maps/mp/zombies/_zm_weapons::get_player_index( player ); + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( player.intermission ) && player.intermission ) + { + continue; + } + else + { + if ( player in_revive_trigger() ) + { + break; + } + else if ( !player maps/mp/zombies/_zm_magicbox::can_buy_weapon() ) + { + wait 0,1; + break; + } + else if ( player isthrowinggrenade() ) + { + wait 0,1; + break; + } + else if ( player isswitchingweapons() ) + { + wait 0,1; + break; + } + else if ( player.is_drinking > 0 ) + { + wait 0,1; + break; + } + else if ( player hasperk( perk ) || player has_perk_paused( perk ) ) + { + cheat = 0; +/# + if ( getDvarInt( "zombie_cheat" ) >= 5 ) + { + cheat = 1; +#/ + } + if ( cheat != 1 ) + { + self playsound( "deny" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 1 ); + break; + } + } + else if ( player.score < cost ) + { + self playsound( "evt_perk_deny" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "perk_deny", undefined, 0 ); + break; + } + else if ( player.num_perks >= 4 ) + { + self playsound( "evt_perk_deny" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "sigh" ); + break; + } + else + { + sound = "evt_bottle_dispense"; + playsoundatposition( sound, self.origin ); + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + player.perk_purchased = perk; + self thread maps/mp/zombies/_zm_audio::play_jingle_or_stinger( self.script_label ); + self thread vending_trigger_post_think( player, perk ); + } + } + break; +} +} + +vending_trigger_post_think( player, perk ) +{ + player endon( "disconnect" ); + player endon( "end_game" ); + player endon( "perk_abort_drinking" ); + gun = player perk_give_bottle_begin( perk ); + evt = player waittill_any_return( "fake_death", "death", "player_downed", "weapon_change_complete" ); + if ( evt == "weapon_change_complete" ) + { + player thread wait_give_perk( perk, 1 ); + } + player perk_give_bottle_end( gun, perk ); + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( player.intermission ) && player.intermission ) + { + return; + } + player notify( "burp" ); + if ( is_classic() ) + { + player cash_back_player_drinks_perk(); + } + if ( isDefined( level.perk_bought_func ) ) + { + player [[ level.perk_bought_func ]]( perk ); + } + player.perk_purchased = undefined; + if ( is_false( self.power_on ) ) + { + wait 1; + perk_pause( self.script_noteworthy ); + } + bbprint( "zombie_uses", "playername %s playerscore %d round %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, perk, self.origin, "perk" ); +} + +cash_back_player_drinks_perk() +{ + if ( isDefined( level.pers_upgrade_cash_back ) && level.pers_upgrade_cash_back ) + { + if ( isDefined( self.pers_upgrades_awarded[ "cash_back" ] ) && self.pers_upgrades_awarded[ "cash_back" ] ) + { + self thread cash_back_money_reward(); + self thread cash_back_player_prone_check( 1 ); + return; + } + else + { + if ( self.pers[ "pers_cash_back_bought" ] < level.pers_cash_back_num_perks_required ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_cash_back_bought", 0 ); + return; + } + else + { + self thread cash_back_player_prone_check( 0 ); + } + } + } +} + +cash_back_money_reward() +{ + self endon( "death" ); + step = 5; + amount_per_step = int( level.pers_cash_back_money_reward / step ); + i = 0; + while ( i < step ) + { + self maps/mp/zombies/_zm_score::add_to_player_score( amount_per_step ); + wait 0,2; + i++; + } +} + +cash_back_player_prone_check( got_ability ) +{ + self endon( "death" ); + prone_time = 2,5; + start_time = getTime(); + while ( 1 ) + { + time = getTime(); + dt = ( time - start_time ) / 1000; + if ( dt > prone_time ) + { + break; + } + else + { + if ( self getstance() == "prone" ) + { + if ( !got_ability ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_cash_back_prone", 0 ); + wait 0,8; + } + return; + } + wait 0,01; + } + } + if ( got_ability ) + { + self notify( "cash_back_failed_prone" ); + } +} + +solo_revive_buy_trigger_move( revive_trigger_noteworthy ) +{ + self endon( "death" ); + revive_perk_triggers = getentarray( revive_trigger_noteworthy, "script_noteworthy" ); + _a2453 = revive_perk_triggers; + _k2453 = getFirstArrayKey( _a2453 ); + while ( isDefined( _k2453 ) ) + { + revive_perk_trigger = _a2453[ _k2453 ]; + self thread solo_revive_buy_trigger_move_trigger( revive_perk_trigger ); + _k2453 = getNextArrayKey( _a2453, _k2453 ); + } +} + +solo_revive_buy_trigger_move_trigger( revive_perk_trigger ) +{ + self endon( "death" ); + revive_perk_trigger setinvisibletoplayer( self ); + if ( level.solo_lives_given >= 3 ) + { + revive_perk_trigger trigger_off(); + if ( isDefined( level._solo_revive_machine_expire_func ) ) + { + revive_perk_trigger [[ level._solo_revive_machine_expire_func ]](); + } + return; + } + while ( self.lives > 0 ) + { + wait 0,1; + } + revive_perk_trigger setvisibletoplayer( self ); +} + +wait_give_perk( perk, bought ) +{ + self endon( "player_downed" ); + self endon( "disconnect" ); + self endon( "end_game" ); + self endon( "perk_abort_drinking" ); + self waittill_notify_or_timeout( "burp", 0,5 ); + self give_perk( perk, bought ); +} + +give_perk( perk, bought ) +{ + self setperk( perk ); + self.num_perks++; + if ( isDefined( bought ) && bought ) + { + self maps/mp/zombies/_zm_audio::playerexert( "burp" ); + self delay_thread( 1,5, ::maps/mp/zombies/_zm_audio::perk_vox, perk ); + self setblur( 4, 0,1 ); + wait 0,1; + self setblur( 0, 0,1 ); + self notify( "perk_bought" ); + } + self perk_set_max_health_if_jugg( perk, 1, 0 ); + if ( perk == "specialty_deadshot" ) + { + self setclientfieldtoplayer( "deadshot_perk", 1 ); + } + else + { + if ( perk == "specialty_deadshot_upgrade" ) + { + self setclientfieldtoplayer( "deadshot_perk", 1 ); + } + } + if ( perk == "specialty_scavenger" ) + { + self.hasperkspecialtytombstone = 1; + } + players = get_players(); + if ( use_solo_revive() && perk == "specialty_quickrevive" ) + { + self.lives = 1; + if ( !isDefined( level.solo_lives_given ) ) + { + level.solo_lives_given = 0; + } + if ( isDefined( level.solo_game_free_player_quickrevive ) ) + { + level.solo_game_free_player_quickrevive = undefined; + } + else + { + level.solo_lives_given++; + } + if ( level.solo_lives_given >= 3 ) + { + flag_set( "solo_revive" ); + } + self thread solo_revive_buy_trigger_move( perk ); + } + if ( perk == "specialty_finalstand" ) + { + self.lives = 1; + self.hasperkspecialtychugabud = 1; + self notify( "perk_chugabud_activated" ); + } + if ( perk == "specialty_nomotionsensor" ) + { + self maps/mp/zombies/_zm_vulture::give_vulture_perk(); + } + self set_perk_clientfield( perk, 1 ); + maps/mp/_demo::bookmark( "zm_player_perk", getTime(), self ); + self maps/mp/zombies/_zm_stats::increment_client_stat( "perks_drank" ); + self maps/mp/zombies/_zm_stats::increment_client_stat( perk + "_drank" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( perk + "_drank" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "perks_drank" ); + if ( !isDefined( self.perk_history ) ) + { + self.perk_history = []; + } + self.perk_history = add_to_array( self.perk_history, perk, 0 ); + self notify( "perk_acquired" ); + self thread perk_think( perk ); +} + +perk_set_max_health_if_jugg( perk, set_premaxhealth, clamp_health_to_max_health ) +{ + max_total_health = undefined; + if ( perk == "specialty_armorvest" ) + { + if ( set_premaxhealth ) + { + self.premaxhealth = self.maxhealth; + } + max_total_health = level.zombie_vars[ "zombie_perk_juggernaut_health" ]; + } + else if ( perk == "specialty_armorvest_upgrade" ) + { + if ( set_premaxhealth ) + { + self.premaxhealth = self.maxhealth; + } + max_total_health = level.zombie_vars[ "zombie_perk_juggernaut_health_upgrade" ]; + } + else if ( perk == "jugg_upgrade" ) + { + if ( set_premaxhealth ) + { + self.premaxhealth = self.maxhealth; + } + if ( self hasperk( "specialty_armorvest" ) ) + { + max_total_health = level.zombie_vars[ "zombie_perk_juggernaut_health" ]; + } + else + { + max_total_health = 100; + } + } + else + { + if ( perk == "health_reboot" ) + { + max_total_health = 100; + } + } + if ( isDefined( max_total_health ) ) + { + if ( maps/mp/zombies/_zm_utility::is_classic() ) + { + if ( isDefined( self.pers_upgrades_awarded[ "jugg" ] ) && self.pers_upgrades_awarded[ "jugg" ] ) + { + max_total_health += level.pers_jugg_upgrade_health_bonus; + } + } + self setmaxhealth( max_total_health ); + if ( isDefined( clamp_health_to_max_health ) && clamp_health_to_max_health == 1 ) + { + if ( self.health > self.maxhealth ) + { + self.health = self.maxhealth; + } + } + } +} + +check_player_has_perk( perk ) +{ + self endon( "death" ); +/# + if ( getDvarInt( "zombie_cheat" ) >= 5 ) + { + return; +#/ + } + dist = 16384; + while ( 1 ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( distancesquared( players[ i ].origin, self.origin ) < dist ) + { + if ( !players[ i ] hasperk( perk ) && !players[ i ] has_perk_paused( perk ) && !players[ i ] in_revive_trigger() && !is_equipment_that_blocks_purchase( players[ i ] getcurrentweapon() ) && !players[ i ] hacker_active() ) + { + self setinvisibletoplayer( players[ i ], 0 ); + i++; + continue; + } + else + { + self setinvisibletoplayer( players[ i ], 1 ); + } + } + i++; + } + wait 0,1; + } +} + +vending_set_hintstring( perk ) +{ + switch( perk ) + { + case "specialty_armorvest": + case "specialty_armorvest_upgrade": + break; + } +} + +perk_think( perk ) +{ +/# + if ( getDvarInt( "zombie_cheat" ) >= 5 ) + { + if ( isDefined( self.perk_hud[ perk ] ) ) + { + return; +#/ + } + } + perk_str = perk + "_stop"; + result = self waittill_any_return( "fake_death", "death", "player_downed", perk_str ); + do_retain = 1; + if ( use_solo_revive() && perk == "specialty_quickrevive" ) + { + do_retain = 0; + } + if ( do_retain && isDefined( self._retain_perks ) && self._retain_perks ) + { + return; + } + self unsetperk( perk ); + self.num_perks--; + + switch( perk ) + { + case "specialty_armorvest": + self setmaxhealth( 100 ); + break; + case "specialty_additionalprimaryweapon": + if ( result == perk_str ) + { + self maps/mp/zombies/_zm::take_additionalprimaryweapon(); + } + break; + case "specialty_deadshot": + self setclientfieldtoplayer( "deadshot_perk", 0 ); + break; + case "specialty_deadshot_upgrade": + self setclientfieldtoplayer( "deadshot_perk", 0 ); + break; + case "specialty_nomotionsensor": + self maps/mp/zombies/_zm_vulture::take_vulture_perk(); + break; + } + self set_perk_clientfield( perk, 0 ); + self.perk_purchased = undefined; + if ( isDefined( level.perk_lost_func ) ) + { + self [[ level.perk_lost_func ]]( perk ); + } + self notify( "perk_lost" ); +} + +set_perk_clientfield( perk, state ) +{ + switch( perk ) + { + case "specialty_additionalprimaryweapon": + self setclientfieldtoplayer( "perk_additional_primary_weapon", state ); + break; + case "specialty_deadshot": + self setclientfieldtoplayer( "perk_dead_shot", state ); + break; + case "specialty_flakjacket": + self setclientfieldtoplayer( "perk_dive_to_nuke", state ); + break; + case "specialty_rof": + self setclientfieldtoplayer( "perk_double_tap", state ); + break; + case "specialty_armorvest": + self setclientfieldtoplayer( "perk_juggernaut", state ); + break; + case "specialty_longersprint": + self setclientfieldtoplayer( "perk_marathon", state ); + break; + case "specialty_quickrevive": + self setclientfieldtoplayer( "perk_quick_revive", state ); + break; + case "specialty_fastreload": + self setclientfieldtoplayer( "perk_sleight_of_hand", state ); + break; + case "specialty_scavenger": + self setclientfieldtoplayer( "perk_tombstone", state ); + break; + case "specialty_finalstand": + self setclientfieldtoplayer( "perk_chugabud", state ); + break; + case "specialty_grenadepulldeath": + self setclientfieldtoplayer( "perk_electric_cherry", state ); + break; + case "specialty_nomotionsensor": + self setclientfieldtoplayer( "perk_vulture", state ); + break; + default: + } + } +} + +perk_hud_destroy( perk ) +{ + self.perk_hud[ perk ] destroy_hud(); +} + +perk_hud_grey( perk, grey_on_off ) +{ + if ( grey_on_off ) + { + self.perk_hud[ perk ].alpha = 0,3; + } + else + { + self.perk_hud[ perk ].alpha = 1; + } +} + +perk_hud_flash() +{ + self endon( "death" ); + self.flash = 1; + self scaleovertime( 0,05, 32, 32 ); + wait 0,3; + self scaleovertime( 0,05, 24, 24 ); + wait 0,3; + self.flash = 0; +} + +perk_flash_audio( perk ) +{ + alias = undefined; + switch( perk ) + { + case "specialty_armorvest": + alias = "zmb_hud_flash_jugga"; + break; + case "specialty_quickrevive": + alias = "zmb_hud_flash_revive"; + break; + case "specialty_fastreload": + alias = "zmb_hud_flash_speed"; + break; + case "specialty_longersprint": + alias = "zmb_hud_flash_stamina"; + break; + case "specialty_flakjacket": + alias = "zmb_hud_flash_phd"; + break; + case "specialty_deadshot": + alias = "zmb_hud_flash_deadshot"; + break; + case "specialty_additionalprimaryweapon": + alias = "zmb_hud_flash_additionalprimaryweapon"; + break; + } + if ( isDefined( alias ) ) + { + self playlocalsound( alias ); + } +} + +perk_hud_start_flash( perk ) +{ + if ( self hasperk( perk ) && isDefined( self.perk_hud ) ) + { + hud = self.perk_hud[ perk ]; + if ( isDefined( hud ) ) + { + if ( isDefined( hud.flash ) && !hud.flash ) + { + hud thread perk_hud_flash(); + self thread perk_flash_audio( perk ); + } + } + } +} + +perk_hud_stop_flash( perk, taken ) +{ + if ( self hasperk( perk ) && isDefined( self.perk_hud ) ) + { + hud = self.perk_hud[ perk ]; + if ( isDefined( hud ) ) + { + hud.flash = undefined; + if ( isDefined( taken ) ) + { + hud notify( "stop_flash_perk" ); + } + } + } +} + +perk_give_bottle_begin( perk ) +{ + self increment_is_drinking(); + self disable_player_move_states( 1 ); + gun = self getcurrentweapon(); + weapon = ""; + switch( perk ) + { + case " _upgrade": + case "specialty_armorvest": + weapon = "zombie_perk_bottle_jugg"; + break; + case "specialty_quickrevive": + case "specialty_quickrevive_upgrade": + weapon = "zombie_perk_bottle_revive"; + break; + case "specialty_fastreload": + case "specialty_fastreload_upgrade": + weapon = "zombie_perk_bottle_sleight"; + break; + case "specialty_rof": + case "specialty_rof_upgrade": + weapon = "zombie_perk_bottle_doubletap"; + break; + case "specialty_longersprint": + case "specialty_longersprint_upgrade": + weapon = "zombie_perk_bottle_marathon"; + break; + case "specialty_flakjacket": + case "specialty_flakjacket_upgrade": + weapon = "zombie_perk_bottle_nuke"; + break; + case "specialty_deadshot": + case "specialty_deadshot_upgrade": + weapon = "zombie_perk_bottle_deadshot"; + break; + case "specialty_additionalprimaryweapon": + case "specialty_additionalprimaryweapon_upgrade": + weapon = "zombie_perk_bottle_additionalprimaryweapon"; + break; + case "specialty_scavenger": + case "specialty_scavenger_upgrade": + weapon = "zombie_perk_bottle_tombstone"; + break; + case "specialty_finalstand": + case "specialty_finalstand_upgrade": + weapon = "zombie_perk_bottle_whoswho"; + break; + case "specialty_grenadepulldeath": + case "specialty_grenadepulldeath_upgrade": + weapon = "zombie_perk_bottle_cherry"; + break; + case "specialty_nomotionsensor": + weapon = "zombie_perk_bottle_vulture"; + break; + } + self giveweapon( weapon ); + self switchtoweapon( weapon ); + return gun; +} + +perk_give_bottle_end( gun, perk ) +{ + self endon( "perk_abort_drinking" ); +/# + assert( !is_zombie_perk_bottle( gun ) ); +#/ +/# + assert( gun != level.revive_tool ); +#/ + self enable_player_move_states(); + weapon = ""; + switch( perk ) + { + case "specialty_rof": + case "specialty_rof_upgrade": + weapon = "zombie_perk_bottle_doubletap"; + break; + case "specialty_longersprint": + case "specialty_longersprint_upgrade": + weapon = "zombie_perk_bottle_marathon"; + break; + case "specialty_flakjacket": + case "specialty_flakjacket_upgrade": + weapon = "zombie_perk_bottle_nuke"; + break; + case "specialty_armorvest": + case "specialty_armorvest_upgrade": + weapon = "zombie_perk_bottle_jugg"; + self.jugg_used = 1; + break; + case "specialty_quickrevive": + case "specialty_quickrevive_upgrade": + weapon = "zombie_perk_bottle_revive"; + break; + case "specialty_fastreload": + case "specialty_fastreload_upgrade": + weapon = "zombie_perk_bottle_sleight"; + self.speed_used = 1; + break; + case "specialty_deadshot": + case "specialty_deadshot_upgrade": + weapon = "zombie_perk_bottle_deadshot"; + break; + case "specialty_additionalprimaryweapon": + case "specialty_additionalprimaryweapon_upgrade": + weapon = "zombie_perk_bottle_additionalprimaryweapon"; + break; + case "specialty_scavenger": + case "specialty_scavenger_upgrade": + weapon = "zombie_perk_bottle_tombstone"; + break; + case "specialty_finalstand": + case "specialty_finalstand_upgrade": + weapon = "zombie_perk_bottle_whoswho"; + break; + case "specialty_grenadepulldeath": + case "specialty_grenadepulldeath_upgrade": + weapon = "zombie_perk_bottle_cherry"; + break; + case "specialty_nomotionsensor": + weapon = "zombie_perk_bottle_vulture"; + break; + } + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() || isDefined( self.intermission ) && self.intermission ) + { + self takeweapon( weapon ); + return; + } + self takeweapon( weapon ); + if ( self is_multiple_drinking() ) + { + self decrement_is_drinking(); + return; + } + else if ( gun != "none" && !is_placeable_mine( gun ) && !is_equipment_that_blocks_purchase( gun ) ) + { + self switchtoweapon( gun ); + if ( is_melee_weapon( gun ) ) + { + self decrement_is_drinking(); + return; + } + } + else + { + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } + self waittill( "weapon_change_complete" ); + if ( !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isDefined( self.intermission ) && !self.intermission ) + { + self decrement_is_drinking(); + } +} + +perk_abort_drinking( post_delay ) +{ + if ( self.is_drinking ) + { + self notify( "perk_abort_drinking" ); + self decrement_is_drinking(); + self enable_player_move_states(); + if ( isDefined( post_delay ) ) + { + wait post_delay; + } + } +} + +give_random_perk() +{ + vending_triggers = getentarray( "zombie_vending", "targetname" ); + perks = []; + i = 0; + while ( i < vending_triggers.size ) + { + perk = vending_triggers[ i ].script_noteworthy; + if ( isDefined( self.perk_purchased ) && self.perk_purchased == perk ) + { + i++; + continue; + } + else + { + if ( perk == "specialty_weapupgrade" ) + { + i++; + continue; + } + else + { + if ( !self hasperk( perk ) && !self has_perk_paused( perk ) ) + { + perks[ perks.size ] = perk; + } + } + } + i++; + } + if ( perks.size > 0 ) + { + perks = array_randomize( perks ); + self give_perk( perks[ 0 ] ); + } +} + +lose_random_perk() +{ + vending_triggers = getentarray( "zombie_vending", "targetname" ); + perks = []; + i = 0; + while ( i < vending_triggers.size ) + { + perk = vending_triggers[ i ].script_noteworthy; + if ( isDefined( self.perk_purchased ) && self.perk_purchased == perk ) + { + i++; + continue; + } + else + { + if ( self hasperk( perk ) || self has_perk_paused( perk ) ) + { + perks[ perks.size ] = perk; + } + } + i++; + } + if ( perks.size > 0 ) + { + perks = array_randomize( perks ); + perk = perks[ 0 ]; + perk_str = perk + "_stop"; + self notify( perk_str ); + if ( use_solo_revive() && perk == "specialty_quickrevive" ) + { + self.lives--; + + } + } +} + +update_perk_hud() +{ + while ( isDefined( self.perk_hud ) ) + { + keys = getarraykeys( self.perk_hud ); + i = 0; + while ( i < self.perk_hud.size ) + { + self.perk_hud[ keys[ i ] ].x = i * 30; + i++; + } + } +} + +quantum_bomb_give_nearest_perk_validation( position ) +{ + vending_triggers = getentarray( "zombie_vending", "targetname" ); + range_squared = 32400; + i = 0; + while ( i < vending_triggers.size ) + { + if ( distancesquared( vending_triggers[ i ].origin, position ) < range_squared ) + { + return 1; + } + i++; + } + return 0; +} + +quantum_bomb_give_nearest_perk_result( position ) +{ + [[ level.quantum_bomb_play_mystery_effect_func ]]( position ); + vending_triggers = getentarray( "zombie_vending", "targetname" ); + nearest = 0; + i = 1; + while ( i < vending_triggers.size ) + { + if ( distancesquared( vending_triggers[ i ].origin, position ) < distancesquared( vending_triggers[ nearest ].origin, position ) ) + { + nearest = i; + } + i++; + } + players = get_players(); + perk = vending_triggers[ nearest ].script_noteworthy; + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( player.sessionstate == "spectator" || player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + i++; + continue; + } + else + { + if ( !player hasperk( perk ) && isDefined( player.perk_purchased ) && player.perk_purchased != perk && randomint( 5 ) ) + { + if ( player == self ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); + } + player give_perk( perk ); + player [[ level.quantum_bomb_play_player_effect_func ]](); + } + } + i++; + } +} + +perk_pause( perk ) +{ + if ( perk == "Pack_A_Punch" || perk == "specialty_weapupgrade" ) + { + return; + } + j = 0; + while ( j < get_players().size ) + { + player = get_players()[ j ]; + if ( !isDefined( player.disabled_perks ) ) + { + player.disabled_perks = []; + } + if ( isDefined( player.disabled_perks[ perk ] ) && !player.disabled_perks[ perk ] ) + { + player.disabled_perks[ perk ] = player hasperk( perk ); + } + if ( player.disabled_perks[ perk ] ) + { + player unsetperk( perk ); + player set_perk_clientfield( perk, 2 ); + if ( perk == "specialty_armorvest" || perk == "specialty_armorvest_upgrade" ) + { + player setmaxhealth( player.premaxhealth ); + if ( player.health > player.maxhealth ) + { + player.health = player.maxhealth; + } + } +/# + println( " ZM PERKS " + player.name + " paused perk " + perk + "\n" ); +#/ + } + j++; + } +} + +perk_unpause( perk ) +{ + if ( !isDefined( perk ) ) + { + return; + } + if ( perk == "Pack_A_Punch" ) + { + return; + } + j = 0; + while ( j < get_players().size ) + { + player = get_players()[ j ]; + if ( isDefined( player.disabled_perks ) && isDefined( player.disabled_perks[ perk ] ) && player.disabled_perks[ perk ] ) + { + player.disabled_perks[ perk ] = 0; + player set_perk_clientfield( perk, 1 ); + player setperk( perk ); +/# + println( " ZM PERKS " + player.name + " unpaused perk " + perk + "\n" ); +#/ + if ( issubstr( perk, "specialty_scavenger" ) ) + { + player.hasperkspecialtytombstone = 1; + } + player perk_set_max_health_if_jugg( perk, 0, 0 ); + } + j++; + } +} + +perk_pause_all_perks() +{ + vending_triggers = getentarray( "zombie_vending", "targetname" ); + _a3414 = vending_triggers; + _k3414 = getFirstArrayKey( _a3414 ); + while ( isDefined( _k3414 ) ) + { + trigger = _a3414[ _k3414 ]; + maps/mp/zombies/_zm_perks::perk_pause( trigger.script_noteworthy ); + _k3414 = getNextArrayKey( _a3414, _k3414 ); + } +} + +perk_unpause_all_perks() +{ + vending_triggers = getentarray( "zombie_vending", "targetname" ); + _a3424 = vending_triggers; + _k3424 = getFirstArrayKey( _a3424 ); + while ( isDefined( _k3424 ) ) + { + trigger = _a3424[ _k3424 ]; + maps/mp/zombies/_zm_perks::perk_unpause( trigger.script_noteworthy ); + _k3424 = getNextArrayKey( _a3424, _k3424 ); + } +} + +has_perk_paused( perk ) +{ + if ( isDefined( self.disabled_perks ) && isDefined( self.disabled_perks[ perk ] ) && self.disabled_perks[ perk ] ) + { + return 1; + } + return 0; +} + +getvendingmachinenotify() +{ + if ( !isDefined( self ) ) + { + return ""; + } + switch( self.script_noteworthy ) + { + case "specialty_armorvest": + case "specialty_armorvest_upgrade": + return "juggernog"; + case "specialty_quickrevive": + case "specialty_quickrevive_upgrade": + return "revive"; + case "specialty_fastreload": + case "specialty_fastreload_upgrade": + return "sleight"; + case "specialty_rof": + case "specialty_rof_upgrade": + return "doubletap"; + case "specialty_longersprint": + case "specialty_longersprint_upgrade": + return "marathon"; + case "specialty_flakjacket": + case "specialty_flakjacket_upgrade": + return "divetonuke"; + case "specialty_deadshot": + case "specialty_deadshot_upgrade": + return "deadshot"; + case "specialty_additionalprimaryweapon": + case "specialty_additionalprimaryweapon_upgrade": + return "additionalprimaryweapon"; + case "specialty_scavenger": + case "specialty_scavenger_upgrade": + return "tombstone"; + case "specialty_finalstand": + case "specialty_finalstand_upgrade": + return "chugabud"; + case "specialty_grenadepulldeath": + case "specialty_grenadepulldeath_upgrade": + return "electric_cherry"; + case "specialty_nomotionsensor": + return "vulture"; + case "specialty_weapupgrade": + return "Pack_A_Punch"; + default: + return undefined; + } + } + } + } + } + } + } + } + } + } + } + } + } +} + +perk_machine_removal( machine, replacement_model ) +{ + if ( !isDefined( machine ) ) + { + return; + } + trig = getent( machine, "script_noteworthy" ); + machine_model = undefined; + if ( isDefined( trig ) ) + { + trig notify( "warning_dialog" ); + while ( isDefined( trig.target ) ) + { + parts = getentarray( trig.target, "targetname" ); + i = 0; + while ( i < parts.size ) + { + if ( isDefined( parts[ i ].classname ) && parts[ i ].classname == "script_model" ) + { + machine_model = parts[ i ]; + i++; + continue; + } + else + { + if ( parts[ i ].script_noteworthy ) + { + if ( isDefined( parts[ i ].script_noteworthy == "clip" ) ) + { + model_clip = parts[ i ]; + } + i++; + continue; + } + else + { + parts[ i ] delete(); + } + } + i++; + } + } + if ( isDefined( replacement_model ) && isDefined( machine_model ) ) + { + machine_model setmodel( replacement_model ); + } + else + { + if ( !isDefined( replacement_model ) && isDefined( machine_model ) ) + { + machine_model delete(); + if ( isDefined( model_clip ) ) + { + model_clip delete(); + } + if ( isDefined( trig.clip ) ) + { + trig.clip delete(); + } + } + } + if ( isDefined( trig.bump ) ) + { + trig.bump delete(); + } + trig delete(); + } +} + +perk_machine_spawn_init() +{ + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = ( level.scr_zm_ui_gametype + "_perks_" ) + location; + pos = []; + if ( isDefined( level.override_perk_targetname ) ) + { + structs = getstructarray( level.override_perk_targetname, "targetname" ); + } + else + { + structs = getstructarray( "zm_perk_machine", "targetname" ); + } + _a3627 = structs; + _k3627 = getFirstArrayKey( _a3627 ); + while ( isDefined( _k3627 ) ) + { + struct = _a3627[ _k3627 ]; + if ( isDefined( struct.script_string ) ) + { + tokens = strtok( struct.script_string, " " ); + _a3632 = tokens; + _k3632 = getFirstArrayKey( _a3632 ); + while ( isDefined( _k3632 ) ) + { + token = _a3632[ _k3632 ]; + if ( token == match_string ) + { + pos[ pos.size ] = struct; + } + _k3632 = getNextArrayKey( _a3632, _k3632 ); + } + } + else pos[ pos.size ] = struct; + _k3627 = getNextArrayKey( _a3627, _k3627 ); + } + if ( !isDefined( pos ) || pos.size == 0 ) + { + return; + } + precachemodel( "zm_collision_perks1" ); + i = 0; + while ( i < pos.size ) + { + perk = pos[ i ].script_noteworthy; + if ( isDefined( perk ) && isDefined( pos[ i ].model ) ) + { + use_trigger = spawn( "trigger_radius_use", pos[ i ].origin + vectorScale( ( 0, -1, 0 ), 30 ), 0, 40, 70 ); + use_trigger.targetname = "zombie_vending"; + use_trigger.script_noteworthy = perk; + use_trigger triggerignoreteam(); + perk_machine = spawn( "script_model", pos[ i ].origin ); + perk_machine.angles = pos[ i ].angles; + perk_machine setmodel( pos[ i ].model ); + bump_trigger = spawn( "trigger_radius", pos[ i ].origin, 0, 35, 64 ); + bump_trigger.script_activated = 1; + bump_trigger.script_sound = "zmb_perks_bump_bottle"; + bump_trigger.targetname = "audio_bump_trigger"; + if ( perk != "specialty_weapupgrade" ) + { + bump_trigger thread thread_bump_trigger(); + } + collision = spawn( "script_model", pos[ i ].origin, 1 ); + collision.angles = pos[ i ].angles; + collision setmodel( "zm_collision_perks1" ); + collision.script_noteworthy = "clip"; + collision disconnectpaths(); + use_trigger.clip = collision; + use_trigger.machine = perk_machine; + use_trigger.bump = bump_trigger; + if ( isDefined( pos[ i ].blocker_model ) ) + { + use_trigger.blocker_model = pos[ i ].blocker_model; + } + if ( isDefined( pos[ i ].script_int ) ) + { + perk_machine.script_int = pos[ i ].script_int; + } + if ( isDefined( pos[ i ].turn_on_notify ) ) + { + perk_machine.turn_on_notify = pos[ i ].turn_on_notify; + } + switch( perk ) + { + case "specialty_quickrevive": + case "specialty_quickrevive_upgrade": + use_trigger.script_sound = "mus_perks_revive_jingle"; + use_trigger.script_string = "revive_perk"; + use_trigger.script_label = "mus_perks_revive_sting"; + use_trigger.target = "vending_revive"; + perk_machine.script_string = "revive_perk"; + perk_machine.targetname = "vending_revive"; + bump_trigger.script_string = "revive_perk"; + break; + i++; + continue; + case "specialty_fastreload": + case "specialty_fastreload_upgrade": + use_trigger.script_sound = "mus_perks_speed_jingle"; + use_trigger.script_string = "speedcola_perk"; + use_trigger.script_label = "mus_perks_speed_sting"; + use_trigger.target = "vending_sleight"; + perk_machine.script_string = "speedcola_perk"; + perk_machine.targetname = "vending_sleight"; + bump_trigger.script_string = "speedcola_perk"; + break; + i++; + continue; + case "specialty_longersprint": + case "specialty_longersprint_upgrade": + use_trigger.script_sound = "mus_perks_stamin_jingle"; + use_trigger.script_string = "marathon_perk"; + use_trigger.script_label = "mus_perks_stamin_sting"; + use_trigger.target = "vending_marathon"; + perk_machine.script_string = "marathon_perk"; + perk_machine.targetname = "vending_marathon"; + bump_trigger.script_string = "marathon_perk"; + break; + i++; + continue; + case "specialty_armorvest": + case "specialty_armorvest_upgrade": + use_trigger.script_sound = "mus_perks_jugganog_jingle"; + use_trigger.script_string = "jugg_perk"; + use_trigger.script_label = "mus_perks_jugganog_sting"; + use_trigger.longjinglewait = 1; + use_trigger.target = "vending_jugg"; + perk_machine.script_string = "jugg_perk"; + perk_machine.targetname = "vending_jugg"; + bump_trigger.script_string = "jugg_perk"; + break; + i++; + continue; + case "specialty_scavenger": + case "specialty_scavenger_upgrade": + use_trigger.script_sound = "mus_perks_tombstone_jingle"; + use_trigger.script_string = "tombstone_perk"; + use_trigger.script_label = "mus_perks_tombstone_sting"; + use_trigger.target = "vending_tombstone"; + perk_machine.script_string = "tombstone_perk"; + perk_machine.targetname = "vending_tombstone"; + bump_trigger.script_string = "tombstone_perk"; + break; + i++; + continue; + case "specialty_rof": + case "specialty_rof_upgrade": + use_trigger.script_sound = "mus_perks_doubletap_jingle"; + use_trigger.script_string = "tap_perk"; + use_trigger.script_label = "mus_perks_doubletap_sting"; + use_trigger.target = "vending_doubletap"; + perk_machine.script_string = "tap_perk"; + perk_machine.targetname = "vending_doubletap"; + bump_trigger.script_string = "tap_perk"; + break; + i++; + continue; + case "specialty_finalstand": + case "specialty_finalstand_upgrade": + use_trigger.script_sound = "mus_perks_whoswho_jingle"; + use_trigger.script_string = "tap_perk"; + use_trigger.script_label = "mus_perks_whoswho_sting"; + use_trigger.target = "vending_chugabud"; + perk_machine.script_string = "tap_perk"; + perk_machine.targetname = "vending_chugabud"; + bump_trigger.script_string = "tap_perk"; + break; + i++; + continue; + case "specialty_additionalprimaryweapon": + case "specialty_additionalprimaryweapon_upgrade": + use_trigger.script_sound = "mus_perks_mulekick_jingle"; + use_trigger.script_string = "tap_perk"; + use_trigger.script_label = "mus_perks_mulekick_sting"; + use_trigger.target = "vending_additionalprimaryweapon"; + perk_machine.script_string = "tap_perk"; + perk_machine.targetname = "vending_additionalprimaryweapon"; + bump_trigger.script_string = "tap_perk"; + break; + i++; + continue; + case "specialty_weapupgrade": + use_trigger.target = "vending_packapunch"; + use_trigger.script_sound = "mus_perks_packa_jingle"; + use_trigger.script_label = "mus_perks_packa_sting"; + use_trigger.longjinglewait = 1; + perk_machine.targetname = "vending_packapunch"; + flag_pos = getstruct( pos[ i ].target, "targetname" ); + if ( isDefined( flag_pos ) ) + { + perk_machine_flag = spawn( "script_model", flag_pos.origin ); + perk_machine_flag.angles = flag_pos.angles; + perk_machine_flag setmodel( flag_pos.model ); + perk_machine_flag.targetname = "pack_flag"; + perk_machine.target = "pack_flag"; + } + bump_trigger.script_string = "perks_rattle"; + break; + i++; + continue; + case "specialty_grenadepulldeath": + case "specialty_grenadepulldeath_upgrade": + use_trigger.script_sound = "mus_perks_speed_jingle"; + use_trigger.script_string = "electric_cherry_perk"; + use_trigger.script_label = "mus_perks_speed_sting"; + use_trigger.target = "vending_electriccherry"; + perk_machine.script_string = "electriccherry_perk"; + perk_machine.targetname = "vendingelectric_cherry"; + bump_trigger.script_string = "electriccherry_perk"; + break; + i++; + continue; + case "specialty_nomotionsensor": + use_trigger.script_sound = "mus_perks_revive_jingle"; + use_trigger.script_string = "vulture_perk"; + use_trigger.script_label = "mus_perks_revive_sting"; + use_trigger.target = "vending_vulture"; + perk_machine.script_string = "vulture_perk"; + perk_machine.targetname = "vending_vulture"; + bump_trigger.script_string = "vulture_perk"; + break; + i++; + continue; + default: + use_trigger.script_sound = "mus_perks_speed_jingle"; + use_trigger.script_string = "speedcola_perk"; + use_trigger.script_label = "mus_perks_speed_sting"; + use_trigger.target = "vending_sleight"; + perk_machine.script_string = "speedcola_perk"; + perk_machine.targetname = "vending_sleight"; + bump_trigger.script_string = "speedcola_perk"; + break; + i++; + continue; + } + } + i++; + } +} + +get_perk_machine_start_state( perk ) +{ + if ( isDefined( level.vending_machines_powered_on_at_start ) && level.vending_machines_powered_on_at_start ) + { + return 1; + } + if ( perk == "specialty_quickrevive" || perk == "specialty_quickrevive_upgrade" ) + { +/# + assert( isDefined( level.revive_machine_is_solo ) ); +#/ + return level.revive_machine_is_solo; + } + return 0; +} + +perks_register_clientfield() +{ + if ( isDefined( level.zombiemode_using_additionalprimaryweapon_perk ) && level.zombiemode_using_additionalprimaryweapon_perk ) + { + registerclientfield( "toplayer", "perk_additional_primary_weapon", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_deadshot_perk ) && level.zombiemode_using_deadshot_perk ) + { + registerclientfield( "toplayer", "perk_dead_shot", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_divetonuke_perk ) && level.zombiemode_using_divetonuke_perk ) + { + registerclientfield( "toplayer", "perk_dive_to_nuke", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_doubletap_perk ) && level.zombiemode_using_doubletap_perk ) + { + registerclientfield( "toplayer", "perk_double_tap", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_juggernaut_perk ) && level.zombiemode_using_juggernaut_perk ) + { + registerclientfield( "toplayer", "perk_juggernaut", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_marathon_perk ) && level.zombiemode_using_marathon_perk ) + { + registerclientfield( "toplayer", "perk_marathon", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_revive_perk ) && level.zombiemode_using_revive_perk ) + { + registerclientfield( "toplayer", "perk_quick_revive", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_sleightofhand_perk ) && level.zombiemode_using_sleightofhand_perk ) + { + registerclientfield( "toplayer", "perk_sleight_of_hand", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_tombstone_perk ) && level.zombiemode_using_tombstone_perk ) + { + registerclientfield( "toplayer", "perk_tombstone", 1, 2, "int" ); + } + if ( isDefined( level.zombiemode_using_perk_intro_fx ) && level.zombiemode_using_perk_intro_fx ) + { + registerclientfield( "scriptmover", "clientfield_perk_intro_fx", 1000, 1, "int" ); + } + if ( isDefined( level.zombiemode_using_chugabud_perk ) && level.zombiemode_using_chugabud_perk ) + { + registerclientfield( "toplayer", "perk_chugabud", 1000, 1, "int" ); + } + if ( isDefined( level.zombiemode_using_electric_cherry_perk ) && level.zombiemode_using_electric_cherry_perk ) + { + registerclientfield( "toplayer", "perk_electric_cherry", 7000, 1, "int" ); + } + if ( isDefined( level.zombiemode_using_vulture_perk ) && level.zombiemode_using_vulture_perk ) + { + registerclientfield( "toplayer", "perk_vulture", 7000, 1, "int" ); + } +} + +thread_bump_trigger() +{ + for ( ;; ) + { + self waittill( "trigger", trigplayer ); + trigplayer playsound( self.script_sound ); + while ( is_player_valid( trigplayer ) && trigplayer istouching( self ) ) + { + wait 0,5; + } + } +} + +reenable_quickrevive( machine_clip, solo_mode ) +{ + if ( isDefined( level.revive_machine_spawned ) && !is_true( level.revive_machine_spawned ) ) + { + return; + } + wait 0,1; + power_state = 0; + if ( is_true( solo_mode ) ) + { + power_state = 1; + should_pause = 1; + players = get_players(); + _a3981 = players; + _k3981 = getFirstArrayKey( _a3981 ); + while ( isDefined( _k3981 ) ) + { + player = _a3981[ _k3981 ]; + if ( isDefined( player.lives ) && player.lives > 0 && power_state ) + { + should_pause = 0; + } + else + { + if ( isDefined( player.lives ) && player.lives < 1 ) + { + should_pause = 1; + } + } + _k3981 = getNextArrayKey( _a3981, _k3981 ); + } + if ( should_pause ) + { + perk_pause( "specialty_quickrevive" ); + } + else + { + perk_unpause( "specialty_quickrevive" ); + } + if ( isDefined( level.solo_revive_init ) && level.solo_revive_init && flag( "solo_revive" ) ) + { + disable_quickrevive( machine_clip ); + return; + } + update_quickrevive_power_state( 1 ); + unhide_quickrevive(); + restart_quickrevive(); + level notify( "revive_off" ); + wait 0,1; + level notify( "stop_quickrevive_logic" ); + } + else + { + if ( isDefined( level._dont_unhide_quickervive_on_hotjoin ) && !level._dont_unhide_quickervive_on_hotjoin ) + { + unhide_quickrevive(); + level notify( "revive_off" ); + wait 0,1; + } + level notify( "revive_hide" ); + level notify( "stop_quickrevive_logic" ); + restart_quickrevive(); + if ( flag( "power_on" ) ) + { + power_state = 1; + } + update_quickrevive_power_state( power_state ); + } + level thread turn_revive_on(); + if ( power_state ) + { + perk_unpause( "specialty_quickrevive" ); + level notify( "revive_on" ); + wait 0,1; + level notify( "specialty_quickrevive_power_on" ); + } + else + { + perk_pause( "specialty_quickrevive" ); + } + if ( !is_true( solo_mode ) ) + { + return; + } + should_pause = 1; + players = get_players(); + _a4059 = players; + _k4059 = getFirstArrayKey( _a4059 ); + while ( isDefined( _k4059 ) ) + { + player = _a4059[ _k4059 ]; + if ( !is_player_valid( player ) ) + { + } + else if ( player hasperk( "specialty_quickrevive" ) ) + { + if ( !isDefined( player.lives ) ) + { + player.lives = 0; + } + if ( !isDefined( level.solo_lives_given ) ) + { + level.solo_lives_given = 0; + } + level.solo_lives_given++; + player.lives++; + if ( isDefined( player.lives ) && player.lives > 0 && power_state ) + { + should_pause = 0; + break; + } + else + { + should_pause = 1; + } + } + _k4059 = getNextArrayKey( _a4059, _k4059 ); + } + if ( should_pause ) + { + perk_pause( "specialty_quickrevive" ); + } + else + { + perk_unpause( "specialty_quickrevive" ); + } +} + +update_quickrevive_power_state( poweron ) +{ + _a4097 = level.powered_items; + _k4097 = getFirstArrayKey( _a4097 ); + while ( isDefined( _k4097 ) ) + { + item = _a4097[ _k4097 ]; + if ( isDefined( item.target ) && isDefined( item.target.script_noteworthy ) && item.target.script_noteworthy == "specialty_quickrevive" ) + { + if ( item.power && !poweron ) + { + if ( !isDefined( item.powered_count ) ) + { + item.powered_count = 0; + } + else + { + if ( item.powered_count > 0 ) + { + item.powered_count--; + + } + } + } + else + { + if ( !item.power && poweron ) + { + if ( !isDefined( item.powered_count ) ) + { + item.powered_count = 0; + } + item.powered_count++; + } + } + if ( !isDefined( item.depowered_count ) ) + { + item.depowered_count = 0; + } + item.power = poweron; + } + _k4097 = getNextArrayKey( _a4097, _k4097 ); + } +} + +restart_quickrevive() +{ + triggers = getentarray( "zombie_vending", "targetname" ); + _a4137 = triggers; + _k4137 = getFirstArrayKey( _a4137 ); + while ( isDefined( _k4137 ) ) + { + trigger = _a4137[ _k4137 ]; + if ( !isDefined( trigger.script_noteworthy ) ) + { + } + else + { + if ( trigger.script_noteworthy == "specialty_quickrevive" || trigger.script_noteworthy == "specialty_quickrevive_upgrade" ) + { + trigger notify( "stop_quickrevive_logic" ); + trigger thread vending_trigger_think(); + trigger trigger_on(); + } + } + _k4137 = getNextArrayKey( _a4137, _k4137 ); + } +} + +disable_quickrevive( machine_clip ) +{ + if ( is_true( level.solo_revive_init ) && flag( "solo_revive" ) && isDefined( level.quick_revive_machine ) ) + { + triggers = getentarray( "zombie_vending", "targetname" ); + _a4159 = triggers; + _k4159 = getFirstArrayKey( _a4159 ); + while ( isDefined( _k4159 ) ) + { + trigger = _a4159[ _k4159 ]; + if ( !isDefined( trigger.script_noteworthy ) ) + { + } + else + { + if ( trigger.script_noteworthy == "specialty_quickrevive" || trigger.script_noteworthy == "specialty_quickrevive_upgrade" ) + { + trigger trigger_off(); + } + } + _k4159 = getNextArrayKey( _a4159, _k4159 ); + } + _a4171 = level.powered_items; + _k4171 = getFirstArrayKey( _a4171 ); + while ( isDefined( _k4171 ) ) + { + item = _a4171[ _k4171 ]; + if ( isDefined( item.target ) && isDefined( item.target.script_noteworthy ) && item.target.script_noteworthy == "specialty_quickrevive" ) + { + item.power = 1; + item.self_powered = 1; + } + _k4171 = getNextArrayKey( _a4171, _k4171 ); + } + if ( isDefined( level.quick_revive_machine.original_pos ) ) + { + level.quick_revive_default_origin = level.quick_revive_machine.original_pos; + level.quick_revive_default_angles = level.quick_revive_machine.original_angles; + } + move_org = level.quick_revive_default_origin; + if ( isDefined( level.quick_revive_linked_ent ) ) + { + move_org = level.quick_revive_linked_ent.origin; + if ( isDefined( level.quick_revive_linked_ent_offset ) ) + { + move_org += level.quick_revive_linked_ent_offset; + } + level.quick_revive_machine unlink(); + } + level.quick_revive_machine moveto( move_org + vectorScale( ( 0, -1, 0 ), 40 ), 3 ); + direction = level.quick_revive_machine.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + level.quick_revive_machine vibrate( direction, 10, 0,5, 4 ); + level.quick_revive_machine waittill( "movedone" ); + level.quick_revive_machine hide(); + level.quick_revive_machine.ishidden = 1; + if ( isDefined( level.quick_revive_machine_clip ) ) + { + level.quick_revive_machine_clip connectpaths(); + level.quick_revive_machine_clip trigger_off(); + } + playfx( level._effect[ "poltergeist" ], level.quick_revive_machine.origin ); + if ( isDefined( level.quick_revive_trigger ) && isDefined( level.quick_revive_trigger.blocker_model ) ) + { + level.quick_revive_trigger.blocker_model show(); + } + level notify( "revive_hide" ); + } +} + +unhide_quickrevive() +{ + while ( players_are_in_perk_area( level.quick_revive_machine ) ) + { + wait 0,1; + } + if ( isDefined( level.quick_revive_machine_clip ) ) + { + level.quick_revive_machine_clip trigger_on(); + level.quick_revive_machine_clip disconnectpaths(); + } + if ( isDefined( level.quick_revive_final_pos ) ) + { + level.quick_revive_machine.origin = level.quick_revive_final_pos; + } + playfx( level._effect[ "poltergeist" ], level.quick_revive_machine.origin ); + if ( isDefined( level.quick_revive_trigger ) && isDefined( level.quick_revive_trigger.blocker_model ) ) + { + level.quick_revive_trigger.blocker_model hide(); + } + level.quick_revive_machine show(); + if ( isDefined( level.quick_revive_machine.original_pos ) ) + { + level.quick_revive_default_origin = level.quick_revive_machine.original_pos; + level.quick_revive_default_angles = level.quick_revive_machine.original_angles; + } + direction = level.quick_revive_machine.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + org = level.quick_revive_default_origin; + if ( isDefined( level.quick_revive_linked_ent ) ) + { + org = level.quick_revive_linked_ent.origin; + if ( isDefined( level.quick_revive_linked_ent_offset ) ) + { + org += level.quick_revive_linked_ent_offset; + } + } + if ( isDefined( level.quick_revive_linked_ent_moves ) && !level.quick_revive_linked_ent_moves && level.quick_revive_machine.origin != org ) + { + level.quick_revive_machine moveto( org, 3 ); + level.quick_revive_machine vibrate( direction, 10, 0,5, 2,9 ); + level.quick_revive_machine waittill( "movedone" ); + level.quick_revive_machine.angles = level.quick_revive_default_angles; + } + else + { + if ( isDefined( level.quick_revive_linked_ent ) ) + { + org = level.quick_revive_linked_ent.origin; + if ( isDefined( level.quick_revive_linked_ent_offset ) ) + { + org += level.quick_revive_linked_ent_offset; + } + level.quick_revive_machine.origin = org; + } + level.quick_revive_machine vibrate( vectorScale( ( 0, -1, 0 ), 100 ), 0,3, 0,4, 3 ); + } + if ( isDefined( level.quick_revive_linked_ent ) ) + { + level.quick_revive_machine linkto( level.quick_revive_linked_ent ); + } + level.quick_revive_machine.ishidden = 0; +} + +players_are_in_perk_area( perk_machine ) +{ + perk_area_origin = level.quick_revive_default_origin; + if ( isDefined( perk_machine._linked_ent ) ) + { + perk_area_origin = perk_machine._linked_ent.origin; + if ( isDefined( perk_machine._linked_ent_offset ) ) + { + perk_area_origin += perk_machine._linked_ent_offset; + } + } + in_area = 0; + players = get_players(); + dist_check = 9216; + _a4349 = players; + _k4349 = getFirstArrayKey( _a4349 ); + while ( isDefined( _k4349 ) ) + { + player = _a4349[ _k4349 ]; + if ( distancesquared( player.origin, perk_area_origin ) < dist_check ) + { + return 1; + } + _k4349 = getNextArrayKey( _a4349, _k4349 ); + } + return 0; +} + +perk_hostmigration() +{ + level endon( "end_game" ); + level notify( "perk_hostmigration" ); + level endon( "perk_hostmigration" ); + while ( 1 ) + { + level waittill( "host_migration_end" ); + jug = getentarray( "vending_jugg", "targetname" ); + tap = getentarray( "vending_doubletap", "targetname" ); + mar = getentarray( "vending_marathon", "targetname" ); + flop = getentarray( "vending_divetonuke", "targetname" ); + deadshot = getentarray( "vending_deadshot", "targetname" ); + tomb = getentarray( "vending_tombstone", "targetname" ); + extraweap = getentarray( "vending_additionalprimaryweapon", "targetname" ); + sleight = getentarray( "vending_sleight", "targetname" ); + revive = getentarray( "vending_revive", "targetname" ); + chugabud = getentarray( "vending_chugabud", "targetname" ); + electric_cherry = getentarray( "vending_electriccherry", "targetname" ); + vulture = getentarray( "vending_vulture", "targetname" ); + _a4389 = jug; + _k4389 = getFirstArrayKey( _a4389 ); + while ( isDefined( _k4389 ) ) + { + perk = _a4389[ _k4389 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_jugg_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "jugger_light" ); + } + _k4389 = getNextArrayKey( _a4389, _k4389 ); + } + _a4398 = tap; + _k4398 = getFirstArrayKey( _a4398 ); + while ( isDefined( _k4398 ) ) + { + perk = _a4398[ _k4398 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_doubletap2_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "doubletap_light" ); + } + _k4398 = getNextArrayKey( _a4398, _k4398 ); + } + _a4407 = mar; + _k4407 = getFirstArrayKey( _a4407 ); + while ( isDefined( _k4407 ) ) + { + perk = _a4407[ _k4407 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_marathon_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "marathon_light" ); + } + _k4407 = getNextArrayKey( _a4407, _k4407 ); + } + _a4416 = flop; + _k4416 = getFirstArrayKey( _a4416 ); + while ( isDefined( _k4416 ) ) + { + perk = _a4416[ _k4416 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_nuke_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "divetonuke_light" ); + } + _k4416 = getNextArrayKey( _a4416, _k4416 ); + } + _a4425 = deadshot; + _k4425 = getFirstArrayKey( _a4425 ); + while ( isDefined( _k4425 ) ) + { + perk = _a4425[ _k4425 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_ads_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "deadshot_light" ); + } + _k4425 = getNextArrayKey( _a4425, _k4425 ); + } + _a4434 = tomb; + _k4434 = getFirstArrayKey( _a4434 ); + while ( isDefined( _k4434 ) ) + { + perk = _a4434[ _k4434 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_tombstone_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "tombstone_light" ); + } + _k4434 = getNextArrayKey( _a4434, _k4434 ); + } + _a4443 = extraweap; + _k4443 = getFirstArrayKey( _a4443 ); + while ( isDefined( _k4443 ) ) + { + perk = _a4443[ _k4443 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_three_gun_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "additionalprimaryweapon_light" ); + } + _k4443 = getNextArrayKey( _a4443, _k4443 ); + } + _a4452 = sleight; + _k4452 = getFirstArrayKey( _a4452 ); + while ( isDefined( _k4452 ) ) + { + perk = _a4452[ _k4452 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_sleight_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "sleight_light" ); + } + _k4452 = getNextArrayKey( _a4452, _k4452 ); + } + _a4461 = revive; + _k4461 = getFirstArrayKey( _a4461 ); + while ( isDefined( _k4461 ) ) + { + perk = _a4461[ _k4461 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_revive_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "revive_light" ); + } + _k4461 = getNextArrayKey( _a4461, _k4461 ); + } + _a4470 = chugabud; + _k4470 = getFirstArrayKey( _a4470 ); + while ( isDefined( _k4470 ) ) + { + perk = _a4470[ _k4470 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_revive_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "tombstone_light" ); + } + _k4470 = getNextArrayKey( _a4470, _k4470 ); + } + _a4480 = electric_cherry; + _k4480 = getFirstArrayKey( _a4480 ); + while ( isDefined( _k4480 ) ) + { + perk = _a4480[ _k4480 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_revive_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "tombstone_light" ); + } + _k4480 = getNextArrayKey( _a4480, _k4480 ); + } + _a4510 = vulture; + _k4510 = getFirstArrayKey( _a4510 ); + while ( isDefined( _k4510 ) ) + { + perk = _a4510[ _k4510 ]; + if ( isDefined( perk.model ) && perk.model == "zombie_vending_revive_on" ) + { + perk perk_fx( undefined, 1 ); + perk thread perk_fx( "vulture_light" ); + } + _k4510 = getNextArrayKey( _a4510, _k4510 ); + } + } +} + +get_perk_array( ignore_chugabud ) +{ + perk_array = []; + if ( self hasperk( "specialty_armorvest" ) ) + { + perk_array[ perk_array.size ] = "specialty_armorvest"; + } + if ( self hasperk( "specialty_deadshot" ) ) + { + perk_array[ perk_array.size ] = "specialty_deadshot"; + } + if ( self hasperk( "specialty_fastreload" ) ) + { + perk_array[ perk_array.size ] = "specialty_fastreload"; + } + if ( self hasperk( "specialty_flakjacket" ) ) + { + perk_array[ perk_array.size ] = "specialty_flakjacket"; + } + if ( self hasperk( "specialty_longersprint" ) ) + { + perk_array[ perk_array.size ] = "specialty_longersprint"; + } + if ( self hasperk( "specialty_quickrevive" ) ) + { + perk_array[ perk_array.size ] = "specialty_quickrevive"; + } + if ( self hasperk( "specialty_rof" ) ) + { + perk_array[ perk_array.size ] = "specialty_rof"; + } + if ( self hasperk( "specialty_additionalprimaryweapon" ) ) + { + perk_array[ perk_array.size ] = "specialty_additionalprimaryweapon"; + } + if ( !isDefined( ignore_chugabud ) || ignore_chugabud == 0 ) + { + if ( self hasperk( "specialty_finalstand" ) ) + { + perk_array[ perk_array.size ] = "specialty_finalstand"; + } + } + return perk_array; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_pers_upgrades.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_pers_upgrades.gsc new file mode 100644 index 0000000..14c47d1 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_pers_upgrades.gsc @@ -0,0 +1,359 @@ +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_pers_upgrades_system; +#include maps/mp/_utility; +#include common_scripts/utility; + +pers_upgrade_init() +{ + setup_pers_upgrade_boards(); + setup_pers_upgrade_revive(); + setup_pers_upgrade_multi_kill_headshots(); + setup_pers_upgrade_cash_back(); + setup_pers_upgrade_insta_kill(); + setup_pers_upgrade_jugg(); + setup_pers_upgrade_carpenter(); + level thread pers_upgrades_monitor(); +} + +setup_pers_upgrade_boards() +{ + if ( isDefined( level.pers_upgrade_boards ) && level.pers_upgrade_boards ) + { + level.pers_boarding_round_start = 10; + level.pers_boarding_number_of_boards_required = 74; + pers_register_upgrade( "board", ::pers_upgrade_boards_active, "pers_boarding", level.pers_boarding_number_of_boards_required, 0 ); + } +} + +setup_pers_upgrade_revive() +{ + if ( isDefined( level.pers_upgrade_revive ) && level.pers_upgrade_revive ) + { + level.pers_revivenoperk_number_of_revives_required = 17; + level.pers_revivenoperk_number_of_chances_to_keep = 1; + pers_register_upgrade( "revive", ::pers_upgrade_revive_active, "pers_revivenoperk", level.pers_revivenoperk_number_of_revives_required, 1 ); + } +} + +setup_pers_upgrade_multi_kill_headshots() +{ + if ( isDefined( level.pers_upgrade_multi_kill_headshots ) && level.pers_upgrade_multi_kill_headshots ) + { + level.pers_multikill_headshots_required = 5; + level.pers_multikill_headshots_upgrade_reset_counter = 25; + pers_register_upgrade( "multikill_headshots", ::pers_upgrade_headshot_active, "pers_multikill_headshots", level.pers_multikill_headshots_required, 0 ); + } +} + +setup_pers_upgrade_cash_back() +{ + if ( isDefined( level.pers_upgrade_cash_back ) && level.pers_upgrade_cash_back ) + { + level.pers_cash_back_num_perks_required = 50; + level.pers_cash_back_perk_buys_prone_required = 15; + level.pers_cash_back_failed_prones = 1; + level.pers_cash_back_money_reward = 1000; + pers_register_upgrade( "cash_back", ::pers_upgrade_cash_back_active, "pers_cash_back_bought", level.pers_cash_back_num_perks_required, 0 ); + add_pers_upgrade_stat( "cash_back", "pers_cash_back_prone", level.pers_cash_back_perk_buys_prone_required ); + } +} + +setup_pers_upgrade_insta_kill() +{ + if ( isDefined( level.pers_upgrade_insta_kill ) && level.pers_upgrade_insta_kill ) + { + level.pers_insta_kill_num_required = 2; + level.pers_insta_kill_upgrade_active_time = 18; + pers_register_upgrade( "insta_kill", ::pers_upgrade_insta_kill_active, "pers_insta_kill", level.pers_insta_kill_num_required, 0 ); + } +} + +setup_pers_upgrade_jugg() +{ + if ( isDefined( level.pers_upgrade_jugg ) && level.pers_upgrade_jugg ) + { + level.pers_jugg_hit_and_die_total = 3; + level.pers_jugg_hit_and_die_round_limit = 2; + level.pers_jugg_round_reached_max = 1; + level.pers_jugg_round_lose_target = 15; + level.pers_jugg_upgrade_health_bonus = 90; + pers_register_upgrade( "jugg", ::pers_upgrade_jugg_active, "pers_jugg", level.pers_jugg_hit_and_die_total, 0 ); + } +} + +pers_upgrade_jugg_player_death_stat() +{ + if ( isDefined( level.pers_upgrade_jugg ) && level.pers_upgrade_jugg ) + { + if ( maps/mp/zombies/_zm_utility::is_classic() ) + { + if ( isDefined( self.pers_upgrades_awarded[ "jugg" ] ) && !self.pers_upgrades_awarded[ "jugg" ] ) + { + if ( level.round_number <= level.pers_jugg_hit_and_die_round_limit ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_jugg", 0 ); + } + } + } + } +} + +setup_pers_upgrade_carpenter() +{ + if ( isDefined( level.pers_upgrade_carpenter ) && level.pers_upgrade_carpenter ) + { + level.pers_carpenter_zombie_kills = 1; + pers_register_upgrade( "carpenter", ::pers_upgrade_carpenter_active, "pers_carpenter", level.pers_carpenter_zombie_kills, 0 ); + } +} + +pers_upgrade_boards_active() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "pers_stats_end_of_round" ); + if ( self.rebuild_barrier_reward == 0 ) + { + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_boarding", 0 ); + return; + } + } +} + +pers_upgrade_revive_active() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "player_failed_revive" ); + if ( self.failed_revives >= level.pers_revivenoperk_number_of_chances_to_keep ) + { + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_revivenoperk", 0 ); + self.failed_revives = 0; + return; + } + } +} + +pers_upgrade_headshot_active() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "zombie_death_no_headshot" ); + self.non_headshot_kill_counter++; + if ( self.non_headshot_kill_counter >= level.pers_multikill_headshots_upgrade_reset_counter ) + { + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_multikill_headshots", 0 ); + self.non_headshot_kill_counter = 0; + return; + } + } +} + +pers_upgrade_cash_back_active() +{ + self endon( "disconnect" ); + wait 0,5; + wait 0,5; + while ( 1 ) + { + self waittill( "cash_back_failed_prone" ); + wait 0,1; + self.failed_cash_back_prones++; + if ( self.failed_cash_back_prones >= level.pers_cash_back_failed_prones ) + { + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_cash_back_bought", 0 ); + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_cash_back_prone", 0 ); + self.failed_cash_back_prones = 0; + wait 0,4; + return; + } + } +} + +pers_upgrade_insta_kill_active() +{ + self endon( "disconnect" ); + wait 0,2; + wait 0,2; + self waittill( "pers_melee_swipe" ); + if ( isDefined( level.pers_melee_swipe_zombie_swiper ) ) + { + e_zombie = level.pers_melee_swipe_zombie_swiper; + if ( isalive( e_zombie ) && isDefined( e_zombie.is_zombie ) && e_zombie.is_zombie ) + { + e_zombie.marked_for_insta_upgraded_death = 1; + e_zombie dodamage( e_zombie.health + 666, e_zombie.origin, self, self, "none", "MOD_PISTOL_BULLET", 0, "knife_zm" ); + } + level.pers_melee_swipe_zombie_swiper = undefined; + } + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_insta_kill", 0 ); + self kill_insta_kill_upgrade_hud_icon(); + wait 0,4; +} + +is_insta_kill_upgraded_and_active() +{ + if ( is_classic() ) + { + if ( self maps/mp/zombies/_zm_powerups::is_insta_kill_active() ) + { + if ( isDefined( self.pers_upgrades_awarded[ "insta_kill" ] ) && self.pers_upgrades_awarded[ "insta_kill" ] ) + { + return 1; + } + } + } + return 0; +} + +pers_upgrade_jugg_active() +{ + self endon( "disconnect" ); + wait 0,5; + wait 0,5; + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "jugg_upgrade", 1, 0 ); + while ( 1 ) + { + level waittill( "start_of_round" ); + if ( level.round_number == level.pers_jugg_round_lose_target ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_jugg_downgrade_count", 0 ); + wait 0,5; + if ( self.pers[ "pers_jugg_downgrade_count" ] >= level.pers_jugg_round_reached_max ) + { + break; + } + } + else + { + } + } + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "jugg_upgrade", 1, 1 ); + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_jugg", 0 ); + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_jugg_downgrade_count", 0 ); +} + +pers_upgrade_carpenter_active() +{ + self endon( "disconnect" ); + wait 0,2; + wait 0,2; + level waittill( "carpenter_finished" ); + self.pers_carpenter_kill = undefined; + while ( 1 ) + { + self waittill( "carpenter_zombie_killed_check_finished" ); + if ( !isDefined( self.pers_carpenter_kill ) ) + { + break; + } + else + { + self.pers_carpenter_kill = undefined; + } + } + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_carpenter", 0 ); + wait 0,4; +} + +persistent_carpenter_ability_check() +{ + if ( isDefined( level.pers_upgrade_carpenter ) && level.pers_upgrade_carpenter ) + { + self endon( "disconnect" ); + if ( isDefined( self.pers_upgrades_awarded[ "carpenter" ] ) && self.pers_upgrades_awarded[ "carpenter" ] ) + { + level.pers_carpenter_boards_active = 1; + } + self.pers_carpenter_zombie_check_active = 1; + self.pers_carpenter_kill = undefined; + carpenter_extra_time = 3; + carpenter_finished_start_time = undefined; + level.carpenter_finished_start_time = undefined; + while ( 1 ) + { + if ( !isDefined( level.carpenter_powerup_active ) ) + { + if ( !isDefined( level.carpenter_finished_start_time ) ) + { + level.carpenter_finished_start_time = getTime(); + } + time = getTime(); + dt = ( time - level.carpenter_finished_start_time ) / 1000; + if ( dt >= carpenter_extra_time ) + { + break; + } + } + else if ( isDefined( self.pers_carpenter_kill ) ) + { + if ( isDefined( self.pers_upgrades_awarded[ "carpenter" ] ) && self.pers_upgrades_awarded[ "carpenter" ] ) + { + break; + } + else self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_carpenter", 0 ); + } + wait 0,01; + } + self notify( "carpenter_zombie_killed_check_finished" ); + self.pers_carpenter_zombie_check_active = undefined; + level.pers_carpenter_boards_active = undefined; + } +} + +pers_zombie_death_location_check( attacker, v_pos ) +{ + if ( isDefined( level.pers_upgrade_carpenter ) && level.pers_upgrade_carpenter ) + { + if ( is_classic() ) + { + if ( is_player_valid( attacker ) ) + { + if ( isDefined( attacker.pers_carpenter_zombie_check_active ) ) + { + if ( !check_point_in_playable_area( v_pos ) ) + { + attacker.pers_carpenter_kill = 1; + } + } + } + } + } +} + +insta_kill_pers_upgrade_icon() +{ + if ( self.zombie_vars[ "zombie_powerup_insta_kill_ug_on" ] ) + { + self.zombie_vars[ "zombie_powerup_insta_kill_ug_time" ] = level.pers_insta_kill_upgrade_active_time; + return; + } + self.zombie_vars[ "zombie_powerup_insta_kill_ug_on" ] = 1; + self._show_solo_hud = 1; + self thread time_remaining_pers_upgrade(); +} + +time_remaining_pers_upgrade() +{ + self endon( "disconnect" ); + self endon( "kill_insta_kill_upgrade_hud_icon" ); + while ( self.zombie_vars[ "zombie_powerup_insta_kill_ug_time" ] >= 0 ) + { + wait 0,05; + self.zombie_vars[ "zombie_powerup_insta_kill_ug_time" ] -= 0,05; + } + self kill_insta_kill_upgrade_hud_icon(); +} + +kill_insta_kill_upgrade_hud_icon() +{ + self.zombie_vars[ "zombie_powerup_insta_kill_ug_on" ] = 0; + self._show_solo_hud = 0; + self.zombie_vars[ "zombie_powerup_insta_kill_ug_time" ] = level.pers_insta_kill_upgrade_active_time; + self notify( "kill_insta_kill_upgrade_hud_icon" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_pers_upgrades_system.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_pers_upgrades_system.gsc new file mode 100644 index 0000000..d6e21ee --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_pers_upgrades_system.gsc @@ -0,0 +1,242 @@ +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +pers_register_upgrade( name, upgrade_active_func, stat_name, stat_desired_value, game_end_reset_if_not_achieved ) +{ + if ( !isDefined( level.pers_upgrades ) ) + { + level.pers_upgrades = []; + level.pers_upgrades_keys = []; + } + if ( isDefined( level.pers_upgrades[ name ] ) ) + { +/# + assert( 0, "A persistent upgrade is already registered for name: " + name ); +#/ + } + level.pers_upgrades_keys[ level.pers_upgrades_keys.size ] = name; + level.pers_upgrades[ name ] = spawnstruct(); + level.pers_upgrades[ name ].stat_names = []; + level.pers_upgrades[ name ].stat_desired_values = []; + level.pers_upgrades[ name ].upgrade_active_func = upgrade_active_func; + level.pers_upgrades[ name ].game_end_reset_if_not_achieved = game_end_reset_if_not_achieved; + add_pers_upgrade_stat( name, stat_name, stat_desired_value ); +} + +add_pers_upgrade_stat( name, stat_name, stat_desired_value ) +{ + if ( !isDefined( level.pers_upgrades[ name ] ) ) + { +/# + assert( 0, name + " - Persistent upgrade is not registered yet." ); +#/ + } + stats_size = level.pers_upgrades[ name ].stat_names.size; + level.pers_upgrades[ name ].stat_names[ stats_size ] = stat_name; + level.pers_upgrades[ name ].stat_desired_values[ stats_size ] = stat_desired_value; +} + +pers_upgrades_monitor() +{ + if ( !isDefined( level.pers_upgrades ) ) + { + return; + } + if ( !is_classic() ) + { + return; + } + level thread wait_for_game_end(); + while ( 1 ) + { + waittillframeend; + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + player = players[ player_index ]; + if ( is_player_valid( player ) && isDefined( player.stats_this_frame ) ) + { + if ( !player.stats_this_frame.size && isDefined( player.pers_upgrade_force_test ) && !player.pers_upgrade_force_test ) + { + player_index++; + continue; + } + else + { + pers_upgrade_index = 0; + while ( pers_upgrade_index < level.pers_upgrades_keys.size ) + { + pers_upgrade = level.pers_upgrades[ level.pers_upgrades_keys[ pers_upgrade_index ] ]; + is_stat_updated = player is_any_pers_upgrade_stat_updated( pers_upgrade ); + if ( is_stat_updated ) + { + should_award = player check_pers_upgrade( pers_upgrade ); + if ( should_award ) + { + if ( isDefined( player.pers_upgrades_awarded[ level.pers_upgrades_keys[ pers_upgrade_index ] ] ) && player.pers_upgrades_awarded[ level.pers_upgrades_keys[ pers_upgrade_index ] ] ) + { + pers_upgrade_index++; + continue; + } + else + { + player.pers_upgrades_awarded[ level.pers_upgrades_keys[ pers_upgrade_index ] ] = 1; + if ( flag( "initial_blackscreen_passed" ) && !is_true( player.is_hotjoining ) ) + { + player playsoundtoplayer( "evt_player_upgrade", player ); + player delay_thread( 1, ::play_vox_to_player, "general", "upgrade" ); + if ( isDefined( player.upgrade_fx_origin ) ) + { + fx_org = player.upgrade_fx_origin; + player.upgrade_fx_origin = undefined; + } + else + { + fx_org = player.origin; + v_dir = anglesToForward( player getplayerangles() ); + v_up = anglesToUp( player getplayerangles() ); + fx_org = ( fx_org + ( v_dir * 10 ) ) + ( v_up * 10 ); + } + playfx( level._effect[ "upgrade_aquired" ], fx_org ); + level thread maps/mp/zombies/_zm::disable_end_game_intermission( 1,5 ); + } +/# + player iprintlnbold( "Upgraded!" ); +#/ + if ( isDefined( pers_upgrade.upgrade_active_func ) ) + { + player thread [[ pers_upgrade.upgrade_active_func ]](); + } + pers_upgrade_index++; + continue; + } + else + { + if ( isDefined( player.pers_upgrades_awarded[ level.pers_upgrades_keys[ pers_upgrade_index ] ] ) && player.pers_upgrades_awarded[ level.pers_upgrades_keys[ pers_upgrade_index ] ] ) + { + if ( flag( "initial_blackscreen_passed" ) && !is_true( player.is_hotjoining ) ) + { + player playsoundtoplayer( "evt_player_downgrade", player ); + } +/# + player iprintlnbold( "Downgraded!" ); +#/ + } + player.pers_upgrades_awarded[ level.pers_upgrades_keys[ pers_upgrade_index ] ] = 0; + } + } + } + pers_upgrade_index++; + } + player.pers_upgrade_force_test = 0; + player.stats_this_frame = []; + } + } + player_index++; + } + wait 0,05; + } +} + +wait_for_game_end() +{ + if ( !is_classic() ) + { + return; + } + level waittill( "end_game" ); + players = getplayers(); + player_index = 0; + while ( player_index < players.size ) + { + player = players[ player_index ]; + index = 0; + while ( index < level.pers_upgrades_keys.size ) + { + str_name = level.pers_upgrades_keys[ index ]; + game_end_reset_if_not_achieved = level.pers_upgrades[ str_name ].game_end_reset_if_not_achieved; + while ( isDefined( game_end_reset_if_not_achieved ) && game_end_reset_if_not_achieved == 1 ) + { + while ( isDefined( player.pers_upgrades_awarded[ str_name ] ) && !player.pers_upgrades_awarded[ str_name ] ) + { + stat_index = 0; + while ( stat_index < level.pers_upgrades[ str_name ].stat_names.size ) + { + player maps/mp/zombies/_zm_stats::zero_client_stat( level.pers_upgrades[ str_name ].stat_names[ stat_index ], 0 ); + stat_index++; + } + } + } + index++; + } + player_index++; + } +} + +check_pers_upgrade( pers_upgrade ) +{ + should_award = 1; + i = 0; + while ( i < pers_upgrade.stat_names.size ) + { + stat_name = pers_upgrade.stat_names[ i ]; + should_award = self check_pers_upgrade_stat( stat_name, pers_upgrade.stat_desired_values[ i ] ); + if ( !should_award ) + { + break; + } + else + { + i++; + } + } + return should_award; +} + +is_any_pers_upgrade_stat_updated( pers_upgrade ) +{ + if ( isDefined( self.pers_upgrade_force_test ) && self.pers_upgrade_force_test ) + { + return 1; + } + result = 0; + i = 0; + while ( i < pers_upgrade.stat_names.size ) + { + stat_name = pers_upgrade.stat_names[ i ]; + if ( isDefined( self.stats_this_frame[ stat_name ] ) ) + { + result = 1; + break; + } + else + { + i++; + } + } + return result; +} + +check_pers_upgrade_stat( stat_name, stat_desired_value ) +{ + should_award = 1; + current_stat_value = self maps/mp/zombies/_zm_stats::get_global_stat( stat_name ); + if ( current_stat_value < stat_desired_value ) + { + should_award = 0; + } + return should_award; +} + +round_end() +{ + if ( !is_classic() ) + { + return; + } + self notify( "pers_stats_end_of_round" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_playerhealth.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_playerhealth.gsc new file mode 100644 index 0000000..5c641f1 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_playerhealth.gsc @@ -0,0 +1,583 @@ +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !isDefined( level.script ) ) + { + level.script = tolower( getDvar( "mapname" ) ); + } + precacheshader( "overlay_low_health" ); + level.global_damage_func_ads = ::empty_kill_func; + level.global_damage_func = ::empty_kill_func; + level.difficultytype[ 0 ] = "easy"; + level.difficultytype[ 1 ] = "normal"; + level.difficultytype[ 2 ] = "hardened"; + level.difficultytype[ 3 ] = "veteran"; + level.difficultystring[ "easy" ] = &"GAMESKILL_EASY"; + level.difficultystring[ "normal" ] = &"GAMESKILL_NORMAL"; + level.difficultystring[ "hardened" ] = &"GAMESKILL_HARDENED"; + level.difficultystring[ "veteran" ] = &"GAMESKILL_VETERAN"; +/# + thread playerhealthdebug(); +#/ + level.gameskill = 1; + switch( level.gameskill ) + { + case 0: + setdvar( "currentDifficulty", "easy" ); + break; + case 1: + setdvar( "currentDifficulty", "normal" ); + break; + case 2: + setdvar( "currentDifficulty", "hardened" ); + break; + case 3: + setdvar( "currentDifficulty", "veteran" ); + break; + } + logstring( "difficulty: " + level.gameskill ); + level.player_deathinvulnerabletime = 1700; + level.longregentime = 5000; + level.healthoverlaycutoff = 0,2; + level.invultime_preshield = 0,35; + level.invultime_onshield = 0,5; + level.invultime_postshield = 0,3; + level.playerhealth_regularregendelay = 2400; + level.worthydamageratio = 0,1; + setdvar( "player_meleeDamageMultiplier", 0,4 ); + onplayerconnect_callback( ::onplayerconnect ); +} + +onplayerconnect() +{ + self thread onplayerspawned(); +} + +onplayerspawned() +{ + for ( ;; ) + { + self waittill( "spawned_player" ); + self maps/mp/zombies/_zm_perks::perk_set_max_health_if_jugg( "health_reboot", 1, 0 ); + if ( level.createfx_enabled ) + { + continue; + } + else + { + self notify( "noHealthOverlay" ); + self thread playerhealthregen(); + } + } +} + +playerhurtcheck() +{ + self endon( "noHealthOverlay" ); + self.hurtagain = 0; + for ( ;; ) + { + self waittill( "damage", amount, attacker, dir, point, mod ); + if ( isDefined( attacker ) && isplayer( attacker ) && attacker.team == self.team ) + { + continue; + } + else + { + self.hurtagain = 1; + self.damagepoint = point; + self.damageattacker = attacker; + } + } +} + +playerhealthregen() +{ + self notify( "playerHealthRegen" ); + self endon( "playerHealthRegen" ); + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( self.flag ) ) + { + self.flag = []; + self.flags_lock = []; + } + if ( !isDefined( self.flag[ "player_has_red_flashing_overlay" ] ) ) + { + self player_flag_init( "player_has_red_flashing_overlay" ); + self player_flag_init( "player_is_invulnerable" ); + } + self player_flag_clear( "player_has_red_flashing_overlay" ); + self player_flag_clear( "player_is_invulnerable" ); + self thread healthoverlay(); + oldratio = 1; + health_add = 0; + regenrate = 0,1; + veryhurt = 0; + playerjustgotredflashing = 0; + invultime = 0; + hurttime = 0; + newhealth = 0; + lastinvulratio = 1; + self thread playerhurtcheck(); + if ( !isDefined( self.veryhurt ) ) + { + self.veryhurt = 0; + } + self.bolthit = 0; + if ( getDvar( "scr_playerInvulTimeScale" ) == "" ) + { + setdvar( "scr_playerInvulTimeScale", 1 ); + } + playerinvultimescale = getDvarFloat( "scr_playerInvulTimeScale" ); + for ( ;; ) + { + wait 0,05; + waittillframeend; + if ( self.health == self.maxhealth ) + { + if ( self player_flag( "player_has_red_flashing_overlay" ) ) + { + player_flag_clear( "player_has_red_flashing_overlay" ); + } + lastinvulratio = 1; + playerjustgotredflashing = 0; + veryhurt = 0; + continue; + } + else if ( self.health <= 0 ) + { +/# + showhitlog(); +#/ + return; + } + wasveryhurt = veryhurt; + health_ratio = self.health / self.maxhealth; + if ( health_ratio <= level.healthoverlaycutoff ) + { + veryhurt = 1; + if ( !wasveryhurt ) + { + hurttime = getTime(); + self startfadingblur( 3,6, 2 ); + self player_flag_set( "player_has_red_flashing_overlay" ); + playerjustgotredflashing = 1; + } + } + if ( self.hurtagain ) + { + hurttime = getTime(); + self.hurtagain = 0; + } + if ( health_ratio >= oldratio ) + { + if ( ( getTime() - hurttime ) < level.playerhealth_regularregendelay ) + { + continue; + } + else if ( veryhurt ) + { + self.veryhurt = 1; + newhealth = health_ratio; + if ( getTime() > ( hurttime + level.longregentime ) ) + { + newhealth += regenrate; + } + } + else + { + newhealth = 1; + self.veryhurt = 0; + } + if ( newhealth > 1 ) + { + newhealth = 1; + } + if ( newhealth <= 0 ) + { + return; + } +/# + if ( newhealth > health_ratio ) + { + logregen( newhealth ); +#/ + } + self setnormalhealth( newhealth ); + oldratio = self.health / self.maxhealth; + continue; + } + else invulworthyhealthdrop = ( lastinvulratio - health_ratio ) > level.worthydamageratio; + if ( self.health <= 1 ) + { + self setnormalhealth( 2 / self.maxhealth ); + invulworthyhealthdrop = 1; +/# + if ( !isDefined( level.player_deathinvulnerabletimeout ) ) + { + level.player_deathinvulnerabletimeout = 0; + } + if ( level.player_deathinvulnerabletimeout < getTime() ) + { + level.player_deathinvulnerabletimeout = getTime() + getDvarInt( "player_deathInvulnerableTime" ); +#/ + } + } + oldratio = self.health / self.maxhealth; + level notify( "hit_again" ); + health_add = 0; + hurttime = getTime(); + self startfadingblur( 3, 0,8 ); + if ( !invulworthyhealthdrop || playerinvultimescale <= 0 ) + { +/# + loghit( self.health, 0 ); +#/ + continue; + } + else + { + if ( self player_flag( "player_is_invulnerable" ) ) + { + break; + } + else + { + self player_flag_set( "player_is_invulnerable" ); + level notify( "player_becoming_invulnerable" ); + if ( playerjustgotredflashing ) + { + invultime = level.invultime_onshield; + playerjustgotredflashing = 0; + } + else if ( veryhurt ) + { + invultime = level.invultime_postshield; + } + else + { + invultime = level.invultime_preshield; + } + invultime *= playerinvultimescale; +/# + loghit( self.health, invultime ); +#/ + lastinvulratio = self.health / self.maxhealth; + self thread playerinvul( invultime ); + } + } + } +} + +playerinvul( timer ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( timer > 0 ) + { +/# + level.playerinvultimeend = getTime() + ( timer * 1000 ); +#/ + wait timer; + } + self player_flag_clear( "player_is_invulnerable" ); +} + +healthoverlay() +{ + self endon( "disconnect" ); + self endon( "noHealthOverlay" ); + if ( !isDefined( self._health_overlay ) ) + { + self._health_overlay = newclienthudelem( self ); + self._health_overlay.x = 0; + self._health_overlay.y = 0; + self._health_overlay setshader( "overlay_low_health", 640, 480 ); + self._health_overlay.alignx = "left"; + self._health_overlay.aligny = "top"; + self._health_overlay.horzalign = "fullscreen"; + self._health_overlay.vertalign = "fullscreen"; + self._health_overlay.alpha = 0; + } + overlay = self._health_overlay; + self thread healthoverlay_remove( overlay ); + self thread watchhideredflashingoverlay( overlay ); + pulsetime = 0,8; + for ( ;; ) + { + if ( overlay.alpha > 0 ) + { + overlay fadeovertime( 0,5 ); + } + overlay.alpha = 0; + self player_flag_wait( "player_has_red_flashing_overlay" ); + self redflashingoverlay( overlay ); + } +} + +fadefunc( overlay, severity, mult, hud_scaleonly ) +{ + pulsetime = 0,8; + scalemin = 0,5; + fadeintime = pulsetime * 0,1; + stayfulltime = pulsetime * ( 0,1 + ( severity * 0,2 ) ); + fadeouthalftime = pulsetime * ( 0,1 + ( severity * 0,1 ) ); + fadeoutfulltime = pulsetime * 0,3; + remainingtime = pulsetime - fadeintime - stayfulltime - fadeouthalftime - fadeoutfulltime; +/# + assert( remainingtime >= -0,001 ); +#/ + if ( remainingtime < 0 ) + { + remainingtime = 0; + } + halfalpha = 0,8 + ( severity * 0,1 ); + leastalpha = 0,5 + ( severity * 0,3 ); + overlay fadeovertime( fadeintime ); + overlay.alpha = mult * 1; + wait ( fadeintime + stayfulltime ); + overlay fadeovertime( fadeouthalftime ); + overlay.alpha = mult * halfalpha; + wait fadeouthalftime; + overlay fadeovertime( fadeoutfulltime ); + overlay.alpha = mult * leastalpha; + wait fadeoutfulltime; + wait remainingtime; +} + +watchhideredflashingoverlay( overlay ) +{ + self endon( "death_or_disconnect" ); + while ( isDefined( overlay ) ) + { + self waittill( "clear_red_flashing_overlay" ); + self player_flag_clear( "player_has_red_flashing_overlay" ); + overlay fadeovertime( 0,05 ); + overlay.alpha = 0; + setclientsysstate( "levelNotify", "rfo3", self ); + self notify( "hit_again" ); + } +} + +redflashingoverlay( overlay ) +{ + self endon( "hit_again" ); + self endon( "damage" ); + self endon( "death" ); + self endon( "disconnect" ); + self endon( "clear_red_flashing_overlay" ); + self.stopflashingbadlytime = getTime() + level.longregentime; + if ( isDefined( self.is_in_process_of_zombify ) && !self.is_in_process_of_zombify && isDefined( self.is_zombie ) && !self.is_zombie ) + { + fadefunc( overlay, 1, 1, 0 ); + while ( getTime() < self.stopflashingbadlytime && isalive( self ) && isDefined( self.is_in_process_of_zombify ) && !self.is_in_process_of_zombify && isDefined( self.is_zombie ) && !self.is_zombie ) + { + fadefunc( overlay, 0,9, 1, 0 ); + } + if ( isDefined( self.is_in_process_of_zombify ) && !self.is_in_process_of_zombify && isDefined( self.is_zombie ) && !self.is_zombie ) + { + if ( isalive( self ) ) + { + fadefunc( overlay, 0,65, 0,8, 0 ); + } + fadefunc( overlay, 0, 0,6, 1 ); + } + } + overlay fadeovertime( 0,5 ); + overlay.alpha = 0; + self player_flag_clear( "player_has_red_flashing_overlay" ); + setclientsysstate( "levelNotify", "rfo3", self ); + wait 0,5; + self notify( "hit_again" ); +} + +healthoverlay_remove( overlay ) +{ + self endon( "disconnect" ); + self waittill_any( "noHealthOverlay", "death" ); + overlay fadeovertime( 3,5 ); + overlay.alpha = 0; +} + +empty_kill_func( type, loc, point, attacker, amount ) +{ +} + +loghit( newhealth, invultime ) +{ +/# +#/ +} + +logregen( newhealth ) +{ +/# +#/ +} + +showhitlog() +{ +/# +#/ +} + +playerhealthdebug() +{ +/# + if ( getDvar( "scr_health_debug" ) == "" ) + { + setdvar( "scr_health_debug", "0" ); + } + waittillframeend; + while ( 1 ) + { + while ( 1 ) + { + if ( getDvar( "scr_health_debug" ) != "0" ) + { + break; + } + else + { + wait 0,5; + } + } + thread printhealthdebug(); + while ( 1 ) + { + if ( getDvar( "scr_health_debug" ) == "0" ) + { + break; + } + else + { + wait 0,5; + } + } + level notify( "stop_printing_grenade_timers" ); + destroyhealthdebug(); +#/ + } +} + +printhealthdebug() +{ +/# + level notify( "stop_printing_health_bars" ); + level endon( "stop_printing_health_bars" ); + x = 40; + y = 40; + level.healthbarhudelems = []; + level.healthbarkeys[ 0 ] = "Health"; + level.healthbarkeys[ 1 ] = "No Hit Time"; + level.healthbarkeys[ 2 ] = "No Die Time"; + if ( !isDefined( level.playerinvultimeend ) ) + { + level.playerinvultimeend = 0; + } + if ( !isDefined( level.player_deathinvulnerabletimeout ) ) + { + level.player_deathinvulnerabletimeout = 0; + } + i = 0; + while ( i < level.healthbarkeys.size ) + { + key = level.healthbarkeys[ i ]; + textelem = newhudelem(); + textelem.x = x; + textelem.y = y; + textelem.alignx = "left"; + textelem.aligny = "top"; + textelem.horzalign = "fullscreen"; + textelem.vertalign = "fullscreen"; + textelem settext( key ); + bgbar = newhudelem(); + bgbar.x = x + 79; + bgbar.y = y + 1; + bgbar.alignx = "left"; + bgbar.aligny = "top"; + bgbar.horzalign = "fullscreen"; + bgbar.vertalign = "fullscreen"; + bgbar.maxwidth = 3; + bgbar setshader( "white", bgbar.maxwidth, 10 ); + bgbar.color = vectorScale( ( 1, 1, 1 ), 0,5 ); + bar = newhudelem(); + bar.x = x + 80; + bar.y = y + 2; + bar.alignx = "left"; + bar.aligny = "top"; + bar.horzalign = "fullscreen"; + bar.vertalign = "fullscreen"; + bar setshader( "black", 1, 8 ); + textelem.bar = bar; + textelem.bgbar = bgbar; + textelem.key = key; + y += 10; + level.healthbarhudelems[ key ] = textelem; + i++; + } + flag_wait( "start_zombie_round_logic" ); + while ( 1 ) + { + wait 0,05; + players = get_players(); + i = 0; + while ( i < level.healthbarkeys.size && players.size > 0 ) + { + key = level.healthbarkeys[ i ]; + player = players[ 0 ]; + width = 0; + if ( i == 0 ) + { + width = ( player.health / player.maxhealth ) * 300; + } + else if ( i == 1 ) + { + width = ( ( level.playerinvultimeend - getTime() ) / 1000 ) * 40; + } + else + { + if ( i == 2 ) + { + width = ( ( level.player_deathinvulnerabletimeout - getTime() ) / 1000 ) * 40; + } + } + width = int( max( width, 1 ) ); + width = int( min( width, 300 ) ); + bar = level.healthbarhudelems[ key ].bar; + bar setshader( "black", width, 8 ); + bgbar = level.healthbarhudelems[ key ].bgbar; + if ( ( width + 2 ) > bgbar.maxwidth ) + { + bgbar.maxwidth = width + 2; + bgbar setshader( "white", bgbar.maxwidth, 10 ); + bgbar.color = vectorScale( ( 1, 1, 1 ), 0,5 ); + } + i++; + } +#/ + } +} + +destroyhealthdebug() +{ +/# + if ( !isDefined( level.healthbarhudelems ) ) + { + return; + } + i = 0; + while ( i < level.healthbarkeys.size ) + { + level.healthbarhudelems[ level.healthbarkeys[ i ] ].bgbar destroy(); + level.healthbarhudelems[ level.healthbarkeys[ i ] ].bar destroy(); + level.healthbarhudelems[ level.healthbarkeys[ i ] ] destroy(); + i++; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_power.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_power.gsc new file mode 100644 index 0000000..5e824a5 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_power.gsc @@ -0,0 +1,740 @@ +#include maps/mp/zombies/_zm_ai_basic; +#include maps/mp/_demo; +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !isDefined( level.powered_items ) ) + { + level.powered_items = []; + } + if ( !isDefined( level.local_power ) ) + { + level.local_power = []; + } + thread standard_powered_items(); +/# + thread debug_powered_items(); +#/ +} + +debug_powered_items() +{ +/# + while ( 1 ) + { + while ( getDvarInt( #"EB512CB7" ) ) + { + while ( isDefined( level.local_power ) ) + { + _a32 = level.local_power; + _k32 = getFirstArrayKey( _a32 ); + while ( isDefined( _k32 ) ) + { + localpower = _a32[ _k32 ]; + circle( localpower.origin, localpower.radius, ( 0, 0, 1 ), 0, 1, 1 ); + _k32 = getNextArrayKey( _a32, _k32 ); + } + } + } + wait 0,05; +#/ + } +} + +watch_global_power() +{ + while ( 1 ) + { + flag_wait( "power_on" ); + set_global_power( 1 ); + flag_waitopen( "power_on" ); + set_global_power( 0 ); + } +} + +standard_powered_items() +{ + flag_wait( "start_zombie_round_logic" ); + vending_triggers = getentarray( "zombie_vending", "targetname" ); + _a67 = vending_triggers; + _k67 = getFirstArrayKey( _a67 ); + while ( isDefined( _k67 ) ) + { + trigger = _a67[ _k67 ]; + if ( trigger.script_noteworthy == "specialty_weapupgrade" ) + { + } + else + { + powered_on = maps/mp/zombies/_zm_perks::get_perk_machine_start_state( trigger.script_noteworthy ); + add_powered_item( ::perk_power_on, ::perk_power_off, ::perk_range, ::cost_low_if_local, 0, powered_on, trigger ); + } + _k67 = getNextArrayKey( _a67, _k67 ); + } + pack_a_punch = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + _a77 = pack_a_punch; + _k77 = getFirstArrayKey( _a77 ); + while ( isDefined( _k77 ) ) + { + trigger = _a77[ _k77 ]; + powered_on = maps/mp/zombies/_zm_perks::get_perk_machine_start_state( trigger.script_noteworthy ); + trigger.powered = add_powered_item( ::pap_power_on, ::pap_power_off, ::pap_range, ::cost_low_if_local, 0, powered_on, trigger ); + _k77 = getNextArrayKey( _a77, _k77 ); + } + zombie_doors = getentarray( "zombie_door", "targetname" ); + _a86 = zombie_doors; + _k86 = getFirstArrayKey( _a86 ); + while ( isDefined( _k86 ) ) + { + door = _a86[ _k86 ]; + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "electric_door" ) + { + add_powered_item( ::door_power_on, ::door_power_off, ::door_range, ::cost_door, 0, 0, door ); + } + else + { + if ( isDefined( door.script_noteworthy ) && door.script_noteworthy == "local_electric_door" ) + { + power_sources = 0; + if ( isDefined( level.power_local_doors_globally ) && !level.power_local_doors_globally ) + { + power_sources = 1; + } + add_powered_item( ::door_local_power_on, ::door_local_power_off, ::door_range, ::cost_door, power_sources, 0, door ); + } + } + _k86 = getNextArrayKey( _a86, _k86 ); + } + thread watch_global_power(); +} + +add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ) +{ + powered = spawnstruct(); + powered.power_on_func = power_on_func; + powered.power_off_func = power_off_func; + powered.range_func = range_func; + powered.power_sources = power_sources; + powered.self_powered = self_powered; + powered.target = target; + powered.cost_func = cost_func; + powered.power = self_powered; + powered.powered_count = self_powered; + powered.depowered_count = 0; + if ( !isDefined( level.powered_items ) ) + { + level.powered_items = []; + } + level.powered_items[ level.powered_items.size ] = powered; + return powered; +} + +remove_powered_item( powered ) +{ + arrayremovevalue( level.powered_items, powered, 0 ); +} + +add_temp_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ) +{ + powered = add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, self_powered, target ); + while ( isDefined( level.local_power ) ) + { + _a140 = level.local_power; + _k140 = getFirstArrayKey( _a140 ); + while ( isDefined( _k140 ) ) + { + localpower = _a140[ _k140 ]; + if ( powered [[ powered.range_func ]]( 1, localpower.origin, localpower.radius ) ) + { + powered change_power( 1, localpower.origin, localpower.radius ); + if ( !isDefined( localpower.added_list ) ) + { + localpower.added_list = []; + } + localpower.added_list[ localpower.added_list.size ] = powered; + } + _k140 = getNextArrayKey( _a140, _k140 ); + } + } + thread watch_temp_powered_item( powered ); + return powered; +} + +watch_temp_powered_item( powered ) +{ + powered.target waittill( "death" ); + remove_powered_item( powered ); + while ( isDefined( level.local_power ) ) + { + _a161 = level.local_power; + _k161 = getFirstArrayKey( _a161 ); + while ( isDefined( _k161 ) ) + { + localpower = _a161[ _k161 ]; + if ( isDefined( localpower.added_list ) ) + { + arrayremovevalue( localpower.added_list, powered, 0 ); + } + if ( isDefined( localpower.enabled_list ) ) + { + arrayremovevalue( localpower.enabled_list, powered, 0 ); + } + _k161 = getNextArrayKey( _a161, _k161 ); + } + } +} + +change_power_in_radius( delta, origin, radius ) +{ + changed_list = []; + i = 0; + while ( i < level.powered_items.size ) + { + powered = level.powered_items[ i ]; + if ( powered.power_sources != 2 ) + { + if ( powered [[ powered.range_func ]]( delta, origin, radius ) ) + { + powered change_power( delta, origin, radius ); + changed_list[ changed_list.size ] = powered; + } + } + i++; + } + return changed_list; +} + +change_power( delta, origin, radius ) +{ + if ( delta > 0 ) + { + if ( !self.power ) + { + self.power = 1; + self [[ self.power_on_func ]]( origin, radius ); + } + self.powered_count++; + } + else + { + if ( delta < 0 ) + { + if ( self.power ) + { + self.power = 0; + self [[ self.power_off_func ]]( origin, radius ); + } + self.depowered_count++; + } + } +} + +revert_power_to_list( delta, origin, radius, powered_list ) +{ + i = 0; + while ( i < powered_list.size ) + { + powered = powered_list[ i ]; + powered revert_power( delta, origin, radius ); + i++; + } +} + +revert_power( delta, origin, radius, powered_list ) +{ + if ( delta > 0 ) + { + self.depowered_count--; + +/# + assert( self.depowered_count >= 0, "Depower underflow in power system" ); +#/ + if ( self.depowered_count == 0 && self.powered_count > 0 && !self.power ) + { + self.power = 1; + self [[ self.power_on_func ]]( origin, radius ); + } + } + else + { + if ( delta < 0 ) + { + self.powered_count--; + +/# + assert( self.powered_count >= 0, "Repower underflow in power system" ); +#/ + if ( self.powered_count == 0 && self.power ) + { + self.power = 0; + self [[ self.power_off_func ]]( origin, radius ); + } + } + } +} + +add_local_power( origin, radius ) +{ + localpower = spawnstruct(); +/# + println( "ZM POWER: local power on at " + origin + " radius " + radius + "\n" ); +#/ + localpower.origin = origin; + localpower.radius = radius; + localpower.enabled_list = change_power_in_radius( 1, origin, radius ); + if ( !isDefined( level.local_power ) ) + { + level.local_power = []; + } + level.local_power[ level.local_power.size ] = localpower; + return localpower; +} + +move_local_power( localpower, origin ) +{ + changed_list = []; + i = 0; + while ( i < level.powered_items.size ) + { + powered = level.powered_items[ i ]; + if ( powered.power_sources == 2 ) + { + i++; + continue; + } + else waspowered = isinarray( localpower.enabled_list, powered ); + ispowered = powered [[ powered.range_func ]]( 1, origin, localpower.radius ); + if ( ispowered && !waspowered ) + { + powered change_power( 1, origin, localpower.radius ); + localpower.enabled_list[ localpower.enabled_list.size ] = powered; + i++; + continue; + } + else + { + if ( !ispowered && waspowered ) + { + powered revert_power( -1, localpower.origin, localpower.radius, localpower.enabled_list ); + arrayremovevalue( localpower.enabled_list, powered, 0 ); + } + } + i++; + } + localpower.origin = origin; + return localpower; +} + +end_local_power( localpower ) +{ +/# + println( "ZM POWER: local power off at " + localpower.origin + " radius " + localpower.radius + "\n" ); +#/ + if ( isDefined( localpower.enabled_list ) ) + { + revert_power_to_list( -1, localpower.origin, localpower.radius, localpower.enabled_list ); + } + localpower.enabled_list = undefined; + if ( isDefined( localpower.added_list ) ) + { + revert_power_to_list( -1, localpower.origin, localpower.radius, localpower.added_list ); + } + localpower.added_list = undefined; + arrayremovevalue( level.local_power, localpower, 0 ); +} + +has_local_power( origin ) +{ + while ( isDefined( level.local_power ) ) + { + _a309 = level.local_power; + _k309 = getFirstArrayKey( _a309 ); + while ( isDefined( _k309 ) ) + { + localpower = _a309[ _k309 ]; + if ( distancesquared( localpower.origin, origin ) < ( localpower.radius * localpower.radius ) ) + { + return 1; + } + _k309 = getNextArrayKey( _a309, _k309 ); + } + } + return 0; +} + +get_powered_item_cost() +{ + if ( isDefined( self.power ) && !self.power ) + { + return 0; + } + if ( isDefined( level._power_global ) && level._power_global && self.power_sources != 1 ) + { + return 0; + } + cost = [[ self.cost_func ]](); + power_sources = self.powered_count; + if ( power_sources < 1 ) + { + power_sources = 1; + } + return cost / power_sources; +} + +get_local_power_cost( localpower ) +{ + cost = 0; + while ( isDefined( localpower ) && isDefined( localpower.enabled_list ) ) + { + _a340 = localpower.enabled_list; + _k340 = getFirstArrayKey( _a340 ); + while ( isDefined( _k340 ) ) + { + powered = _a340[ _k340 ]; + cost += powered get_powered_item_cost(); + _k340 = getNextArrayKey( _a340, _k340 ); + } + } + while ( isDefined( localpower ) && isDefined( localpower.added_list ) ) + { + _a345 = localpower.added_list; + _k345 = getFirstArrayKey( _a345 ); + while ( isDefined( _k345 ) ) + { + powered = _a345[ _k345 ]; + cost += powered get_powered_item_cost(); + _k345 = getNextArrayKey( _a345, _k345 ); + } + } + return cost; +} + +set_global_power( on_off ) +{ + maps/mp/_demo::bookmark( "zm_power", getTime(), undefined, undefined, 1 ); + level._power_global = on_off; + i = 0; + while ( i < level.powered_items.size ) + { + powered = level.powered_items[ i ]; + if ( isDefined( powered.target ) && powered.power_sources != 1 ) + { + powered global_power( on_off ); + } + i++; + } +} + +global_power( on_off ) +{ + if ( on_off ) + { +/# + println( "ZM POWER: global power on\n" ); +#/ + if ( !self.power ) + { + self.power = 1; + self [[ self.power_on_func ]](); + } + self.powered_count++; + } + else + { +/# + println( "ZM POWER: global power off\n" ); +#/ + self.powered_count--; + +/# + assert( self.powered_count >= 0, "Repower underflow in power system" ); +#/ + if ( self.powered_count == 0 && self.power ) + { + self.power = 0; + self [[ self.power_off_func ]](); + } + } +} + +never_power_on( origin, radius ) +{ +} + +never_power_off( origin, radius ) +{ +} + +cost_negligible() +{ + if ( isDefined( self.one_time_cost ) ) + { + cost = self.one_time_cost; + self.one_time_cost = undefined; + return cost; + } + return 0; +} + +cost_low_if_local() +{ + if ( isDefined( self.one_time_cost ) ) + { + cost = self.one_time_cost; + self.one_time_cost = undefined; + return cost; + } + if ( isDefined( level._power_global ) && level._power_global ) + { + return 0; + } + if ( isDefined( self.self_powered ) && self.self_powered ) + { + return 0; + } + return 1; +} + +cost_high() +{ + if ( isDefined( self.one_time_cost ) ) + { + cost = self.one_time_cost; + self.one_time_cost = undefined; + return cost; + } + return 10; +} + +door_range( delta, origin, radius ) +{ + if ( delta < 0 ) + { + return 0; + } + if ( distancesquared( self.target.origin, origin ) < ( radius * radius ) ) + { + return 1; + } + return 0; +} + +door_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: door on\n" ); +#/ + self.target.power_on = 1; + self.target notify( "power_on" ); +} + +door_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: door off\n" ); +#/ + self.target notify( "power_off" ); + self.target.power_on = 0; +} + +door_local_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: door on (local)\n" ); +#/ + self.target.local_power_on = 1; + self.target notify( "local_power_on" ); +} + +door_local_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: door off (local)\n" ); +#/ + self.target notify( "local_power_off" ); + self.target.local_power_on = 0; +} + +cost_door() +{ + if ( isDefined( self.target.power_cost ) ) + { + if ( !isDefined( self.one_time_cost ) ) + { + self.one_time_cost = 0; + } + self.one_time_cost += self.target.power_cost; + self.target.power_cost = 0; + } + if ( isDefined( self.one_time_cost ) ) + { + cost = self.one_time_cost; + self.one_time_cost = undefined; + return cost; + } + return 0; +} + +zombie_range( delta, origin, radius ) +{ + if ( delta > 0 ) + { + return 0; + } + self.zombies = get_array_of_closest( origin, get_round_enemy_array(), undefined, undefined, radius ); + if ( !isDefined( self.zombies ) ) + { + return 0; + } + self.power = 1; + return 1; +} + +zombie_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: zombies off\n" ); +#/ + i = 0; + while ( i < self.zombies.size ) + { + self.zombies[ i ] thread stun_zombie(); + wait 0,05; + i++; + } +} + +stun_zombie() +{ + self endon( "death" ); + self notify( "stun_zombie" ); + self endon( "stun_zombie" ); + if ( self.health <= 0 ) + { +/# + iprintln( "trying to stun a dead zombie" ); +#/ + return; + } + if ( isDefined( self.ignore_inert ) && self.ignore_inert ) + { + return; + } + if ( isDefined( self.stun_zombie ) ) + { + self thread [[ self.stun_zombie ]](); + return; + } + self thread maps/mp/zombies/_zm_ai_basic::start_inert(); +} + +perk_range( delta, origin, radius ) +{ + if ( isDefined( self.target ) ) + { + perkorigin = self.target.origin; + if ( isDefined( self.target.trigger_off ) && self.target.trigger_off ) + { + perkorigin = self.target.realorigin; + } + else + { + if ( isDefined( self.target.disabled ) && self.target.disabled ) + { + perkorigin += vectorScale( ( 0, 0, 1 ), 10000 ); + } + } + if ( distancesquared( perkorigin, origin ) < ( radius * radius ) ) + { + return 1; + } + } + return 0; +} + +perk_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: perk " + self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify() + " on\n" ); +#/ + level notify( self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify() + "_on" ); + maps/mp/zombies/_zm_perks::perk_unpause( self.target.script_noteworthy ); +} + +perk_power_off( origin, radius ) +{ + notify_name = self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify(); + if ( isDefined( notify_name ) && notify_name == "revive" ) + { + if ( level flag_exists( "solo_game" ) && flag( "solo_game" ) ) + { + return; + } + } +/# + println( "^1ZM POWER: perk " + self.target.script_noteworthy + " off\n" ); +#/ + self.target notify( "death" ); + self.target thread maps/mp/zombies/_zm_perks::vending_trigger_think(); + if ( isDefined( self.target.perk_hum ) ) + { + self.target.perk_hum delete(); + } + maps/mp/zombies/_zm_perks::perk_pause( self.target.script_noteworthy ); + level notify( self.target maps/mp/zombies/_zm_perks::getvendingmachinenotify() + "_off" ); +} + +pap_range( delta, origin, radius ) +{ + if ( isDefined( self.target ) ) + { + paporigin = self.target.origin; + if ( isDefined( self.target.trigger_off ) && self.target.trigger_off ) + { + paporigin = self.target.realorigin; + } + else + { + if ( isDefined( self.target.disabled ) && self.target.disabled ) + { + paporigin += vectorScale( ( 0, 0, 1 ), 10000 ); + } + } + if ( distancesquared( paporigin, origin ) < ( radius * radius ) ) + { + return 1; + } + } + return 0; +} + +pap_power_on( origin, radius ) +{ +/# + println( "^1ZM POWER: PaP on\n" ); +#/ + level notify( "Pack_A_Punch_on" ); +} + +pap_power_off( origin, radius ) +{ +/# + println( "^1ZM POWER: PaP off\n" ); +#/ + level notify( "Pack_A_Punch_off" ); + self.target notify( "death" ); + self.target thread maps/mp/zombies/_zm_perks::vending_weapon_upgrade(); +} + +pap_is_on() +{ + if ( isDefined( self.powered ) ) + { + return self.powered.power; + } + return 0; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_powerups.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_powerups.gsc new file mode 100644 index 0000000..5200c11 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_powerups.gsc @@ -0,0 +1,3004 @@ +#include maps/mp/zombies/_zm_melee_weapon; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_perks; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/zombies/_zm_pers_upgrades; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/zombies/_zm_audio_announcer; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/_demo; +#include maps/mp/zombies/_zm_magicbox; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + precacheshader( "specialty_doublepoints_zombies" ); + precacheshader( "specialty_instakill_zombies" ); + precacheshader( "specialty_firesale_zombies" ); + precacheshader( "zom_icon_bonfire" ); + precacheshader( "zom_icon_minigun" ); + precacheshader( "black" ); + set_zombie_var( "zombie_insta_kill", 0, undefined, undefined, 1 ); + set_zombie_var( "zombie_point_scalar", 1, undefined, undefined, 1 ); + set_zombie_var( "zombie_drop_item", 0 ); + set_zombie_var( "zombie_timer_offset", 350 ); + set_zombie_var( "zombie_timer_offset_interval", 30 ); + set_zombie_var( "zombie_powerup_fire_sale_on", 0 ); + set_zombie_var( "zombie_powerup_fire_sale_time", 30 ); + set_zombie_var( "zombie_powerup_bonfire_sale_on", 0 ); + set_zombie_var( "zombie_powerup_bonfire_sale_time", 30 ); + set_zombie_var( "zombie_powerup_insta_kill_on", 0, undefined, undefined, 1 ); + set_zombie_var( "zombie_powerup_insta_kill_time", 30, undefined, undefined, 1 ); + set_zombie_var( "zombie_powerup_point_doubler_on", 0, undefined, undefined, 1 ); + set_zombie_var( "zombie_powerup_point_doubler_time", 30, undefined, undefined, 1 ); + set_zombie_var( "zombie_powerup_drop_increment", 2000 ); + set_zombie_var( "zombie_powerup_drop_max_per_round", 4 ); + onplayerconnect_callback( ::init_player_zombie_vars ); + level._effect[ "powerup_on" ] = loadfx( "misc/fx_zombie_powerup_on" ); + level._effect[ "powerup_off" ] = loadfx( "misc/fx_zombie_powerup_off" ); + level._effect[ "powerup_grabbed" ] = loadfx( "misc/fx_zombie_powerup_grab" ); + level._effect[ "powerup_grabbed_wave" ] = loadfx( "misc/fx_zombie_powerup_wave" ); + if ( isDefined( level.using_zombie_powerups ) && level.using_zombie_powerups ) + { + level._effect[ "powerup_on_red" ] = loadfx( "misc/fx_zombie_powerup_on_red" ); + level._effect[ "powerup_grabbed_red" ] = loadfx( "misc/fx_zombie_powerup_red_grab" ); + level._effect[ "powerup_grabbed_wave_red" ] = loadfx( "misc/fx_zombie_powerup_red_wave" ); + } + level._effect[ "powerup_on_solo" ] = loadfx( "misc/fx_zombie_powerup_solo_on" ); + level._effect[ "powerup_grabbed_solo" ] = loadfx( "misc/fx_zombie_powerup_solo_grab" ); + level._effect[ "powerup_grabbed_wave_solo" ] = loadfx( "misc/fx_zombie_powerup_solo_wave" ); + level._effect[ "powerup_on_caution" ] = loadfx( "misc/fx_zombie_powerup_caution_on" ); + level._effect[ "powerup_grabbed_caution" ] = loadfx( "misc/fx_zombie_powerup_caution_grab" ); + level._effect[ "powerup_grabbed_wave_caution" ] = loadfx( "misc/fx_zombie_powerup_caution_wave" ); + init_powerups(); + if ( !level.enable_magic ) + { + return; + } + thread watch_for_drop(); + thread setup_firesale_audio(); + thread setup_bonfiresale_audio(); + level.use_new_carpenter_func = ::start_carpenter_new; + level.board_repair_distance_squared = 562500; +} + +init_powerups() +{ + flag_init( "zombie_drop_powerups" ); + if ( isDefined( level.enable_magic ) && level.enable_magic ) + { + flag_set( "zombie_drop_powerups" ); + } + if ( !isDefined( level.active_powerups ) ) + { + level.active_powerups = []; + } + if ( !isDefined( level.zombie_powerup_array ) ) + { + level.zombie_powerup_array = []; + } + if ( !isDefined( level.zombie_special_drop_array ) ) + { + level.zombie_special_drop_array = []; + } + add_zombie_powerup( "nuke", "zombie_bomb", &"ZOMBIE_POWERUP_NUKE", ::func_should_always_drop, 0, 0, 0, "misc/fx_zombie_mini_nuke_hotness" ); + add_zombie_powerup( "insta_kill", "zombie_skull", &"ZOMBIE_POWERUP_INSTA_KILL", ::func_should_always_drop, 0, 0, 0, undefined, "powerup_instant_kill", "zombie_powerup_insta_kill_time", "zombie_powerup_insta_kill_on" ); + add_zombie_powerup( "full_ammo", "zombie_ammocan", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_always_drop, 0, 0, 0 ); + add_zombie_powerup( "double_points", "zombie_x2_icon", &"ZOMBIE_POWERUP_DOUBLE_POINTS", ::func_should_always_drop, 0, 0, 0, undefined, "powerup_double_points", "zombie_powerup_point_doubler_time", "zombie_powerup_point_doubler_on" ); + add_zombie_powerup( "carpenter", "zombie_carpenter", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_drop_carpenter, 0, 0, 0 ); + add_zombie_powerup( "fire_sale", "zombie_firesale", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_drop_fire_sale, 0, 0, 0, undefined, "powerup_fire_sale", "zombie_powerup_fire_sale_time", "zombie_powerup_fire_sale_on" ); + add_zombie_powerup( "bonfire_sale", "zombie_pickup_bonfire", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_never_drop, 0, 0, 0, undefined, "powerup_bon_fire", "zombie_powerup_bonfire_sale_time", "zombie_powerup_bonfire_sale_on" ); + add_zombie_powerup( "minigun", "zombie_pickup_minigun", &"ZOMBIE_POWERUP_MINIGUN", ::func_should_drop_minigun, 1, 0, 0, undefined, "powerup_mini_gun", "zombie_powerup_minigun_time", "zombie_powerup_minigun_on" ); + add_zombie_powerup( "free_perk", "zombie_pickup_perk_bottle", &"ZOMBIE_POWERUP_FREE_PERK", ::func_should_never_drop, 0, 0, 0 ); + add_zombie_powerup( "tesla", "zombie_pickup_minigun", &"ZOMBIE_POWERUP_MINIGUN", ::func_should_never_drop, 1, 0, 0, undefined, "powerup_tesla", "zombie_powerup_tesla_time", "zombie_powerup_tesla_on" ); + add_zombie_powerup( "random_weapon", "zombie_pickup_minigun", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_never_drop, 1, 0, 0 ); + add_zombie_powerup( "bonus_points_player", "zombie_z_money_icon", &"ZOMBIE_POWERUP_BONUS_POINTS", ::func_should_never_drop, 1, 0, 0 ); + add_zombie_powerup( "bonus_points_team", "zombie_z_money_icon", &"ZOMBIE_POWERUP_BONUS_POINTS", ::func_should_never_drop, 0, 0, 0 ); + add_zombie_powerup( "lose_points_team", "zombie_z_money_icon", &"ZOMBIE_POWERUP_LOSE_POINTS", ::func_should_never_drop, 0, 0, 1 ); + add_zombie_powerup( "lose_perk", "zombie_pickup_perk_bottle", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_never_drop, 0, 0, 1 ); + add_zombie_powerup( "empty_clip", "zombie_ammocan", &"ZOMBIE_POWERUP_MAX_AMMO", ::func_should_never_drop, 0, 0, 1 ); + add_zombie_powerup( "insta_kill_ug", "zombie_skull", &"ZOMBIE_POWERUP_INSTA_KILL", ::func_should_never_drop, 1, 0, 0, undefined, "powerup_instant_kill_ug", "zombie_powerup_insta_kill_ug_time", "zombie_powerup_insta_kill_ug_on", 5000 ); + if ( isDefined( level.level_specific_init_powerups ) ) + { + [[ level.level_specific_init_powerups ]](); + } + randomize_powerups(); + level.zombie_powerup_index = 0; + randomize_powerups(); + level.rare_powerups_active = 0; + level.firesale_vox_firstime = 0; + level thread powerup_hud_monitor(); + if ( isDefined( level.quantum_bomb_register_result_func ) ) + { + [[ level.quantum_bomb_register_result_func ]]( "random_powerup", ::quantum_bomb_random_powerup_result, 5, level.quantum_bomb_in_playable_area_validation_func ); + [[ level.quantum_bomb_register_result_func ]]( "random_zombie_grab_powerup", ::quantum_bomb_random_zombie_grab_powerup_result, 5, level.quantum_bomb_in_playable_area_validation_func ); + [[ level.quantum_bomb_register_result_func ]]( "random_weapon_powerup", ::quantum_bomb_random_weapon_powerup_result, 60, level.quantum_bomb_in_playable_area_validation_func ); + [[ level.quantum_bomb_register_result_func ]]( "random_bonus_or_lose_points_powerup", ::quantum_bomb_random_bonus_or_lose_points_powerup_result, 25, level.quantum_bomb_in_playable_area_validation_func ); + } + registerclientfield( "scriptmover", "powerup_fx", 1000, 3, "int" ); +} + +init_player_zombie_vars() +{ + self.zombie_vars[ "zombie_powerup_minigun_on" ] = 0; + self.zombie_vars[ "zombie_powerup_minigun_time" ] = 0; + self.zombie_vars[ "zombie_powerup_tesla_on" ] = 0; + self.zombie_vars[ "zombie_powerup_tesla_time" ] = 0; + self.zombie_vars[ "zombie_powerup_insta_kill_ug_on" ] = 0; + self.zombie_vars[ "zombie_powerup_insta_kill_ug_time" ] = 18; +} + +powerup_hud_monitor() +{ + flag_wait( "start_zombie_round_logic" ); + if ( isDefined( level.current_game_module ) && level.current_game_module == 2 ) + { + return; + } + flashing_timers = []; + flashing_values = []; + flashing_timer = 10; + flashing_delta_time = 0; + flashing_is_on = 0; + flashing_value = 3; + flashing_min_timer = 0,15; + while ( flashing_timer >= flashing_min_timer ) + { + if ( flashing_timer < 5 ) + { + flashing_delta_time = 0,1; + } + else + { + flashing_delta_time = 0,2; + } + if ( flashing_is_on ) + { + flashing_timer = flashing_timer - flashing_delta_time - 0,05; + flashing_value = 2; + } + else + { + flashing_timer -= flashing_delta_time; + flashing_value = 3; + } + flashing_timers[ flashing_timers.size ] = flashing_timer; + flashing_values[ flashing_values.size ] = flashing_value; + flashing_is_on = !flashing_is_on; + } + client_fields = []; + powerup_keys = getarraykeys( level.zombie_powerups ); + powerup_key_index = 0; + while ( powerup_key_index < powerup_keys.size ) + { + if ( isDefined( level.zombie_powerups[ powerup_keys[ powerup_key_index ] ].client_field_name ) ) + { + powerup_name = powerup_keys[ powerup_key_index ]; + client_fields[ powerup_name ] = spawnstruct(); + client_fields[ powerup_name ].client_field_name = level.zombie_powerups[ powerup_name ].client_field_name; + client_fields[ powerup_name ].solo = level.zombie_powerups[ powerup_name ].solo; + client_fields[ powerup_name ].time_name = level.zombie_powerups[ powerup_name ].time_name; + client_fields[ powerup_name ].on_name = level.zombie_powerups[ powerup_name ].on_name; + } + powerup_key_index++; + } + client_field_keys = getarraykeys( client_fields ); + while ( 1 ) + { + wait 0,05; + waittillframeend; + players = get_players(); + playerindex = 0; + while ( playerindex < players.size ) + { + client_field_key_index = 0; + while ( client_field_key_index < client_field_keys.size ) + { + player = players[ playerindex ]; +/# + if ( isDefined( player.pers[ "isBot" ] ) && player.pers[ "isBot" ] ) + { + client_field_key_index++; + continue; +#/ + } + else + { + if ( isDefined( level.powerup_player_valid ) ) + { + if ( !( [[ level.powerup_player_valid ]]( player ) ) ) + { + client_field_key_index++; + continue; + } + } + else client_field_name = client_fields[ client_field_keys[ client_field_key_index ] ].client_field_name; + time_name = client_fields[ client_field_keys[ client_field_key_index ] ].time_name; + on_name = client_fields[ client_field_keys[ client_field_key_index ] ].on_name; + powerup_timer = undefined; + powerup_on = undefined; + if ( client_fields[ client_field_keys[ client_field_key_index ] ].solo ) + { + if ( isDefined( player._show_solo_hud ) && player._show_solo_hud == 1 ) + { + powerup_timer = player.zombie_vars[ time_name ]; + powerup_on = player.zombie_vars[ on_name ]; + } + } + else if ( isDefined( level.zombie_vars[ player.team ][ time_name ] ) ) + { + powerup_timer = level.zombie_vars[ player.team ][ time_name ]; + powerup_on = level.zombie_vars[ player.team ][ on_name ]; + } + else + { + if ( isDefined( level.zombie_vars[ time_name ] ) ) + { + powerup_timer = level.zombie_vars[ time_name ]; + powerup_on = level.zombie_vars[ on_name ]; + } + } + if ( isDefined( powerup_timer ) && isDefined( powerup_on ) ) + { + player set_clientfield_powerups( client_field_name, powerup_timer, powerup_on, flashing_timers, flashing_values ); + client_field_key_index++; + continue; + } + else + { + player setclientfieldtoplayer( client_field_name, 0 ); + } + } + client_field_key_index++; + } + playerindex++; + } + } +} + +set_clientfield_powerups( clientfield_name, powerup_timer, powerup_on, flashing_timers, flashing_values ) +{ + if ( powerup_on ) + { + if ( powerup_timer < 10 ) + { + flashing_value = 3; + i = flashing_timers.size - 1; + while ( i > 0 ) + { + if ( powerup_timer < flashing_timers[ i ] ) + { + flashing_value = flashing_values[ i ]; + break; + } + else + { + i--; + + } + } + self setclientfieldtoplayer( clientfield_name, flashing_value ); + } + else + { + self setclientfieldtoplayer( clientfield_name, 1 ); + } + } + else + { + self setclientfieldtoplayer( clientfield_name, 0 ); + } +} + +randomize_powerups() +{ + level.zombie_powerup_array = array_randomize( level.zombie_powerup_array ); +} + +get_next_powerup() +{ + powerup = level.zombie_powerup_array[ level.zombie_powerup_index ]; + level.zombie_powerup_index++; + if ( level.zombie_powerup_index >= level.zombie_powerup_array.size ) + { + level.zombie_powerup_index = 0; + randomize_powerups(); + } + return powerup; +} + +get_valid_powerup() +{ +/# + if ( isDefined( level.zombie_devgui_power ) && level.zombie_devgui_power == 1 ) + { + return level.zombie_powerup_array[ level.zombie_powerup_index ]; +#/ + } + if ( isDefined( level.zombie_powerup_boss ) ) + { + i = level.zombie_powerup_boss; + level.zombie_powerup_boss = undefined; + return level.zombie_powerup_array[ i ]; + } + if ( isDefined( level.zombie_powerup_ape ) ) + { + powerup = level.zombie_powerup_ape; + level.zombie_powerup_ape = undefined; + return powerup; + } + powerup = get_next_powerup(); + while ( 1 ) + { + while ( !( [[ level.zombie_powerups[ powerup ].func_should_drop_with_regular_powerups ]]() ) ) + { + powerup = get_next_powerup(); + } + return powerup; + } +} + +minigun_no_drop() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ].zombie_vars[ "zombie_powerup_minigun_on" ] == 1 ) + { + return 1; + } + i++; + } + if ( !flag( "power_on" ) ) + { + if ( flag( "solo_game" ) ) + { + if ( level.solo_lives_given == 0 ) + { + return 1; + } + } + else + { + return 1; + } + } + return 0; +} + +get_num_window_destroyed() +{ + num = 0; + i = 0; + while ( i < level.exterior_goals.size ) + { + if ( all_chunks_destroyed( level.exterior_goals[ i ], level.exterior_goals[ i ].barrier_chunks ) ) + { + num += 1; + } + i++; + } + return num; +} + +watch_for_drop() +{ + flag_wait( "start_zombie_round_logic" ); + flag_wait( "begin_spawning" ); + players = get_players(); + score_to_drop = ( players.size * level.zombie_vars[ "zombie_score_start_" + players.size + "p" ] ) + level.zombie_vars[ "zombie_powerup_drop_increment" ]; + while ( 1 ) + { + flag_wait( "zombie_drop_powerups" ); + players = get_players(); + curr_total_score = 0; + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ].score_total ) ) + { + curr_total_score += players[ i ].score_total; + } + i++; + } + if ( curr_total_score > score_to_drop ) + { + level.zombie_vars[ "zombie_powerup_drop_increment" ] *= 1,14; + score_to_drop = curr_total_score + level.zombie_vars[ "zombie_powerup_drop_increment" ]; + level.zombie_vars[ "zombie_drop_item" ] = 1; + } + wait 0,5; + } +} + +add_zombie_powerup( powerup_name, model_name, hint, func_should_drop_with_regular_powerups, solo, caution, zombie_grabbable, fx, client_field_name, time_name, on_name, clientfield_version ) +{ + if ( !isDefined( clientfield_version ) ) + { + clientfield_version = 1; + } + if ( isDefined( level.zombie_include_powerups ) && !isDefined( level.zombie_include_powerups[ powerup_name ] ) ) + { + return; + } + precachemodel( model_name ); + precachestring( hint ); + struct = spawnstruct(); + if ( !isDefined( level.zombie_powerups ) ) + { + level.zombie_powerups = []; + } + struct.powerup_name = powerup_name; + struct.model_name = model_name; + struct.weapon_classname = "script_model"; + struct.hint = hint; + struct.func_should_drop_with_regular_powerups = func_should_drop_with_regular_powerups; + struct.solo = solo; + struct.caution = caution; + struct.zombie_grabbable = zombie_grabbable; + if ( isDefined( fx ) ) + { + struct.fx = loadfx( fx ); + } + level.zombie_powerups[ powerup_name ] = struct; + level.zombie_powerup_array[ level.zombie_powerup_array.size ] = powerup_name; + add_zombie_special_drop( powerup_name ); + if ( !level.createfx_enabled ) + { + if ( isDefined( client_field_name ) ) + { + registerclientfield( "toplayer", client_field_name, clientfield_version, 2, "int" ); + struct.client_field_name = client_field_name; + struct.time_name = time_name; + struct.on_name = on_name; + } + } +} + +add_zombie_special_drop( powerup_name ) +{ + level.zombie_special_drop_array[ level.zombie_special_drop_array.size ] = powerup_name; +} + +include_zombie_powerup( powerup_name ) +{ + if ( !isDefined( level.zombie_include_powerups ) ) + { + level.zombie_include_powerups = []; + } + level.zombie_include_powerups[ powerup_name ] = 1; +} + +powerup_round_start() +{ + level.powerup_drop_count = 0; +} + +powerup_drop( drop_point ) +{ + if ( level.powerup_drop_count >= level.zombie_vars[ "zombie_powerup_drop_max_per_round" ] ) + { +/# + println( "^3POWERUP DROP EXCEEDED THE MAX PER ROUND!" ); +#/ + return; + } + if ( !isDefined( level.zombie_include_powerups ) || level.zombie_include_powerups.size == 0 ) + { + return; + } + rand_drop = randomint( 100 ); + if ( rand_drop > 2 ) + { + if ( !level.zombie_vars[ "zombie_drop_item" ] ) + { + return; + } + debug = "score"; + } + else + { + debug = "random"; + } + playable_area = getentarray( "player_volume", "script_noteworthy" ); + level.powerup_drop_count++; + powerup = maps/mp/zombies/_zm_net::network_safe_spawn( "powerup", 1, "script_model", drop_point + vectorScale( ( 0, 0, 0 ), 40 ) ); + valid_drop = 0; + i = 0; + while ( i < playable_area.size ) + { + if ( powerup istouching( playable_area[ i ] ) ) + { + valid_drop = 1; + } + i++; + } + if ( valid_drop && level.rare_powerups_active ) + { + pos = ( drop_point[ 0 ], drop_point[ 1 ], drop_point[ 2 ] + 42 ); + if ( check_for_rare_drop_override( pos ) ) + { + level.zombie_vars[ "zombie_drop_item" ] = 0; + valid_drop = 0; + } + } + if ( !valid_drop ) + { + level.powerup_drop_count--; + + powerup delete(); + return; + } + powerup powerup_setup(); + print_powerup_drop( powerup.powerup_name, debug ); + powerup thread powerup_timeout(); + powerup thread powerup_wobble(); + powerup thread powerup_grab(); + powerup thread powerup_move(); + powerup thread powerup_emp(); + level.zombie_vars[ "zombie_drop_item" ] = 0; + level notify( "powerup_dropped" ); +} + +specific_powerup_drop( powerup_name, drop_spot, powerup_team, powerup_location ) +{ + powerup = maps/mp/zombies/_zm_net::network_safe_spawn( "powerup", 1, "script_model", drop_spot + vectorScale( ( 0, 0, 0 ), 40 ) ); + level notify( "powerup_dropped" ); + if ( isDefined( powerup ) ) + { + powerup powerup_setup( powerup_name, powerup_team, powerup_location ); + powerup thread powerup_timeout(); + powerup thread powerup_wobble(); + powerup thread powerup_grab( powerup_team ); + powerup thread powerup_move(); + powerup thread powerup_emp(); + return powerup; + } +} + +quantum_bomb_random_powerup_result( position ) +{ + if ( !isDefined( level.zombie_include_powerups ) || !level.zombie_include_powerups.size ) + { + return; + } + keys = getarraykeys( level.zombie_include_powerups ); + while ( keys.size ) + { + index = randomint( keys.size ); + if ( !level.zombie_powerups[ keys[ index ] ].zombie_grabbable ) + { + skip = 0; + switch( keys[ index ] ) + { + case "bonus_points_player": + case "bonus_points_team": + case "random_weapon": + skip = 1; + break; + case "fire_sale": + case "full_ammo": + case "insta_kill": + case "minigun": + if ( randomint( 4 ) ) + { + skip = 1; + } + break; + case "bonfire_sale": + case "free_perk": + case "tesla": + if ( randomint( 20 ) ) + { + skip = 1; + } + break; + default: + } + while ( skip ) + { + arrayremovevalue( keys, keys[ index ] ); + } + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); + [[ level.quantum_bomb_play_player_effect_at_position_func ]]( position ); + level specific_powerup_drop( keys[ index ], position ); + return; + continue; + } + else arrayremovevalue( keys, keys[ index ] ); + } + } +} + +quantum_bomb_random_zombie_grab_powerup_result( position ) +{ + if ( !isDefined( level.zombie_include_powerups ) || !level.zombie_include_powerups.size ) + { + return; + } + keys = getarraykeys( level.zombie_include_powerups ); + while ( keys.size ) + { + index = randomint( keys.size ); + if ( level.zombie_powerups[ keys[ index ] ].zombie_grabbable ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_bad" ); + [[ level.quantum_bomb_play_player_effect_at_position_func ]]( position ); + level specific_powerup_drop( keys[ index ], position ); + return; + continue; + } + else + { + arrayremovevalue( keys, keys[ index ] ); + } + } +} + +quantum_bomb_random_weapon_powerup_result( position ) +{ + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_good" ); + [[ level.quantum_bomb_play_player_effect_at_position_func ]]( position ); + level specific_powerup_drop( "random_weapon", position ); +} + +quantum_bomb_random_bonus_or_lose_points_powerup_result( position ) +{ + rand = randomint( 10 ); + powerup = "bonus_points_team"; + switch( rand ) + { + case 0: + case 1: + powerup = "lose_points_team"; + if ( isDefined( level.zombie_include_powerups[ powerup ] ) ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "quant_bad" ); + break; + } + else case 2: + case 3: + case 4: + powerup = "bonus_points_player"; + if ( isDefined( level.zombie_include_powerups[ powerup ] ) ) + { + break; + } + else default: + powerup = "bonus_points_team"; + break; + } + [[ level.quantum_bomb_play_player_effect_at_position_func ]]( position ); + level specific_powerup_drop( powerup, position ); +} + +special_powerup_drop( drop_point ) +{ + if ( !isDefined( level.zombie_include_powerups ) || level.zombie_include_powerups.size == 0 ) + { + return; + } + powerup = spawn( "script_model", drop_point + vectorScale( ( 0, 0, 0 ), 40 ) ); + playable_area = getentarray( "player_volume", "script_noteworthy" ); + valid_drop = 0; + i = 0; + while ( i < playable_area.size ) + { + if ( powerup istouching( playable_area[ i ] ) ) + { + valid_drop = 1; + break; + } + else + { + i++; + } + } + if ( !valid_drop ) + { + powerup delete(); + return; + } + powerup special_drop_setup(); +} + +cleanup_random_weapon_list() +{ + self waittill( "death" ); + arrayremovevalue( level.random_weapon_powerups, self ); +} + +powerup_setup( powerup_override, powerup_team, powerup_location ) +{ + powerup = undefined; + if ( !isDefined( powerup_override ) ) + { + powerup = get_valid_powerup(); + } + else + { + powerup = powerup_override; + if ( powerup == "tesla" && tesla_powerup_active() ) + { + powerup = "minigun"; + } + } + struct = level.zombie_powerups[ powerup ]; + if ( powerup == "random_weapon" ) + { + self.weapon = maps/mp/zombies/_zm_magicbox::treasure_chest_chooseweightedrandomweapon(); +/# + weapon = getDvar( "scr_force_weapon" ); + if ( weapon != "" && isDefined( level.zombie_weapons[ weapon ] ) ) + { + self.weapon = weapon; + setdvar( "scr_force_weapon", "" ); +#/ + } + self.base_weapon = self.weapon; + if ( !isDefined( level.random_weapon_powerups ) ) + { + level.random_weapon_powerups = []; + } + level.random_weapon_powerups[ level.random_weapon_powerups.size ] = self; + self thread cleanup_random_weapon_list(); + if ( isDefined( level.zombie_weapons[ self.weapon ].upgrade_name ) && !randomint( 4 ) ) + { + self.weapon = level.zombie_weapons[ self.weapon ].upgrade_name; + } + self setmodel( getweaponmodel( self.weapon ) ); + self useweaponhidetags( self.weapon ); + offsetdw = vectorScale( ( 0, 0, 0 ), 3 ); + self.worldgundw = undefined; + if ( maps/mp/zombies/_zm_magicbox::weapon_is_dual_wield( self.weapon ) ) + { + self.worldgundw = spawn( "script_model", self.origin + offsetdw ); + self.worldgundw.angles = self.angles; + self.worldgundw setmodel( maps/mp/zombies/_zm_magicbox::get_left_hand_weapon_model_name( self.weapon ) ); + self.worldgundw useweaponhidetags( self.weapon ); + self.worldgundw linkto( self, "tag_weapon", offsetdw, ( 0, 0, 0 ) ); + } + } + else + { + self setmodel( struct.model_name ); + } + maps/mp/_demo::bookmark( "zm_powerup_dropped", getTime(), undefined, undefined, 1 ); + playsoundatposition( "zmb_spawn_powerup", self.origin ); + if ( isDefined( powerup_team ) ) + { + self.powerup_team = powerup_team; + } + if ( isDefined( powerup_location ) ) + { + self.powerup_location = powerup_location; + } + self.powerup_name = struct.powerup_name; + self.hint = struct.hint; + self.solo = struct.solo; + self.caution = struct.caution; + self.zombie_grabbable = struct.zombie_grabbable; + self.func_should_drop_with_regular_powerups = struct.func_should_drop_with_regular_powerups; + if ( isDefined( struct.fx ) ) + { + self.fx = struct.fx; + } + self playloopsound( "zmb_spawn_powerup_loop" ); + level.active_powerups[ level.active_powerups.size ] = self; +} + +special_drop_setup() +{ + powerup = undefined; + is_powerup = 1; + if ( level.round_number <= 10 ) + { + powerup = get_valid_powerup(); + } + else + { + powerup = level.zombie_special_drop_array[ randomint( level.zombie_special_drop_array.size ) ]; + if ( level.round_number > 15 && randomint( 100 ) < ( ( level.round_number - 15 ) * 5 ) ) + { + powerup = "nothing"; + } + } + switch( powerup ) + { + case "all_revive": + case "bonfire_sale": + case "bonus_points_player": + case "bonus_points_team": + case "carpenter": + case "double_points": + case "empty_clip": + case "fire_sale": + case "free_perk": + case "insta_kill": + case "lose_perk": + case "lose_points_team": + case "minigun": + case "nuke": + case "random_weapon": + case "tesla": + break; + case "full_ammo": + if ( level.round_number > 10 && randomint( 100 ) < ( ( level.round_number - 10 ) * 5 ) ) + { + powerup = level.zombie_powerup_array[ randomint( level.zombie_powerup_array.size ) ]; + } + break; + case "dog": + if ( level.round_number >= 15 ) + { + is_powerup = 0; + dog_spawners = getentarray( "special_dog_spawner", "targetname" ); + thread play_sound_2d( "sam_nospawn" ); + } + else + { + powerup = get_valid_powerup(); + } + break; + default: + if ( isDefined( level._zombiemode_special_drop_setup ) ) + { + is_powerup = [[ level._zombiemode_special_drop_setup ]]( powerup ); + } + else + { + is_powerup = 0; + playfx( level._effect[ "lightning_dog_spawn" ], self.origin ); + playsoundatposition( "pre_spawn", self.origin ); + wait 1,5; + playsoundatposition( "zmb_bolt", self.origin ); + earthquake( 0,5, 0,75, self.origin, 1000 ); + playrumbleonposition( "explosion_generic", self.origin ); + playsoundatposition( "spawn", self.origin ); + wait 1; + thread play_sound_2d( "sam_nospawn" ); + self delete(); + } + } + if ( is_powerup ) + { + playfx( level._effect[ "lightning_dog_spawn" ], self.origin ); + playsoundatposition( "pre_spawn", self.origin ); + wait 1,5; + playsoundatposition( "zmb_bolt", self.origin ); + earthquake( 0,5, 0,75, self.origin, 1000 ); + playrumbleonposition( "explosion_generic", self.origin ); + playsoundatposition( "spawn", self.origin ); + self powerup_setup( powerup ); + self thread powerup_timeout(); + self thread powerup_wobble(); + self thread powerup_grab(); + self thread powerup_move(); + self thread powerup_emp(); + } +} + +powerup_zombie_grab_trigger_cleanup( trigger ) +{ + self waittill_any( "powerup_timedout", "powerup_grabbed", "hacked" ); + trigger delete(); +} + +powerup_zombie_grab( powerup_team ) +{ + self endon( "powerup_timedout" ); + self endon( "powerup_grabbed" ); + self endon( "hacked" ); + zombie_grab_trigger = spawn( "trigger_radius", self.origin - vectorScale( ( 0, 0, 0 ), 40 ), 4, 32, 72 ); + zombie_grab_trigger enablelinkto(); + zombie_grab_trigger linkto( self ); + zombie_grab_trigger setteamfortrigger( level.zombie_team ); + self thread powerup_zombie_grab_trigger_cleanup( zombie_grab_trigger ); + poi_dist = 300; + if ( isDefined( level._zombie_grabbable_poi_distance_override ) ) + { + poi_dist = level._zombie_grabbable_poi_distance_override; + } + zombie_grab_trigger create_zombie_point_of_interest( poi_dist, 2, 0, 1, undefined, undefined, powerup_team ); + while ( isDefined( self ) ) + { + zombie_grab_trigger waittill( "trigger", who ); + if ( isDefined( level._powerup_grab_check ) ) + { + while ( !( self [[ level._powerup_grab_check ]]( who ) ) ) + { + continue; + } + } + else if ( !isDefined( who ) || !isai( who ) ) + { + continue; + } + playfx( level._effect[ "powerup_grabbed_red" ], self.origin ); + playfx( level._effect[ "powerup_grabbed_wave_red" ], self.origin ); + switch( self.powerup_name ) + { + case "lose_points_team": + level thread lose_points_team_powerup( self ); + players = get_players(); + players[ randomintrange( 0, players.size ) ] thread powerup_vo( "lose_points" ); + break; + case "lose_perk": + level thread lose_perk_powerup( self ); + break; + case "empty_clip": + level thread empty_clip_powerup( self ); + break; + default: + if ( isDefined( level._zombiemode_powerup_zombie_grab ) ) + { + level thread [[ level._zombiemode_powerup_zombie_grab ]]( self ); + } + if ( isDefined( level._game_mode_powerup_zombie_grab ) ) + { + level thread [[ level._game_mode_powerup_zombie_grab ]]( self, who ); + } + else + { +/# + println( "Unrecognized poweup." ); +#/ + } + break; + } + level thread maps/mp/zombies/_zm_audio::do_announcer_playvox( "powerup", self.powerup_name ); + wait 0,1; + playsoundatposition( "zmb_powerup_grabbed", self.origin ); + self stoploopsound(); + self powerup_delete(); + self notify( "powerup_grabbed" ); + } +} + +powerup_grab( powerup_team ) +{ + if ( isDefined( self ) && self.zombie_grabbable ) + { + self thread powerup_zombie_grab( powerup_team ); + return; + } + self endon( "powerup_timedout" ); + self endon( "powerup_grabbed" ); + range_squared = 4096; + while ( isDefined( self ) ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( self.powerup_name != "minigun" && self.powerup_name != "tesla" && self.powerup_name != "random_weapon" && self.powerup_name == "meat_stink" || players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ] usebuttonpressed() && players[ i ] in_revive_trigger() ) + { + i++; + continue; + } + else + { + if ( distancesquared( players[ i ].origin, self.origin ) < range_squared ) + { + if ( isDefined( level._powerup_grab_check ) ) + { + if ( !( self [[ level._powerup_grab_check ]]( players[ i ] ) ) ) + { + i++; + continue; + } + } + else if ( isDefined( level.zombie_powerup_grab_func ) ) + { + level thread [[ level.zombie_powerup_grab_func ]](); + break; + } + else switch( self.powerup_name ) + { + case "nuke": + level thread nuke_powerup( self, players[ i ].team ); + players[ i ] thread powerup_vo( "nuke" ); + zombies = getaiarray( level.zombie_team ); + players[ i ].zombie_nuked = arraysort( zombies, self.origin ); + players[ i ] notify( "nuke_triggered" ); + break; + case "full_ammo": + level thread full_ammo_powerup( self, players[ i ] ); + players[ i ] thread powerup_vo( "full_ammo" ); + break; + case "double_points": + level thread double_points_powerup( self, players[ i ] ); + players[ i ] thread powerup_vo( "double_points" ); + break; + case "insta_kill": + level thread insta_kill_powerup( self, players[ i ] ); + players[ i ] thread powerup_vo( "insta_kill" ); + break; + case "carpenter": + if ( is_classic() ) + { + players[ i ] thread persistent_carpenter_ability_check(); + } + if ( isDefined( level.use_new_carpenter_func ) ) + { + level thread [[ level.use_new_carpenter_func ]]( self.origin ); + } + else level thread start_carpenter( self.origin ); + players[ i ] thread powerup_vo( "carpenter" ); + break; + case "fire_sale": + level thread start_fire_sale( self ); + players[ i ] thread powerup_vo( "firesale" ); + break; + case "bonfire_sale": + level thread start_bonfire_sale( self ); + players[ i ] thread powerup_vo( "firesale" ); + break; + case "minigun": + level thread minigun_weapon_powerup( players[ i ] ); + players[ i ] thread powerup_vo( "minigun" ); + break; + case "free_perk": + level thread free_perk_powerup( self ); + break; + case "tesla": + level thread tesla_weapon_powerup( players[ i ] ); + players[ i ] thread powerup_vo( "tesla" ); + break; + case "random_weapon": + if ( !level random_weapon_powerup( self, players[ i ] ) ) + { + i++; + continue; + } + else case "bonus_points_player": + level thread bonus_points_player_powerup( self, players[ i ] ); + players[ i ] thread powerup_vo( "bonus_points_solo" ); + break; + case "bonus_points_team": + level thread bonus_points_team_powerup( self ); + players[ i ] thread powerup_vo( "bonus_points_team" ); + break; + case "teller_withdrawl": + level thread teller_withdrawl( self, players[ i ] ); + break; + default: + if ( isDefined( level._zombiemode_powerup_grab ) ) + { + level thread [[ level._zombiemode_powerup_grab ]]( self, players[ i ] ); + } + else /# + println( "Unrecognized poweup." ); +#/ + break; + } + maps/mp/_demo::bookmark( "zm_player_powerup_grabbed", getTime(), players[ i ] ); + if ( should_award_stat( self.powerup_name ) ) + { + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( "drops" ); + players[ i ] maps/mp/zombies/_zm_stats::increment_player_stat( "drops" ); + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( self.powerup_name + "_pickedup" ); + players[ i ] maps/mp/zombies/_zm_stats::increment_player_stat( self.powerup_name + "_pickedup" ); + } + if ( self.solo ) + { + playfx( level._effect[ "powerup_grabbed_solo" ], self.origin ); + playfx( level._effect[ "powerup_grabbed_wave_solo" ], self.origin ); + } + else if ( self.caution ) + { + playfx( level._effect[ "powerup_grabbed_caution" ], self.origin ); + playfx( level._effect[ "powerup_grabbed_wave_caution" ], self.origin ); + } + else + { + playfx( level._effect[ "powerup_grabbed" ], self.origin ); + playfx( level._effect[ "powerup_grabbed_wave" ], self.origin ); + } + if ( isDefined( self.stolen ) && self.stolen ) + { + level notify( "monkey_see_monkey_dont_achieved" ); + } + if ( isDefined( self.grabbed_level_notify ) ) + { + level notify( self.grabbed_level_notify ); + } + self.claimed = 1; + self.power_up_grab_player = players[ i ]; + wait 0,1; + playsoundatposition( "zmb_powerup_grabbed", self.origin ); + self stoploopsound(); + self hide(); + if ( self.powerup_name != "fire_sale" ) + { + if ( isDefined( self.power_up_grab_player ) ) + { + if ( isDefined( level.powerup_intro_vox ) ) + { + level thread [[ level.powerup_intro_vox ]]( self ); + return; + break; + } + else + { + if ( isDefined( level.powerup_vo_available ) ) + { + can_say_vo = [[ level.powerup_vo_available ]](); + if ( !can_say_vo ) + { + self powerup_delete(); + self notify( "powerup_grabbed" ); + return; + } + } + } + } + } + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( self.powerup_name, self.power_up_grab_player.pers[ "team" ] ); + self powerup_delete(); + self notify( "powerup_grabbed" ); + } + } + i++; + } + wait 0,1; + } +} + +start_fire_sale( item ) +{ + if ( level.zombie_vars[ "zombie_powerup_fire_sale_time" ] > 0 && is_true( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) ) + { + level.zombie_vars[ "zombie_powerup_fire_sale_time" ] += 30; + return; + } + level notify( "powerup fire sale" ); + level endon( "powerup fire sale" ); + level thread maps/mp/zombies/_zm_audio_announcer::leaderdialog( "fire_sale" ); + level.zombie_vars[ "zombie_powerup_fire_sale_on" ] = 1; + level thread toggle_fire_sale_on(); + level.zombie_vars[ "zombie_powerup_fire_sale_time" ] = 30; + while ( level.zombie_vars[ "zombie_powerup_fire_sale_time" ] > 0 ) + { + wait 0,05; + level.zombie_vars[ "zombie_powerup_fire_sale_time" ] -= 0,05; + } + level.zombie_vars[ "zombie_powerup_fire_sale_on" ] = 0; + level notify( "fire_sale_off" ); +} + +start_bonfire_sale( item ) +{ + level notify( "powerup bonfire sale" ); + level endon( "powerup bonfire sale" ); + temp_ent = spawn( "script_origin", ( 0, 0, 0 ) ); + temp_ent playloopsound( "zmb_double_point_loop" ); + level.zombie_vars[ "zombie_powerup_bonfire_sale_on" ] = 1; + level thread toggle_bonfire_sale_on(); + level.zombie_vars[ "zombie_powerup_bonfire_sale_time" ] = 30; + while ( level.zombie_vars[ "zombie_powerup_bonfire_sale_time" ] > 0 ) + { + wait 0,05; + level.zombie_vars[ "zombie_powerup_bonfire_sale_time" ] -= 0,05; + } + level.zombie_vars[ "zombie_powerup_bonfire_sale_on" ] = 0; + level notify( "bonfire_sale_off" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] playsound( "zmb_points_loop_off" ); + i++; + } + temp_ent delete(); +} + +start_carpenter( origin ) +{ + window_boards = getstructarray( "exterior_goal", "targetname" ); + total = level.exterior_goals.size; + carp_ent = spawn( "script_origin", ( 0, 0, 0 ) ); + carp_ent playloopsound( "evt_carpenter" ); + while ( 1 ) + { + windows = get_closest_window_repair( window_boards, origin ); + if ( !isDefined( windows ) ) + { + carp_ent stoploopsound( 1 ); + carp_ent playsoundwithnotify( "evt_carpenter_end", "sound_done" ); + carp_ent waittill( "sound_done" ); + break; + } + else arrayremovevalue( window_boards, windows ); + while ( 1 ) + { + if ( all_chunks_intact( windows, windows.barrier_chunks ) ) + { + break; + } + else chunk = get_random_destroyed_chunk( windows, windows.barrier_chunks ); + if ( !isDefined( chunk ) ) + { + break; + } + else + { + windows thread maps/mp/zombies/_zm_blockers::replace_chunk( windows, chunk, undefined, maps/mp/zombies/_zm_powerups::is_carpenter_boards_upgraded(), 1 ); + if ( isDefined( windows.clip ) ) + { + windows.clip enable_trigger(); + windows.clip disconnectpaths(); + } + else + { + blocker_disconnect_paths( windows.neg_start, windows.neg_end ); + } + wait_network_frame(); + wait 0,05; + } + } + wait_network_frame(); + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] maps/mp/zombies/_zm_score::player_add_points( "carpenter_powerup", 200 ); + i++; + } + carp_ent delete(); +} + +get_closest_window_repair( windows, origin ) +{ + current_window = undefined; + shortest_distance = undefined; + i = 0; + while ( i < windows.size ) + { + if ( all_chunks_intact( windows, windows[ i ].barrier_chunks ) ) + { + i++; + continue; + } + else if ( !isDefined( current_window ) ) + { + current_window = windows[ i ]; + shortest_distance = distancesquared( current_window.origin, origin ); + i++; + continue; + } + else + { + if ( distancesquared( windows[ i ].origin, origin ) < shortest_distance ) + { + current_window = windows[ i ]; + shortest_distance = distancesquared( windows[ i ].origin, origin ); + } + } + i++; + } + return current_window; +} + +powerup_vo( type ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( isDefined( level.powerup_vo_available ) ) + { + if ( !( [[ level.powerup_vo_available ]]() ) ) + { + return; + } + } + wait randomfloatrange( 2, 2,5 ); + if ( type == "tesla" ) + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", type ); + } + else + { + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "powerup", type ); + } + if ( isDefined( level.custom_powerup_vo_response ) ) + { + level [[ level.custom_powerup_vo_response ]]( self, type ); + } +} + +powerup_wobble_fx() +{ + self endon( "death" ); + if ( !isDefined( self ) ) + { + return; + } + if ( isDefined( level.powerup_fx_func ) ) + { + self thread [[ level.powerup_fx_func ]](); + return; + } + if ( self.solo ) + { + self setclientfield( "powerup_fx", 2 ); + } + else if ( self.caution ) + { + self setclientfield( "powerup_fx", 4 ); + } + else if ( self.zombie_grabbable ) + { + self setclientfield( "powerup_fx", 3 ); + } + else + { + self setclientfield( "powerup_fx", 1 ); + } +} + +powerup_wobble() +{ + self endon( "powerup_grabbed" ); + self endon( "powerup_timedout" ); + self thread powerup_wobble_fx(); + while ( isDefined( self ) ) + { + waittime = randomfloatrange( 2,5, 5 ); + yaw = randomint( 360 ); + if ( yaw > 300 ) + { + yaw = 300; + } + else + { + if ( yaw < 60 ) + { + yaw = 60; + } + } + yaw = self.angles[ 1 ] + yaw; + new_angles = ( -60 + randomint( 120 ), yaw, -45 + randomint( 90 ) ); + self rotateto( new_angles, waittime, waittime * 0,5, waittime * 0,5 ); + if ( isDefined( self.worldgundw ) ) + { + self.worldgundw rotateto( new_angles, waittime, waittime * 0,5, waittime * 0,5 ); + } + wait randomfloat( waittime - 0,1 ); + } +} + +powerup_timeout() +{ + if ( isDefined( level._powerup_timeout_override ) && !isDefined( self.powerup_team ) ) + { + self thread [[ level._powerup_timeout_override ]](); + return; + } + self endon( "powerup_grabbed" ); + self endon( "death" ); + self endon( "powerup_reset" ); + self show(); + wait_time = 15; + if ( isDefined( level._powerup_timeout_custom_time ) ) + { + time = [[ level._powerup_timeout_custom_time ]]( self ); + if ( time == 0 ) + { + return; + } + wait_time = time; + } + wait wait_time; + i = 0; + while ( i < 40 ) + { + if ( i % 2 ) + { + self ghost(); + if ( isDefined( self.worldgundw ) ) + { + self.worldgundw ghost(); + } + } + else + { + self show(); + if ( isDefined( self.worldgundw ) ) + { + self.worldgundw show(); + } + } + if ( i < 15 ) + { + wait 0,5; + i++; + continue; + } + else if ( i < 25 ) + { + wait 0,25; + i++; + continue; + } + else + { + wait 0,1; + } + i++; + } + self notify( "powerup_timedout" ); + self powerup_delete(); +} + +powerup_delete() +{ + arrayremovevalue( level.active_powerups, self, 0 ); + if ( isDefined( self.worldgundw ) ) + { + self.worldgundw delete(); + } + self delete(); +} + +powerup_delete_delayed( time ) +{ + if ( isDefined( time ) ) + { + wait time; + } + else + { + wait 0,01; + } + self powerup_delete(); +} + +nuke_powerup( drop_item, player_team ) +{ + location = drop_item.origin; + playfx( drop_item.fx, location ); + level thread nuke_flash(); + wait 0,5; + zombies = getaiarray( level.zombie_team ); + zombies = arraysort( zombies, location ); + zombies_nuked = []; + i = 0; + while ( i < zombies.size ) + { + if ( isDefined( zombies[ i ].ignore_nuke ) && zombies[ i ].ignore_nuke ) + { + i++; + continue; + } + else + { + if ( isDefined( zombies[ i ].marked_for_death ) && zombies[ i ].marked_for_death ) + { + i++; + continue; + } + else + { + if ( isDefined( zombies[ i ].nuke_damage_func ) ) + { + zombies[ i ] thread [[ zombies[ i ].nuke_damage_func ]](); + i++; + continue; + } + else if ( is_magic_bullet_shield_enabled( zombies[ i ] ) ) + { + i++; + continue; + } + else + { + zombies[ i ].marked_for_death = 1; + zombies[ i ].nuked = 1; + zombies_nuked[ zombies_nuked.size ] = zombies[ i ]; + } + } + } + i++; + } + i = 0; + while ( i < zombies_nuked.size ) + { + wait randomfloatrange( 0,1, 0,7 ); + if ( !isDefined( zombies_nuked[ i ] ) ) + { + i++; + continue; + } + else if ( is_magic_bullet_shield_enabled( zombies_nuked[ i ] ) ) + { + i++; + continue; + } + else + { + if ( i < 5 && !zombies_nuked[ i ].isdog ) + { + zombies_nuked[ i ] thread maps/mp/animscripts/zm_death::flame_death_fx(); + } + if ( !zombies_nuked[ i ].isdog ) + { + if ( isDefined( zombies_nuked[ i ].no_gib ) && !zombies_nuked[ i ].no_gib ) + { + zombies_nuked[ i ] maps/mp/zombies/_zm_spawner::zombie_head_gib(); + } + zombies_nuked[ i ] playsound( "evt_nuked" ); + } + zombies_nuked[ i ] dodamage( zombies_nuked[ i ].health + 666, zombies_nuked[ i ].origin ); + } + i++; + } + players = get_players( player_team ); + i = 0; + while ( i < players.size ) + { + players[ i ] maps/mp/zombies/_zm_score::player_add_points( "nuke_powerup", 400 ); + i++; + } +} + +nuke_flash() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] play_sound_2d( "evt_nuke_flash" ); + i++; + } + level thread devil_dialog_delay(); + fadetowhite = newhudelem(); + fadetowhite.x = 0; + fadetowhite.y = 0; + fadetowhite.alpha = 0; + fadetowhite.horzalign = "fullscreen"; + fadetowhite.vertalign = "fullscreen"; + fadetowhite.foreground = 1; + fadetowhite setshader( "white", 640, 480 ); + fadetowhite fadeovertime( 0,2 ); + fadetowhite.alpha = 0,8; + wait 0,5; + fadetowhite fadeovertime( 1 ); + fadetowhite.alpha = 0; + wait 1,1; + fadetowhite destroy(); +} + +double_points_powerup( drop_item, player ) +{ + level notify( "powerup points scaled_" + player.team ); + level endon( "powerup points scaled_" + player.team ); + team = player.team; + level thread point_doubler_on_hud( drop_item, team ); + if ( isDefined( level.current_game_module ) && level.current_game_module == 2 ) + { + if ( isDefined( player._race_team ) ) + { + if ( player._race_team == 1 ) + { + level._race_team_double_points = 1; + } + else + { + level._race_team_double_points = 2; + } + } + } + level.zombie_vars[ team ][ "zombie_point_scalar" ] = 2; + players = get_players(); + player_index = 0; + while ( player_index < players.size ) + { + if ( team == players[ player_index ].team ) + { + players[ player_index ] setclientfield( "score_cf_double_points_active", 1 ); + } + player_index++; + } + wait 30; + level.zombie_vars[ team ][ "zombie_point_scalar" ] = 1; + level._race_team_double_points = undefined; + players = get_players(); + player_index = 0; + while ( player_index < players.size ) + { + if ( team == players[ player_index ].team ) + { + players[ player_index ] setclientfield( "score_cf_double_points_active", 0 ); + } + player_index++; + } +} + +full_ammo_powerup( drop_item, player ) +{ + players = get_players( player.team ); + if ( isDefined( level._get_game_module_players ) ) + { + players = [[ level._get_game_module_players ]]( player ); + } + i = 0; + while ( i < players.size ) + { + if ( players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + i++; + continue; + } + else + { + primary_weapons = players[ i ] getweaponslist( 1 ); + players[ i ] notify( "zmb_max_ammo" ); + players[ i ] notify( "zmb_lost_knife" ); + players[ i ] notify( "zmb_disable_claymore_prompt" ); + players[ i ] notify( "zmb_disable_spikemore_prompt" ); + x = 0; + while ( x < primary_weapons.size ) + { + if ( level.headshots_only && is_lethal_grenade( primary_weapons[ x ] ) ) + { + x++; + continue; + } + else + { + if ( isDefined( level.zombie_include_equipment ) && isDefined( level.zombie_include_equipment[ primary_weapons[ x ] ] ) ) + { + x++; + continue; + } + else + { + if ( players[ i ] hasweapon( primary_weapons[ x ] ) ) + { + players[ i ] givemaxammo( primary_weapons[ x ] ); + } + } + } + x++; + } + } + i++; + } + level thread full_ammo_on_hud( drop_item, player.team ); +} + +insta_kill_powerup( drop_item, player ) +{ + level notify( "powerup instakill_" + player.team ); + level endon( "powerup instakill_" + player.team ); + if ( isDefined( level.insta_kill_powerup_override ) ) + { + level thread [[ level.insta_kill_powerup_override ]]( drop_item, player ); + return; + } + if ( is_classic() ) + { + player thread player_insta_kill_upgrade_check(); + } + team = player.team; + level thread insta_kill_on_hud( drop_item, team ); + level.zombie_vars[ team ][ "zombie_insta_kill" ] = 1; + wait 30; + level.zombie_vars[ team ][ "zombie_insta_kill" ] = 0; + players = get_players( team ); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ] ) ) + { + players[ i ] notify( "insta_kill_over" ); + } + i++; + } +} + +is_insta_kill_active() +{ + return level.zombie_vars[ self.team ][ "zombie_insta_kill" ]; +} + +player_insta_kill_upgrade_check() +{ + if ( isDefined( level.pers_upgrade_insta_kill ) && level.pers_upgrade_insta_kill ) + { + self endon( "death" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + e_player = players[ i ]; + if ( isDefined( e_player.pers_upgrades_awarded[ "insta_kill" ] ) && e_player.pers_upgrades_awarded[ "insta_kill" ] ) + { + e_player thread insta_kill_upgraded_player_kill_func( level.pers_insta_kill_upgrade_active_time ); + } + i++; + } + if ( isDefined( self.pers_upgrades_awarded[ "insta_kill" ] ) && !self.pers_upgrades_awarded[ "insta_kill" ] ) + { + kills_start = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "kills" ); + self waittill( "insta_kill_over" ); + kills_end = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "kills" ); + num_killed = kills_end - kills_start; + if ( num_killed > 0 ) + { + self maps/mp/zombies/_zm_stats::zero_client_stat( "pers_insta_kill", 0 ); + return; + } + else + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_insta_kill", 0 ); + } + } + } +} + +insta_kill_upgraded_player_kill_func( active_time ) +{ + self endon( "death" ); + wait 0,25; + self thread maps/mp/zombies/_zm_pers_upgrades::insta_kill_pers_upgrade_icon(); + start_time = getTime(); + zombie_collide_radius = 50; + zombie_player_height_test = 100; + while ( 1 ) + { + time = getTime(); + dt = ( time - start_time ) / 1000; + if ( dt > active_time ) + { + return; + } + else if ( !is_insta_kill_active() ) + { + return; + } + else + { + a_zombies = getaiarray( level.zombie_team ); + e_closest = undefined; + i = 0; + while ( i < a_zombies.size ) + { + e_zombie = a_zombies[ i ]; + if ( isDefined( e_zombie.marked_for_insta_upgraded_death ) ) + { + i++; + continue; + } + else + { + height_diff = abs( self.origin[ 2 ] - e_zombie.origin[ 2 ] ); + if ( height_diff < zombie_player_height_test ) + { + dist = distance2d( self.origin, e_zombie.origin ); + if ( dist < zombie_collide_radius ) + { + dist_max = dist; + e_closest = e_zombie; + } + } + } + i++; + } + if ( isDefined( e_closest ) ) + { + e_closest.marked_for_insta_upgraded_death = 1; + e_closest dodamage( e_closest.health + 666, e_closest.origin, self, self, "none", "MOD_PISTOL_BULLET", 0, "knife_zm" ); + } + wait 0,01; + } + } +} + +check_for_instakill( player, mod, hit_location ) +{ + if ( isDefined( player ) && isalive( player ) && isDefined( level.check_for_instakill_override ) ) + { + if ( !( self [[ level.check_for_instakill_override ]]( player ) ) ) + { + return; + } + if ( player.use_weapon_type == "MOD_MELEE" ) + { + player.last_kill_method = "MOD_MELEE"; + } + else + { + player.last_kill_method = "MOD_UNKNOWN"; + } + modname = remove_mod_from_methodofdeath( mod ); + if ( isDefined( self.no_gib ) && !self.no_gib ) + { + self maps/mp/zombies/_zm_spawner::zombie_head_gib(); + } + self.health = 1; + self dodamage( self.health + 666, self.origin, player, self, hit_location, modname ); + player notify( "zombie_killed" ); + } + if ( isDefined( player ) && isalive( player ) || level.zombie_vars[ player.team ][ "zombie_insta_kill" ] && isDefined( player.personal_instakill ) && player.personal_instakill ) + { + if ( is_magic_bullet_shield_enabled( self ) ) + { + return; + } + if ( isDefined( self.instakill_func ) ) + { + self thread [[ self.instakill_func ]](); + return; + } + if ( player.use_weapon_type == "MOD_MELEE" ) + { + player.last_kill_method = "MOD_MELEE"; + } + else + { + player.last_kill_method = "MOD_UNKNOWN"; + } + modname = remove_mod_from_methodofdeath( mod ); + if ( flag( "dog_round" ) ) + { + self.health = 1; + self dodamage( self.health + 666, self.origin, player, self, hit_location, modname ); + player notify( "zombie_killed" ); + return; + } + else + { + if ( isDefined( self.no_gib ) && !self.no_gib ) + { + self maps/mp/zombies/_zm_spawner::zombie_head_gib(); + } + self.health = 1; + self dodamage( self.health + 666, self.origin, player, self, hit_location, modname ); + player notify( "zombie_killed" ); + } + } +} + +insta_kill_on_hud( drop_item, player_team ) +{ + if ( level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_on" ] ) + { + level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_time" ] = 30; + return; + } + level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_on" ] = 1; + level thread time_remaning_on_insta_kill_powerup( player_team ); +} + +time_remaning_on_insta_kill_powerup( player_team ) +{ + temp_enta = spawn( "script_origin", ( 0, 0, 0 ) ); + temp_enta playloopsound( "zmb_insta_kill_loop" ); + while ( level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_time" ] >= 0 ) + { + wait 0,05; + level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_time" ] -= 0,05; + } + players = get_players( player_team ); + i = 0; + while ( i < players.size ) + { + players[ i ] playsound( "zmb_insta_kill" ); + i++; + } + temp_enta stoploopsound( 2 ); + level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_on" ] = 0; + level.zombie_vars[ player_team ][ "zombie_powerup_insta_kill_time" ] = 30; + temp_enta delete(); +} + +point_doubler_on_hud( drop_item, player_team ) +{ + self endon( "disconnect" ); + if ( level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_on" ] ) + { + level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_time" ] = 30; + return; + } + level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_on" ] = 1; + level thread time_remaining_on_point_doubler_powerup( player_team ); +} + +time_remaining_on_point_doubler_powerup( player_team ) +{ + temp_ent = spawn( "script_origin", ( 0, 0, 0 ) ); + temp_ent playloopsound( "zmb_double_point_loop" ); + while ( level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_time" ] >= 0 ) + { + wait 0,05; + level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_time" ] -= 0,05; + } + level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_on" ] = 0; + players = get_players( player_team ); + i = 0; + while ( i < players.size ) + { + players[ i ] playsound( "zmb_points_loop_off" ); + i++; + } + temp_ent stoploopsound( 2 ); + level.zombie_vars[ player_team ][ "zombie_powerup_point_doubler_time" ] = 30; + temp_ent delete(); +} + +toggle_bonfire_sale_on() +{ + level endon( "powerup bonfire sale" ); + if ( !isDefined( level.zombie_vars[ "zombie_powerup_bonfire_sale_on" ] ) ) + { + return; + } + if ( level.zombie_vars[ "zombie_powerup_bonfire_sale_on" ] ) + { + if ( isDefined( level.bonfire_init_func ) ) + { + level thread [[ level.bonfire_init_func ]](); + } + level waittill( "bonfire_sale_off" ); + } +} + +toggle_fire_sale_on() +{ + level endon( "powerup fire sale" ); + if ( !isDefined( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) ) + { + return; + } + while ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) + { + i = 0; + while ( i < level.chests.size ) + { + show_firesale_box = level.chests[ i ] [[ level._zombiemode_check_firesale_loc_valid_func ]](); + if ( show_firesale_box ) + { + level.chests[ i ].zombie_cost = 10; + if ( level.chest_index != i ) + { + level.chests[ i ].was_temp = 1; + if ( is_true( level.chests[ i ].hidden ) ) + { + level.chests[ i ] thread maps/mp/zombies/_zm_magicbox::show_chest(); + } + wait_network_frame(); + } + } + i++; + } + level waittill( "fire_sale_off" ); + i = 0; + while ( i < level.chests.size ) + { + show_firesale_box = level.chests[ i ] [[ level._zombiemode_check_firesale_loc_valid_func ]](); + if ( show_firesale_box ) + { + if ( level.chest_index != i && isDefined( level.chests[ i ].was_temp ) ) + { + level.chests[ i ].was_temp = undefined; + level thread remove_temp_chest( i ); + } + level.chests[ i ].zombie_cost = level.chests[ i ].old_cost; + } + i++; + } + } +} + +fire_sale_weapon_wait() +{ + self.zombie_cost = self.old_cost; + while ( isDefined( self.chest_user ) ) + { + wait_network_frame(); + } + self set_hint_string( self, "default_treasure_chest_" + self.zombie_cost ); +} + +remove_temp_chest( chest_index ) +{ + while ( isDefined( level.chests[ chest_index ].chest_user ) || isDefined( level.chests[ chest_index ]._box_open ) && level.chests[ chest_index ]._box_open == 1 ) + { + wait_network_frame(); + } + if ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] ) + { + level.chests[ chest_index ].was_temp = 1; + level.chests[ chest_index ].zombie_cost = 10; + return; + } + playfx( level._effect[ "poltergeist" ], level.chests[ chest_index ].orig_origin ); + level.chests[ chest_index ].zbarrier playsound( "zmb_box_poof_land" ); + level.chests[ chest_index ].zbarrier playsound( "zmb_couch_slam" ); + level.chests[ chest_index ] maps/mp/zombies/_zm_magicbox::hide_chest(); +} + +devil_dialog_delay() +{ + wait 1; +} + +full_ammo_on_hud( drop_item, player_team ) +{ + self endon( "disconnect" ); + hudelem = maps/mp/gametypes_zm/_hud_util::createserverfontstring( "objective", 2, player_team ); + hudelem maps/mp/gametypes_zm/_hud_util::setpoint( "TOP", undefined, 0, level.zombie_vars[ "zombie_timer_offset" ] - ( level.zombie_vars[ "zombie_timer_offset_interval" ] * 2 ) ); + hudelem.sort = 0,5; + hudelem.alpha = 0; + hudelem fadeovertime( 0,5 ); + hudelem.alpha = 1; + if ( isDefined( drop_item ) ) + { + hudelem.label = drop_item.hint; + } + hudelem thread full_ammo_move_hud( player_team ); +} + +full_ammo_move_hud( player_team ) +{ + players = get_players( player_team ); + i = 0; + while ( i < players.size ) + { + players[ i ] playsound( "zmb_full_ammo" ); + i++; + } + wait 0,5; + move_fade_time = 1,5; + self fadeovertime( move_fade_time ); + self moveovertime( move_fade_time ); + self.y = 270; + self.alpha = 0; + wait move_fade_time; + self destroy(); +} + +check_for_rare_drop_override( pos ) +{ + if ( isDefined( flag( "ape_round" ) ) && flag( "ape_round" ) ) + { + return 0; + } + return 0; +} + +setup_firesale_audio() +{ + wait 2; + intercom = getentarray( "intercom", "targetname" ); + while ( 1 ) + { + while ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 0 ) + { + wait 0,2; + } + i = 0; + while ( i < intercom.size ) + { + intercom[ i ] thread play_firesale_audio(); + i++; + } + while ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 1 ) + { + wait 0,1; + } + level notify( "firesale_over" ); + } +} + +play_firesale_audio() +{ + if ( isDefined( level.sndannouncerisrich ) && level.sndannouncerisrich ) + { + self playloopsound( "mus_fire_sale_rich" ); + } + else + { + self playloopsound( "mus_fire_sale" ); + } + level waittill( "firesale_over" ); + self stoploopsound(); +} + +setup_bonfiresale_audio() +{ + wait 2; + intercom = getentarray( "intercom", "targetname" ); + while ( 1 ) + { + while ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 0 ) + { + wait 0,2; + } + i = 0; + while ( i < intercom.size ) + { + intercom[ i ] thread play_bonfiresale_audio(); + i++; + } + while ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 1 ) + { + wait 0,1; + } + level notify( "firesale_over" ); + } +} + +play_bonfiresale_audio() +{ + if ( isDefined( level.sndannouncerisrich ) && level.sndannouncerisrich ) + { + self playloopsound( "mus_fire_sale_rich" ); + } + else + { + self playloopsound( "mus_fire_sale" ); + } + level waittill( "firesale_over" ); + self stoploopsound(); +} + +free_perk_powerup( item ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ].sessionstate != "spectator" ) + { + players[ i ] maps/mp/zombies/_zm_perks::give_random_perk(); + } + i++; + } +} + +random_weapon_powerup_throttle() +{ + self.random_weapon_powerup_throttle = 1; + wait 0,25; + self.random_weapon_powerup_throttle = 0; +} + +random_weapon_powerup( item, player ) +{ + if ( player.sessionstate == "spectator" || player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return 0; + } + if ( isDefined( player.random_weapon_powerup_throttle ) && !player.random_weapon_powerup_throttle || player isswitchingweapons() && player.is_drinking > 0 ) + { + return 0; + } + current_weapon = player getcurrentweapon(); + current_weapon_type = weaponinventorytype( current_weapon ); + if ( !is_tactical_grenade( item.weapon ) ) + { + if ( current_weapon_type != "primary" && current_weapon_type != "altmode" ) + { + return 0; + } + if ( !isDefined( level.zombie_weapons[ current_weapon ] ) && !maps/mp/zombies/_zm_weapons::is_weapon_upgraded( current_weapon ) && current_weapon_type != "altmode" ) + { + return 0; + } + } + player thread random_weapon_powerup_throttle(); + weapon_string = item.weapon; + if ( weapon_string == "knife_ballistic_zm" ) + { + weapon = player maps/mp/zombies/_zm_melee_weapon::give_ballistic_knife( weapon_string, 0 ); + } + else + { + if ( weapon_string == "knife_ballistic_upgraded_zm" ) + { + weapon = player maps/mp/zombies/_zm_melee_weapon::give_ballistic_knife( weapon_string, 1 ); + } + } + player thread maps/mp/zombies/_zm_weapons::weapon_give( weapon_string ); + return 1; +} + +bonus_points_player_powerup( item, player ) +{ + points = randomintrange( 1, 25 ) * 100; + if ( !player maps/mp/zombies/_zm_laststand::player_is_in_laststand() && player.sessionstate != "spectator" ) + { + player maps/mp/zombies/_zm_score::player_add_points( "bonus_points_powerup", points ); + } +} + +bonus_points_team_powerup( item ) +{ + points = randomintrange( 1, 25 ) * 100; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ].sessionstate != "spectator" ) + { + players[ i ] maps/mp/zombies/_zm_score::player_add_points( "bonus_points_powerup", points ); + } + i++; + } +} + +lose_points_team_powerup( item ) +{ + points = randomintrange( 1, 25 ) * 100; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( !players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ i ].sessionstate != "spectator" ) + { + if ( ( players[ i ].score - points ) <= 0 ) + { + players[ i ] maps/mp/zombies/_zm_score::minus_to_player_score( players[ i ].score ); + i++; + continue; + } + else + { + players[ i ] maps/mp/zombies/_zm_score::minus_to_player_score( points ); + } + } + i++; + } +} + +lose_perk_powerup( item ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( !player maps/mp/zombies/_zm_laststand::player_is_in_laststand() && player.sessionstate != "spectator" ) + { + player maps/mp/zombies/_zm_perks::lose_random_perk(); + } + i++; + } +} + +empty_clip_powerup( item ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( !player maps/mp/zombies/_zm_laststand::player_is_in_laststand() && player.sessionstate != "spectator" ) + { + weapon = player getcurrentweapon(); + player setweaponammoclip( weapon, 0 ); + } + i++; + } +} + +minigun_weapon_powerup( ent_player, time ) +{ + ent_player endon( "disconnect" ); + ent_player endon( "death" ); + ent_player endon( "player_downed" ); + if ( !isDefined( time ) ) + { + time = 30; + } + if ( isDefined( level._minigun_time_override ) ) + { + time = level._minigun_time_override; + } + if ( ent_player.zombie_vars[ "zombie_powerup_minigun_on" ] || ent_player getcurrentweapon() == "minigun_zm" && isDefined( ent_player.has_minigun ) && ent_player.has_minigun ) + { + if ( ent_player.zombie_vars[ "zombie_powerup_minigun_time" ] < time ) + { + ent_player.zombie_vars[ "zombie_powerup_minigun_time" ] = time; + } + return; + } + ent_player notify( "replace_weapon_powerup" ); + ent_player._show_solo_hud = 1; + level._zombie_minigun_powerup_last_stand_func = ::minigun_watch_gunner_downed; + ent_player.has_minigun = 1; + ent_player.has_powerup_weapon = 1; + ent_player increment_is_drinking(); + ent_player._zombie_gun_before_minigun = ent_player getcurrentweapon(); + ent_player giveweapon( "minigun_zm" ); + ent_player switchtoweapon( "minigun_zm" ); + ent_player.zombie_vars[ "zombie_powerup_minigun_on" ] = 1; + level thread minigun_weapon_powerup_countdown( ent_player, "minigun_time_over", time ); + level thread minigun_weapon_powerup_replace( ent_player, "minigun_time_over" ); +} + +minigun_weapon_powerup_countdown( ent_player, str_gun_return_notify, time ) +{ + ent_player endon( "death" ); + ent_player endon( "disconnect" ); + ent_player endon( "player_downed" ); + ent_player endon( str_gun_return_notify ); + ent_player endon( "replace_weapon_powerup" ); + setclientsysstate( "levelNotify", "minis", ent_player ); + ent_player.zombie_vars[ "zombie_powerup_minigun_time" ] = time; + while ( ent_player.zombie_vars[ "zombie_powerup_minigun_time" ] > 0 ) + { + wait 0,05; + ent_player.zombie_vars[ "zombie_powerup_minigun_time" ] -= 0,05; + } + setclientsysstate( "levelNotify", "minie", ent_player ); + level thread minigun_weapon_powerup_remove( ent_player, str_gun_return_notify ); +} + +minigun_weapon_powerup_replace( ent_player, str_gun_return_notify ) +{ + ent_player endon( "death" ); + ent_player endon( "disconnect" ); + ent_player endon( "player_downed" ); + ent_player endon( str_gun_return_notify ); + ent_player waittill( "replace_weapon_powerup" ); + ent_player takeweapon( "minigun_zm" ); + ent_player.zombie_vars[ "zombie_powerup_minigun_on" ] = 0; + ent_player.has_minigun = 0; + ent_player decrement_is_drinking(); +} + +minigun_weapon_powerup_remove( ent_player, str_gun_return_notify ) +{ + ent_player endon( "death" ); + ent_player endon( "player_downed" ); + ent_player takeweapon( "minigun_zm" ); + ent_player.zombie_vars[ "zombie_powerup_minigun_on" ] = 0; + ent_player._show_solo_hud = 0; + ent_player.has_minigun = 0; + ent_player.has_powerup_weapon = 0; + ent_player notify( str_gun_return_notify ); + ent_player decrement_is_drinking(); + while ( isDefined( ent_player._zombie_gun_before_minigun ) ) + { + player_weapons = ent_player getweaponslistprimaries(); + i = 0; + while ( i < player_weapons.size ) + { + if ( player_weapons[ i ] == ent_player._zombie_gun_before_minigun ) + { + ent_player switchtoweapon( ent_player._zombie_gun_before_minigun ); + return; + } + i++; + } + } + primaryweapons = ent_player getweaponslistprimaries(); + if ( primaryweapons.size > 0 ) + { + ent_player switchtoweapon( primaryweapons[ 0 ] ); + } + else + { + allweapons = ent_player getweaponslist( 1 ); + i = 0; + while ( i < allweapons.size ) + { + if ( is_melee_weapon( allweapons[ i ] ) ) + { + ent_player switchtoweapon( allweapons[ i ] ); + return; + } + i++; + } + } +} + +minigun_weapon_powerup_off() +{ + self.zombie_vars[ "zombie_powerup_minigun_time" ] = 0; +} + +minigun_watch_gunner_downed() +{ + if ( isDefined( self.has_minigun ) && !self.has_minigun ) + { + return; + } + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + if ( primaryweapons[ i ] == "minigun_zm" ) + { + self takeweapon( "minigun_zm" ); + } + i++; + } + self notify( "minigun_time_over" ); + self.zombie_vars[ "zombie_powerup_minigun_on" ] = 0; + self._show_solo_hud = 0; + wait 0,05; + self.has_minigun = 0; + self.has_powerup_weapon = 0; +} + +tesla_weapon_powerup( ent_player, time ) +{ + ent_player endon( "disconnect" ); + ent_player endon( "death" ); + ent_player endon( "player_downed" ); + if ( !isDefined( time ) ) + { + time = 11; + } + if ( ent_player.zombie_vars[ "zombie_powerup_tesla_on" ] || ent_player getcurrentweapon() == "tesla_gun_zm" && isDefined( ent_player.has_tesla ) && ent_player.has_tesla ) + { + ent_player givemaxammo( "tesla_gun_zm" ); + if ( ent_player.zombie_vars[ "zombie_powerup_tesla_time" ] < time ) + { + ent_player.zombie_vars[ "zombie_powerup_tesla_time" ] = time; + } + return; + } + ent_player notify( "replace_weapon_powerup" ); + ent_player._show_solo_hud = 1; + level._zombie_tesla_powerup_last_stand_func = ::tesla_watch_gunner_downed; + ent_player.has_tesla = 1; + ent_player.has_powerup_weapon = 1; + ent_player increment_is_drinking(); + ent_player._zombie_gun_before_tesla = ent_player getcurrentweapon(); + ent_player giveweapon( "tesla_gun_zm" ); + ent_player givemaxammo( "tesla_gun_zm" ); + ent_player switchtoweapon( "tesla_gun_zm" ); + ent_player.zombie_vars[ "zombie_powerup_tesla_on" ] = 1; + level thread tesla_weapon_powerup_countdown( ent_player, "tesla_time_over", time ); + level thread tesla_weapon_powerup_replace( ent_player, "tesla_time_over" ); +} + +tesla_weapon_powerup_countdown( ent_player, str_gun_return_notify, time ) +{ + ent_player endon( "death" ); + ent_player endon( "player_downed" ); + ent_player endon( str_gun_return_notify ); + ent_player endon( "replace_weapon_powerup" ); + setclientsysstate( "levelNotify", "minis", ent_player ); + ent_player.zombie_vars[ "zombie_powerup_tesla_time" ] = time; + while ( 1 ) + { + ent_player waittill_any( "weapon_fired", "reload", "zmb_max_ammo" ); + if ( !ent_player getweaponammostock( "tesla_gun_zm" ) ) + { + clip_count = ent_player getweaponammoclip( "tesla_gun_zm" ); + if ( !clip_count ) + { + break; + } + else if ( clip_count == 1 ) + { + ent_player.zombie_vars[ "zombie_powerup_tesla_time" ] = 1; + } + else + { + if ( clip_count == 3 ) + { + ent_player.zombie_vars[ "zombie_powerup_tesla_time" ] = 6; + } + } + continue; + } + else + { + ent_player.zombie_vars[ "zombie_powerup_tesla_time" ] = 11; + } + } + setclientsysstate( "levelNotify", "minie", ent_player ); + level thread tesla_weapon_powerup_remove( ent_player, str_gun_return_notify ); +} + +tesla_weapon_powerup_replace( ent_player, str_gun_return_notify ) +{ + ent_player endon( "death" ); + ent_player endon( "disconnect" ); + ent_player endon( "player_downed" ); + ent_player endon( str_gun_return_notify ); + ent_player waittill( "replace_weapon_powerup" ); + ent_player takeweapon( "tesla_gun_zm" ); + ent_player.zombie_vars[ "zombie_powerup_tesla_on" ] = 0; + ent_player.has_tesla = 0; + ent_player decrement_is_drinking(); +} + +tesla_weapon_powerup_remove( ent_player, str_gun_return_notify ) +{ + ent_player endon( "death" ); + ent_player endon( "player_downed" ); + ent_player takeweapon( "tesla_gun_zm" ); + ent_player.zombie_vars[ "zombie_powerup_tesla_on" ] = 0; + ent_player._show_solo_hud = 0; + ent_player.has_tesla = 0; + ent_player.has_powerup_weapon = 0; + ent_player notify( str_gun_return_notify ); + ent_player decrement_is_drinking(); + while ( isDefined( ent_player._zombie_gun_before_tesla ) ) + { + player_weapons = ent_player getweaponslistprimaries(); + i = 0; + while ( i < player_weapons.size ) + { + if ( player_weapons[ i ] == ent_player._zombie_gun_before_tesla ) + { + ent_player switchtoweapon( ent_player._zombie_gun_before_tesla ); + return; + } + i++; + } + } + primaryweapons = ent_player getweaponslistprimaries(); + if ( primaryweapons.size > 0 ) + { + ent_player switchtoweapon( primaryweapons[ 0 ] ); + } + else + { + allweapons = ent_player getweaponslist( 1 ); + i = 0; + while ( i < allweapons.size ) + { + if ( is_melee_weapon( allweapons[ i ] ) ) + { + ent_player switchtoweapon( allweapons[ i ] ); + return; + } + i++; + } + } +} + +tesla_weapon_powerup_off() +{ + self.zombie_vars[ "zombie_powerup_tesla_time" ] = 0; +} + +tesla_watch_gunner_downed() +{ + if ( isDefined( self.has_tesla ) && !self.has_tesla ) + { + return; + } + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + if ( primaryweapons[ i ] == "tesla_gun_zm" ) + { + self takeweapon( "tesla_gun_zm" ); + } + i++; + } + self notify( "tesla_time_over" ); + self.zombie_vars[ "zombie_powerup_tesla_on" ] = 0; + self._show_solo_hud = 0; + wait 0,05; + self.has_tesla = 0; + self.has_powerup_weapon = 0; +} + +tesla_powerup_active() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ].zombie_vars[ "zombie_powerup_tesla_on" ] ) + { + return 1; + } + i++; + } + return 0; +} + +print_powerup_drop( powerup, type ) +{ +/# + if ( !isDefined( level.powerup_drop_time ) ) + { + level.powerup_drop_time = 0; + level.powerup_random_count = 0; + level.powerup_score_count = 0; + } + time = ( getTime() - level.powerup_drop_time ) * 0,001; + level.powerup_drop_time = getTime(); + if ( type == "random" ) + { + level.powerup_random_count++; + } + else + { + level.powerup_score_count++; + } + println( "========== POWER UP DROPPED ==========" ); + println( "DROPPED: " + powerup ); + println( "HOW IT DROPPED: " + type ); + println( "--------------------" ); + println( "Drop Time: " + time ); + println( "Random Powerup Count: " + level.powerup_random_count ); + println( "Random Powerup Count: " + level.powerup_score_count ); + println( "======================================" ); +#/ +} + +register_carpenter_node( node, callback ) +{ + if ( !isDefined( level._additional_carpenter_nodes ) ) + { + level._additional_carpenter_nodes = []; + } + node._post_carpenter_callback = callback; + level._additional_carpenter_nodes[ level._additional_carpenter_nodes.size ] = node; +} + +start_carpenter_new( origin ) +{ + level.carpenter_powerup_active = 1; + window_boards = getstructarray( "exterior_goal", "targetname" ); + if ( isDefined( level._additional_carpenter_nodes ) ) + { + window_boards = arraycombine( window_boards, level._additional_carpenter_nodes, 0, 0 ); + } + carp_ent = spawn( "script_origin", ( 0, 0, 0 ) ); + carp_ent playloopsound( "evt_carpenter" ); + boards_near_players = get_near_boards( window_boards ); + boards_far_from_players = get_far_boards( window_boards ); + level repair_far_boards( boards_far_from_players, maps/mp/zombies/_zm_powerups::is_carpenter_boards_upgraded() ); + i = 0; + while ( i < boards_near_players.size ) + { + window = boards_near_players[ i ]; + num_chunks_checked = 0; + last_repaired_chunk = undefined; + while ( 1 ) + { + if ( all_chunks_intact( window, window.barrier_chunks ) ) + { + break; + } + else chunk = get_random_destroyed_chunk( window, window.barrier_chunks ); + if ( !isDefined( chunk ) ) + { + break; + } + else window thread maps/mp/zombies/_zm_blockers::replace_chunk( window, chunk, undefined, maps/mp/zombies/_zm_powerups::is_carpenter_boards_upgraded(), 1 ); + last_repaired_chunk = chunk; + if ( isDefined( window.clip ) ) + { + window.clip enable_trigger(); + window.clip disconnectpaths(); + } + else + { + blocker_disconnect_paths( window.neg_start, window.neg_end ); + } + wait_network_frame(); + num_chunks_checked++; + if ( num_chunks_checked >= 20 ) + { + break; + } + else + { + } + } + if ( isDefined( window.zbarrier ) ) + { + if ( isDefined( last_repaired_chunk ) ) + { + while ( window.zbarrier getzbarrierpiecestate( last_repaired_chunk ) == "closing" ) + { + wait 0,05; + } + if ( isDefined( window._post_carpenter_callback ) ) + { + window [[ window._post_carpenter_callback ]](); + } + } + i++; + continue; + } + else while ( isDefined( last_repaired_chunk ) && last_repaired_chunk.state == "mid_repair" ) + { + wait 0,05; + } + i++; + } + carp_ent stoploopsound( 1 ); + carp_ent playsoundwithnotify( "evt_carpenter_end", "sound_done" ); + carp_ent waittill( "sound_done" ); + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] maps/mp/zombies/_zm_score::player_add_points( "carpenter_powerup", 200 ); + i++; + } + carp_ent delete(); + level notify( "carpenter_finished" ); + level.carpenter_powerup_active = undefined; +} + +is_carpenter_boards_upgraded() +{ + if ( isDefined( level.pers_carpenter_boards_active ) && level.pers_carpenter_boards_active == 1 ) + { + return 1; + } + return 0; +} + +get_near_boards( windows ) +{ + players = get_players(); + boards_near_players = []; + j = 0; + while ( j < windows.size ) + { + close = 0; + i = 0; + while ( i < players.size ) + { + origin = undefined; + if ( isDefined( windows[ j ].zbarrier ) ) + { + origin = windows[ j ].zbarrier.origin; + } + else + { + origin = windows[ j ].origin; + } + if ( distancesquared( players[ i ].origin, origin ) <= level.board_repair_distance_squared ) + { + close = 1; + break; + } + else + { + i++; + } + } + if ( close ) + { + boards_near_players[ boards_near_players.size ] = windows[ j ]; + } + j++; + } + return boards_near_players; +} + +get_far_boards( windows ) +{ + players = get_players(); + boards_far_from_players = []; + j = 0; + while ( j < windows.size ) + { + close = 0; + i = 0; + while ( i < players.size ) + { + origin = undefined; + if ( isDefined( windows[ j ].zbarrier ) ) + { + origin = windows[ j ].zbarrier.origin; + } + else + { + origin = windows[ j ].origin; + } + if ( distancesquared( players[ i ].origin, origin ) >= level.board_repair_distance_squared ) + { + close = 1; + break; + } + else + { + i++; + } + } + if ( close ) + { + boards_far_from_players[ boards_far_from_players.size ] = windows[ j ]; + } + j++; + } + return boards_far_from_players; +} + +repair_far_boards( barriers, upgrade ) +{ + i = 0; + while ( i < barriers.size ) + { + barrier = barriers[ i ]; + if ( all_chunks_intact( barrier, barrier.barrier_chunks ) ) + { + i++; + continue; + } + else + { + while ( isDefined( barrier.zbarrier ) ) + { + a_pieces = barrier.zbarrier getzbarrierpieceindicesinstate( "open" ); + while ( isDefined( a_pieces ) ) + { + xx = 0; + while ( xx < a_pieces.size ) + { + chunk = a_pieces[ xx ]; + if ( upgrade ) + { + barrier.zbarrier zbarrierpieceuseupgradedmodel( chunk ); + barrier.zbarrier.chunk_health[ chunk ] = barrier.zbarrier getupgradedpiecenumlives( chunk ); + xx++; + continue; + } + else + { + barrier.zbarrier zbarrierpieceusedefaultmodel( chunk ); + barrier.zbarrier.chunk_health[ chunk ] = 0; + } + xx++; + } + } + x = 0; + while ( x < barrier.zbarrier getnumzbarrierpieces() ) + { + barrier.zbarrier setzbarrierpiecestate( x, "closed" ); + barrier.zbarrier showzbarrierpiece( x ); + x++; + } + } + if ( isDefined( barrier.clip ) ) + { + barrier.clip enable_trigger(); + barrier.clip disconnectpaths(); + } + else + { + blocker_disconnect_paths( barrier.neg_start, barrier.neg_end ); + } + if ( ( i % 4 ) == 0 ) + { + wait_network_frame(); + } + } + i++; + } +} + +func_should_never_drop() +{ + return 0; +} + +func_should_always_drop() +{ + return 1; +} + +func_should_drop_minigun() +{ + if ( minigun_no_drop() ) + { + return 0; + } + return 1; +} + +func_should_drop_carpenter() +{ + if ( get_num_window_destroyed() < 5 ) + { + return 0; + } + return 1; +} + +func_should_drop_fire_sale() +{ + if ( level.zombie_vars[ "zombie_powerup_fire_sale_on" ] == 1 || level.chest_moves < 1 ) + { + return 0; + } + return 1; +} + +powerup_move() +{ + self endon( "powerup_timedout" ); + self endon( "powerup_grabbed" ); + drag_speed = 75; + while ( 1 ) + { + self waittill( "move_powerup", moveto, distance ); + drag_vector = moveto - self.origin; + range_squared = lengthsquared( drag_vector ); + if ( range_squared > ( distance * distance ) ) + { + drag_vector = vectornormalize( drag_vector ); + drag_vector = distance * drag_vector; + moveto = self.origin + drag_vector; + } + self.origin = moveto; + } +} + +powerup_emp() +{ + self endon( "powerup_timedout" ); + self endon( "powerup_grabbed" ); + while ( 1 ) + { + level waittill( "emp_detonate", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + playfx( level._effect[ "powerup_off" ], self.origin ); + self thread powerup_delete_delayed(); + self notify( "powerup_timedout" ); + } + } +} + +get_powerups( origin, radius ) +{ + if ( isDefined( origin ) && isDefined( radius ) ) + { + powerups = []; + _a3605 = level.active_powerups; + _k3605 = getFirstArrayKey( _a3605 ); + while ( isDefined( _k3605 ) ) + { + powerup = _a3605[ _k3605 ]; + if ( distancesquared( origin, powerup.origin ) < ( radius * radius ) ) + { + powerups[ powerups.size ] = powerup; + } + _k3605 = getNextArrayKey( _a3605, _k3605 ); + } + return powerups; + } + return level.active_powerups; +} + +should_award_stat( powerup_name ) +{ + if ( powerup_name != "teller_withdrawl" || powerup_name == "blue_monkey" && powerup_name == "free_perk" ) + { + return 0; + } + if ( isDefined( level.statless_powerups ) && isDefined( level.statless_powerups[ powerup_name ] ) ) + { + return 0; + } + return 1; +} + +teller_withdrawl( powerup, player ) +{ + player maps/mp/zombies/_zm_score::add_to_player_score( powerup.value ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_riotshield.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_riotshield.gsc new file mode 100644 index 0000000..d6a05a0 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_riotshield.gsc @@ -0,0 +1,647 @@ +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/zombies/_zm_weap_riotshield; +#include common_scripts/utility; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; + +init() +{ + level.riotshield_name = "riotshield_zm"; + level.deployedshieldmodel = []; + level.stowedshieldmodel = []; + level.carriedshieldmodel = []; + level.deployedshieldmodel[ 0 ] = "t6_wpn_zmb_shield_world"; + level.deployedshieldmodel[ 2 ] = "t6_wpn_zmb_shield_dmg1_world"; + level.deployedshieldmodel[ 3 ] = "t6_wpn_zmb_shield_dmg2_world"; + level.stowedshieldmodel[ 0 ] = "t6_wpn_zmb_shield_stow"; + level.stowedshieldmodel[ 2 ] = "t6_wpn_zmb_shield_dmg1_stow"; + level.stowedshieldmodel[ 3 ] = "t6_wpn_zmb_shield_dmg2_stow"; + level.carriedshieldmodel[ 0 ] = "t6_wpn_zmb_shield_world"; + level.carriedshieldmodel[ 2 ] = "t6_wpn_zmb_shield_dmg1_world"; + level.carriedshieldmodel[ 3 ] = "t6_wpn_zmb_shield_dmg2_world"; + level.viewshieldmodel[ 0 ] = "t6_wpn_zmb_shield_view"; + level.viewshieldmodel[ 2 ] = "t6_wpn_zmb_shield_dmg1_view"; + level.viewshieldmodel[ 3 ] = "t6_wpn_zmb_shield_dmg2_view"; + precachemodel( level.stowedshieldmodel[ 0 ] ); + precachemodel( level.stowedshieldmodel[ 2 ] ); + precachemodel( level.stowedshieldmodel[ 3 ] ); + precachemodel( level.carriedshieldmodel[ 0 ] ); + precachemodel( level.carriedshieldmodel[ 2 ] ); + precachemodel( level.carriedshieldmodel[ 3 ] ); + precachemodel( level.viewshieldmodel[ 0 ] ); + precachemodel( level.viewshieldmodel[ 2 ] ); + precachemodel( level.viewshieldmodel[ 3 ] ); + level.riotshield_placement_zoffset = 26; +} + +attachriotshield( model, tag ) +{ + if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) ) + { + self detachshieldmodel( self.prev_shield_model, self.prev_shield_tag ); + } + self.prev_shield_model = model; + self.prev_shield_tag = tag; + if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) ) + { + self attachshieldmodel( self.prev_shield_model, self.prev_shield_tag ); + } +} + +removeriotshield() +{ + if ( isDefined( self.prev_shield_model ) && isDefined( self.prev_shield_tag ) ) + { + self detachshieldmodel( self.prev_shield_model, self.prev_shield_tag ); + } + self.prev_shield_model = undefined; + self.prev_shield_tag = undefined; + if ( self getcurrentweapon() != level.riotshield_name ) + { + return; + } + self setheldweaponmodel( 0 ); +} + +setriotshieldviewmodel( modelnum ) +{ + self.prev_shield_viewmodel = modelnum; + if ( self getcurrentweapon() != level.riotshield_name ) + { + return; + } + if ( isDefined( self.prev_shield_viewmodel ) ) + { + self setheldweaponmodel( self.prev_shield_viewmodel ); + } + else + { + self setheldweaponmodel( 0 ); + } +} + +specialriotshieldviewmodel() +{ + if ( self getcurrentweapon() != level.riotshield_name ) + { + return; + } + self setheldweaponmodel( 3 ); +} + +restoreriotshieldviewmodel() +{ + if ( self getcurrentweapon() != level.riotshield_name ) + { + return; + } + if ( isDefined( self.prev_shield_viewmodel ) ) + { + self setheldweaponmodel( self.prev_shield_viewmodel ); + } + else + { + self setheldweaponmodel( 0 ); + } +} + +updateriotshieldmodel() +{ + if ( !isDefined( self.shield_damage_level ) ) + { + if ( isDefined( self.player_shield_reset_health ) ) + { + self [[ self.player_shield_reset_health ]](); + } + } + update = 0; + if ( !isDefined( self.prev_shield_damage_level ) || self.prev_shield_damage_level != self.shield_damage_level ) + { + self.prev_shield_damage_level = self.shield_damage_level; + update = 1; + } + if ( !isDefined( self.prev_shield_placement ) || self.prev_shield_placement != self.shield_placement ) + { + self.prev_shield_placement = self.shield_placement; + update = 1; + } + if ( update ) + { + if ( self.prev_shield_placement == 0 ) + { + self attachriotshield(); + return; + } + else if ( self.prev_shield_placement == 1 ) + { + self attachriotshield( level.carriedshieldmodel[ self.prev_shield_damage_level ], "tag_weapon_left" ); + self setriotshieldviewmodel( self.prev_shield_damage_level ); + return; + } + else if ( self.prev_shield_placement == 2 ) + { + self attachriotshield( level.stowedshieldmodel[ self.prev_shield_damage_level ], "tag_stowed_back" ); + return; + } + else + { + if ( self.prev_shield_placement == 3 ) + { + self attachriotshield(); + if ( isDefined( self.shield_ent ) ) + { + self.shield_ent setmodel( level.deployedshieldmodel[ self.prev_shield_damage_level ] ); + } + } + } + } +} + +updatestandaloneriotshieldmodel() +{ + update = 0; + if ( !isDefined( self.prev_shield_damage_level ) || self.prev_shield_damage_level != self.shield_damage_level ) + { + self.prev_shield_damage_level = self.shield_damage_level; + update = 1; + } + if ( update ) + { + self setmodel( level.deployedshieldmodel[ self.prev_shield_damage_level ] ); + } +} + +watchshieldlaststand() +{ + self endon( "death" ); + self endon( "disconnect" ); + self notify( "watchShieldLastStand" ); + self endon( "watchShieldLastStand" ); + while ( 1 ) + { + self waittill( "weapons_taken_for_last_stand" ); + self.riotshield_hidden = 0; + if ( isDefined( self.hasriotshield ) && self.hasriotshield ) + { + if ( self.prev_shield_placement == 1 || self.prev_shield_placement == 2 ) + { + self.riotshield_hidden = 2; + self.shield_placement = 0; + self updateriotshieldmodel(); + } + } + str_notify = self waittill_any_return( "player_revived", "bled_out" ); + if ( str_notify == "player_revived" ) + { + if ( isDefined( self.riotshield_hidden ) && self.riotshield_hidden > 0 ) + { + self.shield_placement = self.riotshield_hidden; + self updateriotshieldmodel(); + } + } + else + { + self maps/mp/zombies/_zm_weap_riotshield::player_take_riotshield(); + } + self.riotshield_hidden = undefined; + } +} + +trackriotshield() +{ + self endon( "death" ); + self endon( "disconnect" ); + self.hasriotshield = self hasweapon( level.riotshield_name ); + self.hasriotshieldequipped = self getcurrentweapon() == level.riotshield_name; + self.shield_placement = 0; + if ( self.hasriotshield ) + { + if ( self.hasriotshieldequipped ) + { + self.shield_placement = 1; + self updateriotshieldmodel(); + } + else + { + self.shield_placement = 2; + self updateriotshieldmodel(); + } + } + for ( ;; ) + { + self waittill( "weapon_change", newweapon ); + if ( newweapon == level.riotshield_name ) + { + if ( self.hasriotshieldequipped ) + { + continue; + } + else if ( isDefined( self.riotshieldentity ) ) + { + self notify( "destroy_riotshield" ); + } + self.shield_placement = 1; + self updateriotshieldmodel(); + if ( self.hasriotshield ) + { + break; + } + self.hasriotshield = 1; + self.hasriotshieldequipped = 1; + continue; + } + else if ( self ismantling() && newweapon == "none" ) + { + continue; + } + else + { + if ( self.hasriotshieldequipped ) + { +/# + assert( self.hasriotshield ); +#/ + self.hasriotshield = self hasweapon( level.riotshield_name ); + if ( isDefined( self.riotshield_hidden ) && self.riotshield_hidden ) + { + } + else + { + if ( self.hasriotshield ) + { + self.shield_placement = 2; + break; + } + else if ( isDefined( self.shield_ent ) ) + { +/# + assert( self.shield_placement == 3 ); +#/ + break; + } + else + { + self.shield_placement = 0; + } + } + self updateriotshieldmodel(); + self.hasriotshieldequipped = 0; + break; + } + else + { + if ( self.hasriotshield ) + { + if ( !self hasweapon( level.riotshield_name ) ) + { + self.shield_placement = 0; + self updateriotshieldmodel(); + self.hasriotshield = 0; + } + } + } + } + } +} + +updateriotshieldplacement() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "deploy_riotshield" ); + self endon( "start_riotshield_deploy" ); + self endon( "weapon_change" ); + while ( 1 ) + { + placement = self canplaceriotshield( "raise_riotshield" ); + if ( placement[ "result" ] && riotshielddistancetest( placement[ "origin" ] ) ) + { + self restoreriotshieldviewmodel(); + self setplacementhint( 1 ); + } + else + { + self specialriotshieldviewmodel(); + self setplacementhint( 0 ); + } + wait 0,05; + } +} + +startriotshielddeploy() +{ + self notify( "start_riotshield_deploy" ); + self thread updateriotshieldplacement(); + self thread watchriotshielddeploy(); +} + +spawnriotshieldcover( origin, angles ) +{ + shield_ent = spawn( "script_model", origin, 1 ); + shield_ent.angles = angles; + shield_ent setowner( self ); + shield_ent.owner = self; + shield_ent.owner.shield_ent = shield_ent; + shield_ent.isriotshield = 1; + self.shield_placement = 3; + self updateriotshieldmodel(); + shield_ent setscriptmoverflag( 0 ); + self thread maps/mp/zombies/_zm_buildables::delete_on_disconnect( shield_ent, "destroy_riotshield", 1 ); + maps/mp/zombies/_zm_equipment::destructible_equipment_list_add( shield_ent ); + return shield_ent; +} + +watchriotshielddeploy() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self waittill( "deploy_riotshield", deploy_attempt ); + self restoreriotshieldviewmodel(); + self setplacementhint( 1 ); + placement_hint = 0; + if ( deploy_attempt ) + { + placement = self canplaceriotshield( "deploy_riotshield" ); + if ( placement[ "result" ] && riotshielddistancetest( placement[ "origin" ] ) && self check_plant_position( placement[ "origin" ], placement[ "angles" ] ) ) + { + self doriotshielddeploy( placement[ "origin" ], placement[ "angles" ] ); + } + else + { + placement_hint = 1; + clip_max_ammo = weaponclipsize( level.riotshield_name ); + self setweaponammoclip( level.riotshield_name, clip_max_ammo ); + } + } + else + { + placement_hint = 1; + } + if ( placement_hint ) + { + self setriotshieldfailhint(); + } +} + +check_plant_position( origin, angles ) +{ + if ( isDefined( level.equipment_safe_to_drop ) ) + { + ret = 1; + test_ent = spawn( "script_model", origin ); + test_ent setmodel( level.deployedshieldmodel[ 0 ] ); + test_ent.angles = angles; + if ( !( self [[ level.equipment_safe_to_drop ]]( test_ent ) ) ) + { + ret = 0; + } + test_ent delete(); + return ret; + } + return 1; +} + +doriotshielddeploy( origin, angles ) +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self notify( "deployed_riotshield" ); + self maps/mp/zombies/_zm_buildables::track_placed_buildables( level.riotshield_name ); + if ( isDefined( self.current_equipment ) && self.current_equipment == level.riotshield_name ) + { + self maps/mp/zombies/_zm_equipment::equipment_to_deployed( level.riotshield_name ); + } + zoffset = level.riotshield_placement_zoffset; + shield_ent = self spawnriotshieldcover( origin + ( 0, 0, zoffset ), angles ); + item_ent = deployriotshield( self, shield_ent ); + primaries = self getweaponslistprimaries(); +/# + assert( isDefined( item_ent ) ); + assert( !isDefined( self.riotshieldretrievetrigger ) ); + assert( !isDefined( self.riotshieldentity ) ); +#/ + self maps/mp/zombies/_zm_weapons::switch_back_primary_weapon( primaries[ 0 ] ); + if ( isDefined( level.equipment_planted ) ) + { + self [[ level.equipment_planted ]]( shield_ent, level.riotshield_name, self ); + } + if ( isDefined( level.equipment_safe_to_drop ) ) + { + if ( !( self [[ level.equipment_safe_to_drop ]]( shield_ent ) ) ) + { + self notify( "destroy_riotshield" ); + shield_ent delete(); + item_ent delete(); + return; + } + } + self.riotshieldretrievetrigger = item_ent; + self.riotshieldentity = shield_ent; + self thread watchdeployedriotshieldents(); + self thread deleteshieldondamage( self.riotshieldentity ); + self thread deleteshieldmodelonweaponpickup( self.riotshieldretrievetrigger ); + self thread deleteriotshieldonplayerdeath(); + self thread watchshieldtriggervisibility( self.riotshieldretrievetrigger ); + self.riotshieldentity thread watchdeployedriotshielddamage(); + return shield_ent; +} + +riotshielddistancetest( origin ) +{ +/# + assert( isDefined( origin ) ); +#/ + min_dist_squared = getDvarFloat( "riotshield_deploy_limit_radius" ); + min_dist_squared *= min_dist_squared; + i = 0; + while ( i < level.players.size ) + { + if ( isDefined( level.players[ i ].riotshieldentity ) ) + { + dist_squared = distancesquared( level.players[ i ].riotshieldentity.origin, origin ); + if ( min_dist_squared > dist_squared ) + { +/# + println( "Shield placement denied! Failed distance check to other riotshields." ); +#/ + return 0; + } + } + i++; + } + return 1; +} + +watchdeployedriotshieldents() +{ +/# + assert( isDefined( self.riotshieldretrievetrigger ) ); + assert( isDefined( self.riotshieldentity ) ); +#/ + riotshieldretrievetrigger = self.riotshieldretrievetrigger; + riotshieldentity = self.riotshieldentity; + self waittill_any( "destroy_riotshield", "disconnect", "riotshield_zm_taken" ); + if ( isDefined( self ) ) + { + self.shield_placement = 0; + self updateriotshieldmodel(); + } + if ( isDefined( riotshieldretrievetrigger ) ) + { + riotshieldretrievetrigger delete(); + } + if ( isDefined( riotshieldentity ) ) + { + riotshieldentity delete(); + } +} + +watchdeployedriotshielddamage() +{ + self endon( "death" ); + damagemax = getDvarInt( "riotshield_deployed_health" ); + self.damagetaken = 0; + while ( 1 ) + { + self.maxhealth = 100000; + self.health = self.maxhealth; + self waittill( "damage", damage, attacker, direction, point, type, tagname, modelname, partname, weaponname, idflags ); + if ( isDefined( level.players_can_damage_riotshields ) && !level.players_can_damage_riotshields ) + { + continue; + } + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + continue; + } +/# + if ( isDefined( self.owner ) ) + { + assert( isDefined( self.owner.team ) ); + } +#/ + while ( is_encounter() && attacker.team == self.owner.team && attacker != self.owner ) + { + continue; + } + if ( isDefined( level.riotshield_damage_callback ) ) + { + self.owner [[ level.riotshield_damage_callback ]]( damage, 0 ); + continue; + } + else + { + if ( type == "MOD_MELEE" ) + { + damage *= getDvarFloat( "riotshield_melee_damage_scale" ); + } + else if ( type == "MOD_PISTOL_BULLET" || type == "MOD_RIFLE_BULLET" ) + { + damage *= getDvarFloat( "riotshield_bullet_damage_scale" ); + } + else + { + if ( type != "MOD_GRENADE" && type != "MOD_GRENADE_SPLASH" && type != "MOD_EXPLOSIVE" && type != "MOD_EXPLOSIVE_SPLASH" || type == "MOD_PROJECTILE" && type == "MOD_PROJECTILE_SPLASH" ) + { + damage *= getDvarFloat( "riotshield_explosive_damage_scale" ); + break; + } + else + { + if ( type == "MOD_IMPACT" ) + { + damage *= getDvarFloat( "riotshield_projectile_damage_scale" ); + } + } + } + self.damagetaken += damage; + if ( self.damagetaken >= damagemax ) + { + self damagethendestroyriotshield(); + } + } + } +} + +damagethendestroyriotshield() +{ + self endon( "death" ); + self.owner.riotshieldretrievetrigger delete(); + self notsolid(); + self setclientflag( 14 ); + wait getDvarFloat( "riotshield_destroyed_cleanup_time" ); + self.owner notify( "destroy_riotshield" ); +} + +deleteshieldondamage( shield_ent ) +{ + shield_ent waittill( "death" ); + self notify( "destroy_riotshield" ); +} + +deleteshieldmodelonweaponpickup( shield_trigger ) +{ + shield_trigger waittill( "trigger", player ); + self maps/mp/zombies/_zm_equipment::equipment_from_deployed( level.riotshield_name ); + self notify( "destroy_riotshield" ); + if ( self != player ) + { + if ( isDefined( level.transferriotshield ) ) + { + [[ level.transferriotshield ]]( self, player ); + } + } +} + +watchshieldtriggervisibility( trigger ) +{ + self endon( "death" ); + trigger endon( "death" ); + while ( isDefined( trigger ) ) + { + players = get_players(); + _a740 = players; + _k740 = getFirstArrayKey( _a740 ); + while ( isDefined( _k740 ) ) + { + player = _a740[ _k740 ]; + pickup = 1; + if ( !isDefined( player ) ) + { + } + else + { + if ( isDefined( level.cantransferriotshield ) ) + { + pickup = [[ level.cantransferriotshield ]]( self, player ); + } + if ( !isDefined( trigger ) ) + { + return; + } + if ( pickup ) + { + trigger setvisibletoplayer( player ); + } + else + { + trigger setinvisibletoplayer( player ); + } + wait 0,05; + } + _k740 = getNextArrayKey( _a740, _k740 ); + } + wait 0,05; + } +} + +deleteriotshieldonplayerdeath() +{ + self.riotshieldentity endon( "death" ); + self waittill( "death" ); + self notify( "destroy_riotshield" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_score.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_score.gsc new file mode 100644 index 0000000..9c0a411 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_score.gsc @@ -0,0 +1,374 @@ +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level.score_cf_info = []; + score_cf_register_info( "damage", 1, 7 ); + score_cf_register_info( "death_normal", 1, 3 ); + score_cf_register_info( "death_torso", 1, 3 ); + score_cf_register_info( "death_neck", 1, 3 ); + score_cf_register_info( "death_head", 1, 3 ); + score_cf_register_info( "death_melee", 1, 3 ); + if ( !level.createfx_enabled ) + { + registerclientfield( "allplayers", "score_cf_double_points_active", 1, 1, "int" ); + } +} + +score_cf_register_info( name, version, max_count ) +{ + if ( level.createfx_enabled ) + { + return; + } + info = spawnstruct(); + info.name = name; + info.cf_field = "score_cf_" + name; + info.version = version; + info.max_count = max_count; + info.bit_count = getminbitcountfornum( max_count ); + info.players = []; + level.score_cf_info[ name ] = info; + registerclientfield( "allplayers", info.cf_field, info.version, info.bit_count, "int" ); +} + +score_cf_increment_info( name ) +{ + info = level.score_cf_info[ name ]; + player_ent_index = self getentitynumber(); + if ( !isDefined( info.players[ player_ent_index ] ) ) + { + info.players[ player_ent_index ] = 0; + } + info.players[ player_ent_index ]++; + if ( info.players[ player_ent_index ] > info.max_count ) + { + info.players[ player_ent_index ] = 0; + } + self setclientfield( info.cf_field, info.players[ player_ent_index ] ); +} + +score_cf_monitor() +{ + if ( level.createfx_enabled ) + { + return; + } + info_keys = getarraykeys( level.score_cf_info ); + while ( 1 ) + { + wait_network_frame(); + players = get_players(); + player_index = 0; + while ( player_index < players.size ) + { + player = players[ player_index ]; + player_ent_index = player getentitynumber(); + info_index = 0; + while ( info_index < info_keys.size ) + { + info = level.score_cf_info[ info_keys[ info_index ] ]; + info.players[ player_ent_index ] = 0; + player setclientfield( info.cf_field, 0 ); + info_index++; + } + player_index++; + } + } +} + +player_add_points( event, mod, hit_location, is_dog, zombie_team ) +{ + if ( level.intermission ) + { + return; + } + if ( !is_player_valid( self ) ) + { + return; + } + player_points = 0; + team_points = 0; + multiplier = get_points_multiplier( self ); + switch( event ) + { + case "death": + player_points = get_zombie_death_player_points(); + team_points = get_zombie_death_team_points(); + points = self player_add_points_kill_bonus( mod, hit_location ); + if ( level.zombie_vars[ self.team ][ "zombie_powerup_insta_kill_on" ] == 1 && mod == "MOD_UNKNOWN" ) + { + points *= 2; + } + player_points += points; + if ( team_points > 0 ) + { + team_points += points; + } + if ( mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH" ) + { + self maps/mp/zombies/_zm_stats::increment_client_stat( "grenade_kills" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "grenade_kills" ); + } + break; + case "ballistic_knife_death": + player_points = get_zombie_death_player_points() + level.zombie_vars[ "zombie_score_bonus_melee" ]; + self score_cf_increment_info( "death_melee" ); + break; + case "damage_light": + player_points = level.zombie_vars[ "zombie_score_damage_light" ]; + self score_cf_increment_info( "damage" ); + break; + case "damage": + player_points = level.zombie_vars[ "zombie_score_damage_normal" ]; + self score_cf_increment_info( "damage" ); + break; + case "damage_ads": + player_points = int( level.zombie_vars[ "zombie_score_damage_normal" ] * 1,25 ); + self score_cf_increment_info( "damage" ); + break; + case "carpenter_powerup": + case "rebuild_board": + player_points = mod; + break; + case "bonus_points_powerup": + player_points = mod; + break; + case "nuke_powerup": + player_points = mod; + team_points = mod; + break; + case "jetgun_fling": + case "riotshield_fling": + case "thundergun_fling": + player_points = mod; + break; + case "hacker_transfer": + player_points = mod; + break; + case "reviver": + player_points = mod; + break; + case "vulture": + player_points = mod; + break; + default: +/# + assert( 0, "Unknown point event" ); +#/ + break; + } + player_points = multiplier * round_up_score( player_points, 5 ); + team_points = multiplier * round_up_score( team_points, 5 ); + if ( isDefined( self.point_split_receiver ) || event == "death" && event == "ballistic_knife_death" ) + { + split_player_points = player_points - round_up_score( player_points * self.point_split_keep_percent, 10 ); + self.point_split_receiver add_to_player_score( split_player_points ); + player_points -= split_player_points; + } + self add_to_player_score( player_points ); + self.pers[ "score" ] = self.score; + if ( isDefined( level._game_module_point_adjustment ) ) + { + level [[ level._game_module_point_adjustment ]]( self, zombie_team, player_points ); + } +} + +get_points_multiplier( player ) +{ + multiplier = level.zombie_vars[ player.team ][ "zombie_point_scalar" ]; + if ( isDefined( level.current_game_module ) && level.current_game_module == 2 ) + { + if ( isDefined( level._race_team_double_points ) && level._race_team_double_points == player._race_team ) + { + return multiplier; + } + else + { + return 1; + } + } + return multiplier; +} + +get_zombie_death_player_points() +{ + players = get_players(); + if ( players.size == 1 ) + { + points = level.zombie_vars[ "zombie_score_kill_1player" ]; + } + else if ( players.size == 2 ) + { + points = level.zombie_vars[ "zombie_score_kill_2player" ]; + } + else if ( players.size == 3 ) + { + points = level.zombie_vars[ "zombie_score_kill_3player" ]; + } + else + { + points = level.zombie_vars[ "zombie_score_kill_4player" ]; + } + return points; +} + +get_zombie_death_team_points() +{ + players = get_players(); + if ( players.size == 1 ) + { + points = level.zombie_vars[ "zombie_score_kill_1p_team" ]; + } + else if ( players.size == 2 ) + { + points = level.zombie_vars[ "zombie_score_kill_2p_team" ]; + } + else if ( players.size == 3 ) + { + points = level.zombie_vars[ "zombie_score_kill_3p_team" ]; + } + else + { + points = level.zombie_vars[ "zombie_score_kill_4p_team" ]; + } + return points; +} + +player_add_points_kill_bonus( mod, hit_location ) +{ + if ( mod == "MOD_MELEE" ) + { + self score_cf_increment_info( "death_melee" ); + return level.zombie_vars[ "zombie_score_bonus_melee" ]; + } + if ( mod == "MOD_BURNED" ) + { + self score_cf_increment_info( "death_torso" ); + return level.zombie_vars[ "zombie_score_bonus_burn" ]; + } + score = 0; + if ( isDefined( hit_location ) ) + { + switch( hit_location ) + { + case "head": + case "helmet": + self score_cf_increment_info( "death_head" ); + score = level.zombie_vars[ "zombie_score_bonus_head" ]; + break; + case "neck": + self score_cf_increment_info( "death_neck" ); + score = level.zombie_vars[ "zombie_score_bonus_neck" ]; + break; + case "torso_lower": + case "torso_upper": + self score_cf_increment_info( "death_torso" ); + score = level.zombie_vars[ "zombie_score_bonus_torso" ]; + break; + default: + self score_cf_increment_info( "death_normal" ); + break; + } + } + return score; +} + +player_reduce_points( event, mod, hit_location ) +{ + if ( level.intermission ) + { + return; + } + points = 0; + switch( event ) + { + case "no_revive_penalty": + percent = level.zombie_vars[ "penalty_no_revive" ]; + points = self.score * percent; + break; + case "died": + percent = level.zombie_vars[ "penalty_died" ]; + points = self.score * percent; + break; + case "downed": + percent = level.zombie_vars[ "penalty_downed" ]; + self notify( "I_am_down" ); + points = self.score * percent; + self.score_lost_when_downed = round_up_to_ten( int( points ) ); + break; + default: +/# + assert( 0, "Unknown point event" ); +#/ + break; + } + points = self.score - round_up_to_ten( int( points ) ); + if ( points < 0 ) + { + points = 0; + } + self.score = points; +} + +add_to_player_score( points, add_to_total ) +{ + if ( !isDefined( add_to_total ) ) + { + add_to_total = 1; + } + if ( !isDefined( points ) || level.intermission ) + { + return; + } + self.score += points; + self.pers[ "score" ] = self.score; + if ( add_to_total ) + { + self.score_total += points; + } + self incrementplayerstat( "score", points ); +} + +minus_to_player_score( points ) +{ + if ( !isDefined( points ) || level.intermission ) + { + return; + } + self.score -= points; + self.pers[ "score" ] = self.score; +} + +add_to_team_score( points ) +{ +} + +minus_to_team_score( points ) +{ +} + +player_died_penalty() +{ + players = get_players( self.team ); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] != self && !players[ i ].is_zombie ) + { + players[ i ] player_reduce_points( "no_revive_penalty" ); + } + i++; + } +} + +player_downed_penalty() +{ +/# + println( "ZM >> LAST STAND - player_downed_penalty " ); +#/ + self player_reduce_points( "downed" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_server_throttle.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_server_throttle.gsc new file mode 100644 index 0000000..c34f5b4 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_server_throttle.gsc @@ -0,0 +1,95 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; + +server_choke_init( id, max ) +{ + if ( !isDefined( level.zombie_server_choke_ids_max ) ) + { + level.zombie_server_choke_ids_max = []; + level.zombie_server_choke_ids_count = []; + } + level.zombie_server_choke_ids_max[ id ] = max; + level.zombie_server_choke_ids_count[ id ] = 0; + level thread server_choke_thread( id ); +} + +server_choke_thread( id ) +{ + while ( 1 ) + { + wait 0,05; + level.zombie_server_choke_ids_count[ id ] = 0; + } +} + +server_choke_safe( id ) +{ + return level.zombie_server_choke_ids_count[ id ] < level.zombie_server_choke_ids_max[ id ]; +} + +server_choke_action( id, choke_action, arg1, arg2, arg3 ) +{ +/# + assert( isDefined( level.zombie_server_choke_ids_max[ id ] ), "server Choke: " + id + " undefined" ); +#/ + while ( !server_choke_safe( id ) ) + { + wait 0,05; + } + level.zombie_server_choke_ids_count[ id ]++; + if ( !isDefined( arg1 ) ) + { + return [[ choke_action ]](); + } + if ( !isDefined( arg2 ) ) + { + return [[ choke_action ]]( arg1 ); + } + if ( !isDefined( arg3 ) ) + { + return [[ choke_action ]]( arg1, arg2 ); + } + return [[ choke_action ]]( arg1, arg2, arg3 ); +} + +server_entity_valid( entity ) +{ + if ( !isDefined( entity ) ) + { + return 0; + } + return 1; +} + +server_safe_init( id, max ) +{ + if ( !isDefined( level.zombie_server_choke_ids_max ) || !isDefined( level.zombie_server_choke_ids_max[ id ] ) ) + { + server_choke_init( id, max ); + } +/# + assert( max == level.zombie_server_choke_ids_max[ id ] ); +#/ +} + +_server_safe_ground_trace( pos ) +{ + return groundpos( pos ); +} + +server_safe_ground_trace( id, max, origin ) +{ + server_safe_init( id, max ); + return server_choke_action( id, ::_server_safe_ground_trace, origin ); +} + +_server_safe_ground_trace_ignore_water( pos ) +{ + return groundpos_ignore_water( pos ); +} + +server_safe_ground_trace_ignore_water( id, max, origin ) +{ + server_safe_init( id, max ); + return server_choke_action( id, ::_server_safe_ground_trace_ignore_water, origin ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_sidequests.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_sidequests.gsc new file mode 100644 index 0000000..ca00fea --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_sidequests.gsc @@ -0,0 +1,1106 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init_sidequests() +{ + level._sidequest_icons_base_x = -225; + level._zombie_sidequests = []; +/# + level thread sidequest_debug(); +#/ +} + +sidequest_debug() +{ +/# + if ( getDvar( #"A7AC338D" ) != "1" ) + { + return; + } + while ( 1 ) + { + wait 1; +#/ + } +} + +damager_trigger_thread( dam_types, trigger_func ) +{ + while ( 1 ) + { + self waittill( "damage", amount, attacker, dir, point, type ); + self.dam_amount = amount; + self.attacker = attacker; + self.dam_dir = dir; + self.dam_point = point; + self.dam_type = type; + i = 0; + while ( i < dam_types.size ) + { + if ( type == dam_types[ i ] ) + { + break; + } + else + { + i++; + } + } + } + if ( isDefined( trigger_func ) ) + { + self [[ trigger_func ]](); + } + self notify( "triggered" ); +} + +damage_trigger_thread() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "damage" ); + self.owner_ent notify( "triggered" ); + } +} + +sidequest_uses_teleportation( name ) +{ + level._zombie_sidequests[ name ].uses_teleportation = 1; +} + +declare_sidequest_icon( sidequest_name, icon_name, shader_name ) +{ + sidequest = level._zombie_sidequests[ sidequest_name ]; + sidequest.icons[ icon_name ] = shader_name; +} + +create_icon( shader_name, x ) +{ + icon = create_simple_hud( self ); + icon.foreground = 1; + icon.sort = 2; + icon.hidewheninmenu = 0; + icon.alignx = "center"; + icon.aligny = "bottom"; + icon.horzalign = "user_right"; + icon.vertalign = "user_bottom"; + icon.x = x; + icon.y = 0; + icon.alpha = 1; + icon setshader( shader_name, 32, 32 ); + return icon; +} + +add_sidequest_icon( sidequest_name, icon_name ) +{ + if ( !isDefined( self.sidequest_icons ) ) + { + self.sidequest_icons = []; + } + if ( isDefined( self.sidequest_icons[ icon_name ] ) ) + { + return; + } + sq = level._zombie_sidequests[ sidequest_name ]; + base_x = level._sidequest_icons_base_x; + if ( isDefined( level._zombiemode_sidequest_icon_offset ) ) + { + base_x += level._zombiemode_sidequest_icon_offset; + } + self.sidequest_icons[ icon_name ] = self create_icon( sq.icons[ icon_name ], base_x + ( self.sidequest_icons.size * 34 ) ); +} + +remove_sidequest_icon( sidequest_name, icon_name ) +{ + if ( !isDefined( self.sidequest_icons ) ) + { + return; + } + if ( !isDefined( self.sidequest_icons[ icon_name ] ) ) + { + return; + } + icon = self.sidequest_icons[ icon_name ]; + new_array = []; + keys = getarraykeys( self.sidequest_icons ); + i = 0; + while ( i < keys.size ) + { + if ( keys[ i ] != icon_name ) + { + new_array[ keys[ i ] ] = self.sidequest_icons[ keys[ i ] ]; + } + i++; + } + self.sidequest_icons = new_array; + icon destroy(); + keys = getarraykeys( self.sidequest_icons ); + base_x = level._sidequest_icons_base_x; + if ( isDefined( level._zombiemode_sidequest_icon_offset ) ) + { + base_x += level._zombiemode_sidequest_icon_offset; + } + i = 0; + while ( i < keys.size ) + { + self.sidequest_icons[ keys[ i ] ].x = base_x + ( i * 34 ); + i++; + } +} + +declare_sidequest( name, init_func, logic_func, complete_func, generic_stage_start_func, generic_stage_end_func ) +{ + if ( !isDefined( level._zombie_sidequests ) ) + { + init_sidequests(); + } +/# + if ( isDefined( level._zombie_sidequests[ name ] ) ) + { + println( "*** ERROR: Attempt to re-declare sidequest with name " + name ); + return; +#/ + } + sq = spawnstruct(); + sq.name = name; + sq.stages = []; + sq.last_completed_stage = -1; + sq.active_stage = -1; + sq.sidequest_complete = 0; + sq.init_func = init_func; + sq.logic_func = logic_func; + sq.complete_func = complete_func; + sq.generic_stage_start_func = generic_stage_start_func; + sq.generic_stage_end_func = generic_stage_end_func; + sq.assets = []; + sq.uses_teleportation = 0; + sq.active_assets = []; + sq.icons = []; + sq.num_reps = 0; + level._zombie_sidequests[ name ] = sq; +} + +declare_sidequest_stage( sidequest_name, stage_name, init_func, logic_func, exit_func ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to declare a side quest stage before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to add stage " + stage_name + " to side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( isDefined( level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] ) ) + { + println( "*** ERROR: Sidequest " + sidequest_name + " already has a stage called " + stage_name ); + return; +#/ + } + stage = spawnstruct(); + stage.name = stage_name; + stage.stage_number = level._zombie_sidequests[ sidequest_name ].stages.size; + stage.assets = []; + stage.active_assets = []; + stage.logic_func = logic_func; + stage.init_func = init_func; + stage.exit_func = exit_func; + stage.completed = 0; + stage.time_limit = 0; + level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] = stage; +} + +set_stage_time_limit( sidequest_name, stage_name, time_limit, timer_func ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to set a side quest stage time limit before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to add timelimit to stage " + stage_name + " in side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] ) ) + { + println( "*** ERROR: Attempt to add timelimit to stage " + stage_name + " in Sidequest " + sidequest_name + " but stage does not exist." ); + return; +#/ + } + level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].time_limit = time_limit; + level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].time_limit_func = timer_func; +} + +declare_stage_asset_from_struct( sidequest_name, stage_name, target_name, thread_func, trigger_thread_func ) +{ + structs = getstructarray( target_name, "targetname" ); +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to declare a side quest asset " + target_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to add asset " + target_name + " to side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] ) ) + { + println( "*** ERROR: Attempt to add asset " + target_name + " to side quest " + sidequest_name + " : " + stage_name + " but no such stage exists." ); + return; + } + if ( !structs.size ) + { + println( "*** ERROR: No Structs with " + target_name + " not found." ); + return; +#/ + } + i = 0; + while ( i < structs.size ) + { + asset = spawnstruct(); + asset.type = "struct"; + asset.struct = structs[ i ]; + asset.thread_func = thread_func; + asset.trigger_thread_func = trigger_thread_func; + level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets[ level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets.size ] = asset; + i++; + } +} + +declare_stage_title( sidequest_name, stage_name, title ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to declare a stage title " + title + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to declare a stage title " + title + " to side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] ) ) + { + println( "*** ERROR: Attempt to declare stage title " + title + " to side quest " + sidequest_name + " : " + stage_name + " but no such stage exists." ); + return; +#/ + } + level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].title = title; +} + +declare_stage_asset( sidequest_name, stage_name, target_name, thread_func, trigger_thread_func ) +{ + ents = getentarray( target_name, "targetname" ); +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to declare a side quest asset " + target_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to add asset " + target_name + " to side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] ) ) + { + println( "*** ERROR: Attempt to add asset " + target_name + " to side quest " + sidequest_name + " : " + stage_name + " but no such stage exists." ); + return; + } + if ( !ents.size ) + { + println( "*** ERROR: No Ents with " + target_name + " not found." ); + return; +#/ + } + i = 0; + while ( i < ents.size ) + { + asset = spawnstruct(); + asset.type = "entity"; + asset.ent = ents[ i ]; + asset.thread_func = thread_func; + asset.trigger_thread_func = trigger_thread_func; + level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets[ level._zombie_sidequests[ sidequest_name ].stages[ stage_name ].assets.size ] = asset; + i++; + } +} + +declare_sidequest_asset( sidequest_name, target_name, thread_func, trigger_thread_func ) +{ + ents = getentarray( target_name, "targetname" ); +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to declare a side quest asset " + target_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to add asset " + target_name + " to side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !ents.size ) + { + println( "*** ERROR: No Ents with " + target_name + " not found." ); + return; +#/ + } + i = 0; + while ( i < ents.size ) + { + asset = spawnstruct(); + asset.type = "entity"; + asset.ent = ents[ i ]; + asset.thread_func = thread_func; + asset.trigger_thread_func = trigger_thread_func; + asset.ent.thread_func = thread_func; + asset.ent.trigger_thread_func = trigger_thread_func; + level._zombie_sidequests[ sidequest_name ].assets[ level._zombie_sidequests[ sidequest_name ].assets.size ] = asset; + i++; + } +} + +declare_sidequest_asset_from_struct( sidequest_name, target_name, thread_func, trigger_thread_func ) +{ + structs = getstructarray( target_name, "targetname" ); +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to declare a side quest asset " + target_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to add asset " + target_name + " to side quest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !structs.size ) + { + println( "*** ERROR: No Structs with " + target_name + " not found." ); + return; +#/ + } + i = 0; + while ( i < structs.size ) + { + asset = spawnstruct(); + asset.type = "struct"; + asset.struct = structs[ i ]; + asset.thread_func = thread_func; + asset.trigger_thread_func = trigger_thread_func; + level._zombie_sidequests[ sidequest_name ].assets[ level._zombie_sidequests[ sidequest_name ].assets.size ] = asset; + i++; + } +} + +build_asset_from_struct( asset, parent_struct ) +{ + ent = spawn( "script_model", asset.origin ); + if ( isDefined( asset.model ) ) + { + ent setmodel( asset.model ); + } + if ( isDefined( asset.angles ) ) + { + ent.angles = asset.angles; + } + ent.script_noteworthy = asset.script_noteworthy; + ent.type = "struct"; + ent.radius = asset.radius; + ent.thread_func = parent_struct.thread_func; + ent.trigger_thread_func = parent_struct.trigger_thread_func; + ent.script_vector = parent_struct.script_vector; + asset.trigger_thread_func = parent_struct.trigger_thread_func; + asset.script_vector = parent_struct.script_vector; + ent.target = asset.target; + ent.script_float = asset.script_float; + ent.script_int = asset.script_int; + ent.script_trigger_spawnflags = asset.script_trigger_spawnflags; + ent.targetname = asset.targetname; + return ent; +} + +delete_stage_assets() +{ + i = 0; + while ( i < self.active_assets.size ) + { + asset = self.active_assets[ i ]; + switch( asset.type ) + { + case "struct": + if ( isDefined( asset.trigger ) ) + { +/# + println( "Deleting trigger from struct type asset." ); +#/ + asset.trigger delete(); + asset.trigger = undefined; + } + asset delete(); + break; + i++; + continue; + case "entity": + if ( isDefined( asset.trigger ) ) + { +/# + println( "Deleting trigger from ent type asset." ); +#/ + asset.trigger delete(); + asset.trigger = undefined; + } + break; + i++; + continue; + } + i++; + } + remaining_assets = []; + i = 0; + while ( i < self.active_assets.size ) + { + if ( isDefined( self.active_assets[ i ] ) ) + { + remaining_assets[ remaining_assets.size ] = self.active_assets[ i ]; + } + i++; + } + self.active_assets = remaining_assets; +} + +build_assets() +{ + i = 0; + while ( i < self.assets.size ) + { + asset = undefined; + switch( self.assets[ i ].type ) + { + case "struct": + asset = self.assets[ i ].struct; + self.active_assets[ self.active_assets.size ] = build_asset_from_struct( asset, self.assets[ i ] ); + break; + case "entity": + j = 0; + while ( j < self.active_assets.size ) + { + if ( self.active_assets[ j ] == self.assets[ i ].ent ) + { + asset = self.active_assets[ j ]; + break; + } + else + { + j++; + } + } + asset = self.assets[ i ].ent; + asset.type = "entity"; + self.active_assets[ self.active_assets.size ] = asset; + break; + default: +/# + println( "*** ERROR: Don't know how to build asset of type " + self.assets.type ); +#/ + break; + } + if ( isDefined( asset.script_noteworthy ) && self.assets[ i ].type == "entity" || !isDefined( asset.trigger ) && isDefined( asset.script_noteworthy ) ) + { + trigger_radius = 15; + trigger_height = 72; + if ( isDefined( asset.radius ) ) + { + trigger_radius = asset.radius; + } + if ( isDefined( asset.height ) ) + { + trigger_height = asset.height; + } + trigger_spawnflags = 0; + if ( isDefined( asset.script_trigger_spawnflags ) ) + { + trigger_spawnflags = asset.script_trigger_spawnflags; + } + trigger_offset = ( 0, 1, 0 ); + if ( isDefined( asset.script_vector ) ) + { + trigger_offset = asset.script_vector; + } + switch( asset.script_noteworthy ) + { + case "trigger_radius_use": + use_trigger = spawn( "trigger_radius_use", asset.origin + trigger_offset, trigger_spawnflags, trigger_radius, trigger_height ); + use_trigger setcursorhint( "HINT_NOICON" ); + if ( isDefined( asset.radius ) ) + { + use_trigger.radius = asset.radius; + } + use_trigger.owner_ent = self.active_assets[ self.active_assets.size - 1 ]; + if ( isDefined( asset.trigger_thread_func ) ) + { + use_trigger thread [[ asset.trigger_thread_func ]](); + } + else + { + use_trigger thread use_trigger_thread(); + } + self.active_assets[ self.active_assets.size - 1 ].trigger = use_trigger; + break; + break; + case "trigger_radius_damage": + damage_trigger = spawn( "trigger_damage", asset.origin + trigger_offset, trigger_spawnflags, trigger_radius, trigger_height ); + if ( isDefined( asset.radius ) ) + { + damage_trigger.radius = asset.radius; + } + damage_trigger.owner_ent = self.active_assets[ self.active_assets.size - 1 ]; + if ( isDefined( asset.trigger_thread_func ) ) + { + damage_trigger thread [[ asset.trigger_thread_func ]](); + } + else + { + damage_trigger thread damage_trigger_thread(); + } + self.active_assets[ self.active_assets.size - 1 ].trigger = damage_trigger; + break; + break; + case "trigger_radius": + radius_trigger = spawn( "trigger_radius", asset.origin + trigger_offset, trigger_spawnflags, trigger_radius, trigger_height ); + if ( isDefined( asset.radius ) ) + { + radius_trigger.radius = asset.radius; + } + radius_trigger.owner_ent = self.active_assets[ self.active_assets.size - 1 ]; + if ( isDefined( asset.trigger_thread_func ) ) + { + radius_trigger thread [[ asset.trigger_thread_func ]](); + } + else + { + radius_trigger thread radius_trigger_thread(); + } + self.active_assets[ self.active_assets.size - 1 ].trigger = radius_trigger; + break; + break; + } + } + if ( isDefined( self.assets[ i ].thread_func ) && !isDefined( self.active_assets[ self.active_assets.size - 1 ].dont_rethread ) ) + { + self.active_assets[ self.active_assets.size - 1 ] thread [[ self.assets[ i ].thread_func ]](); + } + if ( ( i % 2 ) == 0 ) + { + wait_network_frame(); + } + i++; + } +} + +radius_trigger_thread() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "trigger", player ); + while ( !isplayer( player ) ) + { + continue; + } + self.owner_ent notify( "triggered" ); + while ( player istouching( self ) ) + { + wait 0,05; + } + self.owner_ent notify( "untriggered" ); + } +} + +thread_on_assets( target_name, thread_func ) +{ + i = 0; + while ( i < self.active_assets.size ) + { + if ( self.active_assets[ i ].targetname == target_name ) + { + self.active_assets[ i ] thread [[ thread_func ]](); + } + i++; + } +} + +stage_logic_func_wrapper( sidequest, stage ) +{ + if ( isDefined( stage.logic_func ) ) + { + level endon( ( sidequest.name + "_" ) + stage.name + "_over" ); + stage [[ stage.logic_func ]](); + } +} + +sidequest_start( sidequest_name ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt start a side quest asset " + sidequest_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to start " + sidequest_name + " but no such side quest exists." ); + return; +#/ + } + sidequest = level._zombie_sidequests[ sidequest_name ]; + sidequest build_assets(); + if ( isDefined( sidequest.init_func ) ) + { + sidequest [[ sidequest.init_func ]](); + } + if ( isDefined( sidequest.logic_func ) ) + { + sidequest thread [[ sidequest.logic_func ]](); + } +} + +stage_start( sidequest, stage ) +{ + if ( isstring( sidequest ) ) + { + sidequest = level._zombie_sidequests[ sidequest ]; + } + if ( isstring( stage ) ) + { + stage = sidequest.stages[ stage ]; + } + stage build_assets(); + sidequest.active_stage = stage.stage_number; + level notify( ( sidequest.name + "_" ) + stage.name + "_started" ); + stage.completed = 0; + if ( isDefined( sidequest.generic_stage_start_func ) ) + { + stage [[ sidequest.generic_stage_start_func ]](); + } + if ( isDefined( stage.init_func ) ) + { + stage [[ stage.init_func ]](); + } + level._last_stage_started = stage.name; + level thread stage_logic_func_wrapper( sidequest, stage ); + if ( stage.time_limit > 0 ) + { + stage thread time_limited_stage( sidequest ); + } + if ( isDefined( stage.title ) ) + { + stage thread display_stage_title( sidequest.uses_teleportation ); + } +} + +display_stage_title( wait_for_teleport_done_notify ) +{ + if ( wait_for_teleport_done_notify ) + { + level waittill( "teleport_done" ); + wait 2; + } + stage_text = newhudelem(); + stage_text.location = 0; + stage_text.alignx = "center"; + stage_text.aligny = "middle"; + stage_text.foreground = 1; + stage_text.fontscale = 1,6; + stage_text.sort = 20; + stage_text.x = 320; + stage_text.y = 300; + stage_text.og_scale = 1; + stage_text.color = vectorScale( ( 0, 1, 0 ), 128 ); + stage_text.alpha = 0; + stage_text.fontstyle3d = "shadowedmore"; + stage_text settext( self.title ); + stage_text fadeovertime( 0,5 ); + stage_text.alpha = 1; + wait 5; + stage_text fadeovertime( 1 ); + stage_text.alpha = 0; + wait 1; + stage_text destroy(); +} + +time_limited_stage( sidequest ) +{ +/# + println( "*** Starting timer for sidequest " + sidequest.name + " stage " + self.name + " : " + self.time_limit + " seconds." ); +#/ + level endon( ( sidequest.name + "_" ) + self.name + "_over" ); + level endon( "suspend_timer" ); + level endon( "end_game" ); + time_limit = undefined; + if ( isDefined( self.time_limit_func ) ) + { + time_limit = [[ self.time_limit_func ]]() * 0,25; + } + else + { + time_limit = self.time_limit * 0,25; + } + wait time_limit; + level notify( "timed_stage_75_percent" ); + wait time_limit; + level notify( "timed_stage_50_percent" ); + wait time_limit; + level notify( "timed_stage_25_percent" ); + wait ( time_limit - 10 ); + level notify( "timed_stage_10_seconds_to_go" ); + wait 10; + stage_failed( sidequest, self ); +} + +sidequest_println( str ) +{ +/# + if ( getDvar( #"A7AC338D" ) != "1" ) + { + return; + } + println( str ); +#/ +} + +precache_sidequest_assets() +{ + sidequest_names = getarraykeys( level._zombie_sidequests ); + i = 0; + while ( i < sidequest_names.size ) + { + sq = level._zombie_sidequests[ sidequest_names[ i ] ]; + icon_keys = getarraykeys( sq.icons ); + j = 0; + while ( j < icon_keys.size ) + { + precacheshader( sq.icons[ icon_keys[ j ] ] ); + j++; + } + stage_names = getarraykeys( sq.stages ); + j = 0; + while ( j < stage_names.size ) + { + stage = sq.stages[ stage_names[ j ] ]; + k = 0; + while ( k < stage.assets.size ) + { + asset = stage.assets[ k ]; + if ( isDefined( asset.type ) && asset.type == "struct" ) + { + if ( isDefined( asset.model ) ) + { + precachemodel( asset.model ); + } + } + k++; + } + j++; + } + i++; + } +} + +sidequest_complete( sidequest_name ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to call sidequest_complete for sidequest " + sidequest_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to call sidequest_complete for sidequest " + sidequest_name + " but no such side quest exists." ); + return; +#/ + } + return level._zombie_sidequests[ sidequest_name ].sidequest_complete; +} + +stage_completed( sidequest_name, stage_name ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt to call stage_complete for sidequest " + sidequest_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to call stage_complete for sidequest " + sidequest_name + " but no such side quest exists." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ].stages[ stage_name ] ) ) + { + println( "*** ERROR: Attempt to call stage_complete in sq " + sidequest_name + " : " + stage_name + " but no such stage exists." ); + return; + } + println( "*** stage completed called." ); +#/ + sidequest = level._zombie_sidequests[ sidequest_name ]; + stage = sidequest.stages[ stage_name ]; + level thread stage_completed_internal( sidequest, stage ); +} + +stage_completed_internal( sidequest, stage ) +{ + level notify( ( sidequest.name + "_" ) + stage.name + "_over" ); + level notify( ( sidequest.name + "_" ) + stage.name + "_completed" ); + if ( isDefined( sidequest.generic_stage_end_func ) ) + { +/# + println( "Calling generic end func." ); +#/ + stage [[ sidequest.generic_stage_end_func ]](); + } + if ( isDefined( stage.exit_func ) ) + { +/# + println( "Calling stage end func." ); +#/ + stage [[ stage.exit_func ]]( 1 ); + } + stage.completed = 1; + sidequest.last_completed_stage = sidequest.active_stage; + sidequest.active_stage = -1; + stage delete_stage_assets(); + all_complete = 1; + stage_names = getarraykeys( sidequest.stages ); + i = 0; + while ( i < stage_names.size ) + { + if ( sidequest.stages[ stage_names[ i ] ].completed == 0 ) + { + all_complete = 0; + break; + } + else + { + i++; + } + } + if ( all_complete == 1 ) + { + if ( isDefined( sidequest.complete_func ) ) + { + sidequest thread [[ sidequest.complete_func ]](); + } + level notify( "sidequest_" + sidequest.name + "_complete" ); + sidequest.sidequest_completed = 1; + } +} + +stage_failed_internal( sidequest, stage ) +{ + level notify( ( sidequest.name + "_" ) + stage.name + "_over" ); + level notify( ( sidequest.name + "_" ) + stage.name + "_failed" ); + if ( isDefined( sidequest.generic_stage_end_func ) ) + { + stage [[ sidequest.generic_stage_end_func ]](); + } + if ( isDefined( stage.exit_func ) ) + { + stage [[ stage.exit_func ]]( 0 ); + } + sidequest.active_stage = -1; + stage delete_stage_assets(); +} + +stage_failed( sidequest, stage ) +{ +/# + println( "*** Stage failed called." ); +#/ + if ( isstring( sidequest ) ) + { + sidequest = level._zombie_sidequests[ sidequest ]; + } + if ( isstring( stage ) ) + { + stage = sidequest.stages[ stage ]; + } + level thread stage_failed_internal( sidequest, stage ); +} + +get_sidequest_stage( sidequest, stage_number ) +{ + stage = undefined; + stage_names = getarraykeys( sidequest.stages ); + i = 0; + while ( i < stage_names.size ) + { + if ( sidequest.stages[ stage_names[ i ] ].stage_number == stage_number ) + { + stage = sidequest.stages[ stage_names[ i ] ]; + break; + } + else + { + i++; + } + } + return stage; +} + +get_damage_trigger( radius, origin, damage_types ) +{ + trig = spawn( "trigger_damage", origin, 0, radius, 72 ); + trig thread dam_trigger_thread( damage_types ); + return trig; +} + +dam_trigger_thread( damage_types ) +{ + self endon( "death" ); + damage_type = "NONE"; + while ( 1 ) + { + self waittill( "damage", amount, attacker, dir, point, mod ); + i = 0; + while ( i < damage_types.size ) + { + if ( mod == damage_types[ i ] ) + { + self notify( "triggered" ); + } + i++; + } + } +} + +use_trigger_thread() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "trigger", player ); + self.owner_ent notify( "triggered" ); + wait 0,1; + } +} + +sidequest_stage_active( sidequest_name, stage_name ) +{ + sidequest = level._zombie_sidequests[ sidequest_name ]; + stage = sidequest.stages[ stage_name ]; + if ( sidequest.active_stage == stage.stage_number ) + { + return 1; + } + else + { + return 0; + } +} + +sidequest_start_next_stage( sidequest_name ) +{ +/# + if ( !isDefined( level._zombie_sidequests ) ) + { + println( "*** ERROR: Attempt start next stage in side quest asset " + sidequest_name + " before sidequests declared." ); + return; + } + if ( !isDefined( level._zombie_sidequests[ sidequest_name ] ) ) + { + println( "*** ERROR: Attempt to start next sidequest in sidequest " + sidequest_name + " but no such side quest exists." ); + return; +#/ + } + sidequest = level._zombie_sidequests[ sidequest_name ]; + if ( sidequest.sidequest_complete == 1 ) + { + return; + } + last_completed = sidequest.last_completed_stage; + if ( last_completed == -1 ) + { + last_completed = 0; + } + else + { + last_completed++; + } + stage = get_sidequest_stage( sidequest, last_completed ); + if ( !isDefined( stage ) ) + { +/# + println( "*** ERROR: Sidequest " + sidequest_name + " has no stage number " + last_completed ); +#/ + return; + } + stage_start( sidequest, stage ); + return stage; +} + +main() +{ +} + +is_facing( facee ) +{ + orientation = self getplayerangles(); + forwardvec = anglesToForward( orientation ); + forwardvec2d = ( forwardvec[ 0 ], forwardvec[ 1 ], 0 ); + unitforwardvec2d = vectornormalize( forwardvec2d ); + tofaceevec = facee.origin - self.origin; + tofaceevec2d = ( tofaceevec[ 0 ], tofaceevec[ 1 ], 0 ); + unittofaceevec2d = vectornormalize( tofaceevec2d ); + dotproduct = vectordot( unitforwardvec2d, unittofaceevec2d ); + return dotproduct > 0,9; +} + +fake_use( notify_string, qualifier_func ) +{ + waittillframeend; + while ( 1 ) + { + if ( !isDefined( self ) ) + { + return; + } +/# + print3d( self.origin, "+", vectorScale( ( 0, 1, 0 ), 255 ), 1 ); +#/ + players = get_players(); + i = 0; + while ( i < players.size ) + { + qualifier_passed = 1; + if ( isDefined( qualifier_func ) ) + { + qualifier_passed = players[ i ] [[ qualifier_func ]](); + } + if ( qualifier_passed && distancesquared( self.origin, players[ i ].origin ) < 4096 ) + { + if ( players[ i ] is_facing( self ) ) + { + if ( players[ i ] usebuttonpressed() ) + { + self notify( notify_string ); + return; + } + } + } + i++; + } + wait 0,1; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_spawner.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_spawner.gsc new file mode 100644 index 0000000..f499ac5 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_spawner.gsc @@ -0,0 +1,3264 @@ +#include maps/mp/zombies/_zm_ai_faller; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_pers_upgrades; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/animscripts/zm_run; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zombies/_zm_blockers; +#include maps/mp/animscripts/zm_shared; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/zombies/_zm_ai_basic; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level._contextual_grab_lerp_time = 0,3; + level.zombie_spawners = getentarray( "zombie_spawner", "script_noteworthy" ); + while ( isDefined( level.use_multiple_spawns ) && level.use_multiple_spawns ) + { + level.zombie_spawn = []; + i = 0; + while ( i < level.zombie_spawners.size ) + { + if ( isDefined( level.zombie_spawners[ i ].script_int ) ) + { + int = level.zombie_spawners[ i ].script_int; + if ( !isDefined( level.zombie_spawn[ int ] ) ) + { + level.zombie_spawn[ int ] = []; + } + level.zombie_spawn[ int ][ level.zombie_spawn[ int ].size ] = level.zombie_spawners[ i ]; + } + i++; + } + } + precachemodel( "p6_anim_zm_barricade_board_01_upgrade" ); + precachemodel( "p6_anim_zm_barricade_board_02_upgrade" ); + precachemodel( "p6_anim_zm_barricade_board_03_upgrade" ); + precachemodel( "p6_anim_zm_barricade_board_04_upgrade" ); + precachemodel( "p6_anim_zm_barricade_board_05_upgrade" ); + precachemodel( "p6_anim_zm_barricade_board_06_upgrade" ); + while ( isDefined( level.ignore_spawner_func ) ) + { + i = 0; + while ( i < level.zombie_spawners.size ) + { + ignore = [[ level.ignore_spawner_func ]]( level.zombie_spawners[ i ] ); + if ( ignore ) + { + arrayremovevalue( level.zombie_spawners, level.zombie_spawners[ i ] ); + } + i++; + } + } + gametype = getDvar( "ui_gametype" ); + if ( !isDefined( level.attack_player_thru_boards_range ) ) + { + level.attack_player_thru_boards_range = 109,8; + } + if ( isDefined( level._game_module_custom_spawn_init_func ) ) + { + [[ level._game_module_custom_spawn_init_func ]](); + } + registerclientfield( "actor", "zombie_has_eyes", 1, 1, "int" ); + registerclientfield( "actor", "zombie_ragdoll_explode", 1, 1, "int" ); +} + +add_cusom_zombie_spawn_logic( func ) +{ + if ( !isDefined( level._zombie_custom_spawn_logic ) ) + { + level._zombie_custom_spawn_logic = []; + } + level._zombie_custom_spawn_logic[ level._zombie_custom_spawn_logic.size ] = func; +} + +player_attacks_enemy( player, amount, type, point ) +{ + team = undefined; + if ( isDefined( self._race_team ) ) + { + team = self._race_team; + } + if ( !isads( player ) ) + { + [[ level.global_damage_func ]]( type, self.damagelocation, point, player, amount, team ); + return 0; + } + if ( !bullet_attack( type ) ) + { + [[ level.global_damage_func ]]( type, self.damagelocation, point, player, amount, team ); + return 0; + } + [[ level.global_damage_func_ads ]]( type, self.damagelocation, point, player, amount, team ); + return 1; +} + +player_attacker( attacker ) +{ + if ( isplayer( attacker ) ) + { + return 1; + } + return 0; +} + +enemy_death_detection() +{ + self endon( "death" ); + for ( ;; ) + { + self waittill( "damage", amount, attacker, direction_vec, point, type ); + if ( !isDefined( amount ) ) + { + continue; + } + else if ( !isalive( self ) || self.delayeddeath ) + { + return; + } + if ( !player_attacker( attacker ) ) + { + continue; + } + else + { + self.has_been_damaged_by_player = 1; + self player_attacks_enemy( attacker, amount, type, point ); + } + } +} + +is_spawner_targeted_by_blocker( ent ) +{ + while ( isDefined( ent.targetname ) ) + { + targeters = getentarray( ent.targetname, "target" ); + i = 0; + while ( i < targeters.size ) + { + if ( targeters[ i ].targetname == "zombie_door" || targeters[ i ].targetname == "zombie_debris" ) + { + return 1; + } + result = is_spawner_targeted_by_blocker( targeters[ i ] ); + if ( result ) + { + return 1; + } + i++; + } + } + return 0; +} + +add_custom_zombie_spawn_logic( func ) +{ + if ( !isDefined( level._zombie_custom_spawn_logic ) ) + { + level._zombie_custom_spawn_logic = []; + } + level._zombie_custom_spawn_logic[ level._zombie_custom_spawn_logic.size ] = func; +} + +zombie_spawn_init( animname_set ) +{ + if ( !isDefined( animname_set ) ) + { + animname_set = 0; + } + self.targetname = "zombie"; + self.script_noteworthy = undefined; + recalc_zombie_array(); + if ( !animname_set ) + { + self.animname = "zombie"; + } + if ( isDefined( get_gamemode_var( "pre_init_zombie_spawn_func" ) ) ) + { + self [[ get_gamemode_var( "pre_init_zombie_spawn_func" ) ]](); + } + self thread play_ambient_zombie_vocals(); + self.zmb_vocals_attack = "zmb_vocals_zombie_attack"; + self.ignoreall = 1; + self.ignoreme = 1; + self.allowdeath = 1; + self.force_gib = 1; + self.is_zombie = 1; + self.has_legs = 1; + self allowedstances( "stand" ); + self.zombie_damaged_by_bar_knockdown = 0; + self.gibbed = 0; + self.head_gibbed = 0; + self.disablearrivals = 1; + self.disableexits = 1; + self.grenadeawareness = 0; + self.badplaceawareness = 0; + self.ignoresuppression = 1; + self.suppressionthreshold = 1; + self.nododgemove = 1; + self.dontshootwhilemoving = 1; + self.pathenemylookahead = 0; + self.badplaceawareness = 0; + self.chatinitialized = 0; + self.a.disablepain = 1; + self disable_react(); + if ( isDefined( level.zombie_health ) ) + { + self.maxhealth = level.zombie_health; + if ( isDefined( level.zombie_respawned_health ) && level.zombie_respawned_health.size > 0 ) + { + self.health = level.zombie_respawned_health[ 0 ]; + arrayremovevalue( level.zombie_respawned_health, level.zombie_respawned_health[ 0 ] ); + } + else + { + self.health = level.zombie_health; + } + } + else + { + self.maxhealth = level.zombie_vars[ "zombie_health_start" ]; + self.health = self.maxhealth; + } + self.freezegun_damage = 0; + self.dropweapon = 0; + level thread zombie_death_event( self ); + self init_zombie_run_cycle(); + self thread zombie_think(); + self thread zombie_gib_on_damage(); + self thread zombie_damage_failsafe(); + self thread enemy_death_detection(); + if ( isDefined( level._zombie_custom_spawn_logic ) ) + { + if ( isarray( level._zombie_custom_spawn_logic ) ) + { + i = 0; + while ( i < level._zombie_custom_spawn_logic.size ) + { + self thread [[ level._zombie_custom_spawn_logic[ i ] ]](); + i++; + } + } + else self thread [[ level._zombie_custom_spawn_logic ]](); + } + if ( !isDefined( self.no_eye_glow ) || !self.no_eye_glow ) + { + if ( isDefined( self.is_inert ) && !self.is_inert ) + { + self thread delayed_zombie_eye_glow(); + } + } + self.deathfunction = ::zombie_death_animscript; + self.flame_damage_time = 0; + self.meleedamage = 60; + self.no_powerups = 1; + self zombie_history( "zombie_spawn_init -> Spawned = " + self.origin ); + self.thundergun_knockdown_func = level.basic_zombie_thundergun_knockdown; + self.tesla_head_gib_func = ::zombie_tesla_head_gib; + self.team = level.zombie_team; + if ( isDefined( level.achievement_monitor_func ) ) + { + self [[ level.achievement_monitor_func ]](); + } + if ( isDefined( get_gamemode_var( "post_init_zombie_spawn_func" ) ) ) + { + self [[ get_gamemode_var( "post_init_zombie_spawn_func" ) ]](); + } + if ( isDefined( level.zombie_init_done ) ) + { + self [[ level.zombie_init_done ]](); + } + self.zombie_init_done = 1; + self notify( "zombie_init_done" ); +} + +delayed_zombie_eye_glow() +{ + self endon( "zombie_delete" ); + if ( isDefined( self.in_the_ground ) && self.in_the_ground ) + { + while ( !isDefined( self.create_eyes ) ) + { + wait 0,1; + } + } + else wait 0,5; + self zombie_eye_glow(); +} + +zombie_damage_failsafe() +{ + self endon( "death" ); + continue_failsafe_damage = 0; + while ( 1 ) + { + wait 0,5; + if ( !isDefined( self.enemy ) || !isplayer( self.enemy ) ) + { + continue; + } + if ( self istouching( self.enemy ) ) + { + old_org = self.origin; + if ( !continue_failsafe_damage ) + { + wait 5; + } + while ( isDefined( self.enemy ) || !isplayer( self.enemy ) && self.enemy hasperk( "specialty_armorvest" ) ) + { + continue; + } + if ( self istouching( self.enemy ) && !self.enemy maps/mp/zombies/_zm_laststand::player_is_in_laststand() && isalive( self.enemy ) ) + { + if ( distancesquared( old_org, self.origin ) < 3600 ) + { + self.enemy dodamage( self.enemy.health + 1000, self.enemy.origin, self, self, "none", "MOD_RIFLE_BULLET" ); + continue_failsafe_damage = 1; + } + } + continue; + } + else + { + continue_failsafe_damage = 0; + } + } +} + +should_skip_teardown( find_flesh_struct_string ) +{ + if ( isDefined( find_flesh_struct_string ) && find_flesh_struct_string == "find_flesh" ) + { + return 1; + } + if ( isDefined( self.script_string ) && self.script_string == "zombie_chaser" ) + { + return 1; + } + return 0; +} + +zombie_think() +{ + self endon( "death" ); +/# + assert( !self.isdog ); +#/ + self.ai_state = "zombie_think"; + find_flesh_struct_string = undefined; + if ( isDefined( level.zombie_custom_think_logic ) ) + { + shouldwait = self [[ level.zombie_custom_think_logic ]](); + if ( shouldwait ) + { + self waittill( "zombie_custom_think_done", find_flesh_struct_string ); + } + } + else if ( isDefined( self.start_inert ) && self.start_inert ) + { + find_flesh_struct_string = "find_flesh"; + } + else + { + if ( isDefined( self.custom_location ) ) + { + self thread [[ self.custom_location ]](); + } + else + { + self thread do_zombie_spawn(); + } + self waittill( "risen", find_flesh_struct_string ); + } + node = undefined; + desired_nodes = []; + self.entrance_nodes = []; + if ( isDefined( level.max_barrier_search_dist_override ) ) + { + max_dist = level.max_barrier_search_dist_override; + } + else + { + max_dist = 500; + } + if ( !isDefined( find_flesh_struct_string ) && isDefined( self.target ) && self.target != "" ) + { + desired_origin = get_desired_origin(); +/# + assert( isDefined( desired_origin ), "Spawner @ " + self.origin + " has a .target but did not find a target" ); +#/ + origin = desired_origin; + node = getclosest( origin, level.exterior_goals ); + self.entrance_nodes[ self.entrance_nodes.size ] = node; + self zombie_history( "zombie_think -> #1 entrance (script_forcegoal) origin = " + self.entrance_nodes[ 0 ].origin ); + } + else + { + if ( self should_skip_teardown( find_flesh_struct_string ) ) + { + self zombie_setup_attack_properties(); + if ( isDefined( self.target ) ) + { + end_at_node = getnode( self.target, "targetname" ); + if ( isDefined( end_at_node ) ) + { + self setgoalnode( end_at_node ); + self waittill( "goal" ); + } + } + if ( isDefined( self.start_inert ) && self.start_inert ) + { + self thread maps/mp/zombies/_zm_ai_basic::start_inert( 1 ); + self zombie_complete_emerging_into_playable_area(); + } + else + { + self thread maps/mp/zombies/_zm_ai_basic::find_flesh(); + self thread zombie_entered_playable(); + } + return; + } + else if ( isDefined( find_flesh_struct_string ) ) + { +/# + assert( isDefined( find_flesh_struct_string ) ); +#/ + i = 0; + while ( i < level.exterior_goals.size ) + { + if ( level.exterior_goals[ i ].script_string == find_flesh_struct_string ) + { + node = level.exterior_goals[ i ]; + break; + } + else + { + i++; + } + } + self.entrance_nodes[ self.entrance_nodes.size ] = node; + self zombie_history( "zombie_think -> #1 entrance origin = " + node.origin ); + self thread zombie_assure_node(); + } + else + { + origin = self.origin; + desired_origin = get_desired_origin(); + if ( isDefined( desired_origin ) ) + { + origin = desired_origin; + } + nodes = get_array_of_closest( origin, level.exterior_goals, undefined, 3 ); + desired_nodes[ 0 ] = nodes[ 0 ]; + prev_dist = distance( self.origin, nodes[ 0 ].origin ); + i = 1; + while ( i < nodes.size ) + { + dist = distance( self.origin, nodes[ i ].origin ); + if ( ( dist - prev_dist ) > max_dist ) + { + break; + } + else + { + prev_dist = dist; + desired_nodes[ i ] = nodes[ i ]; + i++; + } + } + node = desired_nodes[ 0 ]; + if ( desired_nodes.size > 1 ) + { + node = desired_nodes[ randomint( desired_nodes.size ) ]; + } + self.entrance_nodes = desired_nodes; + self zombie_history( "zombie_think -> #1 entrance origin = " + node.origin ); + self thread zombie_assure_node(); + } + } +/# + assert( isDefined( node ), "Did not find a node!!! [Should not see this!]" ); +#/ + level thread draw_line_ent_to_pos( self, node.origin, "goal" ); + self.first_node = node; + self thread zombie_goto_entrance( node ); +} + +zombie_entered_playable() +{ + self endon( "death" ); + if ( !isDefined( level.playable_areas ) ) + { + level.playable_areas = getentarray( "player_volume", "script_noteworthy" ); + } + while ( 1 ) + { + _a611 = level.playable_areas; + _k611 = getFirstArrayKey( _a611 ); + while ( isDefined( _k611 ) ) + { + area = _a611[ _k611 ]; + if ( self istouching( area ) ) + { + self zombie_complete_emerging_into_playable_area(); + return; + } + _k611 = getNextArrayKey( _a611, _k611 ); + } + wait 1; + } +} + +get_desired_origin() +{ + if ( isDefined( self.target ) ) + { + ent = getent( self.target, "targetname" ); + if ( !isDefined( ent ) ) + { + ent = getstruct( self.target, "targetname" ); + } + if ( !isDefined( ent ) ) + { + ent = getnode( self.target, "targetname" ); + } +/# + assert( isDefined( ent ), "Cannot find the targeted ent/node/struct, "" + self.target + "" at " + self.origin ); +#/ + return ent.origin; + } + return undefined; +} + +zombie_goto_entrance( node, endon_bad_path ) +{ +/# + assert( !self.isdog ); +#/ + self endon( "death" ); + self endon( "stop_zombie_goto_entrance" ); + level endon( "intermission" ); + self.ai_state = "zombie_goto_entrance"; + if ( isDefined( endon_bad_path ) && endon_bad_path ) + { + self endon( "bad_path" ); + } + self zombie_history( "zombie_goto_entrance -> start goto entrance " + node.origin ); + self.got_to_entrance = 0; + self.goalradius = 128; + self setgoalpos( node.origin ); + self waittill( "goal" ); + self.got_to_entrance = 1; + self zombie_history( "zombie_goto_entrance -> reached goto entrance " + node.origin ); + self tear_into_building(); + if ( isDefined( level.pre_aggro_pathfinding_func ) ) + { + self [[ level.pre_aggro_pathfinding_func ]](); + } + barrier_pos = []; + barrier_pos[ 0 ] = "m"; + barrier_pos[ 1 ] = "r"; + barrier_pos[ 2 ] = "l"; + self.barricade_enter = 1; + animstate = maps/mp/animscripts/zm_utility::append_missing_legs_suffix( "zm_barricade_enter" ); + substate = "barrier_" + self.zombie_move_speed + "_" + barrier_pos[ self.attacking_spot_index ]; + self animscripted( self.first_node.zbarrier.origin, self.first_node.zbarrier.angles, animstate, substate ); + maps/mp/animscripts/zm_shared::donotetracks( "barricade_enter_anim" ); + self zombie_setup_attack_properties(); + self thread maps/mp/zombies/_zm_ai_basic::find_flesh(); + self.pathenemyfightdist = 4; + self zombie_complete_emerging_into_playable_area(); + self.pathenemyfightdist = 64; + self.barricade_enter = 0; +} + +zombie_assure_node() +{ + self endon( "death" ); + self endon( "goal" ); + level endon( "intermission" ); + start_pos = self.origin; + while ( isDefined( self.entrance_nodes ) ) + { + i = 0; + while ( i < self.entrance_nodes.size ) + { + if ( self zombie_bad_path() ) + { + self zombie_history( "zombie_assure_node -> assigned assured node = " + self.entrance_nodes[ i ].origin ); +/# + println( "^1Zombie @ " + self.origin + " did not move for 1 second. Going to next closest node @ " + self.entrance_nodes[ i ].origin ); +#/ + level thread draw_line_ent_to_pos( self, self.entrance_nodes[ i ].origin, "goal" ); + self.first_node = self.entrance_nodes[ i ]; + self setgoalpos( self.entrance_nodes[ i ].origin ); + i++; + continue; + } + else + { + return; + } + i++; + } + } + wait 2; + nodes = get_array_of_closest( self.origin, level.exterior_goals, undefined, 20 ); + while ( isDefined( nodes ) ) + { + self.entrance_nodes = nodes; + i = 0; + while ( i < self.entrance_nodes.size ) + { + if ( self zombie_bad_path() ) + { + self zombie_history( "zombie_assure_node -> assigned assured node = " + self.entrance_nodes[ i ].origin ); +/# + println( "^1Zombie @ " + self.origin + " did not move for 1 second. Going to next closest node @ " + self.entrance_nodes[ i ].origin ); +#/ + level thread draw_line_ent_to_pos( self, self.entrance_nodes[ i ].origin, "goal" ); + self.first_node = self.entrance_nodes[ i ]; + self setgoalpos( self.entrance_nodes[ i ].origin ); + i++; + continue; + } + else + { + return; + } + i++; + } + } + self zombie_history( "zombie_assure_node -> failed to find a good entrance point" ); + wait 20; + self dodamage( self.health + 10, self.origin ); + level.zombies_timeout_spawn++; +} + +zombie_bad_path() +{ + self endon( "death" ); + self endon( "goal" ); + self thread zombie_bad_path_notify(); + self thread zombie_bad_path_timeout(); + self.zombie_bad_path = undefined; + while ( !isDefined( self.zombie_bad_path ) ) + { + wait 0,05; + } + self notify( "stop_zombie_bad_path" ); + return self.zombie_bad_path; +} + +zombie_bad_path_notify() +{ + self endon( "death" ); + self endon( "stop_zombie_bad_path" ); + self waittill( "bad_path" ); + self.zombie_bad_path = 1; +} + +zombie_bad_path_timeout() +{ + self endon( "death" ); + self endon( "stop_zombie_bad_path" ); + wait 2; + self.zombie_bad_path = 0; +} + +tear_into_building() +{ + self endon( "death" ); + self endon( "teleporting" ); + self zombie_history( "tear_into_building -> start" ); + while ( 1 ) + { + if ( isDefined( self.first_node.script_noteworthy ) ) + { + if ( self.first_node.script_noteworthy == "no_blocker" ) + { + return; + } + } + if ( !isDefined( self.first_node.target ) ) + { + return; + } + if ( all_chunks_destroyed( self.first_node, self.first_node.barrier_chunks ) ) + { + self zombie_history( "tear_into_building -> all chunks destroyed" ); + } + while ( !get_attack_spot( self.first_node ) ) + { + self zombie_history( "tear_into_building -> Could not find an attack spot" ); + self thread do_a_taunt(); + wait 0,5; + } + self.goalradius = 2; + angles = self.first_node.zbarrier.angles; + self setgoalpos( self.attacking_spot, angles ); + self waittill( "goal" ); + self waittill_notify_or_timeout( "orientdone", 1 ); + self zombie_history( "tear_into_building -> Reach position and orientated" ); + if ( all_chunks_destroyed( self.first_node, self.first_node.barrier_chunks ) ) + { + self zombie_history( "tear_into_building -> all chunks destroyed" ); + i = 0; + while ( i < self.first_node.attack_spots_taken.size ) + { + self.first_node.attack_spots_taken[ i ] = 0; + i++; + } + return; + } + while ( 1 ) + { + if ( isDefined( self.zombie_board_tear_down_callback ) ) + { + self [[ self.zombie_board_tear_down_callback ]](); + } + chunk = get_closest_non_destroyed_chunk( self.origin, self.first_node, self.first_node.barrier_chunks ); + if ( !isDefined( chunk ) ) + { + while ( !all_chunks_destroyed( self.first_node, self.first_node.barrier_chunks ) ) + { + attack = self should_attack_player_thru_boards(); + if ( isDefined( attack ) && !attack && self.has_legs ) + { + self do_a_taunt(); + continue; + } + else + { + wait 0,1; + } + } + i = 0; + while ( i < self.first_node.attack_spots_taken.size ) + { + self.first_node.attack_spots_taken[ i ] = 0; + i++; + } + return; + } + self zombie_history( "tear_into_building -> animating" ); + self.first_node.zbarrier setzbarrierpiecestate( chunk, "targetted_by_zombie" ); + self.first_node thread check_zbarrier_piece_for_zombie_inert( chunk, self.first_node.zbarrier, self ); + self.first_node thread check_zbarrier_piece_for_zombie_death( chunk, self.first_node.zbarrier, self ); + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "teardown", self.animname ); + animstatebase = self.first_node.zbarrier getzbarrierpieceanimstate( chunk ); + animsubstate = "spot_" + self.attacking_spot_index + "_piece_" + self.first_node.zbarrier getzbarrierpieceanimsubstate( chunk ); + anim_sub_index = self getanimsubstatefromasd( animstatebase + "_in", animsubstate ); + self animscripted( self.first_node.zbarrier.origin, self.first_node.zbarrier.angles, maps/mp/animscripts/zm_utility::append_missing_legs_suffix( animstatebase + "_in" ), anim_sub_index ); + self zombie_tear_notetracks( "tear_anim", chunk, self.first_node ); + while ( self.first_node.zbarrier.chunk_health[ chunk ] >= 0 ) + { + self animscripted( self.first_node.zbarrier.origin, self.first_node.zbarrier.angles, maps/mp/animscripts/zm_utility::append_missing_legs_suffix( animstatebase + "_loop" ), anim_sub_index ); + self zombie_tear_notetracks( "tear_anim", chunk, self.first_node ); + self.first_node.zbarrier.chunk_health[ chunk ]--; + + } + self animscripted( self.first_node.zbarrier.origin, self.first_node.zbarrier.angles, maps/mp/animscripts/zm_utility::append_missing_legs_suffix( animstatebase + "_out" ), anim_sub_index ); + self zombie_tear_notetracks( "tear_anim", chunk, self.first_node ); + self.lastchunk_destroy_time = getTime(); + attack = self should_attack_player_thru_boards(); + if ( isDefined( attack ) && !attack && self.has_legs ) + { + self do_a_taunt(); + } + if ( all_chunks_destroyed( self.first_node, self.first_node.barrier_chunks ) ) + { + i = 0; + while ( i < self.first_node.attack_spots_taken.size ) + { + self.first_node.attack_spots_taken[ i ] = 0; + i++; + } + return; + } + } + self reset_attack_spot(); + } +} + +do_a_taunt() +{ + self endon( "death" ); + if ( !self.has_legs ) + { + return 0; + } + if ( !self.first_node.zbarrier zbarriersupportszombietaunts() ) + { + return; + } + self.old_origin = self.origin; + if ( getDvar( "zombie_taunt_freq" ) == "" ) + { + setdvar( "zombie_taunt_freq", "5" ); + } + freq = getDvarInt( "zombie_taunt_freq" ); + if ( freq >= randomint( 100 ) ) + { + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "taunt", self.animname ); + tauntstate = "zm_taunt"; + if ( isDefined( self.first_node.zbarrier ) && self.first_node.zbarrier getzbarriertauntanimstate() != "" ) + { + tauntstate = self.first_node.zbarrier getzbarriertauntanimstate(); + } + self animscripted( self.origin, self.angles, tauntstate ); + self taunt_notetracks( "taunt_anim" ); + } +} + +taunt_notetracks( msg ) +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( msg, notetrack ); + if ( notetrack == "end" ) + { + self forceteleport( self.old_origin ); + return; + } + } +} + +should_attack_player_thru_boards() +{ + if ( !self.has_legs ) + { + return 0; + } + if ( isDefined( self.first_node.zbarrier ) ) + { + if ( !self.first_node.zbarrier zbarriersupportszombiereachthroughattacks() ) + { + return 0; + } + } + if ( getDvar( "zombie_reachin_freq" ) == "" ) + { + setdvar( "zombie_reachin_freq", "50" ); + } + freq = getDvarInt( "zombie_reachin_freq" ); + players = get_players(); + attack = 0; + self.player_targets = []; + i = 0; + while ( i < players.size ) + { + if ( isalive( players[ i ] ) && !isDefined( players[ i ].revivetrigger ) && distance2d( self.origin, players[ i ].origin ) <= level.attack_player_thru_boards_range ) + { + self.player_targets[ self.player_targets.size ] = players[ i ]; + attack = 1; + } + i++; + } + if ( !attack || freq < randomint( 100 ) ) + { + return 0; + } + self.old_origin = self.origin; + attackanimstate = "zm_window_melee"; + if ( isDefined( self.first_node.zbarrier ) && self.first_node.zbarrier getzbarrierreachthroughattackanimstate() != "" ) + { + attackanimstate = self.first_node.zbarrier getzbarrierreachthroughattackanimstate(); + } + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "attack", self.animname ); + self animscripted( self.origin, self.angles, attackanimstate, self.attacking_spot_index - 1 ); + self window_notetracks( "window_melee_anim" ); + return 1; +} + +window_notetracks( msg ) +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( msg, notetrack ); + if ( notetrack == "end" ) + { + self teleport( self.old_origin ); + return; + } + if ( notetrack == "fire" ) + { + if ( self.ignoreall ) + { + self.ignoreall = 0; + } + if ( isDefined( self.first_node ) ) + { + _melee_dist_sq = 8100; + if ( isDefined( level.attack_player_thru_boards_range ) ) + { + _melee_dist_sq = level.attack_player_thru_boards_range * level.attack_player_thru_boards_range; + } + _trigger_dist_sq = 2601; + i = 0; + while ( i < self.player_targets.size ) + { + playerdistsq = distance2dsquared( self.player_targets[ i ].origin, self.origin ); + heightdiff = abs( self.player_targets[ i ].origin[ 2 ] - self.origin[ 2 ] ); + if ( playerdistsq < _melee_dist_sq && ( heightdiff * heightdiff ) < _melee_dist_sq ) + { + triggerdistsq = distance2dsquared( self.player_targets[ i ].origin, self.first_node.trigger_location.origin ); + heightdiff = abs( self.player_targets[ i ].origin[ 2 ] - self.first_node.trigger_location.origin[ 2 ] ); + if ( triggerdistsq < _trigger_dist_sq && ( heightdiff * heightdiff ) < _trigger_dist_sq ) + { + self.player_targets[ i ] dodamage( self.meleedamage, self.origin, self, self, "none", "MOD_MELEE" ); + break; + } + } + else + { + i++; + } + } + } + else self melee(); + } + } +} + +reset_attack_spot() +{ + if ( isDefined( self.attacking_node ) ) + { + node = self.attacking_node; + index = self.attacking_spot_index; + node.attack_spots_taken[ index ] = 0; + self.attacking_node = undefined; + self.attacking_spot_index = undefined; + } +} + +get_attack_spot( node ) +{ + index = get_attack_spot_index( node ); + if ( !isDefined( index ) ) + { + return 0; + } + self.attacking_node = node; + self.attacking_spot_index = index; + node.attack_spots_taken[ index ] = 1; + self.attacking_spot = node.attack_spots[ index ]; + return 1; +} + +get_attack_spot_index( node ) +{ + indexes = []; + i = 0; + while ( i < node.attack_spots.size ) + { + if ( !node.attack_spots_taken[ i ] ) + { + indexes[ indexes.size ] = i; + } + i++; + } + if ( indexes.size == 0 ) + { + return undefined; + } + return indexes[ randomint( indexes.size ) ]; +} + +zombie_tear_notetracks( msg, chunk, node ) +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( msg, notetrack ); + if ( notetrack == "end" ) + { + return; + } + if ( notetrack != "board" || notetrack == "destroy_piece" && notetrack == "bar" ) + { + node.zbarrier setzbarrierpiecestate( chunk, "opening" ); + } + } +} + +zombie_boardtear_offset_fx_horizontle( chunk, node ) +{ + if ( isDefined( chunk.script_parameters ) || chunk.script_parameters == "repair_board" && chunk.script_parameters == "board" ) + { + if ( isDefined( chunk.unbroken ) && chunk.unbroken == 1 ) + { + if ( isDefined( chunk.material ) && chunk.material == "glass" ) + { + playfx( level._effect[ "glass_break" ], chunk.origin, node.angles ); + chunk.unbroken = 0; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "metal" ) + { + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin ); + chunk.unbroken = 0; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + chunk setclientflag( level._zombie_scriptmover_flag_rock_fx ); + } + else + { + playfx( level._effect[ "wall_break" ], chunk.origin ); + } + chunk.unbroken = 0; + } + } + } + } + } + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters == "barricade_vents" ) + { + if ( isDefined( level.use_clientside_board_fx ) && level.use_clientside_board_fx ) + { + chunk setclientflag( level._zombie_scriptmover_flag_board_horizontal_fx ); + } + else + { + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin ); + } + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + chunk setclientflag( level._zombie_scriptmover_flag_rock_fx ); + } + return; + } + else + { + if ( isDefined( level.use_clientside_board_fx ) ) + { + chunk setclientflag( level._zombie_scriptmover_flag_board_horizontal_fx ); + return; + } + else + { + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, 0 ), 30 ) ); + wait randomfloatrange( 0,2, 0,4 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, 0 ), 30 ) ); + } + } + } +} + +zombie_boardtear_offset_fx_verticle( chunk, node ) +{ + if ( isDefined( chunk.script_parameters ) || chunk.script_parameters == "repair_board" && chunk.script_parameters == "board" ) + { + if ( isDefined( chunk.unbroken ) && chunk.unbroken == 1 ) + { + if ( isDefined( chunk.material ) && chunk.material == "glass" ) + { + playfx( level._effect[ "glass_break" ], chunk.origin, node.angles ); + chunk.unbroken = 0; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "metal" ) + { + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin ); + chunk.unbroken = 0; + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + chunk setclientflag( level._zombie_scriptmover_flag_rock_fx ); + } + else + { + playfx( level._effect[ "wall_break" ], chunk.origin ); + } + chunk.unbroken = 0; + } + } + } + } + } + if ( isDefined( chunk.script_parameters ) && chunk.script_parameters == "barricade_vents" ) + { + if ( isDefined( level.use_clientside_board_fx ) ) + { + chunk setclientflag( level._zombie_scriptmover_flag_board_vertical_fx ); + } + else + { + playfx( level._effect[ "fx_zombie_bar_break" ], chunk.origin ); + } + } + else + { + if ( isDefined( chunk.material ) && chunk.material == "rock" ) + { + if ( isDefined( level.use_clientside_rock_tearin_fx ) && level.use_clientside_rock_tearin_fx ) + { + chunk setclientflag( level._zombie_scriptmover_flag_rock_fx ); + } + return; + } + else + { + if ( isDefined( level.use_clientside_board_fx ) ) + { + chunk setclientflag( level._zombie_scriptmover_flag_board_vertical_fx ); + return; + } + else + { + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, 0 ), 30 ) ); + wait randomfloatrange( 0,2, 0,4 ); + playfx( level._effect[ "wood_chunk_destory" ], chunk.origin + vectorScale( ( 0, 0, 0 ), 30 ) ); + } + } + } +} + +zombie_bartear_offset_fx_verticle( chunk ) +{ + if ( isDefined( chunk.script_parameters ) || chunk.script_parameters == "bar" && chunk.script_noteworthy == "board" ) + { + possible_tag_array_1 = []; + possible_tag_array_1[ 0 ] = "Tag_fx_top"; + possible_tag_array_1[ 1 ] = ""; + possible_tag_array_1[ 2 ] = "Tag_fx_top"; + possible_tag_array_1[ 3 ] = ""; + possible_tag_array_2 = []; + possible_tag_array_2[ 0 ] = ""; + possible_tag_array_2[ 1 ] = "Tag_fx_bottom"; + possible_tag_array_2[ 2 ] = ""; + possible_tag_array_2[ 3 ] = "Tag_fx_bottom"; + possible_tag_array_2 = array_randomize( possible_tag_array_2 ); + random_fx = []; + random_fx[ 0 ] = level._effect[ "fx_zombie_bar_break" ]; + random_fx[ 1 ] = level._effect[ "fx_zombie_bar_break_lite" ]; + random_fx[ 2 ] = level._effect[ "fx_zombie_bar_break" ]; + random_fx[ 3 ] = level._effect[ "fx_zombie_bar_break_lite" ]; + random_fx = array_randomize( random_fx ); + switch( randomint( 9 ) ) + { + case 0: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + return; + case 1: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); + break; + return; + case 2: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); + break; + return; + case 3: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + return; + case 4: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + return; + case 5: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_top" ); + break; + return; + case 6: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_bottom" ); + break; + return; + case 7: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_top" ); + break; + return; + case 8: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_bottom" ); + break; + return; + } + } +} + +zombie_bartear_offset_fx_horizontle( chunk ) +{ + if ( isDefined( chunk.script_parameters ) || chunk.script_parameters == "bar" && chunk.script_noteworthy == "board" ) + { + switch( randomint( 10 ) ) + { + case 0: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + return; + case 1: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + return; + case 2: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + return; + case 3: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + return; + case 4: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + wait randomfloatrange( 0, 0,3 ); + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + return; + case 5: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_left" ); + break; + return; + case 6: + playfxontag( level._effect[ "fx_zombie_bar_break_lite" ], chunk, "Tag_fx_right" ); + break; + return; + case 7: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + return; + case 8: + playfxontag( level._effect[ "fx_zombie_bar_break" ], chunk, "Tag_fx_right" ); + break; + return; + } + } +} + +check_zbarrier_piece_for_zombie_inert( chunk_index, zbarrier, zombie ) +{ + zombie endon( "completed_emerging_into_playable_area" ); + zombie waittill( "stop_zombie_goto_entrance" ); + if ( zbarrier getzbarrierpiecestate( chunk_index ) == "targetted_by_zombie" ) + { + zbarrier setzbarrierpiecestate( chunk_index, "closed" ); + } +} + +check_zbarrier_piece_for_zombie_death( chunk_index, zbarrier, zombie ) +{ + while ( 1 ) + { + if ( zbarrier getzbarrierpiecestate( chunk_index ) != "targetted_by_zombie" ) + { + return; + } + if ( !isDefined( zombie ) || !isalive( zombie ) ) + { + zbarrier setzbarrierpiecestate( chunk_index, "closed" ); + return; + } + wait 0,05; + } +} + +check_for_zombie_death( zombie ) +{ + self endon( "destroyed" ); + wait 2,5; + self maps/mp/zombies/_zm_blockers::update_states( "repaired" ); +} + +zombie_head_gib( attacker, means_of_death ) +{ + self endon( "death" ); + if ( !is_mature() ) + { + return 0; + } + if ( isDefined( self.head_gibbed ) && self.head_gibbed ) + { + return; + } + self.head_gibbed = 1; + self zombie_eye_glow_stop(); + size = self getattachsize(); + i = 0; + while ( i < size ) + { + model = self getattachmodelname( i ); + if ( issubstr( model, "head" ) ) + { + if ( isDefined( self.hatmodel ) ) + { + self detach( self.hatmodel, "" ); + } + self play_sound_on_ent( "zombie_head_gib" ); + self detach( model, "" ); + if ( isDefined( self.torsodmg5 ) ) + { + self attach( self.torsodmg5, "", 1 ); + } + break; + } + else + { + i++; + } + } + temp_array = []; + temp_array[ 0 ] = level._zombie_gib_piece_index_head; + self gib( "normal", temp_array ); + if ( isDefined( level.track_gibs ) ) + { + level [[ level.track_gibs ]]( self, temp_array ); + } + self thread damage_over_time( ceil( self.health * 0,2 ), 1, attacker, means_of_death ); +} + +damage_over_time( dmg, delay, attacker, means_of_death ) +{ + self endon( "death" ); + self endon( "exploding" ); + if ( !isalive( self ) ) + { + return; + } + if ( !isplayer( attacker ) ) + { + attacker = self; + } + if ( !isDefined( means_of_death ) ) + { + means_of_death = "MOD_UNKNOWN"; + } + while ( 1 ) + { + if ( isDefined( delay ) ) + { + wait delay; + } + if ( isDefined( self ) ) + { + self dodamage( dmg, self gettagorigin( "j_neck" ), attacker, self, self.damagelocation, means_of_death, 0, self.damageweapon ); + } + } +} + +head_should_gib( attacker, type, point ) +{ + if ( !is_mature() ) + { + return 0; + } + if ( self.head_gibbed ) + { + return 0; + } + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + return 0; + } + low_health_percent = ( self.health / self.maxhealth ) * 100; + if ( low_health_percent > 10 ) + { + return 0; + } + weapon = attacker getcurrentweapon(); + if ( type != "MOD_RIFLE_BULLET" && type != "MOD_PISTOL_BULLET" ) + { + if ( type == "MOD_GRENADE" || type == "MOD_GRENADE_SPLASH" ) + { + if ( distance( point, self gettagorigin( "j_head" ) ) > 55 ) + { + return 0; + } + else + { + return 1; + } + } + else + { + if ( type == "MOD_PROJECTILE" ) + { + if ( distance( point, self gettagorigin( "j_head" ) ) > 10 ) + { + return 0; + } + else + { + return 1; + } + } + else + { + if ( weaponclass( weapon ) != "spread" ) + { + return 0; + } + } + } + } + if ( !self maps/mp/animscripts/zm_utility::damagelocationisany( "head", "helmet", "neck" ) ) + { + return 0; + } + if ( weapon != "none" || weapon == level.start_weapon && weaponisgasweapon( self.weapon ) ) + { + return 0; + } + return 1; +} + +headshot_blood_fx() +{ + if ( !isDefined( self ) ) + { + return; + } + if ( !is_mature() ) + { + return; + } + fxtag = "j_neck"; + fxorigin = self gettagorigin( fxtag ); + upvec = anglesToUp( self gettagangles( fxtag ) ); + forwardvec = anglesToForward( self gettagangles( fxtag ) ); + playfx( level._effect[ "headshot" ], fxorigin, forwardvec, upvec ); + playfx( level._effect[ "headshot_nochunks" ], fxorigin, forwardvec, upvec ); + wait 0,3; + if ( isDefined( self ) ) + { + playfxontag( level._effect[ "bloodspurt" ], self, fxtag ); + } +} + +zombie_gib_on_damage() +{ + while ( 1 ) + { + self waittill( "damage", amount, attacker, direction_vec, point, type, tagname, modelname, partname, weaponname ); + if ( !isDefined( self ) ) + { + return; + } + while ( !self zombie_should_gib( amount, attacker, type ) ) + { + continue; + } + while ( self head_should_gib( attacker, type, point ) && type != "MOD_BURNED" ) + { + self zombie_head_gib( attacker, type ); + } + if ( !self.gibbed ) + { + while ( self maps/mp/animscripts/zm_utility::damagelocationisany( "head", "helmet", "neck" ) ) + { + continue; + } + refs = []; + switch( self.damagelocation ) + { + case "torso_lower": + case "torso_upper": + refs[ refs.size ] = "guts"; + refs[ refs.size ] = "right_arm"; + break; + case "right_arm_lower": + case "right_arm_upper": + case "right_hand": + refs[ refs.size ] = "right_arm"; + break; + case "left_arm_lower": + case "left_arm_upper": + case "left_hand": + refs[ refs.size ] = "left_arm"; + break; + case "right_foot": + case "right_leg_lower": + case "right_leg_upper": + if ( self.health <= 0 ) + { + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "no_legs"; + } + break; + case "left_foot": + case "left_leg_lower": + case "left_leg_upper": + if ( self.health <= 0 ) + { + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "no_legs"; + } + break; + default: + if ( self.damagelocation == "none" ) + { + if ( type != "MOD_GRENADE" && type != "MOD_GRENADE_SPLASH" || type == "MOD_PROJECTILE" && type == "MOD_PROJECTILE_SPLASH" ) + { + refs = self derive_damage_refs( point ); + break; + } + else } + else refs[ refs.size ] = "guts"; + refs[ refs.size ] = "right_arm"; + refs[ refs.size ] = "left_arm"; + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "no_legs"; + break; + } + if ( isDefined( level.custom_derive_damage_refs ) ) + { + new_gib_ref = self [[ level.custom_derive_damage_refs ]]( point, weaponname ); + if ( new_gib_ref.size > 0 ) + { + refs = new_gib_ref; + } + } + if ( refs.size ) + { + self.a.gib_ref = maps/mp/animscripts/zm_death::get_random( refs ); + if ( self.a.gib_ref != "no_legs" && self.a.gib_ref != "right_leg" && self.a.gib_ref == "left_leg" && self.health > 0 ) + { + self.has_legs = 0; + self allowedstances( "crouch" ); + self setphysparams( 15, 0, 24 ); + self allowpitchangle( 1 ); + self setpitchorient(); + health = self.health; + health *= 0,1; + self thread maps/mp/animscripts/zm_run::needsdelayedupdate(); + if ( isDefined( self.crawl_anim_override ) ) + { + self [[ self.crawl_anim_override ]](); + } + } + } + if ( self.health > 0 ) + { + self thread maps/mp/animscripts/zm_death::do_gib(); + if ( isDefined( level.gib_on_damage ) ) + { + self thread [[ level.gib_on_damage ]](); + } + } + } +} +} + +zombie_should_gib( amount, attacker, type ) +{ + if ( !is_mature() ) + { + return 0; + } + if ( !isDefined( type ) ) + { + return 0; + } + if ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + return 0; + } + if ( isDefined( self.no_gib ) && self.no_gib == 1 ) + { + return 0; + } + switch( type ) + { + case "MOD_BURNED": + case "MOD_CRUSH": + case "MOD_FALLING": + case "MOD_SUICIDE": + case "MOD_TELEFRAG": + case "MOD_TRIGGER_HURT": + case "MOD_UNKNOWN": + return 0; + case "MOD_MELEE": + return 0; + } + if ( type == "MOD_PISTOL_BULLET" || type == "MOD_RIFLE_BULLET" ) + { + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + return 0; + } + weapon = attacker getcurrentweapon(); + if ( weapon == "none" || weapon == level.start_weapon ) + { + return 0; + } + if ( weaponisgasweapon( self.weapon ) ) + { + return 0; + } + } + else + { + if ( type == "MOD_PROJECTILE" ) + { + if ( isDefined( attacker ) && isplayer( attacker ) ) + { + weapon = attacker getcurrentweapon(); + if ( weapon == "slipgun_zm" || weapon == "slipgun_upgraded_zm" ) + { + return 0; + } + } + } + } + prev_health = amount + self.health; + if ( prev_health <= 0 ) + { + prev_health = 1; + } + damage_percent = ( amount / prev_health ) * 100; + if ( damage_percent < 10 ) + { + return 0; + } + return 1; +} + +derive_damage_refs( point ) +{ + if ( !isDefined( level.gib_tags ) ) + { + init_gib_tags(); + } + closesttag = undefined; + i = 0; + while ( i < level.gib_tags.size ) + { + if ( !isDefined( closesttag ) ) + { + closesttag = level.gib_tags[ i ]; + i++; + continue; + } + else + { + if ( distancesquared( point, self gettagorigin( level.gib_tags[ i ] ) ) < distancesquared( point, self gettagorigin( closesttag ) ) ) + { + closesttag = level.gib_tags[ i ]; + } + } + i++; + } + refs = []; + if ( closesttag != "J_SpineLower" || closesttag == "J_SpineUpper" && closesttag == "J_Spine4" ) + { + refs[ refs.size ] = "guts"; + refs[ refs.size ] = "right_arm"; + } + else + { + if ( closesttag != "J_Shoulder_LE" || closesttag == "J_Elbow_LE" && closesttag == "J_Wrist_LE" ) + { + refs[ refs.size ] = "left_arm"; + } + else + { + if ( closesttag != "J_Shoulder_RI" || closesttag == "J_Elbow_RI" && closesttag == "J_Wrist_RI" ) + { + refs[ refs.size ] = "right_arm"; + } + else + { + if ( closesttag != "J_Hip_LE" || closesttag == "J_Knee_LE" && closesttag == "J_Ankle_LE" ) + { + refs[ refs.size ] = "left_leg"; + refs[ refs.size ] = "no_legs"; + } + else + { + if ( closesttag != "J_Hip_RI" || closesttag == "J_Knee_RI" && closesttag == "J_Ankle_RI" ) + { + refs[ refs.size ] = "right_leg"; + refs[ refs.size ] = "no_legs"; + } + } + } + } + } +/# + assert( array_validate( refs ), "get_closest_damage_refs(): couldn't derive refs from closestTag " + closesttag ); +#/ + return refs; +} + +init_gib_tags() +{ + tags = []; + tags[ tags.size ] = "J_SpineLower"; + tags[ tags.size ] = "J_SpineUpper"; + tags[ tags.size ] = "J_Spine4"; + tags[ tags.size ] = "J_Shoulder_LE"; + tags[ tags.size ] = "J_Elbow_LE"; + tags[ tags.size ] = "J_Wrist_LE"; + tags[ tags.size ] = "J_Shoulder_RI"; + tags[ tags.size ] = "J_Elbow_RI"; + tags[ tags.size ] = "J_Wrist_RI"; + tags[ tags.size ] = "J_Hip_LE"; + tags[ tags.size ] = "J_Knee_LE"; + tags[ tags.size ] = "J_Ankle_LE"; + tags[ tags.size ] = "J_Hip_RI"; + tags[ tags.size ] = "J_Knee_RI"; + tags[ tags.size ] = "J_Ankle_RI"; + level.gib_tags = tags; +} + +zombie_can_drop_powerups( zombie ) +{ + if ( is_tactical_grenade( zombie.damageweapon ) || !flag( "zombie_drop_powerups" ) ) + { + return 0; + } + if ( isDefined( zombie.no_powerups ) && zombie.no_powerups ) + { + return 0; + } + return 1; +} + +zombie_death_points( origin, mod, hit_location, attacker, zombie, team ) +{ + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + return; + } + if ( zombie_can_drop_powerups( zombie ) ) + { + if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground == 1 ) + { + trace = bullettrace( zombie.origin + vectorScale( ( 0, 0, 0 ), 100 ), zombie.origin + vectorScale( ( 0, 0, 0 ), 100 ), 0, undefined ); + origin = trace[ "position" ]; + level thread maps/mp/zombies/_zm_powerups::powerup_drop( origin ); + } + else + { + trace = groundtrace( zombie.origin + vectorScale( ( 0, 0, 0 ), 5 ), zombie.origin + vectorScale( ( 0, 0, 0 ), 300 ), 0, undefined ); + origin = trace[ "position" ]; + level thread maps/mp/zombies/_zm_powerups::powerup_drop( origin ); + } + } + level thread maps/mp/zombies/_zm_audio::player_zombie_kill_vox( hit_location, attacker, mod, zombie ); + event = "death"; + if ( isDefined( zombie.damageweapon ) && issubstr( zombie.damageweapon, "knife_ballistic_" ) || mod == "MOD_MELEE" && mod == "MOD_IMPACT" ) + { + event = "ballistic_knife_death"; + } + if ( isDefined( zombie.deathpoints_already_given ) && zombie.deathpoints_already_given ) + { + return; + } + zombie.deathpoints_already_given = 1; + if ( isDefined( zombie.damageweapon ) && is_equipment( zombie.damageweapon ) ) + { + return; + } + attacker maps/mp/zombies/_zm_score::player_add_points( event, mod, hit_location, undefined, team ); +} + +get_number_variants( aliasprefix ) +{ + i = 0; + while ( i < 100 ) + { + if ( !soundexists( ( aliasprefix + "_" ) + i ) ) + { + return i; + } + i++; + } +} + +dragons_breath_flame_death_fx() +{ + if ( self.isdog ) + { + return; + } + if ( !isDefined( level._effect ) || !isDefined( level._effect[ "character_fire_death_sm" ] ) ) + { +/# + println( "^3ANIMSCRIPT WARNING: You are missing level._effect["character_fire_death_sm"], please set it in your levelname_fx.gsc. Use "env/fire/fx_fire_zombie_md"" ); +#/ + return; + } + playfxontag( level._effect[ "character_fire_death_sm" ], self, "J_SpineLower" ); + tagarray = []; + if ( !isDefined( self.a.gib_ref ) || self.a.gib_ref != "left_arm" ) + { + tagarray[ tagarray.size ] = "J_Elbow_LE"; + tagarray[ tagarray.size ] = "J_Wrist_LE"; + } + if ( !isDefined( self.a.gib_ref ) || self.a.gib_ref != "right_arm" ) + { + tagarray[ tagarray.size ] = "J_Elbow_RI"; + tagarray[ tagarray.size ] = "J_Wrist_RI"; + } + if ( !isDefined( self.a.gib_ref ) || self.a.gib_ref != "no_legs" && self.a.gib_ref != "left_leg" ) + { + tagarray[ tagarray.size ] = "J_Knee_LE"; + tagarray[ tagarray.size ] = "J_Ankle_LE"; + } + if ( !isDefined( self.a.gib_ref ) || self.a.gib_ref != "no_legs" && self.a.gib_ref != "right_leg" ) + { + tagarray[ tagarray.size ] = "J_Knee_RI"; + tagarray[ tagarray.size ] = "J_Ankle_RI"; + } + tagarray = array_randomize( tagarray ); + playfxontag( level._effect[ "character_fire_death_sm" ], self, tagarray[ 0 ] ); +} + +zombie_ragdoll_then_explode( launchvector, attacker ) +{ + if ( !isDefined( self ) ) + { + return; + } + self zombie_eye_glow_stop(); + self setclientfield( "zombie_ragdoll_explode", 1 ); + self notify( "exploding" ); + self notify( "end_melee" ); + self notify( "death" ); + self.dont_die_on_me = 1; + self.exploding = 1; + self.a.nodeath = 1; + self.dont_throw_gib = 1; + self startragdoll(); + self setplayercollision( 0 ); + self reset_attack_spot(); + if ( isDefined( launchvector ) ) + { + self launchragdoll( launchvector ); + } + wait 2,1; + if ( isDefined( self ) ) + { + self ghost(); + self delay_thread( 0,25, ::self_delete ); + } +} + +zombie_death_animscript() +{ + team = undefined; + recalc_zombie_array(); + if ( isDefined( self._race_team ) ) + { + team = self._race_team; + } + self reset_attack_spot(); + if ( self check_zombie_death_animscript_callbacks() ) + { + return 0; + } + if ( isDefined( level.zombie_death_animscript_override ) ) + { + self [[ level.zombie_death_animscript_override ]](); + } + if ( self.has_legs && isDefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" ) + { + self.deathanim = "zm_death"; + } + self.grenadeammo = 0; + if ( isDefined( self.nuked ) ) + { + if ( zombie_can_drop_powerups( self ) ) + { + if ( isDefined( self.in_the_ground ) && self.in_the_ground == 1 ) + { + trace = bullettrace( self.origin + vectorScale( ( 0, 0, 0 ), 100 ), self.origin + vectorScale( ( 0, 0, 0 ), 100 ), 0, undefined ); + origin = trace[ "position" ]; + level thread maps/mp/zombies/_zm_powerups::powerup_drop( origin ); + } + else + { + trace = groundtrace( self.origin + vectorScale( ( 0, 0, 0 ), 5 ), self.origin + vectorScale( ( 0, 0, 0 ), 300 ), 0, undefined ); + origin = trace[ "position" ]; + level thread maps/mp/zombies/_zm_powerups::powerup_drop( self.origin ); + } + } + } + else + { + level zombie_death_points( self.origin, self.damagemod, self.damagelocation, self.attacker, self, team ); + } + if ( isDefined( self.attacker ) && isai( self.attacker ) ) + { + self.attacker notify( "killed" ); + } + if ( self.damageweapon == "rottweil72_upgraded_zm" && self.damagemod == "MOD_RIFLE_BULLET" ) + { + self thread dragons_breath_flame_death_fx(); + } + if ( self.damageweapon == "tazer_knuckles_zm" && self.damagemod == "MOD_MELEE" ) + { + self.is_on_fire = 0; + self notify( "stop_flame_damage" ); + } + if ( self.damagemod == "MOD_BURNED" ) + { + self thread maps/mp/animscripts/zm_death::flame_death_fx(); + } + if ( self.damagemod == "MOD_GRENADE" || self.damagemod == "MOD_GRENADE_SPLASH" ) + { + level notify( "zombie_grenade_death" ); + } + return 0; +} + +check_zombie_death_animscript_callbacks() +{ + if ( !isDefined( level.zombie_death_animscript_callbacks ) ) + { + return 0; + } + i = 0; + while ( i < level.zombie_death_animscript_callbacks.size ) + { + if ( self [[ level.zombie_death_animscript_callbacks[ i ] ]]() ) + { + return 1; + } + i++; + } + return 0; +} + +register_zombie_death_animscript_callback( func ) +{ + if ( !isDefined( level.zombie_death_animscript_callbacks ) ) + { + level.zombie_death_animscript_callbacks = []; + } + level.zombie_death_animscript_callbacks[ level.zombie_death_animscript_callbacks.size ] = func; +} + +damage_on_fire( player ) +{ + self endon( "death" ); + self endon( "stop_flame_damage" ); + wait 2; + while ( isDefined( self.is_on_fire ) && self.is_on_fire ) + { + if ( level.round_number < 6 ) + { + dmg = level.zombie_health * randomfloatrange( 0,2, 0,3 ); + } + else if ( level.round_number < 9 ) + { + dmg = level.zombie_health * randomfloatrange( 0,15, 0,25 ); + } + else if ( level.round_number < 11 ) + { + dmg = level.zombie_health * randomfloatrange( 0,1, 0,2 ); + } + else + { + dmg = level.zombie_health * randomfloatrange( 0,1, 0,15 ); + } + if ( isDefined( player ) && isalive( player ) ) + { + self dodamage( dmg, self.origin, player ); + } + else + { + self dodamage( dmg, self.origin, level ); + } + wait randomfloatrange( 1, 3 ); + } +} + +player_using_hi_score_weapon( player ) +{ + weapon = player getcurrentweapon(); + if ( weapon == "none" || weaponissemiauto( weapon ) ) + { + return 1; + } + return 0; +} + +zombie_damage( mod, hit_location, hit_origin, player, amount, team ) +{ + if ( is_magic_bullet_shield_enabled( self ) ) + { + return; + } + player.use_weapon_type = mod; + if ( isDefined( self.marked_for_death ) ) + { + return; + } + if ( !isDefined( player ) ) + { + return; + } + if ( isDefined( hit_origin ) ) + { + self.damagehit_origin = hit_origin; + } + else + { + self.damagehit_origin = player getweaponmuzzlepoint(); + } + if ( self check_zombie_damage_callbacks( mod, hit_location, hit_origin, player, amount ) ) + { + return; + } + else if ( self zombie_flame_damage( mod, player ) ) + { + if ( self zombie_give_flame_damage_points() ) + { + player maps/mp/zombies/_zm_score::player_add_points( "damage", mod, hit_location, self.isdog, team ); + } + } + else + { + if ( player_using_hi_score_weapon( player ) ) + { + damage_type = "damage"; + } + else + { + damage_type = "damage_light"; + } + if ( isDefined( self.no_damage_points ) && !self.no_damage_points ) + { + player maps/mp/zombies/_zm_score::player_add_points( damage_type, mod, hit_location, self.isdog, team ); + } + } + if ( isDefined( self.zombie_damage_fx_func ) ) + { + self [[ self.zombie_damage_fx_func ]]( mod, hit_location, hit_origin, player ); + } + modname = remove_mod_from_methodofdeath( mod ); + if ( is_placeable_mine( self.damageweapon ) ) + { + if ( isDefined( self.zombie_damage_claymore_func ) ) + { + self [[ self.zombie_damage_claymore_func ]]( mod, hit_location, hit_origin, player ); + } + else if ( isDefined( player ) && isalive( player ) ) + { + self dodamage( level.round_number * randomintrange( 100, 200 ), self.origin, player, self, hit_location, mod ); + } + else + { + self dodamage( level.round_number * randomintrange( 100, 200 ), self.origin, undefined, self, hit_location, mod ); + } + } + else if ( mod == "MOD_GRENADE" || mod == "MOD_GRENADE_SPLASH" ) + { + if ( isDefined( player ) && isalive( player ) ) + { + player.grenade_multiattack_count++; + player.grenade_multiattack_ent = self; + self dodamage( level.round_number + randomintrange( 100, 200 ), self.origin, player, self, hit_location, modname ); + } + else + { + self dodamage( level.round_number + randomintrange( 100, 200 ), self.origin, undefined, self, hit_location, modname ); + } + } + else + { + if ( mod != "MOD_PROJECTILE" || mod == "MOD_EXPLOSIVE" && mod == "MOD_PROJECTILE_SPLASH" ) + { + if ( isDefined( player ) && isalive( player ) ) + { + self dodamage( level.round_number * randomintrange( 0, 100 ), self.origin, player, self, hit_location, modname ); + } + else + { + self dodamage( level.round_number * randomintrange( 0, 100 ), self.origin, undefined, self, hit_location, modname ); + } + } + } + if ( isDefined( self.a.gib_ref ) && self.a.gib_ref == "no_legs" && isalive( self ) ) + { + if ( isDefined( player ) ) + { + rand = randomintrange( 0, 100 ); + if ( rand < 10 ) + { + player create_and_play_dialog( "general", "crawl_spawn" ); + } + } + } + else + { + if ( isDefined( self.a.gib_ref ) || self.a.gib_ref == "right_arm" && self.a.gib_ref == "left_arm" ) + { + if ( self.has_legs && isalive( self ) ) + { + if ( isDefined( player ) ) + { + rand = randomintrange( 0, 100 ); + if ( rand < 7 ) + { + player create_and_play_dialog( "general", "shoot_arm" ); + } + } + } + } + } + self thread maps/mp/zombies/_zm_powerups::check_for_instakill( player, mod, hit_location ); +} + +zombie_damage_ads( mod, hit_location, hit_origin, player, amount, team ) +{ + if ( is_magic_bullet_shield_enabled( self ) ) + { + return; + } + player.use_weapon_type = mod; + if ( !isDefined( player ) ) + { + return; + } + if ( isDefined( hit_origin ) ) + { + self.damagehit_origin = hit_origin; + } + else + { + self.damagehit_origin = player getweaponmuzzlepoint(); + } + if ( self check_zombie_damage_callbacks( mod, hit_location, hit_origin, player, amount ) ) + { + return; + } + else if ( self zombie_flame_damage( mod, player ) ) + { + if ( self zombie_give_flame_damage_points() ) + { + player maps/mp/zombies/_zm_score::player_add_points( "damage_ads", mod, hit_location, undefined, team ); + } + } + else + { + if ( player_using_hi_score_weapon( player ) ) + { + damage_type = "damage"; + } + else + { + damage_type = "damage_light"; + } + if ( isDefined( self.no_damage_points ) && !self.no_damage_points ) + { + player maps/mp/zombies/_zm_score::player_add_points( damage_type, mod, hit_location, undefined, team ); + } + } + self thread maps/mp/zombies/_zm_powerups::check_for_instakill( player, mod, hit_location ); +} + +check_zombie_damage_callbacks( mod, hit_location, hit_origin, player, amount ) +{ + if ( !isDefined( level.zombie_damage_callbacks ) ) + { + return 0; + } + i = 0; + while ( i < level.zombie_damage_callbacks.size ) + { + if ( self [[ level.zombie_damage_callbacks[ i ] ]]( mod, hit_location, hit_origin, player, amount ) ) + { + return 1; + } + i++; + } + return 0; +} + +register_zombie_damage_callback( func ) +{ + if ( !isDefined( level.zombie_damage_callbacks ) ) + { + level.zombie_damage_callbacks = []; + } + level.zombie_damage_callbacks[ level.zombie_damage_callbacks.size ] = func; +} + +zombie_give_flame_damage_points() +{ + if ( getTime() > self.flame_damage_time ) + { + self.flame_damage_time = getTime() + level.zombie_vars[ "zombie_flame_dmg_point_delay" ]; + return 1; + } + return 0; +} + +zombie_flame_damage( mod, player ) +{ + if ( mod == "MOD_BURNED" ) + { + if ( !isDefined( self.is_on_fire ) || isDefined( self.is_on_fire ) && !self.is_on_fire ) + { + self thread damage_on_fire( player ); + } + do_flame_death = 1; + dist = 10000; + ai = getaiarray( level.zombie_team ); + i = 0; + while ( i < ai.size ) + { + if ( isDefined( ai[ i ].is_on_fire ) && ai[ i ].is_on_fire ) + { + if ( distancesquared( ai[ i ].origin, self.origin ) < dist ) + { + do_flame_death = 0; + break; + } + } + else + { + i++; + } + } + if ( do_flame_death ) + { + self thread maps/mp/animscripts/zm_death::flame_death_fx(); + } + return 1; + } + return 0; +} + +is_weapon_shotgun( sweapon ) +{ + if ( isDefined( sweapon ) && weaponclass( sweapon ) == "spread" ) + { + return 1; + } + return 0; +} + +zombie_death_event( zombie ) +{ + zombie.marked_for_recycle = 0; + force_explode = 0; + force_head_gib = 0; + zombie waittill( "death", attacker ); + time_of_death = getTime(); + if ( isDefined( zombie ) ) + { + zombie stopsounds(); + } + if ( isDefined( zombie ) && isDefined( zombie.marked_for_insta_upgraded_death ) ) + { + force_head_gib = 1; + } + if ( !isDefined( zombie.damagehit_origin ) && isDefined( attacker ) ) + { + zombie.damagehit_origin = attacker getweaponmuzzlepoint(); + } + if ( isDefined( attacker ) && isplayer( attacker ) ) + { + maps/mp/zombies/_zm_pers_upgrades::pers_zombie_death_location_check( attacker, zombie.origin ); + if ( isDefined( zombie ) && isDefined( zombie.damagelocation ) ) + { + if ( is_headshot( zombie.damageweapon, zombie.damagelocation, zombie.damagemod ) ) + { + attacker.headshots++; + attacker maps/mp/zombies/_zm_stats::increment_client_stat( "headshots" ); + attacker addweaponstat( zombie.damageweapon, "headshots", 1 ); + attacker maps/mp/zombies/_zm_stats::increment_player_stat( "headshots" ); + if ( is_classic() ) + { + attacker check_for_pers_headshot( time_of_death, zombie ); + } + } + else + { + attacker notify( "zombie_death_no_headshot" ); + } + } + if ( isDefined( zombie ) && isDefined( zombie.damagemod ) && zombie.damagemod == "MOD_MELEE" ) + { + attacker maps/mp/zombies/_zm_stats::increment_client_stat( "melee_kills" ); + attacker maps/mp/zombies/_zm_stats::increment_player_stat( "melee_kills" ); + attacker notify( "melee_kill" ); + if ( attacker maps/mp/zombies/_zm_pers_upgrades::is_insta_kill_upgraded_and_active() ) + { + force_explode = 1; + } + } + attacker maps/mp/zombies/_zm::add_rampage_bookmark_kill_time(); + attacker.kills++; + attacker maps/mp/zombies/_zm_stats::increment_client_stat( "kills" ); + attacker maps/mp/zombies/_zm_stats::increment_player_stat( "kills" ); + dmgweapon = zombie.damageweapon; + if ( is_alt_weapon( dmgweapon ) ) + { + dmgweapon = weaponaltweaponname( dmgweapon ); + } + attacker addweaponstat( dmgweapon, "kills", 1 ); + if ( isDefined( attacker.pers_upgrades_awarded[ "multikill_headshots" ] ) || attacker.pers_upgrades_awarded[ "multikill_headshots" ] && force_head_gib ) + { + zombie maps/mp/zombies/_zm_spawner::zombie_head_gib(); + } + } + zombie_death_achievement_sliquifier_check( attacker, zombie ); + recalc_zombie_array(); + if ( !isDefined( zombie ) ) + { + return; + } + level.global_zombies_killed++; + if ( isDefined( zombie.marked_for_death ) && !isDefined( zombie.nuked ) ) + { + level.zombie_trap_killed_count++; + } + zombie check_zombie_death_event_callbacks(); + zombie thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "death", zombie.animname ); + zombie thread zombie_eye_glow_stop(); + if ( isDefined( zombie.damageweapon ) && is_weapon_shotgun( zombie.damageweapon ) && !maps/mp/zombies/_zm_weapons::is_weapon_upgraded( zombie.damageweapon ) && isDefined( zombie.damageweapon ) || is_placeable_mine( zombie.damageweapon ) && zombie.damagemod != "MOD_GRENADE" && zombie.damagemod != "MOD_GRENADE_SPLASH" || zombie.damagemod == "MOD_EXPLOSIVE" && force_explode == 1 ) + { + splode_dist = 180; + if ( isDefined( zombie.damagehit_origin ) && distancesquared( zombie.origin, zombie.damagehit_origin ) < ( splode_dist * splode_dist ) ) + { + tag = "J_SpineLower"; + if ( isDefined( zombie.isdog ) && zombie.isdog ) + { + tag = "tag_origin"; + } + if ( isDefined( zombie.is_on_fire ) && !zombie.is_on_fire && isDefined( zombie.guts_explosion ) && !zombie.guts_explosion ) + { + zombie.guts_explosion = 1; + if ( is_mature() ) + { + if ( isDefined( level._effect[ "zombie_guts_explosion" ] ) ) + { + playfx( level._effect[ "zombie_guts_explosion" ], zombie gettagorigin( tag ) ); + } + } + if ( isDefined( zombie.isdog ) && !zombie.isdog ) + { + wait 0,1; + } + zombie ghost(); + } + } + } + if ( zombie.damagemod == "MOD_GRENADE" || zombie.damagemod == "MOD_GRENADE_SPLASH" ) + { + if ( isDefined( attacker ) && isalive( attacker ) ) + { + attacker.grenade_multiattack_count++; + attacker.grenade_multiattack_ent = zombie; + } + } + if ( isDefined( zombie.has_been_damaged_by_player ) && !zombie.has_been_damaged_by_player && isDefined( zombie.marked_for_recycle ) && zombie.marked_for_recycle ) + { + level.zombie_total++; + level.zombie_total_subtract++; + } + else + { + if ( isDefined( zombie.attacker ) && isplayer( zombie.attacker ) ) + { + level.zombie_player_killed_count++; + if ( isDefined( zombie.sound_damage_player ) && zombie.sound_damage_player == zombie.attacker ) + { + zombie.attacker maps/mp/zombies/_zm_audio::create_and_play_dialog( "kill", "damage" ); + } + zombie.attacker notify( "zom_kill" ); + damageloc = zombie.damagelocation; + damagemod = zombie.damagemod; + attacker = zombie.attacker; + weapon = zombie.damageweapon; + bbprint( "zombie_kills", "round %d zombietype %s damagetype %s damagelocation %s playername %s playerweapon %s playerx %f playery %f playerz %f zombiex %f zombiey %f zombiez %f", level.round_number, zombie.animname, damagemod, damageloc, attacker.name, weapon, attacker.origin, zombie.origin ); + } + else + { + if ( zombie.ignoreall && isDefined( zombie.marked_for_death ) && !zombie.marked_for_death ) + { + level.zombies_timeout_spawn++; + } + } + } + level notify( "zom_kill" ); + level.total_zombies_killed++; +} + +zombie_death_achievement_sliquifier_check( e_player, e_zombie ) +{ + if ( !isplayer( e_player ) ) + { + return; + } + if ( isDefined( e_zombie ) ) + { + if ( isDefined( e_zombie.damageweapon ) && e_zombie.damageweapon == "slipgun_zm" ) + { + if ( !isDefined( e_player.num_sliquifier_kills ) ) + { + e_player.num_sliquifier_kills = 0; + } + e_player.num_sliquifier_kills++; + e_player notify( "sliquifier_kill" ); + } + } +} + +check_zombie_death_event_callbacks() +{ + if ( !isDefined( level.zombie_death_event_callbacks ) ) + { + return; + } + i = 0; + while ( i < level.zombie_death_event_callbacks.size ) + { + self [[ level.zombie_death_event_callbacks[ i ] ]](); + i++; + } +} + +register_zombie_death_event_callback( func ) +{ + if ( !isDefined( level.zombie_death_event_callbacks ) ) + { + level.zombie_death_event_callbacks = []; + } + level.zombie_death_event_callbacks[ level.zombie_death_event_callbacks.size ] = func; +} + +deregister_zombie_death_event_callback( func ) +{ + if ( isDefined( level.zombie_death_event_callbacks ) ) + { + arrayremovevalue( level.zombie_death_event_callbacks, func ); + } +} + +zombie_setup_attack_properties() +{ + self zombie_history( "zombie_setup_attack_properties()" ); + self.ignoreall = 0; + self.pathenemyfightdist = 64; + self.meleeattackdist = 64; + self.maxsightdistsqrd = 16384; + self.disablearrivals = 1; + self.disableexits = 1; +} + +attractors_generated_listener() +{ + self endon( "death" ); + level endon( "intermission" ); + self endon( "stop_find_flesh" ); + self endon( "path_timer_done" ); + level waittill( "attractor_positions_generated" ); + self.zombie_path_timer = 0; +} + +zombie_pathing() +{ + self endon( "death" ); + self endon( "zombie_acquire_enemy" ); + level endon( "intermission" ); +/# + if ( !isDefined( self.favoriteenemy ) ) + { + assert( isDefined( self.enemyoverride ) ); + } +#/ + self._skip_pathing_first_delay = 1; + self thread zombie_follow_enemy(); + self waittill( "bad_path" ); + level.zombie_pathing_failed++; + if ( isDefined( self.enemyoverride ) ) + { + debug_print( "Zombie couldn't path to point of interest at origin: " + self.enemyoverride[ 0 ] + " Falling back to breadcrumb system" ); + if ( isDefined( self.enemyoverride[ 1 ] ) ) + { + self.enemyoverride = self.enemyoverride[ 1 ] invalidate_attractor_pos( self.enemyoverride, self ); + self.zombie_path_timer = 0; + return; + } + } + else if ( isDefined( self.favoriteenemy ) ) + { + debug_print( "Zombie couldn't path to player at origin: " + self.favoriteenemy.origin + " Falling back to breadcrumb system" ); + } + else + { + debug_print( "Zombie couldn't path to a player ( the other 'prefered' player might be ignored for encounters mode ). Falling back to breadcrumb system" ); + } + if ( !isDefined( self.favoriteenemy ) ) + { + self.zombie_path_timer = 0; + return; + } + else + { + self.favoriteenemy endon( "disconnect" ); + } + players = get_players(); + valid_player_num = 0; + i = 0; + while ( i < players.size ) + { + if ( is_player_valid( players[ i ], 1 ) ) + { + valid_player_num += 1; + } + i++; + } + if ( players.size > 1 ) + { + if ( isDefined( level._should_skip_ignore_player_logic ) && [[ level._should_skip_ignore_player_logic ]]() ) + { + self.zombie_path_timer = 0; + return; + } + if ( array_check_for_dupes( self.ignore_player, self.favoriteenemy ) ) + { + self.ignore_player[ self.ignore_player.size ] = self.favoriteenemy; + } + if ( self.ignore_player.size < valid_player_num ) + { + self.zombie_path_timer = 0; + return; + } + } + crumb_list = self.favoriteenemy.zombie_breadcrumbs; + bad_crumbs = []; + while ( 1 ) + { + if ( !is_player_valid( self.favoriteenemy, 1 ) ) + { + self.zombie_path_timer = 0; + return; + } + goal = zombie_pathing_get_breadcrumb( self.favoriteenemy.origin, crumb_list, bad_crumbs, randomint( 100 ) < 20 ); + if ( !isDefined( goal ) ) + { + debug_print( "Zombie exhausted breadcrumb search" ); + level.zombie_breadcrumb_failed++; + goal = self.favoriteenemy.spectator_respawn.origin; + } + debug_print( "Setting current breadcrumb to " + goal ); + self.zombie_path_timer += 100; + self setgoalpos( goal ); + self waittill( "bad_path" ); + debug_print( "Zombie couldn't path to breadcrumb at " + goal + " Finding next breadcrumb" ); + i = 0; + while ( i < crumb_list.size ) + { + if ( goal == crumb_list[ i ] ) + { + bad_crumbs[ bad_crumbs.size ] = i; + break; + } + else + { + i++; + } + } + } +} + +zombie_pathing_get_breadcrumb( origin, breadcrumbs, bad_crumbs, pick_random ) +{ +/# + assert( isDefined( origin ) ); +#/ +/# + assert( isDefined( breadcrumbs ) ); +#/ +/# + assert( isarray( breadcrumbs ) ); +#/ +/# + if ( pick_random ) + { + debug_print( "Finding random breadcrumb" ); +#/ + } + i = 0; + while ( i < breadcrumbs.size ) + { + if ( pick_random ) + { + crumb_index = randomint( breadcrumbs.size ); + } + else + { + crumb_index = i; + } + if ( crumb_is_bad( crumb_index, bad_crumbs ) ) + { + i++; + continue; + } + else + { + return breadcrumbs[ crumb_index ]; + } + i++; + } + return undefined; +} + +crumb_is_bad( crumb, bad_crumbs ) +{ + i = 0; + while ( i < bad_crumbs.size ) + { + if ( bad_crumbs[ i ] == crumb ) + { + return 1; + } + i++; + } + return 0; +} + +jitter_enemies_bad_breadcrumbs( start_crumb ) +{ + trace_distance = 35; + jitter_distance = 2; + index = start_crumb; + while ( isDefined( self.favoriteenemy.zombie_breadcrumbs[ index + 1 ] ) ) + { + current_crumb = self.favoriteenemy.zombie_breadcrumbs[ index ]; + next_crumb = self.favoriteenemy.zombie_breadcrumbs[ index + 1 ]; + angles = vectorToAngle( current_crumb - next_crumb ); + right = anglesToRight( angles ); + left = anglesToRight( angles + vectorScale( ( 0, 0, 0 ), 180 ) ); + dist_pos = current_crumb + vectorScale( right, trace_distance ); + trace = bullettrace( current_crumb, dist_pos, 1, undefined ); + vector = trace[ "position" ]; + while ( distance( vector, current_crumb ) < 17 ) + { + self.favoriteenemy.zombie_breadcrumbs[ index ] = current_crumb + vectorScale( left, jitter_distance ); + } + dist_pos = current_crumb + vectorScale( left, trace_distance ); + trace = bullettrace( current_crumb, dist_pos, 1, undefined ); + vector = trace[ "position" ]; + while ( distance( vector, current_crumb ) < 17 ) + { + self.favoriteenemy.zombie_breadcrumbs[ index ] = current_crumb + vectorScale( right, jitter_distance ); + } + index++; + } +} + +zombie_repath_notifier() +{ + note = 0; + notes = []; + i = 0; + while ( i < 4 ) + { + notes[ notes.size ] = "zombie_repath_notify_" + i; + i++; + } + while ( 1 ) + { + level notify( notes[ note ] ); + note = ( note + 1 ) % 4; + wait 0,05; + } +} + +zombie_follow_enemy() +{ + self endon( "death" ); + self endon( "zombie_acquire_enemy" ); + self endon( "bad_path" ); + level endon( "intermission" ); + if ( !isDefined( level.repathnotifierstarted ) ) + { + level.repathnotifierstarted = 1; + level thread zombie_repath_notifier(); + } + if ( !isDefined( self.zombie_repath_notify ) ) + { + self.zombie_repath_notify = "zombie_repath_notify_" + ( self getentitynumber() % 4 ); + } + while ( 1 ) + { + if ( !isDefined( self._skip_pathing_first_delay ) ) + { + level waittill( self.zombie_repath_notify ); + } + else + { + self._skip_pathing_first_delay = undefined; + } + if ( isDefined( self.ignore_enemyoverride ) && !self.ignore_enemyoverride && isDefined( self.enemyoverride ) && isDefined( self.enemyoverride[ 1 ] ) ) + { + if ( distancesquared( self.origin, self.enemyoverride[ 0 ] ) > 1 ) + { + self orientmode( "face motion" ); + } + else + { + self orientmode( "face point", self.enemyoverride[ 1 ].origin ); + } + self.ignoreall = 1; + goalpos = self.enemyoverride[ 0 ]; + if ( isDefined( level.adjust_enemyoverride_func ) ) + { + goalpos = self [[ level.adjust_enemyoverride_func ]](); + } + self setgoalpos( goalpos ); + } + else + { + if ( isDefined( self.favoriteenemy ) ) + { + self.ignoreall = 0; + self orientmode( "face default" ); + goalpos = self.favoriteenemy.origin; + if ( isDefined( level.enemy_location_override_func ) ) + { + goalpos = [[ level.enemy_location_override_func ]]( self, self.favoriteenemy ); + } + self setgoalpos( goalpos ); + if ( !isDefined( level.ignore_path_delays ) ) + { + distsq = distancesquared( self.origin, self.favoriteenemy.origin ); + if ( distsq > 10240000 ) + { + wait ( 2 + randomfloat( 1 ) ); + break; + } + else if ( distsq > 4840000 ) + { + wait ( 1 + randomfloat( 0,5 ) ); + break; + } + else + { + if ( distsq > 1440000 ) + { + wait ( 0,5 + randomfloat( 0,5 ) ); + } + } + } + } + } + if ( isDefined( level.inaccesible_player_func ) ) + { + self [[ level.inaccessible_player_func ]](); + } + } +} + +zombie_eye_glow() +{ + if ( !isDefined( self ) ) + { + return; + } + if ( !isDefined( self.no_eye_glow ) || !self.no_eye_glow ) + { + self setclientfield( "zombie_has_eyes", 1 ); + } +} + +zombie_eye_glow_stop() +{ + if ( !isDefined( self ) ) + { + return; + } + if ( !isDefined( self.no_eye_glow ) || !self.no_eye_glow ) + { + self setclientfield( "zombie_has_eyes", 0 ); + } +} + +zombie_history( msg ) +{ +/# + if ( !isDefined( self.zombie_history ) || self.zombie_history.size > 32 ) + { + self.zombie_history = []; + } + self.zombie_history[ self.zombie_history.size ] = msg; +#/ +} + +do_zombie_spawn() +{ + self endon( "death" ); + spots = []; + if ( isDefined( self._rise_spot ) ) + { + spot = self._rise_spot; + self thread do_zombie_rise( spot ); + return; + } + while ( isDefined( level.zombie_spawn_locations ) ) + { + i = 0; + while ( i < level.zombie_spawn_locations.size ) + { + spots[ spots.size ] = level.zombie_spawn_locations[ i ]; + i++; + } + } +/# + if ( getDvarInt( #"A8C231AA" ) ) + { + if ( isDefined( level.zombie_spawn_locations ) ) + { + player = get_players()[ 0 ]; + spots = []; + i = 0; + while ( i < level.zombie_spawn_locations.size ) + { + player_vec = vectornormalize( anglesToForward( player.angles ) ); + player_spawn = vectornormalize( level.zombie_spawn_locations[ i ].origin - player.origin ); + dot = vectordot( player_vec, player_spawn ); + if ( dot > 0,707 ) + { + spots[ spots.size ] = level.zombie_spawn_locations[ i ]; + debugstar( level.zombie_spawn_locations[ i ].origin, 1000, ( 0, 0, 0 ) ); + } + i++; + } + if ( spots.size <= 0 ) + { + spots[ spots.size ] = level.zombie_spawn_locations[ 0 ]; + iprintln( "no spawner in view" ); +#/ + } + } + } +/# + assert( spots.size > 0, "No spawn locations found" ); +#/ + spot = random( spots ); + if ( isDefined( spot.target ) ) + { + self.target = spot.target; + } + if ( isDefined( spot.zone_name ) ) + { + self.zone_name = spot.zone_name; + } + if ( isDefined( spot.script_parameters ) ) + { + self.script_parameters = spot.script_parameters; + } + tokens = strtok( spot.script_noteworthy, " " ); + _a3432 = tokens; + _k3432 = getFirstArrayKey( _a3432 ); + while ( isDefined( _k3432 ) ) + { + token = _a3432[ _k3432 ]; + if ( token == "riser_location" ) + { + self thread do_zombie_rise( spot ); + } + else if ( token == "faller_location" ) + { + self thread maps/mp/zombies/_zm_ai_faller::do_zombie_fall( spot ); + } + else if ( token == "dog_location" ) + { + } + else if ( token == "screecher_location" ) + { + } + else if ( token == "leaper_location" ) + { + } + else self.anchor = spawn( "script_origin", self.origin ); + self.anchor.angles = self.angles; + self linkto( self.anchor ); + if ( !isDefined( spot.angles ) ) + { + spot.angles = ( 0, 0, 0 ); + } + self ghost(); + self.anchor moveto( spot.origin, 0,05 ); + self.anchor waittill( "movedone" ); + target_org = get_desired_origin(); + if ( isDefined( target_org ) ) + { + anim_ang = vectorToAngle( target_org - self.origin ); + self.anchor rotateto( ( 0, anim_ang[ 1 ], 0 ), 0,05 ); + self.anchor waittill( "rotatedone" ); + } + if ( isDefined( level.zombie_spawn_fx ) ) + { + playfx( level.zombie_spawn_fx, spot.origin ); + } + self unlink(); + if ( isDefined( self.anchor ) ) + { + self.anchor delete(); + } + self show(); + self notify( "risen" ); + _k3432 = getNextArrayKey( _a3432, _k3432 ); + } +} + +do_zombie_rise( spot ) +{ + self endon( "death" ); + self.in_the_ground = 1; + self.anchor = spawn( "script_origin", self.origin ); + self.anchor.angles = self.angles; + self linkto( self.anchor ); + if ( !isDefined( spot.angles ) ) + { + spot.angles = ( 0, 0, 0 ); + } + anim_org = spot.origin; + anim_ang = spot.angles; + anim_org += ( 0, 0, 0 ); + self ghost(); + self.anchor moveto( anim_org, 0,05 ); + self.anchor waittill( "movedone" ); + target_org = get_desired_origin(); + if ( isDefined( target_org ) ) + { + anim_ang = vectorToAngle( target_org - self.origin ); + self.anchor rotateto( ( 0, anim_ang[ 1 ], 0 ), 0,05 ); + self.anchor waittill( "rotatedone" ); + } + self unlink(); + if ( isDefined( self.anchor ) ) + { + self.anchor delete(); + } + self thread hide_pop(); + level thread zombie_rise_death( self, spot ); + spot thread zombie_rise_fx( self ); + substate = 0; + if ( self.zombie_move_speed == "walk" ) + { + substate = randomint( 2 ); + } + else if ( self.zombie_move_speed == "run" ) + { + substate = 2; + } + else + { + if ( self.zombie_move_speed == "sprint" ) + { + substate = 3; + } + } + self orientmode( "face default" ); + self animscripted( self.origin, spot.angles, "zm_rise", substate ); + self maps/mp/animscripts/zm_shared::donotetracks( "rise_anim", ::handle_rise_notetracks, spot ); + self notify( "rise_anim_finished" ); + spot notify( "stop_zombie_rise_fx" ); + self.in_the_ground = 0; + self notify( "risen" ); +} + +hide_pop() +{ + self endon( "death" ); + wait 0,5; + if ( isDefined( self ) ) + { + self show(); + wait_network_frame(); + if ( isDefined( self ) ) + { + self.create_eyes = 1; + } + } +} + +handle_rise_notetracks( note, spot ) +{ + if ( note == "deathout" || note == "deathhigh" ) + { + self.zombie_rise_death_out = 1; + self notify( "zombie_rise_death_out" ); + wait 2; + spot notify( "stop_zombie_rise_fx" ); + } +} + +zombie_rise_death( zombie, spot ) +{ + zombie.zombie_rise_death_out = 0; + zombie endon( "rise_anim_finished" ); + while ( isDefined( zombie ) && isDefined( zombie.health ) && zombie.health > 1 ) + { + zombie waittill( "damage", amount ); + } + spot notify( "stop_zombie_rise_fx" ); + if ( isDefined( zombie ) ) + { + zombie.deathanim = zombie get_rise_death_anim(); + zombie stopanimscripted(); + } +} + +zombie_rise_fx( zombie ) +{ + if ( isDefined( level.riser_fx_on_client ) && !level.riser_fx_on_client ) + { + self thread zombie_rise_dust_fx( zombie ); + self thread zombie_rise_burst_fx( zombie ); + } + else + { + self thread zombie_rise_burst_fx( zombie ); + } + zombie endon( "death" ); + self endon( "stop_zombie_rise_fx" ); + wait 1; + if ( zombie.zombie_move_speed != "sprint" ) + { + wait 1; + } +} + +zombie_rise_burst_fx( zombie ) +{ + self endon( "stop_zombie_rise_fx" ); + self endon( "rise_anim_finished" ); + if ( isDefined( self.script_string ) && self.script_string == "in_water" && isDefined( level._no_water_risers ) && !level._no_water_risers ) + { + zombie setclientfield( "zombie_riser_fx_water", 1 ); + } + else + { + if ( isDefined( self.script_string ) && self.script_string == "in_snow" ) + { + zombie setclientfield( "zombie_riser_fx", 1 ); + return; + } + else + { + if ( isDefined( zombie.zone_name ) && isDefined( level.zones[ zombie.zone_name ] ) ) + { + low_g_zones = getentarray( zombie.zone_name, "targetname" ); + if ( isDefined( low_g_zones[ 0 ].script_string ) && low_g_zones[ 0 ].script_string == "lowgravity" ) + { + zombie setclientfield( "zombie_riser_fx_lowg", 1 ); + } + else + { + zombie setclientfield( "zombie_riser_fx", 1 ); + } + return; + } + else + { + zombie setclientfield( "zombie_riser_fx", 1 ); + } + } + } +} + +zombie_rise_dust_fx( zombie ) +{ + dust_tag = "J_SpineUpper"; + self endon( "stop_zombie_rise_dust_fx" ); + self thread stop_zombie_rise_dust_fx( zombie ); + wait 2; + dust_time = 5,5; + dust_interval = 0,3; + if ( isDefined( self.script_string ) && self.script_string == "in_water" ) + { + t = 0; + while ( t < dust_time ) + { + playfxontag( level._effect[ "rise_dust_water" ], zombie, dust_tag ); + wait dust_interval; + t += dust_interval; + } + } + else if ( isDefined( self.script_string ) && self.script_string == "in_snow" ) + { + t = 0; + while ( t < dust_time ) + { + playfxontag( level._effect[ "rise_dust_snow" ], zombie, dust_tag ); + wait dust_interval; + t += dust_interval; + } + } + else t = 0; + while ( t < dust_time ) + { + playfxontag( level._effect[ "rise_dust" ], zombie, dust_tag ); + wait dust_interval; + t += dust_interval; + } +} + +stop_zombie_rise_dust_fx( zombie ) +{ + zombie waittill( "death" ); + self notify( "stop_zombie_rise_dust_fx" ); +} + +get_rise_death_anim() +{ + if ( self.zombie_rise_death_out ) + { + return "zm_rise_death_out"; + } + self.noragdoll = 1; + self.nodeathragdoll = 1; + return "zm_rise_death_in"; +} + +zombie_tesla_head_gib() +{ + self endon( "death" ); + if ( self.animname == "quad_zombie" ) + { + return; + } + if ( randomint( 100 ) < level.zombie_vars[ "tesla_head_gib_chance" ] ) + { + wait randomfloatrange( 0,53, 1 ); + self zombie_head_gib(); + } + else + { + network_safe_play_fx_on_tag( "tesla_death_fx", 2, level._effect[ "tesla_shock_eyes" ], self, "J_Eyeball_LE" ); + } +} + +play_ambient_zombie_vocals() +{ + self endon( "death" ); + if ( self.animname == "monkey_zombie" || isDefined( self.is_avogadro ) && self.is_avogadro ) + { + return; + } + while ( 1 ) + { + type = "ambient"; + float = 2; + while ( !isDefined( self.zombie_move_speed ) ) + { + wait 0,5; + } + switch( self.zombie_move_speed ) + { + case "walk": + type = "ambient"; + float = 4; + break; + case "run": + type = "sprint"; + float = 4; + break; + case "sprint": + type = "sprint"; + float = 4; + break; + } + if ( self.animname == "zombie" && !self.has_legs ) + { + type = "crawler"; + } + else + { + if ( self.animname == "thief_zombie" || self.animname == "leaper_zombie" ) + { + float = 1,2; + } + } + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( type, self.animname ); + wait randomfloatrange( 1, float ); + } +} + +zombie_complete_emerging_into_playable_area() +{ + self.completed_emerging_into_playable_area = 1; + self notify( "completed_emerging_into_playable_area" ); + self.no_powerups = 0; + self thread zombie_free_cam_allowed(); +} + +zombie_free_cam_allowed() +{ + self endon( "death" ); + wait 1,5; + self setfreecameralockonallowed( 1 ); +} + +check_for_pers_headshot( time_of_death, zombie ) +{ + if ( self.pers[ "last_headshot_kill_time" ] == time_of_death ) + { + self.pers[ "zombies_multikilled" ]++; + } + else + { + self.pers[ "zombies_multikilled" ] = 1; + } + self.pers[ "last_headshot_kill_time" ] = time_of_death; + if ( self.pers[ "zombies_multikilled" ] == 2 ) + { + if ( isDefined( zombie ) ) + { + self.upgrade_fx_origin = zombie.origin; + } + self maps/mp/zombies/_zm_stats::increment_client_stat( "pers_multikill_headshots", 0 ); + self.non_headshot_kill_counter = 0; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_stats.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_stats.gsc new file mode 100644 index 0000000..e77ef4a --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_stats.gsc @@ -0,0 +1,768 @@ +#include maps/mp/gametypes_zm/_globallogic; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/gametypes_zm/_globallogic_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level.player_stats_init = ::player_stats_init; + level.add_client_stat = ::add_client_stat; + level.increment_client_stat = ::increment_client_stat; + level.track_gibs = ::do_stats_for_gibs; +} + +player_stats_init() +{ + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "kills", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "suicides", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "downs", 0 ); + self.downs = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "downs" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "revives", 0 ); + self.revives = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "revives" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "perks_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "headshots", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "gibs", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "head_gibs", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "right_arm_gibs", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "left_arm_gibs", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "right_leg_gibs", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "left_leg_gibs", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "melee_kills", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "grenade_kills", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "doors_purchased", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "distance_traveled", 0 ); + self.distance_traveled = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "distance_traveled" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "total_shots", 0 ); + self.total_shots = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "total_shots" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "hits", 0 ); + self.hits = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "hits" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "deaths", 0 ); + self.deaths = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "deaths" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "boards", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "wins", 0 ); + self.totalwins = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "totalwins" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "losses", 0 ); + self.totallosses = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( "totallosses" ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "failed_revives", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "sacrifices", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "failed_sacrifices", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "drops", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "nuke_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "insta_kill_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "full_ammo_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "double_points_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "meat_stink_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "carpenter_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "fire_sale_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "use_magicbox", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "grabbed_from_magicbox", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "use_pap", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pap_weapon_grabbed", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pap_weapon_not_grabbed", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_armorvest_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_quickrevive_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_rof_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_fastreload_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_flakjacket_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_additionalprimaryweapon_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_longersprint_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_deadshot_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_scavenger_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_finalstand_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_grenadepulldeath_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "specialty_nomotionsensor" + "_drank", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "claymores_planted", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "claymores_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "ballistic_knives_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "wallbuy_weapons_purchased", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "ammo_purchased", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "upgraded_ammo_purchased", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "power_turnedon", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "power_turnedoff", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "planted_buildables_pickedup", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "buildables_built", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "time_played_total", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "weighted_rounds_played", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "contaminations_received", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "contaminations_given", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zdogs_killed", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zdog_rounds_finished", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zdog_rounds_lost", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "killed_by_zdog", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "screecher_minigames_won", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "screecher_minigames_lost", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "screechers_killed", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "screecher_teleporters_used", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "avogadro_defeated", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "killed_by_avogadro", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "cheat_too_many_weapons", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "cheat_out_of_playable", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "cheat_too_friendly", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "cheat_total", 0 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_boarding", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_revivenoperk", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_multikill_headshots", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_cash_back_bought", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_cash_back_prone", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_insta_kill", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_insta_kill_stabs", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_jugg", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_jugg_downgrade_count", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_carpenter", 0, 1 ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "pers_carpenter_downgrade_count", 0, 1 ); + self.successful_revives = 0; + self.failed_revives = 0; + self.failed_cash_back_prones = 0; + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "score", 0 ); + if ( level.resetplayerscoreeveryround ) + { + self.pers[ "score" ] = 0; + } + self.pers[ "score" ] = level.player_starting_points; + self.score = self.pers[ "score" ]; + self incrementplayerstat( "score", self.score ); + self maps/mp/gametypes_zm/_globallogic_score::initpersstat( "zteam", 0 ); + if ( isDefined( level.level_specific_stats_init ) ) + { + [[ level.level_specific_stats_init ]](); + } + if ( !isDefined( self.stats_this_frame ) ) + { + self.pers_upgrade_force_test = 1; + self.stats_this_frame = []; + self.pers_upgrades_awarded = []; + } + self.pers[ "last_headshot_kill_time" ] = getTime(); + self.pers[ "zombies_multikilled" ] = 0; + self.non_headshot_kill_counter = 0; +} + +update_players_stats_at_match_end( players ) +{ + game_mode = getDvar( "ui_gametype" ); + game_mode_group = level.scr_zm_ui_gametype_group; + map_location_name = level.scr_zm_map_start_location; + if ( map_location_name == "" ) + { + map_location_name = "default"; + } + if ( isDefined( level.gamemodulewinningteam ) ) + { + if ( level.gamemodulewinningteam == "B" ) + { + matchrecorderincrementheaderstat( "winningTeam", 1 ); + } + else + { + if ( level.gamemodulewinningteam == "A" ) + { + matchrecorderincrementheaderstat( "winningTeam", 2 ); + } + } + } + recordmatchsummaryzombieendgamedata( game_mode, game_mode_group, map_location_name, level.round_number ); + newtime = getTime(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( player is_bot() ) + { + i++; + continue; + } + else + { + distance = player get_stat_distance_traveled(); + player addplayerstatwithgametype( "distance_traveled", distance ); + player add_location_gametype_stat( level.scr_zm_map_start_location, level.scr_zm_ui_gametype, "time_played_total", player.pers[ "time_played_total" ] ); + recordplayermatchend( player ); + recordplayerstats( player, "presentAtEnd", 1 ); + player maps/mp/zombies/_zm_weapons::updateweapontimingszm( newtime ); + if ( isDefined( level._game_module_stat_update_func ) ) + { + player [[ level._game_module_stat_update_func ]](); + } + old_high_score = player get_game_mode_stat( game_mode, "score" ); + if ( player.score_total > old_high_score ) + { + player set_game_mode_stat( game_mode, "score", player.score_total ); + } + if ( gamemodeismode( level.gamemode_public_match ) ) + { + player gamehistoryfinishmatch( 4, 0, 0, 0, 0, 0 ); + if ( isDefined( player.pers[ "matchesPlayedStatsTracked" ] ) ) + { + gamemode = maps/mp/gametypes_zm/_globallogic::getcurrentgamemode(); + player maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "played", "completed" ); + if ( isDefined( player.pers[ "matchesHostedStatsTracked" ] ) ) + { + player maps/mp/gametypes_zm/_globallogic::incrementmatchcompletionstat( gamemode, "hosted", "completed" ); + } + } + } + if ( !isDefined( player.pers[ "previous_distance_traveled" ] ) ) + { + player.pers[ "previous_distance_traveled" ] = 0; + } + distancethisround = int( player.pers[ "distance_traveled" ] - player.pers[ "previous_distance_traveled" ] ); + player.pers[ "previous_distance_traveled" ] = player.pers[ "distance_traveled" ]; + player incrementplayerstat( "distance_traveled", distancethisround ); + } + i++; + } +} + +update_playing_utc_time( matchendutctime ) +{ + current_days = int( matchendutctime / 86400 ); + last_days = self get_global_stat( "TIMESTAMPLASTDAY1" ); + last_days = int( last_days / 86400 ); + diff_days = current_days - last_days; + timestamp_name = ""; + if ( diff_days > 0 ) + { + i = 5; + while ( i > diff_days ) + { + timestamp_name = "TIMESTAMPLASTDAY" + ( i - diff_days ); + timestamp_name_to = "TIMESTAMPLASTDAY" + i; + timestamp_value = self get_global_stat( timestamp_name ); + self set_global_stat( timestamp_name_to, timestamp_value ); + i--; + + } + i = 2; + while ( i <= diff_days && i < 6 ) + { + timestamp_name = "TIMESTAMPLASTDAY" + i; + self set_global_stat( timestamp_name, 0 ); + i++; + } + self set_global_stat( "TIMESTAMPLASTDAY1", matchendutctime ); + } +} + +survival_classic_custom_stat_update() +{ +} + +grief_custom_stat_update() +{ +} + +add_game_mode_group_stat( game_mode, stat_name, value ) +{ + self adddstat( "PlayerStatsByGameTypeGroup", game_mode, stat_name, "statValue", value ); +} + +set_game_mode_group_stat( game_mode, stat_name, value ) +{ + self setdstat( "PlayerStatsByGameTypeGroup", game_mode, stat_name, "statValue", value ); +} + +get_game_mode_group_stat( game_mode, stat_name ) +{ + return self getdstat( "PlayerStatsByGameTypeGroup", game_mode, stat_name, "statValue" ); +} + +add_game_mode_stat( game_mode, stat_name, value ) +{ + self adddstat( "PlayerStatsByGameType", game_mode, stat_name, "statValue", value ); +} + +set_game_mode_stat( game_mode, stat_name, value ) +{ + self setdstat( "PlayerStatsByGameType", game_mode, stat_name, "statValue", value ); +} + +get_game_mode_stat( game_mode, stat_name ) +{ + return self getdstat( "PlayerStatsByGameType", game_mode, stat_name, "statValue" ); +} + +get_global_stat( stat_name ) +{ + return self getdstat( "PlayerStatsList", stat_name, "StatValue" ); +} + +set_global_stat( stat_name, value ) +{ + self setdstat( "PlayerStatsList", stat_name, "StatValue", value ); +} + +add_global_stat( stat_name, value ) +{ + self adddstat( "PlayerStatsList", stat_name, "StatValue", value ); +} + +get_map_stat( stat_name ) +{ + return self getdstat( "PlayerStatsByMap", level.script, stat_name ); +} + +set_map_stat( stat_name, value ) +{ + self setdstat( "PlayerStatsByMap", level.script, stat_name, value ); +} + +add_map_stat( stat_name, value ) +{ + self adddstat( "PlayerStatsByMap", level.script, stat_name, value ); +} + +get_location_gametype_stat( start_location, game_type, stat_name ) +{ + return self getdstat( "PlayerStatsByStartLocation", start_location, "startLocationGameTypeStats", game_type, "stats", stat_name, "StatValue" ); +} + +set_location_gametype_stat( start_location, game_type, stat_name, value ) +{ + self setdstat( "PlayerStatsByStartLocation", start_location, "startLocationGameTypeStats", game_type, "stats", stat_name, "StatValue", value ); +} + +add_location_gametype_stat( start_location, game_type, stat_name, value ) +{ + self adddstat( "PlayerStatsByStartLocation", start_location, "startLocationGameTypeStats", game_type, "stats", stat_name, "StatValue", value ); +} + +get_map_weaponlocker_stat( stat_name ) +{ + return self getdstat( "PlayerStatsByMap", level.script, "weaponLocker", stat_name ); +} + +set_map_weaponlocker_stat( stat_name, value ) +{ + if ( isDefined( value ) ) + { + self setdstat( "PlayerStatsByMap", level.script, "weaponLocker", stat_name, value ); + } + else + { + self setdstat( "PlayerStatsByMap", level.script, "weaponLocker", stat_name, 0 ); + } +} + +add_map_weaponlocker_stat( stat_name, value ) +{ + self adddstat( "PlayerStatsByMap", level.script, "weaponLocker", stat_name, value ); +} + +has_stored_weapondata() +{ + storedweapon = self get_map_weaponlocker_stat( "name" ); + if ( isDefined( storedweapon ) && isstring( storedweapon ) || storedweapon == "" && isint( storedweapon ) && storedweapon == 0 ) + { + return 0; + } + return 1; +} + +get_stored_weapondata() +{ + if ( self has_stored_weapondata() ) + { + weapondata = []; + weapondata[ "name" ] = self get_map_weaponlocker_stat( "name" ); + weapondata[ "lh_clip" ] = self get_map_weaponlocker_stat( "lh_clip" ); + weapondata[ "clip" ] = self get_map_weaponlocker_stat( "clip" ); + weapondata[ "stock" ] = self get_map_weaponlocker_stat( "stock" ); + weapondata[ "alt_clip" ] = self get_map_weaponlocker_stat( "alt_clip" ); + weapondata[ "alt_stock" ] = self get_map_weaponlocker_stat( "alt_stock" ); + return weapondata; + } + return undefined; +} + +clear_stored_weapondata() +{ + self set_map_weaponlocker_stat( "name", "" ); + self set_map_weaponlocker_stat( "lh_clip", 0 ); + self set_map_weaponlocker_stat( "clip", 0 ); + self set_map_weaponlocker_stat( "stock", 0 ); + self set_map_weaponlocker_stat( "alt_clip", 0 ); + self set_map_weaponlocker_stat( "alt_stock", 0 ); +} + +set_stored_weapondata( weapondata ) +{ + self set_map_weaponlocker_stat( "name", weapondata[ "name" ] ); + self set_map_weaponlocker_stat( "lh_clip", weapondata[ "lh_clip" ] ); + self set_map_weaponlocker_stat( "clip", weapondata[ "clip" ] ); + self set_map_weaponlocker_stat( "stock", weapondata[ "stock" ] ); + self set_map_weaponlocker_stat( "alt_clip", weapondata[ "alt_clip" ] ); + self set_map_weaponlocker_stat( "alt_stock", weapondata[ "alt_stock" ] ); +} + +add_client_stat( stat_name, stat_value, include_gametype ) +{ + if ( getDvar( "ui_zm_mapstartlocation" ) == "" ) + { + return; + } + if ( !isDefined( include_gametype ) ) + { + include_gametype = 1; + } + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( stat_name, stat_value, 0, include_gametype ); + self.stats_this_frame[ stat_name ] = 1; +} + +increment_player_stat( stat_name ) +{ + if ( getDvar( "ui_zm_mapstartlocation" ) == "" ) + { + return; + } + self incrementplayerstat( stat_name, 1 ); +} + +increment_root_stat( stat_name, stat_value ) +{ + self adddstat( stat_name, stat_value ); +} + +increment_client_stat( stat_name, include_gametype ) +{ + add_client_stat( stat_name, 1, include_gametype ); +} + +zero_client_stat( stat_name, include_gametype ) +{ + current_stat_count = self maps/mp/gametypes_zm/_globallogic_score::getpersstat( stat_name ); + self maps/mp/gametypes_zm/_globallogic_score::incpersstat( stat_name, current_stat_count * -1, 0, include_gametype ); + self.stats_this_frame[ stat_name ] = 1; +} + +increment_map_cheat_stat( stat_name ) +{ + self adddstat( "PlayerStatsByMap", level.script, "cheats", stat_name, 1 ); +} + +get_stat_distance_traveled() +{ + miles = int( self.pers[ "distance_traveled" ] / 63360 ); + remainder = ( self.pers[ "distance_traveled" ] / 63360 ) - miles; + if ( miles < 1 && remainder < 0,5 ) + { + miles = 1; + } + else + { + if ( remainder >= 0,5 ) + { + miles++; + } + } + return miles; +} + +get_stat_round_number() +{ + return level.round_number; +} + +get_stat_combined_rank_value_survival_classic() +{ + rounds = get_stat_round_number(); + kills = self.pers[ "kills" ]; + if ( rounds > 99 ) + { + rounds = 99; + } + result = ( rounds * 10000000 ) + kills; + return result; +} + +get_stat_combined_rank_value_grief() +{ + wins = self.pers[ "wins" ]; + losses = self.pers[ "losses" ]; + if ( wins > 9999 ) + { + wins = 9999; + } + if ( losses > 9999 ) + { + losses = 9999; + } + losses_value = 9999 - losses; + result = ( wins * 10000 ) + losses_value; + return result; +} + +update_global_counters_on_match_end() +{ + deaths = 0; + kills = 0; + melee_kills = 0; + headshots = 0; + suicides = 0; + downs = 0; + revives = 0; + perks_drank = 0; + gibs = 0; + doors_purchased = 0; + distance_traveled = 0; + total_shots = 0; + boards = 0; + sacrifices = 0; + drops = 0; + nuke_pickedup = 0; + insta_kill_pickedup = 0; + full_ammo_pickedup = 0; + double_points_pickedup = 0; + meat_stink_pickedup = 0; + carpenter_pickedup = 0; + fire_sale_pickedup = 0; + use_magicbox = 0; + grabbed_from_magicbox = 0; + use_pap = 0; + pap_weapon_grabbed = 0; + specialty_armorvest_drank = 0; + specialty_quickrevive_drank = 0; + specialty_fastreload_drank = 0; + specialty_longersprint_drank = 0; + specialty_scavenger_drank = 0; + specialty_rof_drank = 0; + specialty_deadshot_drank = 0; + specialty_flakjacket_drank = 0; + specialty_additionalprimaryweapon_drank = 0; + specialty_finalstand_drank = 0; + specialty_grenadepulldeath_drank = 0; + perk_vulture_drank = 0; + claymores_planted = 0; + claymores_pickedup = 0; + ballistic_knives_pickedup = 0; + wallbuy_weapons_purchased = 0; + power_turnedon = 0; + power_turnedoff = 0; + planted_buildables_pickedup = 0; + ammo_purchased = 0; + upgraded_ammo_purchased = 0; + buildables_built = 0; + time_played = 0; + contaminations_received = 0; + contaminations_given = 0; + cheat_too_many_weapons = 0; + cheat_out_of_playable_area = 0; + cheat_too_friendly = 0; + cheat_total = 0; + players = get_players(); + _a631 = players; + _k631 = getFirstArrayKey( _a631 ); + while ( isDefined( _k631 ) ) + { + player = _a631[ _k631 ]; + deaths += player.pers[ "deaths" ]; + kills += player.pers[ "kills" ]; + headshots += player.pers[ "headshots" ]; + suicides += player.pers[ "suicides" ]; + melee_kills += player.pers[ "melee_kills" ]; + downs += player.pers[ "downs" ]; + revives += player.pers[ "revives" ]; + perks_drank += player.pers[ "perks_drank" ]; + specialty_armorvest_drank += player.pers[ "specialty_armorvest_drank" ]; + specialty_quickrevive_drank += player.pers[ "specialty_quickrevive_drank" ]; + specialty_fastreload_drank += player.pers[ "specialty_fastreload_drank" ]; + specialty_longersprint_drank += player.pers[ "specialty_longersprint_drank" ]; + specialty_rof_drank += player.pers[ "specialty_rof_drank" ]; + specialty_deadshot_drank += player.pers[ "specialty_deadshot_drank" ]; + specialty_scavenger_drank += player.pers[ "specialty_scavenger_drank" ]; + specialty_flakjacket_drank += player.pers[ "specialty_flakjacket_drank" ]; + specialty_additionalprimaryweapon_drank += player.pers[ "specialty_additionalprimaryweapon_drank" ]; + specialty_finalstand_drank += player.pers[ "specialty_finalstand_drank" ]; + specialty_grenadepulldeath_drank += player.pers[ "specialty_grenadepulldeath_drank" ]; + perk_vulture_drank += player.pers[ "specialty_nomotionsensor" + "_drank" ]; + gibs += player.pers[ "gibs" ]; + doors_purchased += player.pers[ "doors_purchased" ]; + distance_traveled += player get_stat_distance_traveled(); + boards += player.pers[ "boards" ]; + sacrifices += player.pers[ "sacrifices" ]; + drops += player.pers[ "drops" ]; + nuke_pickedup += player.pers[ "nuke_pickedup" ]; + insta_kill_pickedup += player.pers[ "insta_kill_pickedup" ]; + full_ammo_pickedup += player.pers[ "full_ammo_pickedup" ]; + double_points_pickedup += player.pers[ "double_points_pickedup" ]; + meat_stink_pickedup += player.pers[ "meat_stink_pickedup" ]; + carpenter_pickedup += player.pers[ "carpenter_pickedup" ]; + fire_sale_pickedup += player.pers[ "fire_sale_pickedup" ]; + use_magicbox += player.pers[ "use_magicbox" ]; + grabbed_from_magicbox += player.pers[ "grabbed_from_magicbox" ]; + use_pap += player.pers[ "use_pap" ]; + pap_weapon_grabbed += player.pers[ "pap_weapon_grabbed" ]; + claymores_planted += player.pers[ "claymores_planted" ]; + claymores_pickedup += player.pers[ "claymores_pickedup" ]; + ballistic_knives_pickedup += player.pers[ "ballistic_knives_pickedup" ]; + wallbuy_weapons_purchased += player.pers[ "wallbuy_weapons_purchased" ]; + power_turnedon += player.pers[ "power_turnedon" ]; + power_turnedoff += player.pers[ "power_turnedoff" ]; + planted_buildables_pickedup += player.pers[ "planted_buildables_pickedup" ]; + buildables_built += player.pers[ "buildables_built" ]; + ammo_purchased += player.pers[ "ammo_purchased" ]; + upgraded_ammo_purchased += player.pers[ "upgraded_ammo_purchased" ]; + total_shots += player.total_shots; + time_played += player.pers[ "time_played_total" ]; + contaminations_received += player.pers[ "contaminations_received" ]; + contaminations_given += player.pers[ "contaminations_given" ]; + cheat_too_many_weapons += player.pers[ "cheat_too_many_weapons" ]; + cheat_out_of_playable_area += player.pers[ "cheat_out_of_playable" ]; + cheat_too_friendly += player.pers[ "cheat_too_friendly" ]; + cheat_total += player.pers[ "cheat_total" ]; + _k631 = getNextArrayKey( _a631, _k631 ); + } + game_mode = getDvar( "ui_gametype" ); + incrementcounter( "global_zm_" + game_mode, 1 ); + incrementcounter( "global_zm_games", 1 ); + if ( game_mode == "zclassic" || level.script == "zm_nuked" ) + { + incrementcounter( "global_zm_games_" + level.script, 1 ); + } + incrementcounter( "global_zm_killed", level.global_zombies_killed ); + incrementcounter( "global_zm_killed_by_players", kills ); + incrementcounter( "global_zm_killed_by_traps", level.zombie_trap_killed_count ); + spacer = ""; + if ( level.round_number < 10 ) + { + spacer = "0"; + } + incrementcounter( "global_zm_players_reached_round_" + spacer + level.round_number, players.size ); + incrementcounter( "global_zm_headshots", headshots ); + incrementcounter( "global_zm_suicides", suicides ); + incrementcounter( "global_zm_melee_kills", melee_kills ); + incrementcounter( "global_zm_downs", downs ); + incrementcounter( "global_zm_deaths", deaths ); + incrementcounter( "global_zm_revives", revives ); + incrementcounter( "global_zm_perks_drank", perks_drank ); + incrementcounter( "global_zm_specialty_armorvest_drank", specialty_armorvest_drank ); + incrementcounter( "global_zm_specialty_quickrevive_drank", specialty_quickrevive_drank ); + incrementcounter( "global_zm_specialty_fastreload_drank", specialty_fastreload_drank ); + incrementcounter( "global_zm_specialty_longersprint_drank", specialty_longersprint_drank ); + incrementcounter( "global_zm_specialty_rof_drank", specialty_rof_drank ); + incrementcounter( "global_zm_specialty_deadshot_drank", specialty_deadshot_drank ); + incrementcounter( "global_zm_specialty_scavenger_drank", specialty_scavenger_drank ); + incrementcounter( "global_zm_specialty_flakjacket_drank", specialty_flakjacket_drank ); + incrementcounter( "global_zm_specialty_additionalprimaryweapon_drank", specialty_additionalprimaryweapon_drank ); + incrementcounter( "global_zm_specialty_finalstand_drank", specialty_finalstand_drank ); + incrementcounter( "global_zm_specialty_grenadepulldeath_drank", specialty_grenadepulldeath_drank ); + incrementcounter( "global_zm_" + "specialty_nomotionsensor", perk_vulture_drank ); + incrementcounter( "global_zm_gibs", gibs ); + incrementcounter( "global_zm_distance_traveled", int( distance_traveled ) ); + incrementcounter( "global_zm_doors_purchased", doors_purchased ); + incrementcounter( "global_zm_boards", boards ); + incrementcounter( "global_zm_sacrifices", sacrifices ); + incrementcounter( "global_zm_drops", drops ); + incrementcounter( "global_zm_total_nuke_pickedup", nuke_pickedup ); + incrementcounter( "global_zm_total_insta_kill_pickedup", insta_kill_pickedup ); + incrementcounter( "global_zm_total_full_ammo_pickedup", full_ammo_pickedup ); + incrementcounter( "global_zm_total_double_points_pickedup", double_points_pickedup ); + incrementcounter( "global_zm_total_meat_stink_pickedup", double_points_pickedup ); + incrementcounter( "global_zm_total_carpenter_pickedup", carpenter_pickedup ); + incrementcounter( "global_zm_total_fire_sale_pickedup", fire_sale_pickedup ); + incrementcounter( "global_zm_use_magicbox", use_magicbox ); + incrementcounter( "global_zm_grabbed_from_magicbox", grabbed_from_magicbox ); + incrementcounter( "global_zm_use_pap", use_pap ); + incrementcounter( "global_zm_pap_weapon_grabbed", pap_weapon_grabbed ); + incrementcounter( "global_zm_claymores_planted", claymores_planted ); + incrementcounter( "global_zm_claymores_pickedup", claymores_pickedup ); + incrementcounter( "global_zm_ballistic_knives_pickedup", ballistic_knives_pickedup ); + incrementcounter( "global_zm_wallbuy_weapons_purchased", wallbuy_weapons_purchased ); + incrementcounter( "global_zm_power_turnedon", power_turnedon ); + incrementcounter( "global_zm_power_turnedoff", power_turnedoff ); + incrementcounter( "global_zm_planted_buildables_pickedup", planted_buildables_pickedup ); + incrementcounter( "global_zm_buildables_built", buildables_built ); + incrementcounter( "global_zm_ammo_purchased", ammo_purchased ); + incrementcounter( "global_zm_upgraded_ammo_purchased", upgraded_ammo_purchased ); + incrementcounter( "global_zm_total_shots", total_shots ); + incrementcounter( "global_zm_time_played", time_played ); + incrementcounter( "global_zm_contaminations_received", contaminations_received ); + incrementcounter( "global_zm_contaminations_given", contaminations_given ); + incrementcounter( "global_zm_cheat_players_too_friendly", cheat_too_friendly ); + incrementcounter( "global_zm_cheats_cheat_too_many_weapons", cheat_too_many_weapons ); + incrementcounter( "global_zm_cheats_out_of_playable", cheat_out_of_playable_area ); + incrementcounter( "global_zm_total_cheats", cheat_total ); +} + +get_specific_stat( stat_category, stat_name ) +{ + return self getdstat( stat_category, stat_name, "StatValue" ); +} + +do_stats_for_gibs( zombie, limb_tags_array ) +{ + while ( isDefined( zombie ) && isDefined( zombie.attacker ) && isplayer( zombie.attacker ) ) + { + _a780 = limb_tags_array; + _k780 = getFirstArrayKey( _a780 ); + while ( isDefined( _k780 ) ) + { + limb = _a780[ _k780 ]; + stat_name = undefined; + if ( limb == level._zombie_gib_piece_index_right_arm ) + { + stat_name = "right_arm_gibs"; + } + else if ( limb == level._zombie_gib_piece_index_left_arm ) + { + stat_name = "left_arm_gibs"; + } + else if ( limb == level._zombie_gib_piece_index_right_leg ) + { + stat_name = "right_leg_gibs"; + } + else if ( limb == level._zombie_gib_piece_index_left_leg ) + { + stat_name = "left_leg_gibs"; + } + else + { + if ( limb == level._zombie_gib_piece_index_head ) + { + stat_name = "head_gibs"; + } + } + if ( !isDefined( stat_name ) ) + { + } + else + { + zombie.attacker increment_client_stat( stat_name, 0 ); + zombie.attacker increment_client_stat( "gibs" ); + } + _k780 = getNextArrayKey( _a780, _k780 ); + } + } +} + +initializematchstats() +{ + if ( !level.onlinegame || !gamemodeismode( level.gamemode_public_match ) ) + { + return; + } + self.pers[ "lastHighestScore" ] = self getdstat( "HighestStats", "highest_score" ); + currgametype = level.gametype; + self gamehistorystartmatch( getgametypeenumfromname( currgametype, 0 ) ); +} + +adjustrecentstats() +{ +/# + if ( getDvarInt( "scr_writeConfigStrings" ) == 1 || getDvarInt( "scr_hostmigrationtest" ) == 1 ) + { + return; +#/ + } + initializematchstats(); +} + +uploadstatssoon() +{ + self notify( "upload_stats_soon" ); + self endon( "upload_stats_soon" ); + self endon( "disconnect" ); + wait 1; + uploadstats( self ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_timer.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_timer.gsc new file mode 100644 index 0000000..81956ab --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_timer.gsc @@ -0,0 +1,79 @@ +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + precacheshader( "zombie_stopwatchneedle" ); + precacheshader( "zombie_stopwatch" ); + precacheshader( "zombie_stopwatch_glass" ); + if ( !isDefined( level.stopwatch_length_width ) ) + { + level.stopwatch_length_width = 96; + } +} + +start_timer( time, stop_notify ) +{ + self notify( "stop_prev_timer" ); + self endon( "stop_prev_timer" ); + if ( !isDefined( self.stopwatch_elem ) ) + { + self.stopwatch_elem = newclienthudelem( self ); + self.stopwatch_elem.horzalign = "left"; + self.stopwatch_elem.vertalign = "top"; + self.stopwatch_elem.alignx = "left"; + self.stopwatch_elem.aligny = "top"; + self.stopwatch_elem.x = 10; + self.stopwatch_elem.alpha = 0; + self.stopwatch_elem.sort = 2; + self.stopwatch_elem_glass = newclienthudelem( self ); + self.stopwatch_elem_glass.horzalign = "left"; + self.stopwatch_elem_glass.vertalign = "top"; + self.stopwatch_elem_glass.alignx = "left"; + self.stopwatch_elem_glass.aligny = "top"; + self.stopwatch_elem_glass.x = 10; + self.stopwatch_elem_glass.alpha = 0; + self.stopwatch_elem_glass.sort = 3; + self.stopwatch_elem_glass setshader( "zombie_stopwatch_glass", level.stopwatch_length_width, level.stopwatch_length_width ); + } + self thread update_hud_position(); + if ( isDefined( stop_notify ) ) + { + self thread wait_for_stop_notify( stop_notify ); + } + if ( time > 60 ) + { + time = 0; + } + self.stopwatch_elem setclock( time, 60, "zombie_stopwatch", level.stopwatch_length_width, level.stopwatch_length_width ); + self.stopwatch_elem.alpha = 1; + self.stopwatch_elem_glass.alpha = 1; + wait time; + self notify( "countdown_finished" ); + wait 1; + self.stopwatch_elem.alpha = 0; + self.stopwatch_elem_glass.alpha = 0; +} + +wait_for_stop_notify( stop_notify ) +{ + self endon( "stop_prev_timer" ); + self endon( "countdown_finished" ); + self waittill( stop_notify ); + self.stopwatch_elem.alpha = 0; + self.stopwatch_elem_glass.alpha = 0; +} + +update_hud_position() +{ + self endon( "disconnect" ); + self endon( "stop_prev_timer" ); + self endon( "countdown_finished" ); + while ( 1 ) + { + self.stopwatch_elem.y = 20; + self.stopwatch_elem_glass.y = 20; + wait 0,05; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_tombstone.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_tombstone.gsc new file mode 100644 index 0000000..af0ac9c --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_tombstone.gsc @@ -0,0 +1,479 @@ +#include maps/mp/zombies/_zm_perks; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_weap_cymbal_monkey; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + onplayerconnect_callback( ::tombstone_player_init ); + level.tombstone_laststand_func = ::tombstone_laststand; + level.tombstone_spawn_func = ::tombstone_spawn; + level thread tombstone_hostmigration(); +} + +tombstone_player_init() +{ + while ( !isDefined( self.tombstone_index ) ) + { + wait 0,1; + } + level.tombstones[ self.tombstone_index ] = spawnstruct(); +} + +tombstone_spawn() +{ + dc = spawn( "script_model", self.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + dc.angles = self.angles; + dc setmodel( "tag_origin" ); + dc_icon = spawn( "script_model", self.origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + dc_icon.angles = self.angles; + dc_icon setmodel( "ch_tombstone1" ); + dc_icon linkto( dc ); + dc.icon = dc_icon; + dc.script_noteworthy = "player_tombstone_model"; + dc.player = self; + dc thread tombstone_wobble(); + dc thread tombstone_revived( self ); + result = self waittill_any_return( "player_revived", "spawned_player", "disconnect" ); + if ( result == "player_revived" || result == "disconnect" ) + { + dc notify( "tombstone_timedout" ); + dc_icon unlink(); + dc_icon delete(); + dc delete(); + return; + } + dc thread tombstone_timeout(); + dc thread tombstone_grab(); +} + +tombstone_revived( player ) +{ + self endon( "tombstone_timedout" ); + player endon( "disconnect" ); + shown = 1; + while ( isDefined( self ) && isDefined( player ) ) + { + if ( isDefined( player.revivetrigger ) && isDefined( player.revivetrigger.beingrevived ) && player.revivetrigger.beingrevived ) + { + if ( shown ) + { + shown = 0; + self.icon hide(); + } + } + else + { + if ( !shown ) + { + shown = 1; + self.icon show(); + } + } + wait 0,05; + } +} + +tombstone_laststand() +{ + primaries = self getweaponslistprimaries(); + currentweapon = self getcurrentweapon(); + dc = level.tombstones[ self.tombstone_index ]; + dc.player = self; + dc.weapon = []; + dc.current_weapon = -1; + _a118 = primaries; + index = getFirstArrayKey( _a118 ); + while ( isDefined( index ) ) + { + weapon = _a118[ index ]; + dc.weapon[ index ] = weapon; + dc.stockcount[ index ] = self getweaponammostock( weapon ); + if ( weapon == currentweapon ) + { + dc.current_weapon = index; + } + index = getNextArrayKey( _a118, index ); + } + if ( isDefined( self.hasriotshield ) && self.hasriotshield ) + { + dc.hasriotshield = 1; + } + dc save_weapons_for_tombstone( self ); + if ( self hasweapon( "claymore_zm" ) ) + { + dc.hasclaymore = 1; + dc.claymoreclip = self getweaponammoclip( "claymore_zm" ); + } + if ( self hasweapon( "emp_grenade_zm" ) ) + { + dc.hasemp = 1; + dc.empclip = self getweaponammoclip( "emp_grenade_zm" ); + } + dc.perk = tombstone_save_perks( self ); + lethal_grenade = self get_player_lethal_grenade(); + if ( self hasweapon( lethal_grenade ) ) + { + dc.grenade = self getweaponammoclip( lethal_grenade ); + } + else + { + dc.grenade = 0; + } + if ( maps/mp/zombies/_zm_weap_cymbal_monkey::cymbal_monkey_exists() ) + { + dc.zombie_cymbal_monkey_count = self getweaponammoclip( "cymbal_monkey_zm" ); + } +} + +tombstone_save_perks( ent ) +{ + perk_array = []; + if ( ent hasperk( "specialty_armorvest" ) ) + { + perk_array[ perk_array.size ] = "specialty_armorvest"; + } + if ( ent hasperk( "specialty_deadshot" ) ) + { + perk_array[ perk_array.size ] = "specialty_deadshot"; + } + if ( ent hasperk( "specialty_fastreload" ) ) + { + perk_array[ perk_array.size ] = "specialty_fastreload"; + } + if ( ent hasperk( "specialty_flakjacket" ) ) + { + perk_array[ perk_array.size ] = "specialty_flakjacket"; + } + if ( ent hasperk( "specialty_longersprint" ) ) + { + perk_array[ perk_array.size ] = "specialty_longersprint"; + } + if ( ent hasperk( "specialty_quickrevive" ) ) + { + perk_array[ perk_array.size ] = "specialty_quickrevive"; + } + if ( ent hasperk( "specialty_rof" ) ) + { + perk_array[ perk_array.size ] = "specialty_rof"; + } + return perk_array; +} + +tombstone_grab() +{ + self endon( "tombstone_timedout" ); + wait 1; + while ( isDefined( self ) ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ].is_zombie ) + { + i++; + continue; + } + else + { + if ( isDefined( self.player ) && players[ i ] == self.player ) + { + tombstone_machine_triggers = getentarray( "specialty_scavenger", "script_noteworthy" ); + istombstonepowered = 0; + _a242 = tombstone_machine_triggers; + _k242 = getFirstArrayKey( _a242 ); + while ( isDefined( _k242 ) ) + { + trigger = _a242[ _k242 ]; + if ( isDefined( trigger.power_on ) || trigger.power_on && isDefined( trigger.turbine_power_on ) && trigger.turbine_power_on ) + { + istombstonepowered = 1; + } + _k242 = getNextArrayKey( _a242, _k242 ); + } + if ( istombstonepowered ) + { + dist = distance( players[ i ].origin, self.origin ); + if ( dist < 64 ) + { + playfx( level._effect[ "powerup_grabbed" ], self.origin ); + playfx( level._effect[ "powerup_grabbed_wave" ], self.origin ); + players[ i ] tombstone_give(); + wait 0,1; + playsoundatposition( "zmb_tombstone_grab", self.origin ); + self stoploopsound(); + self.icon unlink(); + self.icon delete(); + self delete(); + self notify( "tombstone_grabbed" ); + players[ i ] clientnotify( "dc0" ); + players[ i ] notify( "dance_on_my_grave" ); + } + } + } + } + i++; + } + wait_network_frame(); + } +} + +tombstone_give() +{ + dc = level.tombstones[ self.tombstone_index ]; + while ( !flag( "solo_game" ) ) + { + primaries = self getweaponslistprimaries(); + while ( dc.weapon.size > 1 || primaries.size > 1 ) + { + _a294 = primaries; + _k294 = getFirstArrayKey( _a294 ); + while ( isDefined( _k294 ) ) + { + weapon = _a294[ _k294 ]; + self takeweapon( weapon ); + _k294 = getNextArrayKey( _a294, _k294 ); + } + } + i = 0; + while ( i < dc.weapon.size ) + { + if ( !isDefined( dc.weapon[ i ] ) ) + { + i++; + continue; + } + else if ( dc.weapon[ i ] == "none" ) + { + i++; + continue; + } + else + { + weapon = dc.weapon[ i ]; + stock = dc.stockcount[ i ]; + if ( !self hasweapon( weapon ) ) + { + self giveweapon( weapon, 0, self maps/mp/zombies/_zm_weapons::get_pack_a_punch_weapon_options( weapon ) ); + self setweaponammoclip( weapon, weaponclipsize( weapon ) ); + self setweaponammostock( weapon, stock ); + if ( i == dc.current_weapon ) + { + self switchtoweapon( weapon ); + } + } + } + i++; + } + } + if ( isDefined( dc.hasriotshield ) && dc.hasriotshield ) + { + self maps/mp/zombies/_zm_equipment::equipment_give( "riotshield_zm" ); + if ( isDefined( self.player_shield_reset_health ) ) + { + self [[ self.player_shield_reset_health ]](); + } + } + dc restore_weapons_for_tombstone( self ); + if ( isDefined( dc.hasclaymore ) && dc.hasclaymore && !self hasweapon( "claymore_zm" ) ) + { + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammoclip( "claymore_zm", dc.claymoreclip ); + } + if ( isDefined( dc.hasemp ) && dc.hasemp ) + { + self giveweapon( "emp_grenade_zm" ); + self setweaponammoclip( "emp_grenade_zm", dc.empclip ); + } + while ( isDefined( dc.perk ) && dc.perk.size > 0 ) + { + i = 0; + while ( i < dc.perk.size ) + { + if ( self hasperk( dc.perk[ i ] ) ) + { + i++; + continue; + } + else if ( dc.perk[ i ] == "specialty_quickrevive" && flag( "solo_game" ) ) + { + i++; + continue; + } + else + { + maps/mp/zombies/_zm_perks::give_perk( dc.perk[ i ] ); + } + i++; + } + } + if ( dc.grenade > 0 && !flag( "solo_game" ) ) + { + curgrenadecount = 0; + if ( self hasweapon( self get_player_lethal_grenade() ) ) + { + self getweaponammoclip( self get_player_lethal_grenade() ); + } + else + { + self giveweapon( self get_player_lethal_grenade() ); + } + self setweaponammoclip( self get_player_lethal_grenade(), dc.grenade + curgrenadecount ); + } + if ( maps/mp/zombies/_zm_weap_cymbal_monkey::cymbal_monkey_exists() && !flag( "solo_game" ) ) + { + if ( dc.zombie_cymbal_monkey_count ) + { + self maps/mp/zombies/_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); + self setweaponammoclip( "cymbal_monkey_zm", dc.zombie_cymbal_monkey_count ); + } + } +} + +tombstone_wobble() +{ + self endon( "tombstone_grabbed" ); + self endon( "tombstone_timedout" ); + if ( isDefined( self ) ) + { + wait 1; + playfxontag( level._effect[ "powerup_on" ], self, "tag_origin" ); + self playsound( "zmb_tombstone_spawn" ); + self playloopsound( "zmb_tombstone_looper" ); + } + while ( isDefined( self ) ) + { + self rotateyaw( 360, 3 ); + wait 2,9; + } +} + +tombstone_timeout() +{ + self endon( "tombstone_grabbed" ); + self thread playtombstonetimeraudio(); + wait 48,5; + i = 0; + while ( i < 40 ) + { + if ( i % 2 ) + { + self.icon ghost(); + } + else + { + self.icon show(); + } + if ( i < 15 ) + { + wait 0,5; + i++; + continue; + } + else if ( i < 25 ) + { + wait 0,25; + i++; + continue; + } + else + { + wait 0,1; + } + i++; + } + self notify( "tombstone_timedout" ); + self.icon unlink(); + self.icon delete(); + self delete(); +} + +playtombstonetimeraudio() +{ + self endon( "tombstone_grabbed" ); + self endon( "tombstone_timedout" ); + player = self.player; + self thread playtombstonetimerout( player ); + while ( 1 ) + { + player playsoundtoplayer( "zmb_tombstone_timer_count", player ); + wait 1; + } +} + +playtombstonetimerout( player ) +{ + self endon( "tombstone_grabbed" ); + self waittill( "tombstone_timedout" ); + player playsoundtoplayer( "zmb_tombstone_timer_out", player ); +} + +save_weapons_for_tombstone( player ) +{ + self.tombstone_melee_weapons = []; + i = 0; + while ( i < level._melee_weapons.size ) + { + self save_weapon_for_tombstone( player, level._melee_weapons[ i ].weapon_name ); + i++; + } +} + +save_weapon_for_tombstone( player, weapon_name ) +{ + if ( player hasweapon( weapon_name ) ) + { + self.tombstone_melee_weapons[ weapon_name ] = 1; + } +} + +restore_weapons_for_tombstone( player ) +{ + i = 0; + while ( i < level._melee_weapons.size ) + { + self restore_weapon_for_tombstone( player, level._melee_weapons[ i ].weapon_name ); + i++; + } + self.tombstone_melee_weapons = undefined; +} + +restore_weapon_for_tombstone( player, weapon_name ) +{ + if ( isDefined( weapon_name ) || !isDefined( self.tombstone_melee_weapons ) && !isDefined( self.tombstone_melee_weapons[ weapon_name ] ) ) + { + return; + } + if ( isDefined( self.tombstone_melee_weapons[ weapon_name ] ) && self.tombstone_melee_weapons[ weapon_name ] ) + { + player giveweapon( weapon_name ); + player set_player_melee_weapon( weapon_name ); + self.tombstone_melee_weapons[ weapon_name ] = 0; + } +} + +tombstone_hostmigration() +{ + level endon( "end_game" ); + level notify( "tombstone_hostmigration" ); + level endon( "tombstone_hostmigration" ); + while ( 1 ) + { + level waittill( "host_migration_end" ); + tombstones = getentarray( "player_tombstone_model", "script_noteworthy" ); + _a564 = tombstones; + _k564 = getFirstArrayKey( _a564 ); + while ( isDefined( _k564 ) ) + { + model = _a564[ _k564 ]; + playfxontag( level._effect[ "powerup_on" ], model, "tag_origin" ); + _k564 = getNextArrayKey( _a564, _k564 ); + } + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_traps.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_traps.gsc new file mode 100644 index 0000000..681acca --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_traps.gsc @@ -0,0 +1,897 @@ +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level.trap_kills = 0; + traps = getentarray( "zombie_trap", "targetname" ); + array_thread( traps, ::trap_init ); + level.burning_zombies = []; + level.elec_trap_time = 40; + level.elec_trap_cooldown_time = 60; +} + +trap_init() +{ + self ent_flag_init( "flag_active" ); + self ent_flag_init( "flag_cooldown" ); + self._trap_type = ""; + if ( isDefined( self.script_noteworthy ) ) + { + self._trap_type = self.script_noteworthy; + if ( isDefined( level._zombiemode_trap_activate_funcs ) && isDefined( level._zombiemode_trap_activate_funcs[ self._trap_type ] ) ) + { + self._trap_activate_func = level._zombiemode_trap_activate_funcs[ self._trap_type ]; + break; + } + else + { + switch( self.script_noteworthy ) + { + case "rotating": + self._trap_activate_func = ::trap_activate_rotating; + break; + case "electric": + self._trap_activate_func = ::trap_activate_electric; + break; + case "flipper": + self._trap_activate_func = ::trap_activate_flipper; + break; + case "fire": + default: + self._trap_activate_func = ::trap_activate_fire; + } + } + if ( isDefined( level._zombiemode_trap_use_funcs ) && isDefined( level._zombiemode_trap_use_funcs[ self._trap_type ] ) ) + { + self._trap_use_func = level._zombiemode_trap_use_funcs[ self._trap_type ]; + } + else + { + self._trap_use_func = ::trap_use_think; + } +} +self trap_model_type_init(); +self._trap_use_trigs = []; +self._trap_lights = []; +self._trap_movers = []; +self._trap_switches = []; +components = getentarray( self.target, "targetname" ); +i = 0; +while ( i < components.size ) +{ + if ( isDefined( components[ i ].script_noteworthy ) ) + { + switch( components[ i ].script_noteworthy ) + { + case "counter_1s": + self.counter_1s = components[ i ]; + break; + i++; + continue; + case "counter_10s": + self.counter_10s = components[ i ]; + break; + i++; + continue; + case "counter_100s": + self.counter_100s = components[ i ]; + break; + i++; + continue; + case "mover": + self._trap_movers[ self._trap_movers.size ] = components[ i ]; + break; + i++; + continue; + case "switch": + self._trap_switches[ self._trap_switches.size ] = components[ i ]; + break; + i++; + continue; + case "light": + self._trap_lightes[ self._trap_lightes.size ] = components[ i ]; + break; + i++; + continue; + } + } + if ( isDefined( components[ i ].script_string ) ) + { + switch( components[ i ].script_string ) + { + case "flipper1": + self.flipper1 = components[ i ]; + break; + i++; + continue; + case "flipper2": + self.flipper2 = components[ i ]; + break; + i++; + continue; + case "flipper1_radius_check": + self.flipper1_radius_check = components[ i ]; + break; + i++; + continue; + case "flipper2_radius_check": + self.flipper2_radius_check = components[ i ]; + break; + i++; + continue; + case "target1": + self.target1 = components[ i ]; + break; + i++; + continue; + case "target2": + self.target2 = components[ i ]; + break; + i++; + continue; + case "target3": + self.target3 = components[ i ]; + break; + i++; + continue; + } + } + switch( components[ i ].classname ) + { + case "trigger_use": + self._trap_use_trigs[ self._trap_use_trigs.size ] = components[ i ]; + break; + i++; + continue; + case "script_model": + if ( components[ i ].model == self._trap_light_model_off ) + { + self._trap_lights[ self._trap_lights.size ] = components[ i ]; + } + else if ( components[ i ].model == self._trap_switch_model ) + { + self._trap_switches[ self._trap_switches.size ] = components[ i ]; + } + } + i++; +} +self._trap_fx_structs = []; +components = getstructarray( self.target, "targetname" ); +i = 0; +while ( i < components.size ) +{ + if ( isDefined( components[ i ].script_string ) && components[ i ].script_string == "use_this_angle" ) + { + self.use_this_angle = components[ i ]; + i++; + continue; + } + else + { + self._trap_fx_structs[ self._trap_fx_structs.size ] = components[ i ]; + } + i++; +} +/# +assert( self._trap_use_trigs.size > 0, "_zm_traps::init no use triggers found for " + self.target ); +#/ +if ( !isDefined( self.zombie_cost ) ) +{ + self.zombie_cost = 1000; +} +self._trap_in_use = 0; +self._trap_cooling_down = 0; +self thread trap_dialog(); +flag_wait( "start_zombie_round_logic" ); +self trap_lights_red(); +i = 0; +while ( i < self._trap_use_trigs.size ) +{ + self._trap_use_trigs[ i ] setcursorhint( "HINT_NOICON" ); + i++; +} +if ( !isDefined( self.script_flag_wait ) ) +{ + self trap_set_string( &"ZOMBIE_NEED_POWER" ); + flag_wait( "power_on" ); +} +else +{ + if ( !isDefined( level.flag[ self.script_flag_wait ] ) ) + { + flag_init( self.script_flag_wait ); + } + flag_wait( self.script_flag_wait ); +} +self trap_set_string( &"ZOMBIE_BUTTON_BUY_TRAP", self.zombie_cost ); +self trap_lights_green(); +i = 0; +while ( i < self._trap_use_trigs.size ) +{ + self._trap_use_trigs[ i ] thread [[ self._trap_use_func ]]( self ); + i++; +} +} + +trap_use_think( trap ) +{ + for ( ;; ) + { + while ( 1 ) + { + self waittill( "trigger", who ); + while ( who in_revive_trigger() ) + { + continue; + } + if ( is_player_valid( who ) && !trap._trap_in_use ) + { + players = get_players(); + if ( players.size == 1 && who.score >= trap.zombie_cost ) + { + who maps/mp/zombies/_zm_score::minus_to_player_score( trap.zombie_cost ); + break; + } + else + { + if ( level.team_pool[ who.team_num ].score >= trap.zombie_cost ) + { + who maps/mp/zombies/_zm_score::minus_to_team_score( trap.zombie_cost ); + break; + } + else if ( ( level.team_pool[ who.team_num ].score + who.score ) >= trap.zombie_cost ) + { + team_points = level.team_pool[ who.team_num ].score; + who maps/mp/zombies/_zm_score::minus_to_player_score( trap.zombie_cost - team_points ); + who maps/mp/zombies/_zm_score::minus_to_team_score( team_points ); + break; + } + else + { + } + } + } + trap._trap_in_use = 1; + trap trap_set_string( &"ZOMBIE_TRAP_ACTIVE" ); + play_sound_at_pos( "purchase", who.origin ); + if ( trap._trap_switches.size ) + { + trap thread trap_move_switches(); + trap waittill( "switch_activated" ); + } + trap trigger_on(); + trap thread [[ trap._trap_activate_func ]](); + trap waittill( "trap_done" ); + trap trigger_off(); + trap._trap_cooling_down = 1; + trap trap_set_string( &"ZOMBIE_TRAP_COOLDOWN" ); +/# + if ( getDvarInt( "zombie_cheat" ) >= 1 ) + { + trap._trap_cooldown_time = 5; +#/ + } + wait trap._trap_cooldown_time; + trap._trap_cooling_down = 0; + trap notify( "available" ); + trap._trap_in_use = 0; + trap trap_set_string( &"ZOMBIE_BUTTON_BUY_TRAP", trap.zombie_cost ); + } + } +} + +trap_lights_red() +{ + i = 0; + while ( i < self._trap_lights.size ) + { + light = self._trap_lights[ i ]; + light setmodel( self._trap_light_model_red ); + if ( isDefined( light.fx ) ) + { + light.fx delete(); + } + light.fx = maps/mp/zombies/_zm_net::network_safe_spawn( "trap_lights_red", 2, "script_model", light.origin ); + light.fx setmodel( "tag_origin" ); + light.fx.angles = light.angles; + playfxontag( level._effect[ "zapper_light_notready" ], light.fx, "tag_origin" ); + i++; + } +} + +trap_lights_green() +{ + i = 0; + while ( i < self._trap_lights.size ) + { + light = self._trap_lights[ i ]; + if ( isDefined( light._switch_disabled ) ) + { + i++; + continue; + } + else + { + light setmodel( self._trap_light_model_green ); + if ( isDefined( light.fx ) ) + { + light.fx delete(); + } + light.fx = maps/mp/zombies/_zm_net::network_safe_spawn( "trap_lights_green", 2, "script_model", light.origin ); + light.fx setmodel( "tag_origin" ); + light.fx.angles = light.angles; + playfxontag( level._effect[ "zapper_light_ready" ], light.fx, "tag_origin" ); + } + i++; + } +} + +trap_set_string( string, param1, param2 ) +{ + i = 0; + while ( i < self._trap_use_trigs.size ) + { + if ( !isDefined( param1 ) ) + { + self._trap_use_trigs[ i ] sethintstring( string ); + i++; + continue; + } + else if ( !isDefined( param2 ) ) + { + self._trap_use_trigs[ i ] sethintstring( string, param1 ); + i++; + continue; + } + else + { + self._trap_use_trigs[ i ] sethintstring( string, param1, param2 ); + } + i++; + } +} + +trap_move_switches() +{ + self trap_lights_red(); + i = 0; + while ( i < self._trap_switches.size ) + { + self._trap_switches[ i ] rotatepitch( 180, 0,5 ); + self._trap_switches[ i ] playsound( "amb_sparks_l_b" ); + i++; + } + self._trap_switches[ 0 ] waittill( "rotatedone" ); + self notify( "switch_activated" ); + self waittill( "available" ); + i = 0; + while ( i < self._trap_switches.size ) + { + self._trap_switches[ i ] rotatepitch( -180, 0,5 ); + i++; + } + self._trap_switches[ 0 ] waittill( "rotatedone" ); + self trap_lights_green(); +} + +trap_activate_electric() +{ + self._trap_duration = 40; + self._trap_cooldown_time = 60; + self notify( "trap_activate" ); + if ( isDefined( self.script_string ) ) + { + number = int( self.script_string ); + if ( number != 0 ) + { + exploder( number ); + } + else + { + clientnotify( self.script_string + "1" ); + } + } + fx_points = getstructarray( self.target, "targetname" ); + i = 0; + while ( i < fx_points.size ) + { + wait_network_frame(); + fx_points[ i ] thread trap_audio_fx( self ); + i++; + } + self thread trap_damage(); + wait self._trap_duration; + self notify( "trap_done" ); + if ( isDefined( self.script_string ) ) + { + clientnotify( self.script_string + "0" ); + } +} + +trap_activate_fire() +{ + self._trap_duration = 40; + self._trap_cooldown_time = 60; + clientnotify( self.script_string + "1" ); + clientnotify( self.script_parameters ); + fx_points = getstructarray( self.target, "targetname" ); + i = 0; + while ( i < fx_points.size ) + { + wait_network_frame(); + fx_points[ i ] thread trap_audio_fx( self ); + i++; + } + self thread trap_damage(); + wait self._trap_duration; + self notify( "trap_done" ); + clientnotify( self.script_string + "0" ); + clientnotify( self.script_parameters ); +} + +trap_activate_rotating() +{ + self endon( "trap_done" ); + self._trap_duration = 30; + self._trap_cooldown_time = 60; + self thread trap_damage(); + self thread trig_update( self._trap_movers[ 0 ] ); + old_angles = self._trap_movers[ 0 ].angles; + i = 0; + while ( i < self._trap_movers.size ) + { + self._trap_movers[ i ] rotateyaw( 360, 5, 4,5 ); + i++; + } + wait 5; + step = 1,5; + t = 0; + while ( t < self._trap_duration ) + { + i = 0; + while ( i < self._trap_movers.size ) + { + self._trap_movers[ i ] rotateyaw( 360, step ); + i++; + } + wait step; + t += step; + } + i = 0; + while ( i < self._trap_movers.size ) + { + self._trap_movers[ i ] rotateyaw( 360, 5, 0, 4,5 ); + i++; + } + wait 5; + i = 0; + while ( i < self._trap_movers.size ) + { + self._trap_movers[ i ].angles = old_angles; + i++; + } + self notify( "trap_done" ); +} + +trap_activate_flipper() +{ +} + +trap_audio_fx( trap ) +{ + sound_origin = undefined; + if ( trap.script_noteworthy == "electric" ) + { + sound_origin = spawn( "script_origin", self.origin ); + sound_origin playsound( "zmb_elec_start" ); + sound_origin playloopsound( "zmb_elec_loop" ); + self thread play_electrical_sound( trap ); + } + else + { + if ( trap.script_noteworthy == "fire" ) + { + sound_origin = spawn( "script_origin", self.origin ); + sound_origin playsound( "zmb_firetrap_start" ); + sound_origin playloopsound( "zmb_firetrap_loop" ); + } + } + trap waittill_any_or_timeout( trap._trap_duration, "trap_done" ); + if ( isDefined( sound_origin ) ) + { + if ( trap.script_noteworthy == "fire" ) + { + playsoundatposition( "zmb_firetrap_end", sound_origin.origin ); + } + sound_origin stoploopsound(); + wait 0,05; + sound_origin delete(); + } +} + +play_electrical_sound( trap ) +{ + trap endon( "trap_done" ); + while ( 1 ) + { + wait randomfloatrange( 0,1, 0,5 ); + playsoundatposition( "zmb_elec_arc", self.origin ); + } +} + +trap_damage() +{ + self endon( "trap_done" ); + while ( 1 ) + { + self waittill( "trigger", ent ); + if ( isplayer( ent ) ) + { + switch( self._trap_type ) + { + case "electric": + ent thread player_elec_damage(); + break; + case "fire": + case "rocket": + ent thread player_fire_damage(); + break; + case "rotating": + if ( ent getstance() == "stand" ) + { + ent dodamage( 50, ent.origin + vectorScale( ( 0, 0, 1 ), 20 ) ); + ent setstance( "crouch" ); + } + break; + } + break; + continue; + } + else if ( !isDefined( ent.marked_for_death ) ) + { + switch( self._trap_type ) + { + case "rocket": + ent thread zombie_trap_death( self, 100 ); + break; + break; + case "rotating": + ent thread zombie_trap_death( self, 200 ); + break; + break; + case "electric": + case "fire": + default: + ent thread zombie_trap_death( self, randomint( 100 ) ); + break; + break; + } + } +} +} + +trig_update( parent ) +{ + self endon( "trap_done" ); + start_angles = self.angles; + while ( 1 ) + { + self.angles = parent.angles; + wait 0,05; + } +} + +player_elec_damage() +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( level.elec_loop ) ) + { + level.elec_loop = 0; + } + if ( !isDefined( self.is_burning ) && is_player_valid( self ) ) + { + self.is_burning = 1; + self setelectrified( 1,25 ); + shocktime = 2,5; + self shellshock( "electrocution", shocktime ); + if ( level.elec_loop == 0 ) + { + elec_loop = 1; + self playsound( "zmb_zombie_arc" ); + } + if ( !self hasperk( "specialty_armorvest" ) || ( self.health - 100 ) < 1 ) + { + radiusdamage( self.origin, 10, self.health + 100, self.health + 100 ); + self.is_burning = undefined; + return; + } + else + { + self dodamage( 50, self.origin ); + wait 0,1; + self.is_burning = undefined; + } + } +} + +player_fire_damage() +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( self.is_burning ) && !self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + self.is_burning = 1; + self setburn( 1,25 ); + self notify( "burned" ); + if ( !self hasperk( "specialty_armorvest" ) || ( self.health - 100 ) < 1 ) + { + radiusdamage( self.origin, 10, self.health + 100, self.health + 100 ); + self.is_burning = undefined; + return; + } + else + { + self dodamage( 50, self.origin ); + wait 0,1; + self.is_burning = undefined; + } + } +} + +zombie_trap_death( trap, param ) +{ + self endon( "death" ); + self.marked_for_death = 1; + switch( trap._trap_type ) + { + case "electric": + case "fire": + case "rocket": + if ( isDefined( self.animname ) && self.animname != "zombie_dog" ) + { + if ( param > 90 && level.burning_zombies.size < 6 ) + { + level.burning_zombies[ level.burning_zombies.size ] = self; + self thread zombie_flame_watch(); + self playsound( "ignite" ); + self thread maps/mp/animscripts/zm_death::flame_death_fx(); + playfxontag( level._effect[ "character_fire_death_torso" ], self, "J_SpineLower" ); + wait randomfloat( 1,25 ); + } + else + { + refs[ 0 ] = "guts"; + refs[ 1 ] = "right_arm"; + refs[ 2 ] = "left_arm"; + refs[ 3 ] = "right_leg"; + refs[ 4 ] = "left_leg"; + refs[ 5 ] = "no_legs"; + refs[ 6 ] = "head"; + self.a.gib_ref = refs[ randomint( refs.size ) ]; + playsoundatposition( "zmb_zombie_arc", self.origin ); + if ( trap._trap_type == "electric" ) + { + if ( randomint( 100 ) > 50 ) + { + self thread electroctute_death_fx(); + self thread play_elec_vocals(); + } + } + wait randomfloat( 1,25 ); + self playsound( "zmb_zombie_arc" ); + } + } + if ( isDefined( self.fire_damage_func ) ) + { + self [[ self.fire_damage_func ]]( trap ); + } + else + { + level notify( "trap_kill" ); + self dodamage( self.health + 666, self.origin, trap ); + } + break; + case "centrifuge": + case "rotating": + ang = vectorToAngle( trap.origin - self.origin ); + direction_vec = vectorScale( anglesToRight( ang ), param ); + if ( isDefined( self.trap_reaction_func ) ) + { + self [[ self.trap_reaction_func ]]( trap ); + } + level notify( "trap_kill" ); + self startragdoll(); + self launchragdoll( direction_vec ); + wait_network_frame(); + self.a.gib_ref = "head"; + self dodamage( self.health, self.origin, trap ); + break; + } +} + +zombie_flame_watch() +{ + self waittill( "death" ); + self stoploopsound(); + arrayremovevalue( level.burning_zombies, self ); +} + +play_elec_vocals() +{ + if ( isDefined( self ) ) + { + org = self.origin; + wait 0,15; + playsoundatposition( "zmb_elec_vocals", org ); + playsoundatposition( "zmb_zombie_arc", org ); + playsoundatposition( "zmb_exp_jib_zombie", org ); + } +} + +electroctute_death_fx() +{ + self endon( "death" ); + if ( isDefined( self.is_electrocuted ) && self.is_electrocuted ) + { + return; + } + self.is_electrocuted = 1; + self thread electrocute_timeout(); + if ( self.team == level.zombie_team ) + { + level.bconfiretime = getTime(); + level.bconfireorg = self.origin; + } + if ( isDefined( level._effect[ "elec_torso" ] ) ) + { + playfxontag( level._effect[ "elec_torso" ], self, "J_SpineLower" ); + } + self playsound( "zmb_elec_jib_zombie" ); + wait 1; + tagarray = []; + tagarray[ 0 ] = "J_Elbow_LE"; + tagarray[ 1 ] = "J_Elbow_RI"; + tagarray[ 2 ] = "J_Knee_RI"; + tagarray[ 3 ] = "J_Knee_LE"; + tagarray = array_randomize( tagarray ); + if ( isDefined( level._effect[ "elec_md" ] ) ) + { + playfxontag( level._effect[ "elec_md" ], self, tagarray[ 0 ] ); + } + self playsound( "zmb_elec_jib_zombie" ); + wait 1; + self playsound( "zmb_elec_jib_zombie" ); + tagarray[ 0 ] = "J_Wrist_RI"; + tagarray[ 1 ] = "J_Wrist_LE"; + if ( !isDefined( self.a.gib_ref ) || self.a.gib_ref != "no_legs" ) + { + tagarray[ 2 ] = "J_Ankle_RI"; + tagarray[ 3 ] = "J_Ankle_LE"; + } + tagarray = array_randomize( tagarray ); + if ( isDefined( level._effect[ "elec_sm" ] ) ) + { + playfxontag( level._effect[ "elec_sm" ], self, tagarray[ 0 ] ); + playfxontag( level._effect[ "elec_sm" ], self, tagarray[ 1 ] ); + } +} + +electrocute_timeout() +{ + self endon( "death" ); + self playloopsound( "fire_manager_0" ); + wait 12; + self stoploopsound(); + if ( isDefined( self ) && isalive( self ) ) + { + self.is_electrocuted = 0; + self notify( "stop_flame_damage" ); + } +} + +trap_dialog() +{ + self endon( "warning_dialog" ); + level endon( "switch_flipped" ); + timer = 0; + while ( 1 ) + { + wait 0,5; + players = get_players(); + i = 0; + while ( i < players.size ) + { + dist = distancesquared( players[ i ].origin, self.origin ); + if ( dist > 4900 ) + { + timer = 0; + i++; + continue; + } + else + { + if ( dist < 4900 && timer < 3 ) + { + wait 0,5; + timer++; + } + if ( dist < 4900 && timer == 3 ) + { + index = maps/mp/zombies/_zm_weapons::get_player_index( players[ i ] ); + plr = "plr_" + index + "_"; + wait 3; + self notify( "warning_dialog" ); + } + } + i++; + } + } +} + +get_trap_array( trap_type ) +{ + ents = getentarray( "zombie_trap", "targetname" ); + traps = []; + i = 0; + while ( i < ents.size ) + { + if ( ents[ i ].script_noteworthy == trap_type ) + { + traps[ traps.size ] = ents[ i ]; + } + i++; + } + return traps; +} + +trap_disable() +{ + cooldown = self._trap_cooldown_time; + if ( self._trap_in_use ) + { + self notify( "trap_done" ); + self._trap_cooldown_time = 0,05; + self waittill( "available" ); + } + array_thread( self._trap_use_trigs, ::trigger_off ); + self trap_lights_red(); + self._trap_cooldown_time = cooldown; +} + +trap_enable() +{ + array_thread( self._trap_use_trigs, ::trigger_on ); + self trap_lights_green(); +} + +trap_model_type_init() +{ + if ( !isDefined( self.script_parameters ) ) + { + self.script_parameters = "default"; + } + switch( self.script_parameters ) + { + case "pentagon_electric": + self._trap_light_model_off = "zombie_trap_switch_light"; + self._trap_light_model_green = "zombie_trap_switch_light_on_green"; + self._trap_light_model_red = "zombie_trap_switch_light_on_red"; + self._trap_switch_model = "zombie_trap_switch_handle"; + break; + case "default": + default: + self._trap_light_model_off = "zombie_zapper_cagelight"; + self._trap_light_model_green = "zombie_zapper_cagelight_green"; + self._trap_light_model_red = "zombie_zapper_cagelight_red"; + self._trap_switch_model = "zombie_zapper_handle"; + break; + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_turned.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_turned.gsc new file mode 100644 index 0000000..3ae6d06 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_turned.gsc @@ -0,0 +1,431 @@ +#include maps/mp/gametypes_zm/_spawnlogic; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/_visionset_mgr; +#include maps/mp/gametypes_zm/_hud_util; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level.turnedmeleeweapon = "zombiemelee_zm"; + level.turnedmeleeweapon_dw = "zombiemelee_dw"; + precacheitem( level.turnedmeleeweapon ); + precacheitem( level.turnedmeleeweapon_dw ); + precachemodel( "c_zom_player_zombie_fb" ); + precachemodel( "c_zom_zombie_viewhands" ); + if ( !isDefined( level.vsmgr_prio_visionset_zombie_turned ) ) + { + level.vsmgr_prio_visionset_zombie_turned = 123; + } + maps/mp/_visionset_mgr::vsmgr_register_info( "visionset", "zm_turned", 3000, level.vsmgr_prio_visionset_zombie_turned, 1, 1 ); + registerclientfield( "toplayer", "turned_ir", 3000, 1, "int" ); + registerclientfield( "allplayers", "player_has_eyes", 3000, 1, "int" ); + registerclientfield( "allplayers", "player_eyes_special", 5000, 1, "int" ); + level._effect[ "player_eye_glow" ] = loadfx( "maps/zombie/fx_zombie_eye_returned_blue" ); + level._effect[ "player_eye_glow_orng" ] = loadfx( "maps/zombie/fx_zombie_eye_returned_orng" ); + thread setup_zombie_exerts(); +} + +setup_zombie_exerts() +{ + wait 0,05; + level.exert_sounds[ 1 ][ "burp" ] = "null"; + level.exert_sounds[ 1 ][ "hitmed" ] = "null"; + level.exert_sounds[ 1 ][ "hitlrg" ] = "null"; +} + +delay_turning_on_eyes() +{ + self endon( "death" ); + self endon( "disconnect" ); + wait_network_frame(); + wait 0,1; + self setclientfield( "player_has_eyes", 1 ); +} + +turn_to_zombie() +{ + if ( self.sessionstate == "playing" && isDefined( self.is_zombie ) && self.is_zombie && isDefined( self.laststand ) && !self.laststand ) + { + return; + } + if ( isDefined( self.is_in_process_of_zombify ) && self.is_in_process_of_zombify ) + { + return; + } + while ( isDefined( self.is_in_process_of_humanify ) && self.is_in_process_of_humanify ) + { + wait 0,1; + } + if ( !flag( "pregame" ) ) + { + self playsoundtoplayer( "evt_spawn", self ); + playsoundatposition( "evt_disappear_3d", self.origin ); + if ( !self.is_zombie ) + { + playsoundatposition( "vox_plr_" + randomintrange( 0, 4 ) + "_exert_death_high_" + randomintrange( 0, 4 ), self.origin ); + } + } + self._can_score = 1; + self setclientfield( "player_has_eyes", 0 ); + self ghost(); + self turned_disable_player_weapons(); + self notify( "clear_red_flashing_overlay" ); + self notify( "zombify" ); + self.is_in_process_of_zombify = 1; + self.team = level.zombie_team; + self.pers[ "team" ] = level.zombie_team; + self.sessionteam = level.zombie_team; + wait_network_frame(); + self maps/mp/gametypes_zm/_zm_gametype::onspawnplayer(); + self freezecontrols( 1 ); + self.is_zombie = 1; + self setburn( 0 ); + if ( isDefined( self.turned_visionset ) && self.turned_visionset ) + { + maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_turned", self ); + wait_network_frame(); + wait_network_frame(); + if ( !isDefined( self ) ) + { + return; + } + } + maps/mp/_visionset_mgr::vsmgr_activate( "visionset", "zm_turned", self ); + self.turned_visionset = 1; + self setclientfieldtoplayer( "turned_ir", 1 ); + self maps/mp/zombies/_zm_audio::setexertvoice( 1 ); + self.laststand = undefined; + wait_network_frame(); + if ( !isDefined( self ) ) + { + return; + } + self enableweapons(); + self show(); + playsoundatposition( "evt_appear_3d", self.origin ); + playsoundatposition( "zmb_zombie_spawn", self.origin ); + self thread delay_turning_on_eyes(); + self thread turned_player_buttons(); + self setperk( "specialty_noname" ); + self setperk( "specialty_unlimitedsprint" ); + self setperk( "specialty_fallheight" ); + self turned_give_melee_weapon(); + self setmovespeedscale( 1 ); + self.animname = "zombie"; + self disableoffhandweapons(); + self allowstand( 1 ); + self allowprone( 0 ); + self allowcrouch( 0 ); + self allowads( 0 ); + self allowjump( 0 ); + self disableweaponcycling(); + self setmovespeedscale( 1 ); + self setsprintduration( 4 ); + self setsprintcooldown( 0 ); + self stopshellshock(); + self.maxhealth = 256; + self.health = 256; + self.meleedamage = 1000; + self detachall(); + self setmodel( "c_zom_player_zombie_fb" ); + self.voice = "american"; + self.skeleton = "base"; + self setviewmodel( "c_zom_zombie_viewhands" ); + self.shock_onpain = 0; + self disableinvulnerability(); + if ( isDefined( level.player_movement_suppressed ) ) + { + self freezecontrols( level.player_movement_suppressed ); + } + else + { + self freezecontrols( 0 ); + } + self.is_in_process_of_zombify = 0; +} + +turn_to_human() +{ + if ( self.sessionstate == "playing" && isDefined( self.is_zombie ) && !self.is_zombie && isDefined( self.laststand ) && !self.laststand ) + { + return; + } + if ( isDefined( self.is_in_process_of_humanify ) && self.is_in_process_of_humanify ) + { + return; + } + while ( isDefined( self.is_in_process_of_zombify ) && self.is_in_process_of_zombify ) + { + wait 0,1; + } + self playsoundtoplayer( "evt_spawn", self ); + playsoundatposition( "evt_disappear_3d", self.origin ); + self setclientfield( "player_has_eyes", 0 ); + self ghost(); + self notify( "humanify" ); + self.is_in_process_of_humanify = 1; + self.is_zombie = 0; + self notify( "clear_red_flashing_overlay" ); + self.team = self.prevteam; + self.pers[ "team" ] = self.prevteam; + self.sessionteam = self.prevteam; + wait_network_frame(); + self maps/mp/gametypes_zm/_zm_gametype::onspawnplayer(); + self.maxhealth = 100; + self.health = 100; + self freezecontrols( 1 ); + if ( self hasweapon( "death_throe_zm" ) ) + { + self takeweapon( "death_throe_zm" ); + } + self unsetperk( "specialty_noname" ); + self unsetperk( "specialty_unlimitedsprint" ); + self unsetperk( "specialty_fallheight" ); + self turned_enable_player_weapons(); + self maps/mp/zombies/_zm_audio::setexertvoice( 0 ); + self.turned_visionset = 0; + maps/mp/_visionset_mgr::vsmgr_deactivate( "visionset", "zm_turned", self ); + self setclientfieldtoplayer( "turned_ir", 0 ); + self setmovespeedscale( 1 ); + self.ignoreme = 0; + self.shock_onpain = 1; + self enableweaponcycling(); + self allowstand( 1 ); + self allowprone( 1 ); + self allowcrouch( 1 ); + self allowads( 1 ); + self allowjump( 1 ); + self turnedhuman(); + self enableoffhandweapons(); + self stopshellshock(); + self.laststand = undefined; + self.is_burning = undefined; + self.meleedamage = undefined; + self detachall(); + self [[ level.givecustomcharacters ]](); + if ( !self hasweapon( "knife_zm" ) ) + { + self giveweapon( "knife_zm" ); + } + wait_network_frame(); + if ( !isDefined( self ) ) + { + return; + } + self disableinvulnerability(); + if ( isDefined( level.player_movement_suppressed ) ) + { + self freezecontrols( level.player_movement_suppressed ); + } + else + { + self freezecontrols( 0 ); + } + self show(); + playsoundatposition( "evt_appear_3d", self.origin ); + self.is_in_process_of_humanify = 0; +} + +deletezombiesinradius( origin ) +{ + zombies = get_round_enemy_array(); + maxradius = 128; + _a301 = zombies; + _k301 = getFirstArrayKey( _a301 ); + while ( isDefined( _k301 ) ) + { + zombie = _a301[ _k301 ]; + if ( isDefined( zombie ) && isalive( zombie ) && isDefined( zombie.is_being_used_as_spawner ) && !zombie.is_being_used_as_spawner ) + { + if ( distancesquared( zombie.origin, origin ) < ( maxradius * maxradius ) ) + { + playfx( level._effect[ "wood_chunk_destory" ], zombie.origin ); + zombie thread silentlyremovezombie(); + } + wait 0,05; + } + _k301 = getNextArrayKey( _a301, _k301 ); + } +} + +turned_give_melee_weapon() +{ +/# + assert( isDefined( self.turnedmeleeweapon ) ); +#/ +/# + assert( self.turnedmeleeweapon != "none" ); +#/ + self.turned_had_knife = self hasweapon( "knife_zm" ); + if ( isDefined( self.turned_had_knife ) && self.turned_had_knife ) + { + self takeweapon( "knife_zm" ); + } + self giveweapon( self.turnedmeleeweapon_dw ); + self givemaxammo( self.turnedmeleeweapon_dw ); + self giveweapon( self.turnedmeleeweapon ); + self givemaxammo( self.turnedmeleeweapon ); + self switchtoweapon( self.turnedmeleeweapon_dw ); + self switchtoweapon( self.turnedmeleeweapon ); +} + +turned_player_buttons() +{ + self endon( "disconnect" ); + self endon( "humanify" ); + level endon( "end_game" ); + while ( isDefined( self.is_zombie ) && self.is_zombie ) + { + while ( !self attackbuttonpressed() || self adsbuttonpressed() && self meleebuttonpressed() ) + { + if ( cointoss() ) + { + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "attack", undefined ); + } + while ( !self attackbuttonpressed() || self adsbuttonpressed() && self meleebuttonpressed() ) + { + wait 0,05; + } + } + while ( self usebuttonpressed() ) + { + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "taunt", undefined ); + while ( self usebuttonpressed() ) + { + wait 0,05; + } + } + while ( self issprinting() ) + { + while ( self issprinting() ) + { + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "sprint", undefined ); + wait 0,05; + } + } + wait 0,05; + } +} + +turned_disable_player_weapons() +{ + if ( isDefined( self.is_zombie ) && self.is_zombie ) + { + return; + } + weaponinventory = self getweaponslist(); + self.lastactiveweapon = self getcurrentweapon(); + self setlaststandprevweap( self.lastactiveweapon ); + self.laststandpistol = undefined; + self.hadpistol = 0; + if ( !isDefined( self.turnedmeleeweapon ) ) + { + self.turnedmeleeweapon = level.turnedmeleeweapon; + } + if ( !isDefined( self.turnedmeleeweapon_dw ) ) + { + self.turnedmeleeweapon_dw = level.turnedmeleeweapon_dw; + } + self takeallweapons(); + self disableweaponcycling(); +} + +turned_enable_player_weapons() +{ + self takeallweapons(); + self enableweaponcycling(); + self enableoffhandweapons(); + self.turned_had_knife = undefined; + if ( isDefined( level.humanify_custom_loadout ) ) + { + self thread [[ level.humanify_custom_loadout ]](); + return; + } + else + { + if ( !self hasweapon( "rottweil72_zm" ) ) + { + self giveweapon( "rottweil72_zm" ); + self switchtoweapon( "rottweil72_zm" ); + } + } + if ( isDefined( self.is_zombie ) && !self.is_zombie && !self hasweapon( level.start_weapon ) ) + { + if ( !self hasweapon( "knife_zm" ) ) + { + self giveweapon( "knife_zm" ); + } + self give_start_weapon( 0 ); + } + if ( self hasweapon( "rottweil72_zm" ) ) + { + self setweaponammoclip( "rottweil72_zm", 2 ); + self setweaponammostock( "rottweil72_zm", 0 ); + } + if ( self hasweapon( level.start_weapon ) ) + { + self givemaxammo( level.start_weapon ); + } + if ( self hasweapon( self get_player_lethal_grenade() ) ) + { + self getweaponammoclip( self get_player_lethal_grenade() ); + } + else + { + self giveweapon( self get_player_lethal_grenade() ); + } + self setweaponammoclip( self get_player_lethal_grenade(), 2 ); +} + +get_farthest_available_zombie( player ) +{ + while ( 1 ) + { + zombies = get_array_of_closest( player.origin, getaiarray( level.zombie_team ) ); + x = 0; + while ( x < zombies.size ) + { + zombie = zombies[ x ]; + if ( isDefined( zombie ) && isalive( zombie ) && isDefined( zombie.in_the_ground ) && !zombie.in_the_ground && isDefined( zombie.gibbed ) && !zombie.gibbed && isDefined( zombie.head_gibbed ) && !zombie.head_gibbed && isDefined( zombie.is_being_used_as_spawnpoint ) && !zombie.is_being_used_as_spawnpoint && zombie in_playable_area() ) + { + zombie.is_being_used_as_spawnpoint = 1; + return zombie; + } + x++; + } + wait 0,05; + } +} + +get_available_human() +{ + players = get_players(); + _a512 = players; + _k512 = getFirstArrayKey( _a512 ); + while ( isDefined( _k512 ) ) + { + player = _a512[ _k512 ]; + if ( isDefined( player.is_zombie ) && !player.is_zombie ) + { + return player; + } + _k512 = getNextArrayKey( _a512, _k512 ); + } +} + +silentlyremovezombie() +{ + self.skip_death_notetracks = 1; + self.nodeathragdoll = 1; + self dodamage( self.maxhealth * 2, self.origin, self, self, "none", "MOD_SUICIDE" ); + self self_delete(); +} + +getspawnpoint() +{ + spawnpoint = self maps/mp/gametypes_zm/_spawnlogic::getspawnpoint_dm( level._turned_zombie_respawnpoints ); + return spawnpoint; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_unitrigger.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_unitrigger.gsc new file mode 100644 index 0000000..d48de46 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_unitrigger.gsc @@ -0,0 +1,684 @@ +#include maps/mp/zombies/_zm_zonemgr; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + level._unitriggers = spawnstruct(); + level._unitriggers._deferredinitlist = []; + level._unitriggers.trigger_pool = []; + level._unitriggers.trigger_stubs = []; + level._unitriggers.dynamic_stubs = []; + level._unitriggers.system_trigger_funcs = []; + stubs_keys = array( "unitrigger_radius", "unitrigger_radius_use", "unitrigger_box", "unitrigger_box_use" ); + stubs = []; + i = 0; + while ( i < stubs_keys.size ) + { + stubs = arraycombine( stubs, getstructarray( stubs_keys[ i ], "script_unitrigger_type" ), 1, 0 ); + i++; + } + i = 0; + while ( i < stubs.size ) + { + register_unitrigger( stubs[ i ] ); + i++; + } +} + +register_unitrigger_system_func( system, trigger_func ) +{ + level._unitriggers.system_trigger_funcs[ system ] = trigger_func; +} + +unitrigger_force_per_player_triggers( unitrigger_stub, opt_on_off ) +{ + if ( !isDefined( opt_on_off ) ) + { + opt_on_off = 1; + } + unitrigger_stub.trigger_per_player = opt_on_off; +} + +unitrigger_trigger( player ) +{ + if ( self.trigger_per_player ) + { + return self.playertrigger[ player getentitynumber() ]; + } + else + { + return self.trigger; + } +} + +unitrigger_origin() +{ + if ( isDefined( self.originfunc ) ) + { + origin = self [[ self.originfunc ]](); + } + else + { + origin = self.origin; + } + return origin; +} + +register_unitrigger_internal( unitrigger_stub, trigger_func ) +{ + if ( !isDefined( unitrigger_stub.script_unitrigger_type ) ) + { +/# + println( "Cannot register a unitrigger with no script_unitrigger_type. Ignoring." ); +#/ + return; + } + if ( isDefined( trigger_func ) ) + { + unitrigger_stub.trigger_func = trigger_func; + } + else + { + if ( isDefined( unitrigger_stub.unitrigger_system ) && isDefined( level._unitriggers.system_trigger_funcs[ unitrigger_stub.unitrigger_system ] ) ) + { + unitrigger_stub.trigger_func = level._unitriggers.system_trigger_funcs[ unitrigger_stub.unitrigger_system ]; + } + } + switch( unitrigger_stub.script_unitrigger_type ) + { + case "unitrigger_radius": + case "unitrigger_radius_use": + if ( !isDefined( unitrigger_stub.radius ) ) + { + unitrigger_stub.radius = 32; + } + if ( !isDefined( unitrigger_stub.script_height ) ) + { + unitrigger_stub.script_height = 64; + } + unitrigger_stub.test_radius_sq = ( unitrigger_stub.radius + 15 ) * ( unitrigger_stub.radius + 15 ); + break; + case "unitrigger_box": + case "unitrigger_box_use": + if ( !isDefined( unitrigger_stub.script_width ) ) + { + unitrigger_stub.script_width = 64; + } + if ( !isDefined( unitrigger_stub.script_height ) ) + { + unitrigger_stub.script_height = 64; + } + if ( !isDefined( unitrigger_stub.script_length ) ) + { + unitrigger_stub.script_length = 64; + } + box_radius = length( ( unitrigger_stub.script_width / 2, unitrigger_stub.script_length / 2, unitrigger_stub.script_height / 2 ) ); + if ( !isDefined( unitrigger_stub.radius ) || unitrigger_stub.radius < box_radius ) + { + unitrigger_stub.radius = box_radius; + } + unitrigger_stub.test_radius_sq = ( box_radius + 15 ) * ( box_radius + 15 ); + break; + default: +/# + println( "Unknown unitrigger type registered : " + unitrigger_stub.targetname + " - ignoring." ); +#/ + return; + } + level._unitriggers.trigger_stubs[ level._unitriggers.trigger_stubs.size ] = unitrigger_stub; + unitrigger_stub.registered = 1; +} + +register_unitrigger( unitrigger_stub, trigger_func ) +{ + register_unitrigger_internal( unitrigger_stub, trigger_func ); + level._unitriggers.dynamic_stubs[ level._unitriggers.dynamic_stubs.size ] = unitrigger_stub; +} + +unregister_unitrigger( unitrigger_stub ) +{ + if ( !isDefined( unitrigger_stub ) ) + { + return; + } + unitrigger_stub.registered = 0; + if ( isDefined( unitrigger_stub.trigger_per_player ) && unitrigger_stub.trigger_per_player ) + { + if ( isDefined( unitrigger_stub.playertrigger ) && unitrigger_stub.playertrigger.size > 0 ) + { + keys = getarraykeys( unitrigger_stub.playertrigger ); + _a160 = keys; + _k160 = getFirstArrayKey( _a160 ); + while ( isDefined( _k160 ) ) + { + key = _a160[ _k160 ]; + trigger = unitrigger_stub.playertrigger[ key ]; + trigger notify( "kill_trigger" ); + if ( isDefined( trigger ) ) + { + trigger delete(); + } + _k160 = getNextArrayKey( _a160, _k160 ); + } + unitrigger_stub.playertrigger = []; + } + } + else + { + if ( isDefined( unitrigger_stub.trigger ) ) + { + trigger = unitrigger_stub.trigger; + trigger notify( "kill_trigger" ); + trigger.stub.trigger = undefined; + trigger delete(); + } + } + if ( isDefined( unitrigger_stub.in_zone ) ) + { + arrayremovevalue( level.zones[ unitrigger_stub.in_zone ].unitrigger_stubs, unitrigger_stub ); + } + arrayremovevalue( level._unitriggers.trigger_stubs, unitrigger_stub ); + arrayremovevalue( level._unitriggers.dynamic_stubs, unitrigger_stub ); +} + +delay_delete_contact_ent() +{ + self.last_used_time = 0; + while ( 1 ) + { + wait 1; + if ( ( getTime() - self.last_used_time ) > 1000 ) + { + self delete(); + level._unitriggers.contact_ent = undefined; + return; + } + } +} + +register_static_unitrigger( unitrigger_stub, trigger_func, recalculate_zone ) +{ + if ( level.zones.size == 0 ) + { + unitrigger_stub.trigger_func = trigger_func; + level._unitriggers._deferredinitlist[ level._unitriggers._deferredinitlist.size ] = unitrigger_stub; + return; + } + if ( !isDefined( level._unitriggers.contact_ent ) ) + { + level._unitriggers.contact_ent = spawn( "script_origin", ( 0, 0, 1 ) ); + level._unitriggers.contact_ent thread delay_delete_contact_ent(); + } + register_unitrigger_internal( unitrigger_stub, trigger_func ); + while ( !isDefined( level._no_static_unitriggers ) ) + { + level._unitriggers.contact_ent.last_used_time = getTime(); + level._unitriggers.contact_ent.origin = unitrigger_stub.origin; + if ( isDefined( unitrigger_stub.in_zone ) && !isDefined( recalculate_zone ) ) + { + level.zones[ unitrigger_stub.in_zone ].unitrigger_stubs[ level.zones[ unitrigger_stub.in_zone ].unitrigger_stubs.size ] = unitrigger_stub; + return; + } + keys = getarraykeys( level.zones ); + i = 0; + while ( i < keys.size ) + { + if ( level._unitriggers.contact_ent maps/mp/zombies/_zm_zonemgr::entity_in_zone( keys[ i ], 1 ) ) + { + if ( !isDefined( level.zones[ keys[ i ] ].unitrigger_stubs ) ) + { + level.zones[ keys[ i ] ].unitrigger_stubs = []; + } + level.zones[ keys[ i ] ].unitrigger_stubs[ level.zones[ keys[ i ] ].unitrigger_stubs.size ] = unitrigger_stub; + unitrigger_stub.in_zone = keys[ i ]; + return; + } + i++; + } + } + level._unitriggers.dynamic_stubs[ level._unitriggers.dynamic_stubs.size ] = unitrigger_stub; + unitrigger_stub.registered = 1; +} + +reregister_unitrigger_as_dynamic( unitrigger_stub ) +{ + unregister_unitrigger( unitrigger_stub ); + register_unitrigger( unitrigger_stub, unitrigger_stub.trigger_func ); +} + +debug_unitriggers() +{ +/# + while ( 1 ) + { + while ( getDvar( #"D256F24B" ) != "" ) + { + i = 0; + while ( i < level._unitriggers.trigger_stubs.size ) + { + triggerstub = level._unitriggers.trigger_stubs[ i ]; + color = vectorScale( ( 0, 0, 1 ), 0,75 ); + if ( !isDefined( triggerstub.in_zone ) ) + { + color = vectorScale( ( 0, 0, 1 ), 0,65 ); + } + else + { + if ( level.zones[ triggerstub.in_zone ].is_active ) + { + color = ( 0, 0, 1 ); + } + } + if ( isDefined( triggerstub.trigger ) || isDefined( triggerstub.playertrigger ) && triggerstub.playertrigger.size > 0 ) + { + color = ( 0, 0, 1 ); + if ( isDefined( triggerstub.playertrigger ) && triggerstub.playertrigger.size > 0 ) + { + print3d( triggerstub.origin, triggerstub.playertrigger.size, color, 1, 1, 1 ); + } + } + origin = triggerstub unitrigger_origin(); + switch( triggerstub.script_unitrigger_type ) + { + case "unitrigger_radius": + case "unitrigger_radius_use": + if ( triggerstub.radius ) + { + circle( origin, triggerstub.radius, color, 0, 0, 1 ); + } + if ( triggerstub.script_height ) + { + line( origin, origin + ( 0, 0, triggerstub.script_height ), color, 0, 1 ); + } + break; + i++; + continue; + case "unitrigger_box": + case "unitrigger_box_use": + vec = ( triggerstub.script_width / 2, triggerstub.script_length / 2, triggerstub.script_height / 2 ); + box( origin, vec * -1, vec, triggerstub.angles[ 1 ], color, 1, 0, 1 ); + break; + i++; + continue; + } + i++; + } + } + wait 0,05; +#/ + } +} + +cleanup_trigger( trigger, player ) +{ + trigger notify( "kill_trigger" ); + if ( isDefined( trigger.stub.trigger_per_player ) && trigger.stub.trigger_per_player ) + { + } + else + { + trigger.stub.trigger = undefined; + } + trigger delete(); +} + +main() +{ + level thread debug_unitriggers(); + if ( level._unitriggers._deferredinitlist.size ) + { + i = 0; + while ( i < level._unitriggers._deferredinitlist.size ) + { + register_static_unitrigger( level._unitriggers._deferredinitlist[ i ], level._unitriggers._deferredinitlist[ i ].trigger_func ); + i++; + } + i = 0; + while ( i < level._unitriggers._deferredinitlist.size ) + { + i++; + } + level._unitriggers._deferredinitlist = undefined; + } + valid_range = 128; + valid_range_sq = valid_range * valid_range; + while ( !isDefined( level.active_zone_names ) ) + { + wait 0,1; + } + while ( 1 ) + { + active_zone_names = level.active_zone_names; + candidate_list = []; + j = 0; + while ( j < active_zone_names.size ) + { + if ( isDefined( level.zones[ active_zone_names[ j ] ].unitrigger_stubs ) ) + { + candidate_list = arraycombine( candidate_list, level.zones[ active_zone_names[ j ] ].unitrigger_stubs, 1, 0 ); + } + j++; + } + candidate_list = arraycombine( candidate_list, level._unitriggers.dynamic_stubs, 1, 0 ); + players = getplayers(); + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + if ( !is_player_valid( player ) ) + { + i++; + continue; + } + else player_origin = player.origin + vectorScale( ( 0, 0, 1 ), 35 ); + trigger = level._unitriggers.trigger_pool[ player getentitynumber() ]; + if ( isDefined( trigger ) ) + { + dst = valid_range_sq; + origin = trigger unitrigger_origin(); + dst = trigger.stub.test_radius_sq; + if ( distance2dsquared( player_origin, origin ) < dst ) + { + if ( isDefined( trigger.reassess_time ) ) + { + trigger.reassess_time -= 0,05; + if ( trigger.reassess_time > 0 ) + { + i++; + continue; + } + else } + else } + else cleanup_trigger( trigger, player ); + } + closest = get_closest_unitriggers( player_origin, candidate_list, valid_range ); + index = 0; + last_trigger = undefined; + while ( index < closest.size ) + { + while ( isDefined( closest[ index ].registered ) && !closest[ index ].registered ) + { + index++; + } + if ( isDefined( last_trigger ) ) + { + cleanup_trigger( last_trigger, player ); + } + if ( isDefined( closest[ index ].trigger_per_player ) && closest[ index ].trigger_per_player ) + { + if ( !isDefined( closest[ index ].playertrigger ) ) + { + closest[ index ].playertrigger = []; + } + if ( !isDefined( closest[ index ].playertrigger[ player getentitynumber() ] ) ) + { + level._unitriggers.trigger_pool[ player getentitynumber() ] = build_trigger_from_unitrigger_stub( closest[ index ], player ); + level._unitriggers.trigger_pool[ player getentitynumber() ].parent_player = player; + if ( !isDefined( closest[ index ].prompt_and_visibility_func ) || level._unitriggers.trigger_pool[ player getentitynumber() ] [[ closest[ index ].prompt_and_visibility_func ]]( player ) ) + { + level._unitriggers.trigger_pool[ player getentitynumber() ] thread trigger_thread( closest[ index ].trigger_func ); + break; + } + else last_trigger = level._unitriggers.trigger_pool[ player getentitynumber() ]; + level._unitriggers.trigger_pool[ player getentitynumber() ].reassess_time = 1; + } + index++; + continue; + } + else + { + if ( !isDefined( closest[ index ].trigger ) ) + { + level._unitriggers.trigger_pool[ player getentitynumber() ] = build_trigger_from_unitrigger_stub( closest[ index ] ); + level._unitriggers.trigger_pool[ player getentitynumber() ].parent_player = player; + if ( !isDefined( closest[ index ].prompt_and_visibility_func ) || level._unitriggers.trigger_pool[ player getentitynumber() ] [[ closest[ index ].prompt_and_visibility_func ]]( player ) ) + { + level._unitriggers.trigger_pool[ player getentitynumber() ] thread trigger_thread( closest[ index ].trigger_func ); + break; + } + else last_trigger = level._unitriggers.trigger_pool[ player getentitynumber() ]; + level._unitriggers.trigger_pool[ player getentitynumber() ].reassess_time = 1; + } + } + index++; + wait 0,05; + } + wait 0,05; + i++; + } + wait 0,05; + } +} + +run_visibility_function_for_all_triggers() +{ + if ( !isDefined( self.prompt_and_visibility_func ) ) + { + return; + } + if ( isDefined( self.trigger_per_player ) && self.trigger_per_player ) + { + if ( !isDefined( self.playertrigger ) ) + { + return; + } + players = getplayers(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( self.playertrigger[ players[ i ] getentitynumber() ] ) ) + { + self.playertrigger[ players[ i ] getentitynumber() ] [[ self.prompt_and_visibility_func ]]( players[ i ] ); + } + i++; + } + } + else if ( isDefined( self.trigger ) ) + { + self.trigger [[ self.prompt_and_visibility_func ]]( getplayers()[ 0 ] ); + } +} + +build_trigger_from_unitrigger_stub( stub, player ) +{ + radius = stub.radius; + if ( !isDefined( radius ) ) + { + radius = 64; + } + script_height = stub.script_height; + if ( !isDefined( script_height ) ) + { + script_height = 64; + } + script_width = stub.script_width; + if ( !isDefined( script_width ) ) + { + script_width = 64; + } + script_length = stub.script_length; + if ( !isDefined( script_length ) ) + { + script_length = 64; + } + trigger = undefined; + origin = stub unitrigger_origin(); + switch( stub.script_unitrigger_type ) + { + case "unitrigger_radius": + trigger = spawn( "trigger_radius", origin, 0, radius, script_height ); + break; + case "unitrigger_radius_use": + trigger = spawn( "trigger_radius_use", origin, 0, radius, script_height ); + break; + case "unitrigger_box": + trigger = spawn( "trigger_box", origin, 0, script_width, script_length, script_height ); + break; + case "unitrigger_box_use": + trigger = spawn( "trigger_box_use", origin, 0, script_width, script_length, script_height ); + break; + } + if ( isDefined( trigger ) ) + { + if ( isDefined( stub.angles ) ) + { + trigger.angles = stub.angles; + } + if ( isDefined( stub.onspawnfunc ) ) + { + stub [[ stub.onspawnfunc ]]( trigger ); + } + if ( isDefined( stub.cursor_hint ) ) + { + trigger setcursorhint( stub.cursor_hint ); + } + trigger triggerignoreteam(); + if ( isDefined( stub.require_look_at ) && stub.require_look_at ) + { + trigger usetriggerrequirelookat(); + } + if ( isDefined( stub.hint_string ) ) + { + if ( isDefined( stub.cost ) ) + { + trigger sethintstring( stub.hint_string, stub.cost ); + } + else + { + trigger sethintstring( stub.hint_string ); + } + } + trigger.stub = stub; + } + copy_zombie_keys_onto_trigger( trigger, stub ); + if ( isDefined( stub.trigger_per_player ) && stub.trigger_per_player ) + { + if ( isDefined( trigger ) ) + { + trigger setinvisibletoall(); + trigger setvisibletoplayer( player ); + } + if ( !isDefined( stub.playertrigger ) ) + { + stub.playertrigger = []; + } + stub.playertrigger[ player getentitynumber() ] = trigger; + } + else + { + stub.trigger = trigger; + } + return trigger; +} + +copy_zombie_keys_onto_trigger( trig, stub ) +{ + trig.script_noteworthy = stub.script_noteworthy; + trig.targetname = stub.targetname; + trig.target = stub.target; + trig.zombie_weapon_upgrade = stub.zombie_weapon_upgrade; + trig.clientfieldname = stub.clientfieldname; + trig.usetime = stub.usetime; +} + +trigger_thread( trigger_func ) +{ + self endon( "kill_trigger" ); + if ( isDefined( trigger_func ) ) + { + self [[ trigger_func ]](); + } +} + +get_closest_unitrigger_index( org, array, dist ) +{ + if ( !isDefined( dist ) ) + { + dist = 9999999; + } + distsq = dist * dist; + if ( array.size < 1 ) + { + return; + } + index = undefined; + i = 0; + while ( i < array.size ) + { + origin = array[ i ] unitrigger_origin(); + radius_sq = array[ i ].test_radius_sq; + newdistsq = distance2dsquared( origin, org ); + if ( newdistsq >= radius_sq ) + { + i++; + continue; + } + else if ( newdistsq >= distsq ) + { + i++; + continue; + } + else + { + distsq = newdistsq; + index = i; + } + i++; + } + return index; +} + +get_closest_unitriggers( org, array, dist ) +{ + triggers = []; + if ( !isDefined( dist ) ) + { + dist = 9999999; + } + distsq = dist * dist; + if ( array.size < 1 ) + { + return triggers; + } + index = undefined; + i = 0; + while ( i < array.size ) + { + if ( !isDefined( array[ i ] ) ) + { + i++; + continue; + } + else origin = array[ i ] unitrigger_origin(); + radius_sq = array[ i ].test_radius_sq; + newdistsq = distance2dsquared( origin, org ); + if ( newdistsq >= radius_sq ) + { + i++; + continue; + } + else if ( abs( origin[ 2 ] - org[ 2 ] ) > 42 ) + { + i++; + continue; + } + else + { + array[ i ].dsquared = newdistsq; + j = 0; + while ( j < triggers.size && newdistsq > triggers[ j ].dsquared ) + { + j++; + } + arrayinsert( triggers, array[ i ], j ); + if ( ( i % 10 ) == 9 ) + { + wait 0,05; + } + } + i++; + } + return triggers; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_utility.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_utility.gsc new file mode 100644 index 0000000..1ce335d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_utility.gsc @@ -0,0 +1,5510 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/gametypes_zm/_hud_message; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_power; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_server_throttle; +#include maps/mp/animscripts/zm_utility; +#include maps/mp/animscripts/zm_run; +#include common_scripts/utility; +#include maps/mp/_utility; + +init_utility() +{ +} + +is_classic() +{ + var = getDvar( "ui_zm_gamemodegroup" ); + if ( var == "zclassic" ) + { + return 1; + } + return 0; +} + +is_standard() +{ + var = getDvar( "ui_gametype" ); + if ( var == "zstandard" ) + { + return 1; + } + return 0; +} + +convertsecondstomilliseconds( seconds ) +{ + return seconds * 1000; +} + +is_player() +{ + if ( !isplayer( self ) ) + { + if ( isDefined( self.pers ) ) + { + if ( isDefined( self.pers[ "isBot" ] ) ) + { + return self.pers[ "isBot" ]; + } + } + } +} + +lerp( chunk ) +{ + link = spawn( "script_origin", self getorigin() ); + link.angles = self.first_node.angles; + self linkto( link ); + link rotateto( self.first_node.angles, level._contextual_grab_lerp_time ); + link moveto( self.attacking_spot, level._contextual_grab_lerp_time ); + link waittill_multiple( "rotatedone", "movedone" ); + self unlink(); + link delete(); + return; +} + +clear_mature_blood() +{ + blood_patch = getentarray( "mature_blood", "targetname" ); + if ( is_mature() ) + { + return; + } + while ( isDefined( blood_patch ) ) + { + i = 0; + while ( i < blood_patch.size ) + { + blood_patch[ i ] delete(); + i++; + } + } +} + +recalc_zombie_array() +{ +} + +clear_all_corpses() +{ + corpse_array = getcorpsearray(); + i = 0; + while ( i < corpse_array.size ) + { + if ( isDefined( corpse_array[ i ] ) ) + { + corpse_array[ i ] delete(); + } + i++; + } +} + +get_current_corpse_count() +{ + corpse_array = getcorpsearray(); + if ( isDefined( corpse_array ) ) + { + return corpse_array.size; + } + return 0; +} + +get_current_actor_count() +{ + count = 0; + actors = getaispeciesarray( level.zombie_team, "all" ); + if ( isDefined( actors ) ) + { + count += actors.size; + } + count += get_current_corpse_count(); + return count; +} + +get_current_zombie_count() +{ + enemies = get_round_enemy_array(); + return enemies.size; +} + +get_round_enemy_array() +{ + enemies = []; + valid_enemies = []; + enemies = getaispeciesarray( level.zombie_team, "all" ); + i = 0; + while ( i < enemies.size ) + { + if ( isDefined( enemies[ i ].ignore_enemy_count ) && enemies[ i ].ignore_enemy_count ) + { + i++; + continue; + } + else + { + valid_enemies[ valid_enemies.size ] = enemies[ i ]; + } + i++; + } + return valid_enemies; +} + +init_zombie_run_cycle() +{ + if ( isDefined( level.speed_change_round ) ) + { + if ( level.round_number >= level.speed_change_round ) + { + speed_percent = 0,2 + ( ( level.round_number - level.speed_change_round ) * 0,2 ); + speed_percent = min( speed_percent, 1 ); + change_round_max = int( level.speed_change_max * speed_percent ); + change_left = change_round_max - level.speed_change_num; + if ( change_left == 0 ) + { + self set_zombie_run_cycle(); + return; + } + change_speed = randomint( 100 ); + if ( change_speed > 80 ) + { + self change_zombie_run_cycle(); + return; + } + zombie_count = get_current_zombie_count(); + zombie_left = level.zombie_ai_limit - zombie_count; + if ( zombie_left == change_left ) + { + self change_zombie_run_cycle(); + return; + } + } + } + self set_zombie_run_cycle(); +} + +change_zombie_run_cycle() +{ + level.speed_change_num++; + if ( level.gamedifficulty == 0 ) + { + self set_zombie_run_cycle( "sprint" ); + } + else + { + self set_zombie_run_cycle( "walk" ); + } + self thread speed_change_watcher(); +} + +speed_change_watcher() +{ + self waittill( "death" ); + if ( level.speed_change_num > 0 ) + { + level.speed_change_num--; + + } +} + +set_zombie_run_cycle( new_move_speed ) +{ + self.zombie_move_speed_original = self.zombie_move_speed; + if ( isDefined( new_move_speed ) ) + { + self.zombie_move_speed = new_move_speed; + } + else if ( level.gamedifficulty == 0 ) + { + self set_run_speed_easy(); + } + else + { + self set_run_speed(); + } + self maps/mp/animscripts/zm_run::needsupdate(); + self.deathanim = self maps/mp/animscripts/zm_utility::append_missing_legs_suffix( "zm_death" ); +} + +set_run_speed() +{ + rand = randomintrange( level.zombie_move_speed, level.zombie_move_speed + 35 ); + if ( rand <= 35 ) + { + self.zombie_move_speed = "walk"; + } + else if ( rand <= 70 ) + { + self.zombie_move_speed = "run"; + } + else + { + self.zombie_move_speed = "sprint"; + } +} + +set_run_speed_easy() +{ + rand = randomintrange( level.zombie_move_speed, level.zombie_move_speed + 25 ); + if ( rand <= 35 ) + { + self.zombie_move_speed = "walk"; + } + else + { + self.zombie_move_speed = "run"; + } +} + +spawn_zombie( spawner, target_name, spawn_point, round_number ) +{ + if ( !isDefined( spawner ) ) + { +/# + println( "ZM >> spawn_zombie - NO SPAWNER DEFINED" ); +#/ + return undefined; + } + while ( getfreeactorcount() < 1 ) + { + wait 0,05; + } + spawner.script_moveoverride = 1; + if ( isDefined( spawner.script_forcespawn ) && spawner.script_forcespawn ) + { + guy = spawner spawnactor(); + if ( isDefined( level.giveextrazombies ) ) + { + guy [[ level.giveextrazombies ]](); + } + guy enableaimassist(); + if ( isDefined( round_number ) ) + { + guy._starting_round_number = round_number; + } + guy.aiteam = level.zombie_team; + guy clearentityowner(); + level.zombiemeleeplayercounter = 0; + guy thread run_spawn_functions(); + guy forceteleport( spawner.origin ); + guy show(); + } + spawner.count = 666; + if ( !spawn_failed( guy ) ) + { + if ( isDefined( target_name ) ) + { + guy.targetname = target_name; + } + return guy; + } + return undefined; +} + +run_spawn_functions() +{ + self endon( "death" ); + waittillframeend; + i = 0; + while ( i < level.spawn_funcs[ self.team ].size ) + { + func = level.spawn_funcs[ self.team ][ i ]; + single_thread( self, func[ "function" ], func[ "param1" ], func[ "param2" ], func[ "param3" ], func[ "param4" ], func[ "param5" ] ); + i++; + } + if ( isDefined( self.spawn_funcs ) ) + { + i = 0; + while ( i < self.spawn_funcs.size ) + { + func = self.spawn_funcs[ i ]; + single_thread( self, func[ "function" ], func[ "param1" ], func[ "param2" ], func[ "param3" ], func[ "param4" ] ); + i++; + } +/# + self.saved_spawn_functions = self.spawn_funcs; +#/ + self.spawn_funcs = undefined; +/# + self.spawn_funcs = self.saved_spawn_functions; + self.saved_spawn_functions = undefined; +#/ + self.spawn_funcs = undefined; + } +} + +create_simple_hud( client, team ) +{ + if ( isDefined( team ) ) + { + hud = newteamhudelem( team ); + hud.team = team; + } + else if ( isDefined( client ) ) + { + hud = newclienthudelem( client ); + } + else + { + hud = newhudelem(); + } + level.hudelem_count++; + hud.foreground = 1; + hud.sort = 1; + hud.hidewheninmenu = 0; + return hud; +} + +destroy_hud() +{ + level.hudelem_count--; + + self destroy(); +} + +all_chunks_intact( barrier, barrier_chunks ) +{ + if ( isDefined( barrier.zbarrier ) ) + { + pieces = barrier.zbarrier getzbarrierpieceindicesinstate( "closed" ); + if ( pieces.size != barrier.zbarrier getnumzbarrierpieces() ) + { + return 0; + } + } + else + { + i = 0; + while ( i < barrier_chunks.size ) + { + if ( barrier_chunks[ i ] get_chunk_state() != "repaired" ) + { + return 0; + } + i++; + } + } + return 1; +} + +no_valid_repairable_boards( barrier, barrier_chunks ) +{ + if ( isDefined( barrier.zbarrier ) ) + { + pieces = barrier.zbarrier getzbarrierpieceindicesinstate( "open" ); + if ( pieces.size ) + { + return 0; + } + } + else + { + i = 0; + while ( i < barrier_chunks.size ) + { + if ( barrier_chunks[ i ] get_chunk_state() == "destroyed" ) + { + return 0; + } + i++; + } + } + return 1; +} + +is_survival() +{ + var = getDvar( "ui_zm_gamemodegroup" ); + if ( var == "zsurvival" ) + { + return 1; + } + return 0; +} + +is_encounter() +{ + if ( isDefined( level._is_encounter ) && level._is_encounter ) + { + return 1; + } + var = getDvar( "ui_zm_gamemodegroup" ); + if ( var == "zencounter" ) + { + level._is_encounter = 1; + return 1; + } + return 0; +} + +all_chunks_destroyed( barrier, barrier_chunks ) +{ + if ( isDefined( barrier.zbarrier ) ) + { + pieces = arraycombine( barrier.zbarrier getzbarrierpieceindicesinstate( "open" ), barrier.zbarrier getzbarrierpieceindicesinstate( "opening" ), 1, 0 ); + if ( pieces.size != barrier.zbarrier getnumzbarrierpieces() ) + { + return 0; + } + } + else + { + while ( isDefined( barrier_chunks ) ) + { +/# + assert( isDefined( barrier_chunks ), "_zm_utility::all_chunks_destroyed - Barrier chunks undefined" ); +#/ + i = 0; + while ( i < barrier_chunks.size ) + { + if ( barrier_chunks[ i ] get_chunk_state() != "destroyed" ) + { + return 0; + } + i++; + } + } + } + return 1; +} + +check_point_in_playable_area( origin ) +{ + playable_area = getentarray( "player_volume", "script_noteworthy" ); + check_model = spawn( "script_model", origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + valid_point = 0; + i = 0; + while ( i < playable_area.size ) + { + if ( check_model istouching( playable_area[ i ] ) ) + { + valid_point = 1; + } + i++; + } + check_model delete(); + return valid_point; +} + +check_point_in_enabled_zone( origin, zone_is_active, player_zones ) +{ + if ( !isDefined( player_zones ) ) + { + player_zones = getentarray( "player_volume", "script_noteworthy" ); + } + if ( !isDefined( level.zones ) || !isDefined( player_zones ) ) + { + return 1; + } + scr_org = spawn( "script_origin", origin + vectorScale( ( 0, 0, 1 ), 40 ) ); + one_valid_zone = 0; + i = 0; + while ( i < player_zones.size ) + { + if ( scr_org istouching( player_zones[ i ] ) ) + { + zone = level.zones[ player_zones[ i ].targetname ]; + if ( isDefined( zone ) && isDefined( zone.is_enabled ) && zone.is_enabled ) + { + if ( isDefined( zone_is_active ) && zone_is_active == 1 && isDefined( zone.is_active ) && !zone.is_active ) + { + i++; + continue; + } + else + { + one_valid_zone = 1; + break; + } + } + } + else + { + i++; + } + } + scr_org delete(); + return one_valid_zone; +} + +round_up_to_ten( score ) +{ + new_score = score - ( score % 10 ); + if ( new_score < score ) + { + new_score += 10; + } + return new_score; +} + +round_up_score( score, value ) +{ + score = int( score ); + new_score = score - ( score % value ); + if ( new_score < score ) + { + new_score += value; + } + return new_score; +} + +random_tan() +{ + rand = randomint( 100 ); + if ( isDefined( level.char_percent_override ) ) + { + percentnotcharred = level.char_percent_override; + } + else + { + percentnotcharred = 65; + } +} + +places_before_decimal( num ) +{ + abs_num = abs( num ); + count = 0; + while ( 1 ) + { + abs_num *= 0,1; + count += 1; + if ( abs_num < 1 ) + { + return count; + } + } +} + +create_zombie_point_of_interest( attract_dist, num_attractors, added_poi_value, start_turned_on, initial_attract_func, arrival_attract_func, poi_team ) +{ + if ( !isDefined( added_poi_value ) ) + { + self.added_poi_value = 0; + } + else + { + self.added_poi_value = added_poi_value; + } + if ( !isDefined( start_turned_on ) ) + { + start_turned_on = 1; + } + self.script_noteworthy = "zombie_poi"; + self.poi_active = start_turned_on; + if ( isDefined( attract_dist ) ) + { + self.poi_radius = attract_dist * attract_dist; + } + else + { + self.poi_radius = undefined; + } + self.num_poi_attracts = num_attractors; + self.attract_to_origin = 1; + self.attractor_array = []; + self.initial_attract_func = undefined; + self.arrival_attract_func = undefined; + if ( isDefined( poi_team ) ) + { + self._team = poi_team; + } + if ( isDefined( initial_attract_func ) ) + { + self.initial_attract_func = initial_attract_func; + } + if ( isDefined( arrival_attract_func ) ) + { + self.arrival_attract_func = arrival_attract_func; + } +} + +create_zombie_point_of_interest_attractor_positions( num_attract_dists, diff_per_dist, attractor_width ) +{ + self endon( "death" ); + forward = ( 0, 0, 1 ); + if ( !isDefined( self.num_poi_attracts ) || isDefined( self.script_noteworthy ) && self.script_noteworthy != "zombie_poi" ) + { + return; + } + if ( !isDefined( num_attract_dists ) ) + { + num_attract_dists = 4; + } + if ( !isDefined( diff_per_dist ) ) + { + diff_per_dist = 45; + } + if ( !isDefined( attractor_width ) ) + { + attractor_width = 45; + } + self.attract_to_origin = 0; + self.num_attract_dists = num_attract_dists; + self.last_index = []; + i = 0; + while ( i < num_attract_dists ) + { + self.last_index[ i ] = -1; + i++; + } + self.attract_dists = []; + i = 0; + while ( i < self.num_attract_dists ) + { + self.attract_dists[ i ] = diff_per_dist * ( i + 1 ); + i++; + } + max_positions = []; + i = 0; + while ( i < self.num_attract_dists ) + { + max_positions[ i ] = int( ( 6,28 * self.attract_dists[ i ] ) / attractor_width ); + i++; + } + num_attracts_per_dist = self.num_poi_attracts / self.num_attract_dists; + self.max_attractor_dist = self.attract_dists[ self.attract_dists.size - 1 ] * 1,1; + diff = 0; + actual_num_positions = []; + i = 0; + while ( i < self.num_attract_dists ) + { + if ( num_attracts_per_dist > ( max_positions[ i ] + diff ) ) + { + actual_num_positions[ i ] = max_positions[ i ]; + diff += num_attracts_per_dist - max_positions[ i ]; + i++; + continue; + } + else + { + actual_num_positions[ i ] = num_attracts_per_dist + diff; + diff = 0; + } + i++; + } + self.attractor_positions = []; + failed = 0; + angle_offset = 0; + prev_last_index = -1; + j = 0; + while ( j < 4 ) + { + if ( ( actual_num_positions[ j ] + failed ) < max_positions[ j ] ) + { + actual_num_positions[ j ] += failed; + failed = 0; + } + else + { + if ( actual_num_positions[ j ] < max_positions[ j ] ) + { + actual_num_positions[ j ] = max_positions[ j ]; + failed = max_positions[ j ] - actual_num_positions[ j ]; + } + } + failed += self generated_radius_attract_positions( forward, angle_offset, actual_num_positions[ j ], self.attract_dists[ j ] ); + angle_offset += 15; + self.last_index[ j ] = int( ( actual_num_positions[ j ] - failed ) + prev_last_index ); + prev_last_index = self.last_index[ j ]; + j++; + } + self notify( "attractor_positions_generated" ); + level notify( "attractor_positions_generated" ); +} + +generated_radius_attract_positions( forward, offset, num_positions, attract_radius ) +{ + self endon( "death" ); + epsilon = 0,1; + failed = 0; + degs_per_pos = 360 / num_positions; + i = offset; + while ( i < ( 360 + offset ) ) + { + altforward = forward * attract_radius; + rotated_forward = ( ( cos( i ) * altforward[ 0 ] ) - ( sin( i ) * altforward[ 1 ] ), ( sin( i ) * altforward[ 0 ] ) + ( cos( i ) * altforward[ 1 ] ), altforward[ 2 ] ); + if ( isDefined( level.poi_positioning_func ) ) + { + pos = [[ level.poi_positioning_func ]]( self.origin, rotated_forward ); + } + else if ( isDefined( level.use_alternate_poi_positioning ) && level.use_alternate_poi_positioning ) + { + pos = maps/mp/zombies/_zm_server_throttle::server_safe_ground_trace( "poi_trace", 10, self.origin + rotated_forward + vectorScale( ( 0, 0, 1 ), 10 ) ); + } + else + { + pos = maps/mp/zombies/_zm_server_throttle::server_safe_ground_trace( "poi_trace", 10, self.origin + rotated_forward + vectorScale( ( 0, 0, 1 ), 100 ) ); + } + if ( !isDefined( pos ) ) + { + failed++; + } + else if ( isDefined( level.use_alternate_poi_positioning ) && level.use_alternate_poi_positioning ) + { + if ( isDefined( self ) && isDefined( self.origin ) ) + { + if ( self.origin[ 2 ] >= ( pos[ 2 ] - epsilon ) && ( self.origin[ 2 ] - pos[ 2 ] ) <= 150 ) + { + pos_array = []; + pos_array[ 0 ] = pos; + pos_array[ 1 ] = self; + self.attractor_positions[ self.attractor_positions.size ] = pos_array; + } + } + else + { + failed++; + } + } + else + { + if ( abs( pos[ 2 ] - self.origin[ 2 ] ) < 60 ) + { + pos_array = []; + pos_array[ 0 ] = pos; + pos_array[ 1 ] = self; + self.attractor_positions[ self.attractor_positions.size ] = pos_array; + break; + } + else + { + failed++; + } + } + i += degs_per_pos; + } + return failed; +} + +debug_draw_attractor_positions() +{ +/# + while ( 1 ) + { + for ( ;; ) + { + while ( !isDefined( self.attractor_positions ) ) + { + wait 0,05; + } + } + i = 0; + while ( i < self.attractor_positions.size ) + { + line( self.origin, self.attractor_positions[ i ][ 0 ], ( 0, 0, 1 ), 1, 1 ); + i++; + } + wait 0,05; + if ( !isDefined( self ) ) + { + return; + } +#/ + } +} + +get_zombie_point_of_interest( origin, poi_array ) +{ + if ( isDefined( self.ignore_all_poi ) && self.ignore_all_poi ) + { + return undefined; + } + curr_radius = undefined; + if ( isDefined( poi_array ) ) + { + ent_array = poi_array; + } + else + { + ent_array = getentarray( "zombie_poi", "script_noteworthy" ); + } + best_poi = undefined; + position = undefined; + best_dist = 100000000; + i = 0; + while ( i < ent_array.size ) + { + if ( !isDefined( ent_array[ i ].poi_active ) || !ent_array[ i ].poi_active ) + { + i++; + continue; + } + else + { + if ( isDefined( self.ignore_poi_targetname ) && self.ignore_poi_targetname.size > 0 ) + { + if ( isDefined( ent_array[ i ].targetname ) ) + { + ignore = 0; + j = 0; + while ( j < self.ignore_poi_targetname.size ) + { + if ( ent_array[ i ].targetname == self.ignore_poi_targetname[ j ] ) + { + ignore = 1; + break; + } + else + { + j++; + } + } + if ( ignore ) + { + i++; + continue; + } + } + } + else if ( isDefined( self.ignore_poi ) && self.ignore_poi.size > 0 ) + { + ignore = 0; + j = 0; + while ( j < self.ignore_poi.size ) + { + if ( self.ignore_poi[ j ] == ent_array[ i ] ) + { + ignore = 1; + break; + } + else + { + j++; + } + } + if ( ignore ) + { + i++; + continue; + } + } + else + { + dist = distancesquared( origin, ent_array[ i ].origin ); + dist -= ent_array[ i ].added_poi_value; + if ( isDefined( ent_array[ i ].poi_radius ) ) + { + curr_radius = ent_array[ i ].poi_radius; + } + if ( isDefined( curr_radius ) && dist < curr_radius && dist < best_dist && ent_array[ i ] can_attract( self ) ) + { + best_poi = ent_array[ i ]; + best_dist = dist; + } + } + } + i++; + } + if ( isDefined( best_poi ) ) + { + if ( isDefined( best_poi._team ) ) + { + if ( isDefined( self._race_team ) && self._race_team != best_poi._team ) + { + return undefined; + } + } + if ( isDefined( best_poi._new_ground_trace ) && best_poi._new_ground_trace ) + { + position = []; + position[ 0 ] = groundpos_ignore_water_new( best_poi.origin + vectorScale( ( 0, 0, 1 ), 100 ) ); + position[ 1 ] = self; + } + else + { + if ( isDefined( best_poi.attract_to_origin ) && best_poi.attract_to_origin ) + { + position = []; + position[ 0 ] = groundpos( best_poi.origin + vectorScale( ( 0, 0, 1 ), 100 ) ); + position[ 1 ] = self; + } + else + { + position = self add_poi_attractor( best_poi ); + } + } + if ( isDefined( best_poi.initial_attract_func ) ) + { + self thread [[ best_poi.initial_attract_func ]]( best_poi ); + } + if ( isDefined( best_poi.arrival_attract_func ) ) + { + self thread [[ best_poi.arrival_attract_func ]]( best_poi ); + } + } + return position; +} + +activate_zombie_point_of_interest() +{ + if ( self.script_noteworthy != "zombie_poi" ) + { + return; + } + self.poi_active = 1; +} + +deactivate_zombie_point_of_interest() +{ + if ( self.script_noteworthy != "zombie_poi" ) + { + return; + } + i = 0; + while ( i < self.attractor_array.size ) + { + self.attractor_array[ i ] notify( "kill_poi" ); + i++; + } + self.attractor_array = []; + self.claimed_attractor_positions = []; + self.poi_active = 0; +} + +assign_zombie_point_of_interest( origin, poi ) +{ + position = undefined; + doremovalthread = 0; + if ( isDefined( poi ) && poi can_attract( self ) ) + { + if ( !isDefined( poi.attractor_array ) || isDefined( poi.attractor_array ) && array_check_for_dupes( poi.attractor_array, self ) ) + { + doremovalthread = 1; + } + position = self add_poi_attractor( poi ); + if ( isDefined( position ) && doremovalthread && !array_check_for_dupes( poi.attractor_array, self ) ) + { + self thread update_on_poi_removal( poi ); + } + } + return position; +} + +remove_poi_attractor( zombie_poi ) +{ + if ( !isDefined( zombie_poi.attractor_array ) ) + { + return; + } + i = 0; + while ( i < zombie_poi.attractor_array.size ) + { + if ( zombie_poi.attractor_array[ i ] == self ) + { + self notify( "kill_poi" ); + arrayremovevalue( zombie_poi.attractor_array, zombie_poi.attractor_array[ i ] ); + arrayremovevalue( zombie_poi.claimed_attractor_positions, zombie_poi.claimed_attractor_positions[ i ] ); + } + i++; + } +} + +array_check_for_dupes_using_compare( array, single, is_equal_fn ) +{ + i = 0; + while ( i < array.size ) + { + if ( [[ is_equal_fn ]]( array[ i ], single ) ) + { + return 0; + } + i++; + } + return 1; +} + +poi_locations_equal( loc1, loc2 ) +{ + return loc1[ 0 ] == loc2[ 0 ]; +} + +add_poi_attractor( zombie_poi ) +{ + if ( !isDefined( zombie_poi ) ) + { + return; + } + if ( !isDefined( zombie_poi.attractor_array ) ) + { + zombie_poi.attractor_array = []; + } + if ( array_check_for_dupes( zombie_poi.attractor_array, self ) ) + { + if ( !isDefined( zombie_poi.claimed_attractor_positions ) ) + { + zombie_poi.claimed_attractor_positions = []; + } + if ( !isDefined( zombie_poi.attractor_positions ) || zombie_poi.attractor_positions.size <= 0 ) + { + return undefined; + } + start = -1; + end = -1; + last_index = -1; + i = 0; + while ( i < 4 ) + { + if ( zombie_poi.claimed_attractor_positions.size < zombie_poi.last_index[ i ] ) + { + start = last_index + 1; + end = zombie_poi.last_index[ i ]; + break; + } + else + { + last_index = zombie_poi.last_index[ i ]; + i++; + } + } + best_dist = 100000000; + best_pos = undefined; + if ( start < 0 ) + { + start = 0; + } + if ( end < 0 ) + { + return undefined; + } + i = int( start ); + while ( i <= int( end ) ) + { + if ( !isDefined( zombie_poi.attractor_positions[ i ] ) ) + { + i++; + continue; + } + else + { + if ( array_check_for_dupes_using_compare( zombie_poi.claimed_attractor_positions, zombie_poi.attractor_positions[ i ], ::poi_locations_equal ) ) + { + if ( isDefined( zombie_poi.attractor_positions[ i ][ 0 ] ) && isDefined( self.origin ) ) + { + dist = distancesquared( zombie_poi.attractor_positions[ i ][ 0 ], self.origin ); + if ( dist < best_dist || !isDefined( best_pos ) ) + { + best_dist = dist; + best_pos = zombie_poi.attractor_positions[ i ]; + } + } + } + } + i++; + } + if ( !isDefined( best_pos ) ) + { + return undefined; + } + zombie_poi.attractor_array[ zombie_poi.attractor_array.size ] = self; + self thread update_poi_on_death( zombie_poi ); + zombie_poi.claimed_attractor_positions[ zombie_poi.claimed_attractor_positions.size ] = best_pos; + return best_pos; + } + else + { + i = 0; + while ( i < zombie_poi.attractor_array.size ) + { + if ( zombie_poi.attractor_array[ i ] == self ) + { + if ( isDefined( zombie_poi.claimed_attractor_positions ) && isDefined( zombie_poi.claimed_attractor_positions[ i ] ) ) + { + return zombie_poi.claimed_attractor_positions[ i ]; + } + } + i++; + } + } + return undefined; +} + +can_attract( attractor ) +{ + if ( !isDefined( self.attractor_array ) ) + { + self.attractor_array = []; + } + if ( isDefined( self.attracted_array ) && !isinarray( self.attracted_array, attractor ) ) + { + return 0; + } + if ( !array_check_for_dupes( self.attractor_array, attractor ) ) + { + return 1; + } + if ( isDefined( self.num_poi_attracts ) && self.attractor_array.size >= self.num_poi_attracts ) + { + return 0; + } + return 1; +} + +update_poi_on_death( zombie_poi ) +{ + self endon( "kill_poi" ); + self waittill( "death" ); + self remove_poi_attractor( zombie_poi ); +} + +update_on_poi_removal( zombie_poi ) +{ + zombie_poi waittill( "death" ); + if ( !isDefined( zombie_poi.attractor_array ) ) + { + return; + } + i = 0; + while ( i < zombie_poi.attractor_array.size ) + { + if ( zombie_poi.attractor_array[ i ] == self ) + { + arrayremoveindex( zombie_poi.attractor_array, i ); + arrayremoveindex( zombie_poi.claimed_attractor_positions, i ); + } + i++; + } +} + +invalidate_attractor_pos( attractor_pos, zombie ) +{ + if ( !isDefined( self ) || !isDefined( attractor_pos ) ) + { + wait 0,1; + return undefined; + } + if ( isDefined( self.attractor_positions ) && !array_check_for_dupes_using_compare( self.attractor_positions, attractor_pos, ::poi_locations_equal ) ) + { + index = 0; + i = 0; + while ( i < self.attractor_positions.size ) + { + if ( poi_locations_equal( self.attractor_positions[ i ], attractor_pos ) ) + { + index = i; + } + i++; + } + i = 0; + while ( i < self.last_index.size ) + { + if ( index <= self.last_index[ i ] ) + { + self.last_index[ i ]--; + + } + i++; + } + arrayremovevalue( self.attractor_array, zombie ); + arrayremovevalue( self.attractor_positions, attractor_pos ); + i = 0; + while ( i < self.claimed_attractor_positions.size ) + { + if ( self.claimed_attractor_positions[ i ][ 0 ] == attractor_pos[ 0 ] ) + { + arrayremovevalue( self.claimed_attractor_positions, self.claimed_attractor_positions[ i ] ); + } + i++; + } + } + else wait 0,1; + return get_zombie_point_of_interest( zombie.origin ); +} + +remove_poi_from_ignore_list( poi ) +{ + while ( isDefined( self.ignore_poi ) && self.ignore_poi.size > 0 ) + { + i = 0; + while ( i < self.ignore_poi.size ) + { + if ( self.ignore_poi[ i ] == poi ) + { + arrayremovevalue( self.ignore_poi, self.ignore_poi[ i ] ); + return; + } + i++; + } + } +} + +add_poi_to_ignore_list( poi ) +{ + if ( !isDefined( self.ignore_poi ) ) + { + self.ignore_poi = []; + } + add_poi = 1; + while ( self.ignore_poi.size > 0 ) + { + i = 0; + while ( i < self.ignore_poi.size ) + { + if ( self.ignore_poi[ i ] == poi ) + { + add_poi = 0; + break; + } + else + { + i++; + } + } + } + if ( add_poi ) + { + self.ignore_poi[ self.ignore_poi.size ] = poi; + } +} + +get_path_length_to_enemy( enemy ) +{ + path_length = self calcpathlength( enemy.origin ); + return path_length; +} + +get_closest_player_using_paths( origin, players ) +{ + min_length_to_player = 9999999; + player_to_return = undefined; + i = 0; + while ( i < players.size ) + { + player = players[ i ]; + length_to_player = get_path_length_to_enemy( player ); + if ( isDefined( level.validate_enemy_path_length ) ) + { + if ( length_to_player == 0 ) + { + valid = self thread [[ level.validate_enemy_path_length ]]( player ); + if ( !valid ) + { + i++; + continue; + } + } + } + else + { + if ( length_to_player < min_length_to_player ) + { + min_length_to_player = length_to_player; + player_to_return = player; + } + } + i++; + } + return player_to_return; +} + +get_closest_valid_player( origin, ignore_player ) +{ + valid_player_found = 0; + players = get_players(); + if ( isDefined( level._zombie_using_humangun ) && level._zombie_using_humangun ) + { + players = arraycombine( players, level._zombie_human_array, 0, 0 ); + } + while ( isDefined( ignore_player ) ) + { + i = 0; + while ( i < ignore_player.size ) + { + arrayremovevalue( players, ignore_player[ i ] ); + i++; + } + } + while ( !valid_player_found ) + { + if ( isDefined( level.closest_player_override ) ) + { + player = [[ level.closest_player_override ]]( origin, players ); + } + else if ( isDefined( level.calc_closest_player_using_paths ) && level.calc_closest_player_using_paths ) + { + player = get_closest_player_using_paths( origin, players ); + } + else + { + player = getclosest( origin, players ); + } + if ( !isDefined( player ) ) + { + return undefined; + } + if ( isDefined( level._zombie_using_humangun ) && level._zombie_using_humangun && isai( player ) ) + { + return player; + } + while ( !is_player_valid( player, 1 ) ) + { + arrayremovevalue( players, player ); + } + return player; + } +} + +is_player_valid( player, checkignoremeflag, ignore_laststand_players ) +{ + if ( !isDefined( player ) ) + { + return 0; + } + if ( !isalive( player ) ) + { + return 0; + } + if ( !isplayer( player ) ) + { + return 0; + } + if ( isDefined( player.is_zombie ) && player.is_zombie == 1 ) + { + return 0; + } + if ( player.sessionstate == "spectator" ) + { + return 0; + } + if ( player.sessionstate == "intermission" ) + { + return 0; + } + if ( isDefined( self.intermission ) && self.intermission ) + { + return 0; + } + if ( isDefined( ignore_laststand_players ) && !ignore_laststand_players ) + { + if ( player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + return 0; + } + } + if ( isDefined( checkignoremeflag ) && checkignoremeflag && player.ignoreme ) + { + return 0; + } + if ( isDefined( level.is_player_valid_override ) ) + { + return [[ level.is_player_valid_override ]]( player ); + } + return 1; +} + +get_number_of_valid_players() +{ + players = get_players(); + num_player_valid = 0; + i = 0; + while ( i < players.size ) + { + if ( is_player_valid( players[ i ] ) ) + { + num_player_valid += 1; + } + i++; + } + return num_player_valid; +} + +in_revive_trigger() +{ + if ( isDefined( self.rt_time ) && ( self.rt_time + 100 ) >= getTime() ) + { + return self.in_rt_cached; + } + self.rt_time = getTime(); + players = level.players; + i = 0; + while ( i < players.size ) + { + current_player = players[ i ]; + if ( isDefined( current_player ) && isDefined( current_player.revivetrigger ) && isalive( current_player ) ) + { + if ( self istouching( current_player.revivetrigger ) ) + { + self.in_rt_cached = 1; + return 1; + } + } + i++; + } + self.in_rt_cached = 0; + return 0; +} + +get_closest_node( org, nodes ) +{ + return getclosest( org, nodes ); +} + +non_destroyed_bar_board_order( origin, chunks ) +{ + first_bars = []; + first_bars1 = []; + first_bars2 = []; + i = 0; + while ( i < chunks.size ) + { + if ( isDefined( chunks[ i ].script_team ) && chunks[ i ].script_team == "classic_boards" ) + { + if ( isDefined( chunks[ i ].script_parameters ) && chunks[ i ].script_parameters == "board" ) + { + return get_closest_2d( origin, chunks ); + } + else + { + if ( isDefined( chunks[ i ].script_team ) && chunks[ i ].script_team != "bar_board_variant1" && chunks[ i ].script_team != "bar_board_variant2" || chunks[ i ].script_team == "bar_board_variant4" && chunks[ i ].script_team == "bar_board_variant5" ) + { + return undefined; + } + } + } + else + { + if ( isDefined( chunks[ i ].script_team ) && chunks[ i ].script_team == "new_barricade" ) + { + if ( isDefined( chunks[ i ].script_parameters ) || chunks[ i ].script_parameters == "repair_board" && chunks[ i ].script_parameters == "barricade_vents" ) + { + return get_closest_2d( origin, chunks ); + } + } + } + i++; + } + i = 0; + while ( i < chunks.size ) + { + if ( isDefined( chunks[ i ].script_team ) || chunks[ i ].script_team == "6_bars_bent" && chunks[ i ].script_team == "6_bars_prestine" ) + { + if ( isDefined( chunks[ i ].script_parameters ) && chunks[ i ].script_parameters == "bar" ) + { + if ( isDefined( chunks[ i ].script_noteworthy ) ) + { + if ( chunks[ i ].script_noteworthy == "4" || chunks[ i ].script_noteworthy == "6" ) + { + first_bars[ first_bars.size ] = chunks[ i ]; + } + } + } + } + i++; + } + i = 0; + while ( i < first_bars.size ) + { + if ( isDefined( chunks[ i ].script_team ) || chunks[ i ].script_team == "6_bars_bent" && chunks[ i ].script_team == "6_bars_prestine" ) + { + if ( isDefined( chunks[ i ].script_parameters ) && chunks[ i ].script_parameters == "bar" ) + { + if ( !first_bars[ i ].destroyed ) + { + return first_bars[ i ]; + } + } + } + i++; + } + i = 0; + while ( i < chunks.size ) + { + if ( isDefined( chunks[ i ].script_team ) || chunks[ i ].script_team == "6_bars_bent" && chunks[ i ].script_team == "6_bars_prestine" ) + { + if ( isDefined( chunks[ i ].script_parameters ) && chunks[ i ].script_parameters == "bar" ) + { + if ( !chunks[ i ].destroyed ) + { + return get_closest_2d( origin, chunks ); + } + } + } + i++; + } +} + +non_destroyed_grate_order( origin, chunks_grate ) +{ + grate_order = []; + grate_order1 = []; + grate_order2 = []; + grate_order3 = []; + grate_order4 = []; + grate_order5 = []; + grate_order6 = []; + while ( isDefined( chunks_grate ) ) + { + i = 0; + while ( i < chunks_grate.size ) + { + if ( isDefined( chunks_grate[ i ].script_parameters ) && chunks_grate[ i ].script_parameters == "grate" ) + { + if ( isDefined( chunks_grate[ i ].script_noteworthy ) && chunks_grate[ i ].script_noteworthy == "1" ) + { + grate_order1[ grate_order1.size ] = chunks_grate[ i ]; + } + if ( isDefined( chunks_grate[ i ].script_noteworthy ) && chunks_grate[ i ].script_noteworthy == "2" ) + { + grate_order2[ grate_order2.size ] = chunks_grate[ i ]; + } + if ( isDefined( chunks_grate[ i ].script_noteworthy ) && chunks_grate[ i ].script_noteworthy == "3" ) + { + grate_order3[ grate_order3.size ] = chunks_grate[ i ]; + } + if ( isDefined( chunks_grate[ i ].script_noteworthy ) && chunks_grate[ i ].script_noteworthy == "4" ) + { + grate_order4[ grate_order4.size ] = chunks_grate[ i ]; + } + if ( isDefined( chunks_grate[ i ].script_noteworthy ) && chunks_grate[ i ].script_noteworthy == "5" ) + { + grate_order5[ grate_order5.size ] = chunks_grate[ i ]; + } + if ( isDefined( chunks_grate[ i ].script_noteworthy ) && chunks_grate[ i ].script_noteworthy == "6" ) + { + grate_order6[ grate_order6.size ] = chunks_grate[ i ]; + } + } + i++; + } + i = 0; + while ( i < chunks_grate.size ) + { + if ( isDefined( chunks_grate[ i ].script_parameters ) && chunks_grate[ i ].script_parameters == "grate" ) + { + if ( isDefined( grate_order1[ i ] ) ) + { + if ( grate_order1[ i ].state == "repaired" ) + { + grate_order2[ i ] thread show_grate_pull(); + return grate_order1[ i ]; + } + if ( grate_order2[ i ].state == "repaired" ) + { +/# + iprintlnbold( " pull bar2 " ); +#/ + grate_order3[ i ] thread show_grate_pull(); + return grate_order2[ i ]; + } + else + { + if ( grate_order3[ i ].state == "repaired" ) + { +/# + iprintlnbold( " pull bar3 " ); +#/ + grate_order4[ i ] thread show_grate_pull(); + return grate_order3[ i ]; + } + else + { + if ( grate_order4[ i ].state == "repaired" ) + { +/# + iprintlnbold( " pull bar4 " ); +#/ + grate_order5[ i ] thread show_grate_pull(); + return grate_order4[ i ]; + } + else + { + if ( grate_order5[ i ].state == "repaired" ) + { +/# + iprintlnbold( " pull bar5 " ); +#/ + grate_order6[ i ] thread show_grate_pull(); + return grate_order5[ i ]; + } + else + { + if ( grate_order6[ i ].state == "repaired" ) + { + return grate_order6[ i ]; + } + } + } + } + } + } + } + i++; + } + } +} + +non_destroyed_variant1_order( origin, chunks_variant1 ) +{ + variant1_order = []; + variant1_order1 = []; + variant1_order2 = []; + variant1_order3 = []; + variant1_order4 = []; + variant1_order5 = []; + variant1_order6 = []; + while ( isDefined( chunks_variant1 ) ) + { + i = 0; + while ( i < chunks_variant1.size ) + { + if ( isDefined( chunks_variant1[ i ].script_team ) && chunks_variant1[ i ].script_team == "bar_board_variant1" ) + { + if ( isDefined( chunks_variant1[ i ].script_noteworthy ) ) + { + if ( chunks_variant1[ i ].script_noteworthy == "1" ) + { + variant1_order1[ variant1_order1.size ] = chunks_variant1[ i ]; + } + if ( chunks_variant1[ i ].script_noteworthy == "2" ) + { + variant1_order2[ variant1_order2.size ] = chunks_variant1[ i ]; + } + if ( chunks_variant1[ i ].script_noteworthy == "3" ) + { + variant1_order3[ variant1_order3.size ] = chunks_variant1[ i ]; + } + if ( chunks_variant1[ i ].script_noteworthy == "4" ) + { + variant1_order4[ variant1_order4.size ] = chunks_variant1[ i ]; + } + if ( chunks_variant1[ i ].script_noteworthy == "5" ) + { + variant1_order5[ variant1_order5.size ] = chunks_variant1[ i ]; + } + if ( chunks_variant1[ i ].script_noteworthy == "6" ) + { + variant1_order6[ variant1_order6.size ] = chunks_variant1[ i ]; + } + } + } + i++; + } + i = 0; + while ( i < chunks_variant1.size ) + { + if ( isDefined( chunks_variant1[ i ].script_team ) && chunks_variant1[ i ].script_team == "bar_board_variant1" ) + { + if ( isDefined( variant1_order2[ i ] ) ) + { + if ( variant1_order2[ i ].state == "repaired" ) + { + return variant1_order2[ i ]; + } + else + { + if ( variant1_order3[ i ].state == "repaired" ) + { + return variant1_order3[ i ]; + } + else + { + if ( variant1_order4[ i ].state == "repaired" ) + { + return variant1_order4[ i ]; + } + else + { + if ( variant1_order6[ i ].state == "repaired" ) + { + return variant1_order6[ i ]; + } + else + { + if ( variant1_order5[ i ].state == "repaired" ) + { + return variant1_order5[ i ]; + } + else + { + if ( variant1_order1[ i ].state == "repaired" ) + { + return variant1_order1[ i ]; + } + } + } + } + } + } + } + } + i++; + } + } +} + +non_destroyed_variant2_order( origin, chunks_variant2 ) +{ + variant2_order = []; + variant2_order1 = []; + variant2_order2 = []; + variant2_order3 = []; + variant2_order4 = []; + variant2_order5 = []; + variant2_order6 = []; + while ( isDefined( chunks_variant2 ) ) + { + i = 0; + while ( i < chunks_variant2.size ) + { + if ( isDefined( chunks_variant2[ i ].script_team ) && chunks_variant2[ i ].script_team == "bar_board_variant2" ) + { + if ( isDefined( chunks_variant2[ i ].script_noteworthy ) && chunks_variant2[ i ].script_noteworthy == "1" ) + { + variant2_order1[ variant2_order1.size ] = chunks_variant2[ i ]; + } + if ( isDefined( chunks_variant2[ i ].script_noteworthy ) && chunks_variant2[ i ].script_noteworthy == "2" ) + { + variant2_order2[ variant2_order2.size ] = chunks_variant2[ i ]; + } + if ( isDefined( chunks_variant2[ i ].script_noteworthy ) && chunks_variant2[ i ].script_noteworthy == "3" ) + { + variant2_order3[ variant2_order3.size ] = chunks_variant2[ i ]; + } + if ( isDefined( chunks_variant2[ i ].script_noteworthy ) && chunks_variant2[ i ].script_noteworthy == "4" ) + { + variant2_order4[ variant2_order4.size ] = chunks_variant2[ i ]; + } + if ( isDefined( chunks_variant2[ i ].script_noteworthy ) && chunks_variant2[ i ].script_noteworthy == "5" && isDefined( chunks_variant2[ i ].script_location ) && chunks_variant2[ i ].script_location == "5" ) + { + variant2_order5[ variant2_order5.size ] = chunks_variant2[ i ]; + } + if ( isDefined( chunks_variant2[ i ].script_noteworthy ) && chunks_variant2[ i ].script_noteworthy == "5" && isDefined( chunks_variant2[ i ].script_location ) && chunks_variant2[ i ].script_location == "6" ) + { + variant2_order6[ variant2_order6.size ] = chunks_variant2[ i ]; + } + } + i++; + } + i = 0; + while ( i < chunks_variant2.size ) + { + if ( isDefined( chunks_variant2[ i ].script_team ) && chunks_variant2[ i ].script_team == "bar_board_variant2" ) + { + if ( isDefined( variant2_order1[ i ] ) ) + { + if ( variant2_order1[ i ].state == "repaired" ) + { + return variant2_order1[ i ]; + } + else + { + if ( variant2_order2[ i ].state == "repaired" ) + { + return variant2_order2[ i ]; + } + else + { + if ( variant2_order3[ i ].state == "repaired" ) + { + return variant2_order3[ i ]; + } + else + { + if ( variant2_order5[ i ].state == "repaired" ) + { + return variant2_order5[ i ]; + } + else + { + if ( variant2_order4[ i ].state == "repaired" ) + { + return variant2_order4[ i ]; + } + else + { + if ( variant2_order6[ i ].state == "repaired" ) + { + return variant2_order6[ i ]; + } + } + } + } + } + } + } + } + i++; + } + } +} + +non_destroyed_variant4_order( origin, chunks_variant4 ) +{ + variant4_order = []; + variant4_order1 = []; + variant4_order2 = []; + variant4_order3 = []; + variant4_order4 = []; + variant4_order5 = []; + variant4_order6 = []; + while ( isDefined( chunks_variant4 ) ) + { + i = 0; + while ( i < chunks_variant4.size ) + { + if ( isDefined( chunks_variant4[ i ].script_team ) && chunks_variant4[ i ].script_team == "bar_board_variant4" ) + { + if ( isDefined( chunks_variant4[ i ].script_noteworthy ) && chunks_variant4[ i ].script_noteworthy == "1" && !isDefined( chunks_variant4[ i ].script_location ) ) + { + variant4_order1[ variant4_order1.size ] = chunks_variant4[ i ]; + } + if ( isDefined( chunks_variant4[ i ].script_noteworthy ) && chunks_variant4[ i ].script_noteworthy == "2" ) + { + variant4_order2[ variant4_order2.size ] = chunks_variant4[ i ]; + } + if ( isDefined( chunks_variant4[ i ].script_noteworthy ) && chunks_variant4[ i ].script_noteworthy == "3" ) + { + variant4_order3[ variant4_order3.size ] = chunks_variant4[ i ]; + } + if ( isDefined( chunks_variant4[ i ].script_noteworthy ) && chunks_variant4[ i ].script_noteworthy == "1" && isDefined( chunks_variant4[ i ].script_location ) && chunks_variant4[ i ].script_location == "3" ) + { + variant4_order4[ variant4_order4.size ] = chunks_variant4[ i ]; + } + if ( isDefined( chunks_variant4[ i ].script_noteworthy ) && chunks_variant4[ i ].script_noteworthy == "5" ) + { + variant4_order5[ variant4_order5.size ] = chunks_variant4[ i ]; + } + if ( isDefined( chunks_variant4[ i ].script_noteworthy ) && chunks_variant4[ i ].script_noteworthy == "6" ) + { + variant4_order6[ variant4_order6.size ] = chunks_variant4[ i ]; + } + } + i++; + } + i = 0; + while ( i < chunks_variant4.size ) + { + if ( isDefined( chunks_variant4[ i ].script_team ) && chunks_variant4[ i ].script_team == "bar_board_variant4" ) + { + if ( isDefined( variant4_order1[ i ] ) ) + { + if ( variant4_order1[ i ].state == "repaired" ) + { + return variant4_order1[ i ]; + } + else + { + if ( variant4_order6[ i ].state == "repaired" ) + { + return variant4_order6[ i ]; + } + else + { + if ( variant4_order3[ i ].state == "repaired" ) + { + return variant4_order3[ i ]; + } + else + { + if ( variant4_order4[ i ].state == "repaired" ) + { + return variant4_order4[ i ]; + } + else + { + if ( variant4_order2[ i ].state == "repaired" ) + { + return variant4_order2[ i ]; + } + else + { + if ( variant4_order5[ i ].state == "repaired" ) + { + return variant4_order5[ i ]; + } + } + } + } + } + } + } + } + i++; + } + } +} + +non_destroyed_variant5_order( origin, chunks_variant5 ) +{ + variant5_order = []; + variant5_order1 = []; + variant5_order2 = []; + variant5_order3 = []; + variant5_order4 = []; + variant5_order5 = []; + variant5_order6 = []; + while ( isDefined( chunks_variant5 ) ) + { + i = 0; + while ( i < chunks_variant5.size ) + { + if ( isDefined( chunks_variant5[ i ].script_team ) && chunks_variant5[ i ].script_team == "bar_board_variant5" ) + { + if ( isDefined( chunks_variant5[ i ].script_noteworthy ) ) + { + if ( chunks_variant5[ i ].script_noteworthy == "1" && !isDefined( chunks_variant5[ i ].script_location ) ) + { + variant5_order1[ variant5_order1.size ] = chunks_variant5[ i ]; + } + if ( chunks_variant5[ i ].script_noteworthy == "2" ) + { + variant5_order2[ variant5_order2.size ] = chunks_variant5[ i ]; + } + if ( isDefined( chunks_variant5[ i ].script_noteworthy ) && chunks_variant5[ i ].script_noteworthy == "1" && isDefined( chunks_variant5[ i ].script_location ) && chunks_variant5[ i ].script_location == "3" ) + { + variant5_order3[ variant5_order3.size ] = chunks_variant5[ i ]; + } + if ( chunks_variant5[ i ].script_noteworthy == "4" ) + { + variant5_order4[ variant5_order4.size ] = chunks_variant5[ i ]; + } + if ( chunks_variant5[ i ].script_noteworthy == "5" ) + { + variant5_order5[ variant5_order5.size ] = chunks_variant5[ i ]; + } + if ( chunks_variant5[ i ].script_noteworthy == "6" ) + { + variant5_order6[ variant5_order6.size ] = chunks_variant5[ i ]; + } + } + } + i++; + } + i = 0; + while ( i < chunks_variant5.size ) + { + if ( isDefined( chunks_variant5[ i ].script_team ) && chunks_variant5[ i ].script_team == "bar_board_variant5" ) + { + if ( isDefined( variant5_order1[ i ] ) ) + { + if ( variant5_order1[ i ].state == "repaired" ) + { + return variant5_order1[ i ]; + } + else + { + if ( variant5_order6[ i ].state == "repaired" ) + { + return variant5_order6[ i ]; + } + else + { + if ( variant5_order3[ i ].state == "repaired" ) + { + return variant5_order3[ i ]; + } + else + { + if ( variant5_order2[ i ].state == "repaired" ) + { + return variant5_order2[ i ]; + } + else + { + if ( variant5_order5[ i ].state == "repaired" ) + { + return variant5_order5[ i ]; + } + else + { + if ( variant5_order4[ i ].state == "repaired" ) + { + return variant5_order4[ i ]; + } + } + } + } + } + } + } + } + i++; + } + } +} + +show_grate_pull() +{ + wait 0,53; + self show(); + self vibrate( vectorScale( ( 0, 0, 1 ), 270 ), 0,2, 0,4, 0,4 ); +} + +get_closest_2d( origin, ents ) +{ + if ( !isDefined( ents ) ) + { + return undefined; + } + dist = distance2d( origin, ents[ 0 ].origin ); + index = 0; + temp_array = []; + i = 1; + while ( i < ents.size ) + { + if ( isDefined( ents[ i ].unbroken ) && ents[ i ].unbroken == 1 ) + { + ents[ i ].index = i; + temp_array[ temp_array.size ] = ents[ i ]; + } + i++; + } + if ( temp_array.size > 0 ) + { + index = temp_array[ randomintrange( 0, temp_array.size ) ].index; + return ents[ index ]; + } + else + { + i = 1; + while ( i < ents.size ) + { + temp_dist = distance2d( origin, ents[ i ].origin ); + if ( temp_dist < dist ) + { + dist = temp_dist; + index = i; + } + i++; + } + return ents[ index ]; + } +} + +disable_trigger() +{ + if ( !isDefined( self.disabled ) || !self.disabled ) + { + self.disabled = 1; + self.origin -= vectorScale( ( 0, 0, 1 ), 10000 ); + } +} + +enable_trigger() +{ + if ( !isDefined( self.disabled ) || !self.disabled ) + { + return; + } + self.disabled = 0; + self.origin += vectorScale( ( 0, 0, 1 ), 10000 ); +} + +in_playable_area() +{ + playable_area = getentarray( "player_volume", "script_noteworthy" ); + if ( !isDefined( playable_area ) ) + { +/# + println( "No playable area playable_area found! Assume EVERYWHERE is PLAYABLE" ); +#/ + return 1; + } + i = 0; + while ( i < playable_area.size ) + { + if ( self istouching( playable_area[ i ] ) ) + { + return 1; + } + i++; + } + return 0; +} + +get_closest_non_destroyed_chunk( origin, barrier, barrier_chunks ) +{ + chunks = undefined; + chunks_grate = undefined; + chunks_grate = get_non_destroyed_chunks_grate( barrier, barrier_chunks ); + chunks = get_non_destroyed_chunks( barrier, barrier_chunks ); + if ( isDefined( barrier.zbarrier ) ) + { + if ( isDefined( chunks ) ) + { + return array_randomize( chunks )[ 0 ]; + } + if ( isDefined( chunks_grate ) ) + { + return array_randomize( chunks_grate )[ 0 ]; + } + } + else + { + if ( isDefined( chunks ) ) + { + return non_destroyed_bar_board_order( origin, chunks ); + } + else + { + if ( isDefined( chunks_grate ) ) + { + return non_destroyed_grate_order( origin, chunks_grate ); + } + } + } + return undefined; +} + +get_random_destroyed_chunk( barrier, barrier_chunks ) +{ + if ( isDefined( barrier.zbarrier ) ) + { + ret = undefined; + pieces = barrier.zbarrier getzbarrierpieceindicesinstate( "open" ); + if ( pieces.size ) + { + ret = array_randomize( pieces )[ 0 ]; + } + return ret; + } + else + { + chunk = undefined; + chunks_repair_grate = undefined; + chunks = get_destroyed_chunks( barrier_chunks ); + chunks_repair_grate = get_destroyed_repair_grates( barrier_chunks ); + if ( isDefined( chunks ) ) + { + return chunks[ randomint( chunks.size ) ]; + } + else + { + if ( isDefined( chunks_repair_grate ) ) + { + return grate_order_destroyed( chunks_repair_grate ); + } + } + return undefined; + } +} + +get_destroyed_repair_grates( barrier_chunks ) +{ + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ] ) ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "grate" ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; +} + +get_non_destroyed_chunks( barrier, barrier_chunks ) +{ + if ( isDefined( barrier.zbarrier ) ) + { + return barrier.zbarrier getzbarrierpieceindicesinstate( "closed" ); + } + else + { + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "classic_boards" ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "board" ) + { + if ( barrier_chunks[ i ] get_chunk_state() == "repaired" ) + { + if ( barrier_chunks[ i ].origin == barrier_chunks[ i ].og_origin ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + } + } + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "new_barricade" ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) || barrier_chunks[ i ].script_parameters == "repair_board" && barrier_chunks[ i ].script_parameters == "barricade_vents" ) + { + if ( barrier_chunks[ i ] get_chunk_state() == "repaired" ) + { + if ( barrier_chunks[ i ].origin == barrier_chunks[ i ].og_origin ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + } + i++; + continue; + } + else + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "6_bars_bent" ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "bar" ) + { + if ( barrier_chunks[ i ] get_chunk_state() == "repaired" ) + { + if ( barrier_chunks[ i ].origin == barrier_chunks[ i ].og_origin ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + } + i++; + continue; + } + else + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "6_bars_prestine" ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "bar" ) + { + if ( barrier_chunks[ i ] get_chunk_state() == "repaired" ) + { + if ( barrier_chunks[ i ].origin == barrier_chunks[ i ].og_origin ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + } + } + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; + } +} + +get_non_destroyed_chunks_grate( barrier, barrier_chunks ) +{ + if ( isDefined( barrier.zbarrier ) ) + { + return barrier.zbarrier getzbarrierpieceindicesinstate( "closed" ); + } + else + { + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "grate" ) + { + if ( isDefined( barrier_chunks[ i ] ) ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; + } +} + +get_non_destroyed_variant1( barrier_chunks ) +{ + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "bar_board_variant1" ) + { + if ( isDefined( barrier_chunks[ i ] ) ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; +} + +get_non_destroyed_variant2( barrier_chunks ) +{ + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "bar_board_variant2" ) + { + if ( isDefined( barrier_chunks[ i ] ) ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; +} + +get_non_destroyed_variant4( barrier_chunks ) +{ + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "bar_board_variant4" ) + { + if ( isDefined( barrier_chunks[ i ] ) ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; +} + +get_non_destroyed_variant5( barrier_chunks ) +{ + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( isDefined( barrier_chunks[ i ].script_team ) && barrier_chunks[ i ].script_team == "bar_board_variant5" ) + { + if ( isDefined( barrier_chunks[ i ] ) ) + { + array[ array.size ] = barrier_chunks[ i ]; + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; +} + +get_destroyed_chunks( barrier_chunks ) +{ + array = []; + i = 0; + while ( i < barrier_chunks.size ) + { + if ( barrier_chunks[ i ] get_chunk_state() == "destroyed" ) + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "board" ) + { + array[ array.size ] = barrier_chunks[ i ]; + i++; + continue; + } + else + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) || barrier_chunks[ i ].script_parameters == "repair_board" && barrier_chunks[ i ].script_parameters == "barricade_vents" ) + { + array[ array.size ] = barrier_chunks[ i ]; + i++; + continue; + } + else + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "bar" ) + { + array[ array.size ] = barrier_chunks[ i ]; + i++; + continue; + } + else + { + if ( isDefined( barrier_chunks[ i ].script_parameters ) && barrier_chunks[ i ].script_parameters == "grate" ) + { + return undefined; + } + } + } + } + } + i++; + } + if ( array.size == 0 ) + { + return undefined; + } + return array; +} + +grate_order_destroyed( chunks_repair_grate ) +{ + grate_repair_order = []; + grate_repair_order1 = []; + grate_repair_order2 = []; + grate_repair_order3 = []; + grate_repair_order4 = []; + grate_repair_order5 = []; + grate_repair_order6 = []; + i = 0; + while ( i < chunks_repair_grate.size ) + { + if ( isDefined( chunks_repair_grate[ i ].script_parameters ) && chunks_repair_grate[ i ].script_parameters == "grate" ) + { + if ( isDefined( chunks_repair_grate[ i ].script_noteworthy ) && chunks_repair_grate[ i ].script_noteworthy == "1" ) + { + grate_repair_order1[ grate_repair_order1.size ] = chunks_repair_grate[ i ]; + } + if ( isDefined( chunks_repair_grate[ i ].script_noteworthy ) && chunks_repair_grate[ i ].script_noteworthy == "2" ) + { + grate_repair_order2[ grate_repair_order2.size ] = chunks_repair_grate[ i ]; + } + if ( isDefined( chunks_repair_grate[ i ].script_noteworthy ) && chunks_repair_grate[ i ].script_noteworthy == "3" ) + { + grate_repair_order3[ grate_repair_order3.size ] = chunks_repair_grate[ i ]; + } + if ( isDefined( chunks_repair_grate[ i ].script_noteworthy ) && chunks_repair_grate[ i ].script_noteworthy == "4" ) + { + grate_repair_order4[ grate_repair_order4.size ] = chunks_repair_grate[ i ]; + } + if ( isDefined( chunks_repair_grate[ i ].script_noteworthy ) && chunks_repair_grate[ i ].script_noteworthy == "5" ) + { + grate_repair_order5[ grate_repair_order5.size ] = chunks_repair_grate[ i ]; + } + if ( isDefined( chunks_repair_grate[ i ].script_noteworthy ) && chunks_repair_grate[ i ].script_noteworthy == "6" ) + { + grate_repair_order6[ grate_repair_order6.size ] = chunks_repair_grate[ i ]; + } + } + i++; + } + i = 0; + while ( i < chunks_repair_grate.size ) + { + if ( isDefined( chunks_repair_grate[ i ].script_parameters ) && chunks_repair_grate[ i ].script_parameters == "grate" ) + { + if ( isDefined( grate_repair_order1[ i ] ) ) + { + if ( grate_repair_order6[ i ].state == "destroyed" ) + { +/# + iprintlnbold( " Fix grate6 " ); +#/ + return grate_repair_order6[ i ]; + } + if ( grate_repair_order5[ i ].state == "destroyed" ) + { +/# + iprintlnbold( " Fix grate5 " ); +#/ + grate_repair_order6[ i ] thread show_grate_repair(); + return grate_repair_order5[ i ]; + } + else + { + if ( grate_repair_order4[ i ].state == "destroyed" ) + { +/# + iprintlnbold( " Fix grate4 " ); +#/ + grate_repair_order5[ i ] thread show_grate_repair(); + return grate_repair_order4[ i ]; + } + else + { + if ( grate_repair_order3[ i ].state == "destroyed" ) + { +/# + iprintlnbold( " Fix grate3 " ); +#/ + grate_repair_order4[ i ] thread show_grate_repair(); + return grate_repair_order3[ i ]; + } + else + { + if ( grate_repair_order2[ i ].state == "destroyed" ) + { +/# + iprintlnbold( " Fix grate2 " ); +#/ + grate_repair_order3[ i ] thread show_grate_repair(); + return grate_repair_order2[ i ]; + } + else + { + if ( grate_repair_order1[ i ].state == "destroyed" ) + { +/# + iprintlnbold( " Fix grate1 " ); +#/ + grate_repair_order2[ i ] thread show_grate_repair(); + return grate_repair_order1[ i ]; + } + } + } + } + } + } + } + i++; + } +} + +show_grate_repair() +{ + wait 0,34; + self hide(); +} + +get_chunk_state() +{ +/# + assert( isDefined( self.state ) ); +#/ + return self.state; +} + +is_float( num ) +{ + val = num - int( num ); + if ( val != 0 ) + { + return 1; + } + else + { + return 0; + } +} + +array_limiter( array, total ) +{ + new_array = []; + i = 0; + while ( i < array.size ) + { + if ( i < total ) + { + new_array[ new_array.size ] = array[ i ]; + } + i++; + } + return new_array; +} + +array_validate( array ) +{ + if ( isDefined( array ) && array.size > 0 ) + { + return 1; + } + else + { + return 0; + } +} + +add_spawner( spawner ) +{ + if ( isDefined( spawner.script_start ) && level.round_number < spawner.script_start ) + { + return; + } + if ( isDefined( spawner.is_enabled ) && !spawner.is_enabled ) + { + return; + } + if ( isDefined( spawner.has_been_added ) && spawner.has_been_added ) + { + return; + } + spawner.has_been_added = 1; + level.zombie_spawn_locations[ level.zombie_spawn_locations.size ] = spawner; +} + +fake_physicslaunch( target_pos, power ) +{ + start_pos = self.origin; + gravity = getDvarInt( "bg_gravity" ) * -1; + dist = distance( start_pos, target_pos ); + time = dist / power; + delta = target_pos - start_pos; + drop = ( 0,5 * gravity ) * ( time * time ); + velocity = ( delta[ 0 ] / time, delta[ 1 ] / time, ( delta[ 2 ] - drop ) / time ); + level thread draw_line_ent_to_pos( self, target_pos ); + self movegravity( velocity, time ); + return time; +} + +add_zombie_hint( ref, text ) +{ + if ( !isDefined( level.zombie_hints ) ) + { + level.zombie_hints = []; + } + precachestring( text ); + level.zombie_hints[ ref ] = text; +} + +get_zombie_hint( ref ) +{ + if ( isDefined( level.zombie_hints[ ref ] ) ) + { + return level.zombie_hints[ ref ]; + } +/# + println( "UNABLE TO FIND HINT STRING " + ref ); +#/ + return level.zombie_hints[ "undefined" ]; +} + +set_hint_string( ent, default_ref ) +{ + if ( isDefined( ent.script_hint ) ) + { + self sethintstring( get_zombie_hint( ent.script_hint ) ); + } + else + { + self sethintstring( get_zombie_hint( default_ref ) ); + } +} + +get_hint_string( ent, default_ref ) +{ + if ( isDefined( ent.script_hint ) ) + { + return get_zombie_hint( ent.script_hint ); + } + return get_zombie_hint( default_ref ); +} + +add_sound( ref, alias ) +{ + if ( !isDefined( level.zombie_sounds ) ) + { + level.zombie_sounds = []; + } + level.zombie_sounds[ ref ] = alias; +} + +play_sound_at_pos( ref, pos, ent ) +{ + if ( isDefined( ent ) ) + { + if ( isDefined( ent.script_soundalias ) ) + { + playsoundatposition( ent.script_soundalias, pos ); + return; + } + if ( isDefined( self.script_sound ) ) + { + ref = self.script_sound; + } + } + if ( ref == "none" ) + { + return; + } + if ( !isDefined( level.zombie_sounds[ ref ] ) ) + { +/# + assertmsg( "Sound "" + ref + "" was not put to the zombie sounds list, please use add_sound( ref, alias ) at the start of your level." ); +#/ + return; + } + playsoundatposition( level.zombie_sounds[ ref ], pos ); +} + +play_sound_on_ent( ref ) +{ + if ( isDefined( self.script_soundalias ) ) + { + self playsound( self.script_soundalias ); + return; + } + if ( isDefined( self.script_sound ) ) + { + ref = self.script_sound; + } + if ( ref == "none" ) + { + return; + } + if ( !isDefined( level.zombie_sounds[ ref ] ) ) + { +/# + assertmsg( "Sound "" + ref + "" was not put to the zombie sounds list, please use add_sound( ref, alias ) at the start of your level." ); +#/ + return; + } + self playsound( level.zombie_sounds[ ref ] ); +} + +play_loopsound_on_ent( ref ) +{ + if ( isDefined( self.script_firefxsound ) ) + { + ref = self.script_firefxsound; + } + if ( ref == "none" ) + { + return; + } + if ( !isDefined( level.zombie_sounds[ ref ] ) ) + { +/# + assertmsg( "Sound "" + ref + "" was not put to the zombie sounds list, please use add_sound( ref, alias ) at the start of your level." ); +#/ + return; + } + self playsound( level.zombie_sounds[ ref ] ); +} + +string_to_float( string ) +{ + floatparts = strtok( string, "." ); + if ( floatparts.size == 1 ) + { + return int( floatparts[ 0 ] ); + } + whole = int( floatparts[ 0 ] ); + decimal = 0; + i = floatparts[ 1 ].size - 1; + while ( i >= 0 ) + { + decimal = ( decimal / 10 ) + ( int( floatparts[ 1 ][ i ] ) / 10 ); + i--; + + } + if ( whole >= 0 ) + { + return whole + decimal; + } + else + { + return whole - decimal; + } +} + +onplayerconnect_callback( func ) +{ + addcallback( "on_player_connect", func ); +} + +onplayerdisconnect_callback( func ) +{ + addcallback( "on_player_disconnect", func ); +} + +set_zombie_var( var, value, is_float, column, is_team_based ) +{ + if ( !isDefined( is_float ) ) + { + is_float = 0; + } + if ( !isDefined( column ) ) + { + column = 1; + } + table = "mp/zombiemode.csv"; + table_value = tablelookup( table, 0, var, column ); + if ( isDefined( table_value ) && table_value != "" ) + { + if ( is_float ) + { + value = float( table_value ); + } + else + { + value = int( table_value ); + } + } + if ( isDefined( is_team_based ) && is_team_based ) + { + _a3064 = level.teams; + _k3064 = getFirstArrayKey( _a3064 ); + while ( isDefined( _k3064 ) ) + { + team = _a3064[ _k3064 ]; + level.zombie_vars[ team ][ var ] = value; + _k3064 = getNextArrayKey( _a3064, _k3064 ); + } + } + else level.zombie_vars[ var ] = value; + return value; +} + +get_table_var( table, var_name, value, is_float, column ) +{ + if ( !isDefined( table ) ) + { + table = "mp/zombiemode.csv"; + } + if ( !isDefined( is_float ) ) + { + is_float = 0; + } + if ( !isDefined( column ) ) + { + column = 1; + } + table_value = tablelookup( table, 0, var_name, column ); + if ( isDefined( table_value ) && table_value != "" ) + { + if ( is_float ) + { + value = string_to_float( table_value ); + } + else + { + value = int( table_value ); + } + } + return value; +} + +hudelem_count() +{ +/# + max = 0; + curr_total = 0; + while ( 1 ) + { + if ( level.hudelem_count > max ) + { + max = level.hudelem_count; + } + println( "HudElems: " + level.hudelem_count + "[Peak: " + max + "]" ); + wait 0,05; +#/ + } +} + +debug_round_advancer() +{ +/# + while ( 1 ) + { + zombs = get_round_enemy_array(); + i = 0; + while ( i < zombs.size ) + { + zombs[ i ] dodamage( zombs[ i ].health + 666, ( 0, 0, 1 ) ); + wait 0,5; + i++; + } +#/ + } +} + +print_run_speed( speed ) +{ +/# + self endon( "death" ); + while ( 1 ) + { + print3d( self.origin + vectorScale( ( 0, 0, 1 ), 64 ), speed, ( 0, 0, 1 ) ); + wait 0,05; +#/ + } +} + +draw_line_ent_to_ent( ent1, ent2 ) +{ +/# + if ( getDvarInt( "zombie_debug" ) != 1 ) + { + return; + } + ent1 endon( "death" ); + ent2 endon( "death" ); + while ( 1 ) + { + line( ent1.origin, ent2.origin ); + wait 0,05; +#/ + } +} + +draw_line_ent_to_pos( ent, pos, end_on ) +{ +/# + if ( getDvarInt( "zombie_debug" ) != 1 ) + { + return; + } + ent endon( "death" ); + ent notify( "stop_draw_line_ent_to_pos" ); + ent endon( "stop_draw_line_ent_to_pos" ); + if ( isDefined( end_on ) ) + { + ent endon( end_on ); + } + while ( 1 ) + { + line( ent.origin, pos ); + wait 0,05; +#/ + } +} + +debug_print( msg ) +{ +/# + if ( getDvarInt( "zombie_debug" ) > 0 ) + { + println( "######### ZOMBIE: " + msg ); +#/ + } +} + +debug_blocker( pos, rad, height ) +{ +/# + self notify( "stop_debug_blocker" ); + self endon( "stop_debug_blocker" ); + for ( ;; ) + { + if ( getDvarInt( "zombie_debug" ) != 1 ) + { + return; + } + wait 0,05; + drawcylinder( pos, rad, height ); +#/ + } +} + +drawcylinder( pos, rad, height ) +{ +/# + currad = rad; + curheight = height; + r = 0; + while ( r < 20 ) + { + theta = ( r / 20 ) * 360; + theta2 = ( ( r + 1 ) / 20 ) * 360; + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, 0 ), pos + ( cos( theta2 ) * currad, sin( theta2 ) * currad, 0 ) ); + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, curheight ), pos + ( cos( theta2 ) * currad, sin( theta2 ) * currad, curheight ) ); + line( pos + ( cos( theta ) * currad, sin( theta ) * currad, 0 ), pos + ( cos( theta ) * currad, sin( theta ) * currad, curheight ) ); + r++; +#/ + } +} + +print3d_at_pos( msg, pos, thread_endon, offset ) +{ +/# + self endon( "death" ); + if ( isDefined( thread_endon ) ) + { + self notify( thread_endon ); + self endon( thread_endon ); + } + if ( !isDefined( offset ) ) + { + offset = ( 0, 0, 1 ); + } + while ( 1 ) + { + print3d( self.origin + offset, msg ); + wait 0,05; +#/ + } +} + +debug_breadcrumbs() +{ +/# + self endon( "disconnect" ); + self notify( "stop_debug_breadcrumbs" ); + self endon( "stop_debug_breadcrumbs" ); + while ( 1 ) + { + while ( getDvarInt( "zombie_debug" ) != 1 ) + { + wait 1; + } + i = 0; + while ( i < self.zombie_breadcrumbs.size ) + { + drawcylinder( self.zombie_breadcrumbs[ i ], 5, 5 ); + i++; + } + wait 0,05; +#/ + } +} + +debug_attack_spots_taken() +{ +/# + self notify( "stop_debug_breadcrumbs" ); + self endon( "stop_debug_breadcrumbs" ); + while ( 1 ) + { + while ( getDvarInt( "zombie_debug" ) != 2 ) + { + wait 1; + } + wait 0,05; + count = 0; + i = 0; + while ( i < self.attack_spots_taken.size ) + { + if ( self.attack_spots_taken[ i ] ) + { + count++; + circle( self.attack_spots[ i ], 12, ( 0, 0, 1 ), 0, 1, 1 ); + i++; + continue; + } + else + { + circle( self.attack_spots[ i ], 12, ( 0, 0, 1 ), 0, 1, 1 ); + } + i++; + } + msg = "" + count + " / " + self.attack_spots_taken.size; + print3d( self.origin, msg ); +#/ + } +} + +float_print3d( msg, time ) +{ +/# + self endon( "death" ); + time = getTime() + ( time * 1000 ); + offset = vectorScale( ( 0, 0, 1 ), 72 ); + while ( getTime() < time ) + { + offset += vectorScale( ( 0, 0, 1 ), 2 ); + print3d( self.origin + offset, msg, ( 0, 0, 1 ) ); + wait 0,05; +#/ + } +} + +do_player_vo( snd, variation_count ) +{ + index = maps/mp/zombies/_zm_weapons::get_player_index( self ); + sound = "zmb_vox_plr_" + index + "_" + snd; + if ( isDefined( variation_count ) ) + { + sound = ( sound + "_" ) + randomintrange( 0, variation_count ); + } + if ( !isDefined( level.player_is_speaking ) ) + { + level.player_is_speaking = 0; + } + if ( level.player_is_speaking == 0 ) + { + level.player_is_speaking = 1; + self playsoundwithnotify( sound, "sound_done" ); + self waittill( "sound_done" ); + wait 2; + level.player_is_speaking = 0; + } +} + +stop_magic_bullet_shield() +{ + self.attackeraccuracy = 1; + self notify( "stop_magic_bullet_shield" ); + self.magic_bullet_shield = undefined; + self._mbs = undefined; +} + +magic_bullet_shield() +{ + if ( isDefined( self.magic_bullet_shield ) && !self.magic_bullet_shield ) + { + if ( isai( self ) || isplayer( self ) ) + { + self.magic_bullet_shield = 1; +/# + level thread debug_magic_bullet_shield_death( self ); +#/ + if ( !isDefined( self._mbs ) ) + { + self._mbs = spawnstruct(); + } + if ( isai( self ) ) + { +/# + assert( isalive( self ), "Tried to do magic_bullet_shield on a dead or undefined guy." ); +#/ + self._mbs.last_pain_time = 0; + self._mbs.ignore_time = 2; + self._mbs.turret_ignore_time = 5; + } + self.attackeraccuracy = 0,1; + return; + } + else + { +/# + assertmsg( "magic_bullet_shield does not support entity of classname '" + self.classname + "'." ); +#/ + } + } +} + +debug_magic_bullet_shield_death( guy ) +{ + targetname = "none"; + if ( isDefined( guy.targetname ) ) + { + targetname = guy.targetname; + } + guy endon( "stop_magic_bullet_shield" ); + guy waittill( "death" ); +/# + assert( !isDefined( guy ), "Guy died with magic bullet shield on with targetname: " + targetname ); +#/ +} + +is_magic_bullet_shield_enabled( ent ) +{ + if ( !isDefined( ent ) ) + { + return 0; + } + if ( isDefined( ent.magic_bullet_shield ) ) + { + return ent.magic_bullet_shield == 1; + } +} + +really_play_2d_sound( sound ) +{ + temp_ent = spawn( "script_origin", ( 0, 0, 1 ) ); + temp_ent playsoundwithnotify( sound, sound + "wait" ); + temp_ent waittill( sound + "wait" ); + wait 0,05; + temp_ent delete(); +} + +play_sound_2d( sound ) +{ + level thread really_play_2d_sound( sound ); +} + +include_weapon( weapon_name, in_box, collector, weighting_func ) +{ +/# + println( "ZM >> include_weapon = " + weapon_name ); +#/ + if ( !isDefined( in_box ) ) + { + in_box = 1; + } + if ( !isDefined( collector ) ) + { + collector = 0; + } + maps/mp/zombies/_zm_weapons::include_zombie_weapon( weapon_name, in_box, collector, weighting_func ); +} + +include_buildable( buildable_struct ) +{ +/# + println( "ZM >> include_buildable = " + buildable_struct.name ); +#/ + maps/mp/zombies/_zm_buildables::include_zombie_buildable( buildable_struct ); +} + +create_zombie_buildable_piece( modelname, radius, height, hud_icon ) +{ +/# + println( "ZM >> create_zombie_buildable_piece = " + modelname ); +#/ + self maps/mp/zombies/_zm_buildables::create_zombie_buildable_piece( modelname, radius, height, hud_icon ); +} + +is_buildable() +{ + return self maps/mp/zombies/_zm_buildables::is_buildable(); +} + +wait_for_buildable( buildable_name ) +{ + level waittill( buildable_name + "_built", player ); + return player; +} + +include_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, start_power, target ) +{ + return maps/mp/zombies/_zm_power::add_powered_item( power_on_func, power_off_func, range_func, cost_func, power_sources, start_power, target ); +} + +include_powerup( powerup_name ) +{ + maps/mp/zombies/_zm_powerups::include_zombie_powerup( powerup_name ); +} + +include_equipment( equipment_name ) +{ + maps/mp/zombies/_zm_equipment::include_zombie_equipment( equipment_name ); +} + +limit_equipment( equipment_name, limited ) +{ + maps/mp/zombies/_zm_equipment::limit_zombie_equipment( equipment_name, limited ); +} + +trigger_invisible( enable ) +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isDefined( players[ i ] ) ) + { + self setinvisibletoplayer( players[ i ], enable ); + } + i++; + } +} + +print3d_ent( text, color, scale, offset, end_msg, overwrite ) +{ + self endon( "death" ); + if ( isDefined( overwrite ) && overwrite && isDefined( self._debug_print3d_msg ) ) + { + self notify( "end_print3d" ); + wait 0,05; + } + self endon( "end_print3d" ); + if ( !isDefined( color ) ) + { + color = ( 0, 0, 1 ); + } + if ( !isDefined( scale ) ) + { + scale = 1; + } + if ( !isDefined( offset ) ) + { + offset = ( 0, 0, 1 ); + } + if ( isDefined( end_msg ) ) + { + self endon( end_msg ); + } + self._debug_print3d_msg = text; +/# + while ( 1 ) + { + print3d( self.origin + offset, self._debug_print3d_msg, color, scale ); + wait 0,05; +#/ + } +} + +isexplosivedamage( meansofdeath ) +{ + explosivedamage = "MOD_GRENADE MOD_GRENADE_SPLASH MOD_PROJECTILE_SPLASH MOD_EXPLOSIVE"; + if ( issubstr( explosivedamage, meansofdeath ) ) + { + return 1; + } + return 0; +} + +isprimarydamage( meansofdeath ) +{ + if ( meansofdeath == "MOD_RIFLE_BULLET" || meansofdeath == "MOD_PISTOL_BULLET" ) + { + return 1; + } + return 0; +} + +isfiredamage( weapon, meansofdeath ) +{ + if ( !issubstr( weapon, "flame" ) && !issubstr( weapon, "molotov_" ) && issubstr( weapon, "napalmblob_" ) && meansofdeath != "MOD_BURNED" || meansofdeath == "MOD_GRENADE" && meansofdeath == "MOD_GRENADE_SPLASH" ) + { + return 1; + } + return 0; +} + +isplayerexplosiveweapon( weapon, meansofdeath ) +{ + if ( !isexplosivedamage( meansofdeath ) ) + { + return 0; + } + if ( weapon == "artillery_mp" ) + { + return 0; + } + if ( issubstr( weapon, "turret" ) ) + { + return 0; + } + return 1; +} + +create_counter_hud( x ) +{ + if ( !isDefined( x ) ) + { + x = 0; + } + hud = create_simple_hud(); + hud.alignx = "left"; + hud.aligny = "top"; + hud.horzalign = "user_left"; + hud.vertalign = "user_top"; + hud.color = ( 0, 0, 1 ); + hud.fontscale = 32; + hud.x = x; + hud.alpha = 0; + hud setshader( "hud_chalk_1", 64, 64 ); + return hud; +} + +get_current_zone( return_zone ) +{ + flag_wait( "zones_initialized" ); + z = 0; + while ( z < level.zone_keys.size ) + { + zone_name = level.zone_keys[ z ]; + zone = level.zones[ zone_name ]; + i = 0; + while ( i < zone.volumes.size ) + { + if ( self istouching( zone.volumes[ i ] ) ) + { + if ( isDefined( return_zone ) && return_zone ) + { + return zone; + } + return zone_name; + } + i++; + } + z++; + } + return undefined; +} + +remove_mod_from_methodofdeath( mod ) +{ + return mod; +} + +clear_fog_threads() +{ + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] notify( "stop_fog" ); + i++; + } +} + +display_message( titletext, notifytext, duration ) +{ + notifydata = spawnstruct(); + notifydata.titletext = notifytext; + notifydata.notifytext = titletext; + notifydata.sound = "mus_level_up"; + notifydata.duration = duration; + notifydata.glowcolor = ( 0, 0, 1 ); + notifydata.color = ( 0, 0, 1 ); + notifydata.iconname = "hud_zombies_meat"; + self thread maps/mp/gametypes_zm/_hud_message::notifymessage( notifydata ); +} + +is_quad() +{ + return self.animname == "quad_zombie"; +} + +is_leaper() +{ + return self.animname == "leaper_zombie"; +} + +shock_onpain() +{ + self endon( "death" ); + self endon( "disconnect" ); + self notify( "stop_shock_onpain" ); + self endon( "stop_shock_onpain" ); + if ( getDvar( "blurpain" ) == "" ) + { + setdvar( "blurpain", "on" ); + } + for ( ;; ) + { + while ( 1 ) + { + oldhealth = self.health; + self waittill( "damage", damage, attacker, direction_vec, point, mod ); + if ( isDefined( level.shock_onpain ) && !level.shock_onpain ) + { + continue; + } + if ( isDefined( self.shock_onpain ) && !self.shock_onpain ) + { + continue; + } + while ( self.health < 1 ) + { + continue; + } + if ( mod == "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" ) + { + } + } + else if ( mod != "MOD_GRENADE_SPLASH" || mod == "MOD_GRENADE" && mod == "MOD_EXPLOSIVE" ) + { + shocktype = undefined; + shocklight = undefined; + if ( isDefined( self.is_burning ) && self.is_burning ) + { + shocktype = "lava"; + shocklight = "lava_small"; + } + self shock_onexplosion( damage, shocktype, shocklight ); + continue; + } + else + { + if ( getDvar( "blurpain" ) == "on" ) + { + self shellshock( "pain", 0,5 ); + } + } + } +} + +shock_onexplosion( damage, shocktype, shocklight ) +{ + time = 0; + scaled_damage = ( 100 * damage ) / self.maxhealth; + if ( scaled_damage >= 90 ) + { + time = 4; + } + else if ( scaled_damage >= 50 ) + { + time = 3; + } + else if ( scaled_damage >= 25 ) + { + time = 2; + } + else + { + if ( scaled_damage > 10 ) + { + time = 1; + } + } + if ( time ) + { + if ( !isDefined( shocktype ) ) + { + shocktype = "explosion"; + } + self shellshock( shocktype, time ); + } + else + { + if ( isDefined( shocklight ) ) + { + self shellshock( shocklight, time ); + } + } +} + +increment_is_drinking() +{ +/# + if ( isDefined( level.devgui_dpad_watch ) && level.devgui_dpad_watch ) + { + self.is_drinking++; + return; +#/ + } + if ( !isDefined( self.is_drinking ) ) + { + self.is_drinking = 0; + } + if ( self.is_drinking == 0 ) + { + self disableoffhandweapons(); + self disableweaponcycling(); + } + self.is_drinking++; +} + +is_multiple_drinking() +{ + return self.is_drinking > 1; +} + +decrement_is_drinking() +{ + if ( self.is_drinking > 0 ) + { + self.is_drinking--; + + } + else + { +/# + assertmsg( "making is_drinking less than 0" ); +#/ + } + if ( self.is_drinking == 0 ) + { + self enableoffhandweapons(); + self enableweaponcycling(); + } +} + +clear_is_drinking() +{ + self.is_drinking = 0; + self enableoffhandweapons(); + self enableweaponcycling(); +} + +spawn_weapon_model( weapon, model, origin, angles, options ) +{ + if ( !isDefined( model ) ) + { + model = getweaponmodel( weapon ); + } + weapon_model = spawn( "script_model", origin ); + if ( isDefined( angles ) ) + { + weapon_model.angles = angles; + } + if ( isDefined( options ) ) + { + weapon_model useweaponmodel( weapon, model, options ); + } + else + { + weapon_model useweaponmodel( weapon, model ); + } + return weapon_model; +} + +is_limited_weapon( weapname ) +{ + if ( isDefined( level.limited_weapons ) ) + { + if ( isDefined( level.limited_weapons[ weapname ] ) ) + { + return 1; + } + } + return 0; +} + +is_alt_weapon( weapname ) +{ + if ( getsubstr( weapname, 0, 3 ) == "gl_" ) + { + return 1; + } + if ( getsubstr( weapname, 0, 3 ) == "sf_" ) + { + return 1; + } + if ( getsubstr( weapname, 0, 10 ) == "dualoptic_" ) + { + return 1; + } + return 0; +} + +is_grenade_launcher( weapname ) +{ + if ( weapname != "m32_zm" ) + { + return weapname == "m32_upgraded_zm"; + } +} + +register_lethal_grenade_for_level( weaponname ) +{ + if ( is_lethal_grenade( weaponname ) ) + { + return; + } + if ( !isDefined( level.zombie_lethal_grenade_list ) ) + { + level.zombie_lethal_grenade_list = []; + } + level.zombie_lethal_grenade_list[ weaponname ] = weaponname; +} + +is_lethal_grenade( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( level.zombie_lethal_grenade_list ) ) + { + return 0; + } + return isDefined( level.zombie_lethal_grenade_list[ weaponname ] ); +} + +is_player_lethal_grenade( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( self.current_lethal_grenade ) ) + { + return 0; + } + return self.current_lethal_grenade == weaponname; +} + +get_player_lethal_grenade() +{ + grenade = ""; + if ( isDefined( self.current_lethal_grenade ) ) + { + grenade = self.current_lethal_grenade; + } + return grenade; +} + +set_player_lethal_grenade( weaponname ) +{ + self.current_lethal_grenade = weaponname; +} + +init_player_lethal_grenade() +{ + self set_player_lethal_grenade( level.zombie_lethal_grenade_player_init ); +} + +register_tactical_grenade_for_level( weaponname ) +{ + if ( is_tactical_grenade( weaponname ) ) + { + return; + } + if ( !isDefined( level.zombie_tactical_grenade_list ) ) + { + level.zombie_tactical_grenade_list = []; + } + level.zombie_tactical_grenade_list[ weaponname ] = weaponname; +} + +is_tactical_grenade( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( level.zombie_tactical_grenade_list ) ) + { + return 0; + } + return isDefined( level.zombie_tactical_grenade_list[ weaponname ] ); +} + +is_player_tactical_grenade( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( self.current_tactical_grenade ) ) + { + return 0; + } + return self.current_tactical_grenade == weaponname; +} + +get_player_tactical_grenade() +{ + tactical = ""; + if ( isDefined( self.current_tactical_grenade ) ) + { + tactical = self.current_tactical_grenade; + } + return tactical; +} + +set_player_tactical_grenade( weaponname ) +{ + self.current_tactical_grenade = weaponname; +} + +init_player_tactical_grenade() +{ + self set_player_tactical_grenade( level.zombie_tactical_grenade_player_init ); +} + +register_placeable_mine_for_level( weaponname ) +{ + if ( is_placeable_mine( weaponname ) ) + { + return; + } + if ( !isDefined( level.zombie_placeable_mine_list ) ) + { + level.zombie_placeable_mine_list = []; + } + level.zombie_placeable_mine_list[ weaponname ] = weaponname; +} + +is_placeable_mine( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( level.zombie_placeable_mine_list ) ) + { + return 0; + } + return isDefined( level.zombie_placeable_mine_list[ weaponname ] ); +} + +is_player_placeable_mine( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( self.current_placeable_mine ) ) + { + return 0; + } + return self.current_placeable_mine == weaponname; +} + +get_player_placeable_mine() +{ + return self.current_placeable_mine; +} + +set_player_placeable_mine( weaponname ) +{ + self.current_placeable_mine = weaponname; +} + +init_player_placeable_mine() +{ + self set_player_placeable_mine( level.zombie_placeable_mine_player_init ); +} + +register_melee_weapon_for_level( weaponname ) +{ + if ( is_melee_weapon( weaponname ) ) + { + return; + } + if ( !isDefined( level.zombie_melee_weapon_list ) ) + { + level.zombie_melee_weapon_list = []; + } + level.zombie_melee_weapon_list[ weaponname ] = weaponname; +} + +is_melee_weapon( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( level.zombie_melee_weapon_list ) ) + { + return 0; + } + return isDefined( level.zombie_melee_weapon_list[ weaponname ] ); +} + +is_player_melee_weapon( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( self.current_melee_weapon ) ) + { + return 0; + } + return self.current_melee_weapon == weaponname; +} + +get_player_melee_weapon() +{ + return self.current_melee_weapon; +} + +set_player_melee_weapon( weaponname ) +{ + self.current_melee_weapon = weaponname; +} + +init_player_melee_weapon() +{ + self set_player_melee_weapon( level.zombie_melee_weapon_player_init ); +} + +register_equipment_for_level( weaponname ) +{ + if ( is_equipment( weaponname ) ) + { + return; + } + if ( !isDefined( level.zombie_equipment_list ) ) + { + level.zombie_equipment_list = []; + } + level.zombie_equipment_list[ weaponname ] = weaponname; +} + +is_equipment( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( level.zombie_equipment_list ) ) + { + return 0; + } + return isDefined( level.zombie_equipment_list[ weaponname ] ); +} + +is_equipment_that_blocks_purchase( weaponname ) +{ + return is_equipment( weaponname ); +} + +is_player_equipment( weaponname ) +{ + if ( !isDefined( weaponname ) || !isDefined( self.current_equipment ) ) + { + return 0; + } + return self.current_equipment == weaponname; +} + +has_deployed_equipment( weaponname ) +{ + if ( isDefined( weaponname ) || !isDefined( self.deployed_equipment ) && self.deployed_equipment.size < 1 ) + { + return 0; + } + i = 0; + while ( i < self.deployed_equipment.size ) + { + if ( self.deployed_equipment[ i ] == weaponname ) + { + return 1; + } + i++; + } + return 0; +} + +has_player_equipment( weaponname ) +{ + if ( !self is_player_equipment( weaponname ) ) + { + return self has_deployed_equipment( weaponname ); + } +} + +get_player_equipment() +{ + return self.current_equipment; +} + +hacker_active() +{ + return self maps/mp/zombies/_zm_equipment::is_equipment_active( "equip_hacker_zm" ); +} + +set_player_equipment( weaponname ) +{ + if ( !isDefined( self.current_equipment_active ) ) + { + self.current_equipment_active = []; + } + if ( isDefined( weaponname ) ) + { + self.current_equipment_active[ weaponname ] = 0; + } + if ( !isDefined( self.equipment_got_in_round ) ) + { + self.equipment_got_in_round = []; + } + if ( isDefined( weaponname ) ) + { + self.equipment_got_in_round[ weaponname ] = level.round_number; + } + self.current_equipment = weaponname; +} + +init_player_equipment() +{ + self set_player_equipment( level.zombie_equipment_player_init ); +} + +register_offhand_weapons_for_level_defaults() +{ + if ( isDefined( level.register_offhand_weapons_for_level_defaults_override ) ) + { + [[ level.register_offhand_weapons_for_level_defaults_override ]](); + return; + } + register_lethal_grenade_for_level( "frag_grenade_zm" ); + level.zombie_lethal_grenade_player_init = "frag_grenade_zm"; + register_tactical_grenade_for_level( "cymbal_monkey_zm" ); + level.zombie_tactical_grenade_player_init = undefined; + register_placeable_mine_for_level( "claymore_zm" ); + level.zombie_placeable_mine_player_init = undefined; + register_melee_weapon_for_level( "knife_zm" ); + register_melee_weapon_for_level( "bowie_knife_zm" ); + level.zombie_melee_weapon_player_init = "knife_zm"; + level.zombie_equipment_player_init = undefined; +} + +init_player_offhand_weapons() +{ + init_player_lethal_grenade(); + init_player_tactical_grenade(); + init_player_placeable_mine(); + init_player_melee_weapon(); + init_player_equipment(); +} + +is_offhand_weapon( weaponname ) +{ + if ( !is_lethal_grenade( weaponname ) && !is_tactical_grenade( weaponname ) && !is_placeable_mine( weaponname ) && !is_melee_weapon( weaponname ) ) + { + return is_equipment( weaponname ); + } +} + +is_player_offhand_weapon( weaponname ) +{ + if ( !self is_player_lethal_grenade( weaponname ) && !self is_player_tactical_grenade( weaponname ) && !self is_player_placeable_mine( weaponname ) && !self is_player_melee_weapon( weaponname ) ) + { + return self is_player_equipment( weaponname ); + } +} + +has_powerup_weapon() +{ + if ( isDefined( self.has_powerup_weapon ) ) + { + return self.has_powerup_weapon; + } +} + +give_start_weapon( switch_to_weapon ) +{ + self giveweapon( level.start_weapon ); + self givestartammo( level.start_weapon ); + if ( isDefined( switch_to_weapon ) && switch_to_weapon ) + { + self switchtoweapon( level.start_weapon ); + } +} + +array_flag_wait_any( flag_array ) +{ + if ( !isDefined( level._array_flag_wait_any_calls ) ) + { + level._n_array_flag_wait_any_calls = 0; + } + else + { + level._n_array_flag_wait_any_calls++; + } + str_condition = "array_flag_wait_call_" + level._n_array_flag_wait_any_calls; + index = 0; + while ( index < flag_array.size ) + { + level thread array_flag_wait_any_thread( flag_array[ index ], str_condition ); + index++; + } + level waittill( str_condition ); +} + +array_flag_wait_any_thread( flag_name, condition ) +{ + level endon( condition ); + flag_wait( flag_name ); + level notify( condition ); +} + +array_removedead( array ) +{ + newarray = []; + if ( !isDefined( array ) ) + { + return undefined; + } + i = 0; + while ( i < array.size ) + { + if ( !isalive( array[ i ] ) || isDefined( array[ i ].isacorpse ) && array[ i ].isacorpse ) + { + i++; + continue; + } + else + { + newarray[ newarray.size ] = array[ i ]; + } + i++; + } + return newarray; +} + +groundpos( origin ) +{ + return bullettrace( origin, origin + vectorScale( ( 0, 0, 1 ), 100000 ), 0, self )[ "position" ]; +} + +groundpos_ignore_water( origin ) +{ + return bullettrace( origin, origin + vectorScale( ( 0, 0, 1 ), 100000 ), 0, self, 1 )[ "position" ]; +} + +groundpos_ignore_water_new( origin ) +{ + return groundtrace( origin, origin + vectorScale( ( 0, 0, 1 ), 100000 ), 0, self, 1 )[ "position" ]; +} + +waittill_notify_or_timeout( msg, timer ) +{ + self endon( msg ); + wait timer; +} + +self_delete() +{ + if ( isDefined( self ) ) + { + self delete(); + } +} + +script_delay() +{ + if ( isDefined( self.script_delay ) ) + { + wait self.script_delay; + return 1; + } + else + { + if ( isDefined( self.script_delay_min ) && isDefined( self.script_delay_max ) ) + { + wait randomfloatrange( self.script_delay_min, self.script_delay_max ); + return 1; + } + } + return 0; +} + +button_held_think( which_button ) +{ + self endon( "disconnect" ); + if ( !isDefined( self._holding_button ) ) + { + self._holding_button = []; + } + self._holding_button[ which_button ] = 0; + time_started = 0; + use_time = 250; + while ( 1 ) + { + if ( self._holding_button[ which_button ] ) + { + if ( !( self [[ level._button_funcs[ which_button ] ]]() ) ) + { + self._holding_button[ which_button ] = 0; + } + } + else if ( self [[ level._button_funcs[ which_button ] ]]() ) + { + if ( time_started == 0 ) + { + time_started = getTime(); + } + if ( ( getTime() - time_started ) > use_time ) + { + self._holding_button[ which_button ] = 1; + } + } + else + { + if ( time_started != 0 ) + { + time_started = 0; + } + } + wait 0,05; + } +} + +use_button_held() +{ + init_button_wrappers(); + if ( !isDefined( self._use_button_think_threaded ) ) + { + self thread button_held_think( level.button_use ); + self._use_button_think_threaded = 1; + } + return self._holding_button[ level.button_use ]; +} + +ads_button_held() +{ + init_button_wrappers(); + if ( !isDefined( self._ads_button_think_threaded ) ) + { + self thread button_held_think( level.button_ads ); + self._ads_button_think_threaded = 1; + } + return self._holding_button[ level.button_ads ]; +} + +attack_button_held() +{ + init_button_wrappers(); + if ( !isDefined( self._attack_button_think_threaded ) ) + { + self thread button_held_think( level.button_attack ); + self._attack_button_think_threaded = 1; + } + return self._holding_button[ level.button_attack ]; +} + +use_button_pressed() +{ + return self usebuttonpressed(); +} + +ads_button_pressed() +{ + return self adsbuttonpressed(); +} + +attack_button_pressed() +{ + return self attackbuttonpressed(); +} + +init_button_wrappers() +{ + if ( !isDefined( level._button_funcs ) ) + { + level.button_use = 0; + level.button_ads = 1; + level.button_attack = 2; + level._button_funcs[ level.button_use ] = ::use_button_pressed; + level._button_funcs[ level.button_ads ] = ::ads_button_pressed; + level._button_funcs[ level.button_attack ] = ::attack_button_pressed; + } +} + +wait_network_frame() +{ + if ( numremoteclients() ) + { + snapshot_ids = getsnapshotindexarray(); + acked = undefined; + while ( !isDefined( acked ) ) + { + level waittill( "snapacknowledged" ); + acked = snapshotacknowledged( snapshot_ids ); + } + } + else wait 0,1; +} + +ignore_triggers( timer ) +{ + self endon( "death" ); + self.ignoretriggers = 1; + if ( isDefined( timer ) ) + { + wait timer; + } + else + { + wait 0,5; + } + self.ignoretriggers = 0; +} + +giveachievement_wrapper( achievement, all_players ) +{ + if ( achievement == "" ) + { + return; + } + achievement_lower = tolower( achievement ); + global_counter = 0; + if ( isDefined( all_players ) && all_players ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + players[ i ] giveachievement( achievement ); + has_achievement = players[ i ] maps/mp/zombies/_zm_stats::get_global_stat( achievement_lower ); + if ( isDefined( has_achievement ) && !has_achievement ) + { + global_counter++; + } + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( achievement_lower, 0 ); + if ( issplitscreen() || i == 0 && !issplitscreen() ) + { + if ( isDefined( level.achievement_sound_func ) ) + { + players[ i ] thread [[ level.achievement_sound_func ]]( achievement_lower ); + } + } + i++; + } + } + else if ( !isplayer( self ) ) + { +/# + println( "^1self needs to be a player for _utility::giveachievement_wrapper()" ); +#/ + return; + } + self giveachievement( achievement ); + has_achievement = self maps/mp/zombies/_zm_stats::get_global_stat( achievement_lower ); + if ( isDefined( has_achievement ) && !has_achievement ) + { + global_counter++; + } + self maps/mp/zombies/_zm_stats::increment_client_stat( achievement_lower, 0 ); + if ( isDefined( level.achievement_sound_func ) ) + { + self thread [[ level.achievement_sound_func ]]( achievement_lower ); + } + if ( global_counter ) + { + incrementcounter( "global_" + achievement_lower, global_counter ); + } +} + +spawn_failed( spawn ) +{ + if ( isDefined( spawn ) && isalive( spawn ) ) + { + if ( isalive( spawn ) ) + { + return 0; + } + } + return 1; +} + +getyaw( org ) +{ + angles = vectorToAngle( org - self.origin ); + return angles[ 1 ]; +} + +getyawtospot( spot ) +{ + pos = spot; + yaw = self.angles[ 1 ] - getyaw( pos ); + yaw = angleClamp180( yaw ); + return yaw; +} + +add_spawn_function( function, param1, param2, param3, param4 ) +{ +/# + if ( isDefined( level._loadstarted ) ) + { + assert( !isalive( self ), "Tried to add_spawn_function to a living guy." ); + } +#/ + func = []; + func[ "function" ] = function; + func[ "param1" ] = param1; + func[ "param2" ] = param2; + func[ "param3" ] = param3; + func[ "param4" ] = param4; + if ( !isDefined( self.spawn_funcs ) ) + { + self.spawn_funcs = []; + } + self.spawn_funcs[ self.spawn_funcs.size ] = func; +} + +disable_react() +{ +/# + assert( isalive( self ), "Tried to disable react on a non ai" ); +#/ + self.a.disablereact = 1; + self.allowreact = 0; +} + +enable_react() +{ +/# + assert( isalive( self ), "Tried to enable react on a non ai" ); +#/ + self.a.disablereact = 0; + self.allowreact = 1; +} + +flag_wait_or_timeout( flagname, timer ) +{ + start_time = getTime(); + for ( ;; ) + { + if ( level.flag[ flagname ] ) + { + return; + } + else if ( getTime() >= ( start_time + ( timer * 1000 ) ) ) + { + return; + } + else + { + wait_for_flag_or_time_elapses( flagname, timer ); + } + } +} + +wait_for_flag_or_time_elapses( flagname, timer ) +{ + level endon( flagname ); + wait timer; +} + +isads( player ) +{ + return player playerads() > 0,5; +} + +bullet_attack( type ) +{ + if ( type == "MOD_PISTOL_BULLET" ) + { + return 1; + } + return type == "MOD_RIFLE_BULLET"; +} + +pick_up() +{ + player = self.owner; + self destroy_ent(); + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo < clip_max_ammo ) + { + clip_ammo++; + } + player setweaponammoclip( self.name, clip_ammo ); +} + +destroy_ent() +{ + self delete(); +} + +waittill_not_moving() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "detonated" ); + level endon( "game_ended" ); + if ( self.classname == "grenade" ) + { + self waittill( "stationary" ); + } + else prevorigin = self.origin; + while ( 1 ) + { + wait 0,15; + if ( self.origin == prevorigin ) + { + return; + } + else + { + prevorigin = self.origin; + } + } +} + +get_closest_player( org ) +{ + players = []; + players = get_players(); + return getclosest( org, players ); +} + +ent_flag_wait( msg ) +{ + self endon( "death" ); + while ( !self.ent_flag[ msg ] ) + { + self waittill( msg ); + } +} + +ent_flag_wait_either( flag1, flag2 ) +{ + self endon( "death" ); + for ( ;; ) + { + if ( ent_flag( flag1 ) ) + { + return; + } + if ( ent_flag( flag2 ) ) + { + return; + } + self waittill_either( flag1, flag2 ); + } +} + +ent_wait_for_flag_or_time_elapses( flagname, timer ) +{ + self endon( flagname ); + wait timer; +} + +ent_flag_wait_or_timeout( flagname, timer ) +{ + self endon( "death" ); + start_time = getTime(); + for ( ;; ) + { + if ( self.ent_flag[ flagname ] ) + { + return; + } + else if ( getTime() >= ( start_time + ( timer * 1000 ) ) ) + { + return; + } + else + { + self ent_wait_for_flag_or_time_elapses( flagname, timer ); + } + } +} + +ent_flag_waitopen( msg ) +{ + self endon( "death" ); + while ( self.ent_flag[ msg ] ) + { + self waittill( msg ); + } +} + +ent_flag_init( message, val ) +{ + if ( !isDefined( self.ent_flag ) ) + { + self.ent_flag = []; + self.ent_flags_lock = []; + } + if ( !isDefined( level.first_frame ) ) + { +/# + assert( !isDefined( self.ent_flag[ message ] ), "Attempt to reinitialize existing flag '" + message + "' on entity." ); +#/ + } + if ( isDefined( val ) && val ) + { + self.ent_flag[ message ] = 1; +/# + self.ent_flags_lock[ message ] = 1; +#/ + } + else + { + self.ent_flag[ message ] = 0; +/# + self.ent_flags_lock[ message ] = 0; +#/ + } +} + +ent_flag_exist( message ) +{ + if ( isDefined( self.ent_flag ) && isDefined( self.ent_flag[ message ] ) ) + { + return 1; + } + return 0; +} + +ent_flag_set_delayed( message, delay ) +{ + wait delay; + self ent_flag_set( message ); +} + +ent_flag_set( message ) +{ +/# + assert( isDefined( self ), "Attempt to set a flag on entity that is not defined" ); + assert( isDefined( self.ent_flag[ message ] ), "Attempt to set a flag before calling flag_init: '" + message + "'." ); + assert( self.ent_flag[ message ] == self.ent_flags_lock[ message ] ); + self.ent_flags_lock[ message ] = 1; +#/ + self.ent_flag[ message ] = 1; + self notify( message ); +} + +ent_flag_toggle( message ) +{ + if ( self ent_flag( message ) ) + { + self ent_flag_clear( message ); + } + else + { + self ent_flag_set( message ); + } +} + +ent_flag_clear( message ) +{ +/# + assert( isDefined( self ), "Attempt to clear a flag on entity that is not defined" ); + assert( isDefined( self.ent_flag[ message ] ), "Attempt to set a flag before calling flag_init: '" + message + "'." ); + assert( self.ent_flag[ message ] == self.ent_flags_lock[ message ] ); + self.ent_flags_lock[ message ] = 0; +#/ + if ( self.ent_flag[ message ] ) + { + self.ent_flag[ message ] = 0; + self notify( message ); + } +} + +ent_flag_clear_delayed( message, delay ) +{ + wait delay; + self ent_flag_clear( message ); +} + +ent_flag( message ) +{ +/# + assert( isDefined( message ), "Tried to check flag but the flag was not defined." ); +#/ +/# + assert( isDefined( self.ent_flag[ message ] ), "Tried to check entity flag '" + message + "', but the flag was not initialized." ); +#/ + if ( !self.ent_flag[ message ] ) + { + return 0; + } + return 1; +} + +ent_flag_init_ai_standards() +{ + message_array = []; + message_array[ message_array.size ] = "goal"; + message_array[ message_array.size ] = "damage"; + i = 0; + while ( i < message_array.size ) + { + self ent_flag_init( message_array[ i ] ); + self thread ent_flag_wait_ai_standards( message_array[ i ] ); + i++; + } +} + +ent_flag_wait_ai_standards( message ) +{ + self endon( "death" ); + self waittill( message ); + self.ent_flag[ message ] = 1; +} + +flat_angle( angle ) +{ + rangle = ( 0, angle[ 1 ], 0 ); + return rangle; +} + +waittill_any_or_timeout( timer, string1, string2, string3, string4, string5 ) +{ +/# + assert( isDefined( string1 ) ); +#/ + self endon( string1 ); + if ( isDefined( string2 ) ) + { + self endon( string2 ); + } + if ( isDefined( string3 ) ) + { + self endon( string3 ); + } + if ( isDefined( string4 ) ) + { + self endon( string4 ); + } + if ( isDefined( string5 ) ) + { + self endon( string5 ); + } + wait timer; +} + +clear_run_anim() +{ + self.alwaysrunforward = undefined; + self.a.combatrunanim = undefined; + self.run_noncombatanim = undefined; + self.walk_combatanim = undefined; + self.walk_noncombatanim = undefined; + self.precombatrunenabled = 1; +} + +track_players_intersection_tracker() +{ + self endon( "disconnect" ); + self endon( "death" ); + level endon( "end_game" ); + wait 5; + while ( 1 ) + { + killed_players = 0; + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() || players[ i ].sessionstate != "playing" ) + { + i++; + continue; + } + else + { + j = 0; + while ( j < players.size ) + { + if ( j != i || players[ j ] maps/mp/zombies/_zm_laststand::player_is_in_laststand() && players[ j ].sessionstate != "playing" ) + { + j++; + continue; + } + else + { + if ( isDefined( level.player_intersection_tracker_override ) ) + { + if ( players[ i ] [[ level.player_intersection_tracker_override ]]( players[ j ] ) ) + { + j++; + continue; + } + } + else playeri_origin = players[ i ].origin; + playerj_origin = players[ j ].origin; + if ( abs( playeri_origin[ 2 ] - playerj_origin[ 2 ] ) > 60 ) + { + j++; + continue; + } + else distance_apart = distance2d( playeri_origin, playerj_origin ); + if ( abs( distance_apart ) > 18 ) + { + j++; + continue; + } + else + { +/# + iprintlnbold( "PLAYERS ARE TOO FRIENDLY!!!!!" ); +#/ + players[ i ] dodamage( 1000, ( 0, 0, 1 ) ); + players[ j ] dodamage( 1000, ( 0, 0, 1 ) ); + if ( !killed_players ) + { + players[ i ] playlocalsound( level.zmb_laugh_alias ); + } + players[ i ] maps/mp/zombies/_zm_stats::increment_map_cheat_stat( "cheat_too_friendly" ); + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_too_friendly", 0 ); + players[ i ] maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + players[ j ] maps/mp/zombies/_zm_stats::increment_map_cheat_stat( "cheat_too_friendly" ); + players[ j ] maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_too_friendly", 0 ); + players[ j ] maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + killed_players = 1; + } + } + j++; + } + } + i++; + } + wait 0,5; + } +} + +get_eye() +{ + if ( isplayer( self ) ) + { + linked_ent = self getlinkedent(); + if ( isDefined( linked_ent ) && getDvarInt( "cg_cameraUseTagCamera" ) > 0 ) + { + camera = linked_ent gettagorigin( "tag_camera" ); + if ( isDefined( camera ) ) + { + return camera; + } + } + } + pos = self geteye(); + return pos; +} + +is_player_looking_at( origin, dot, do_trace, ignore_ent ) +{ +/# + assert( isplayer( self ), "player_looking_at must be called on a player." ); +#/ + if ( !isDefined( dot ) ) + { + dot = 0,7; + } + if ( !isDefined( do_trace ) ) + { + do_trace = 1; + } + eye = self get_eye(); + delta_vec = anglesToForward( vectorToAngle( origin - eye ) ); + view_vec = anglesToForward( self getplayerangles() ); + new_dot = vectordot( delta_vec, view_vec ); + if ( new_dot >= dot ) + { + if ( do_trace ) + { + return bullettracepassed( origin, eye, 0, ignore_ent ); + } + else + { + return 1; + } + } + return 0; +} + +add_gametype( gt, dummy1, name, dummy2 ) +{ +} + +add_gameloc( gl, dummy1, name, dummy2 ) +{ +} + +get_closest_index( org, array, dist ) +{ + if ( !isDefined( dist ) ) + { + dist = 9999999; + } + distsq = dist * dist; + if ( array.size < 1 ) + { + return; + } + index = undefined; + i = 0; + while ( i < array.size ) + { + newdistsq = distancesquared( array[ i ].origin, org ); + if ( newdistsq >= distsq ) + { + i++; + continue; + } + else + { + distsq = newdistsq; + index = i; + } + i++; + } + return index; +} + +is_valid_zombie_spawn_point( point ) +{ + liftedorigin = point.origin + vectorScale( ( 0, 0, 1 ), 5 ); + size = 48; + height = 64; + mins = ( -1 * size, -1 * size, 0 ); + maxs = ( size, size, height ); + absmins = liftedorigin + mins; + absmaxs = liftedorigin + maxs; + if ( boundswouldtelefrag( absmins, absmaxs ) ) + { + return 0; + } + return 1; +} + +get_closest_index_to_entity( entity, array, dist, extra_check ) +{ + org = entity.origin; + if ( !isDefined( dist ) ) + { + dist = 9999999; + } + distsq = dist * dist; + if ( array.size < 1 ) + { + return; + } + index = undefined; + i = 0; + while ( i < array.size ) + { + if ( isDefined( extra_check ) && !( [[ extra_check ]]( entity, array[ i ] ) ) ) + { + i++; + continue; + } + else + { + newdistsq = distancesquared( array[ i ].origin, org ); + if ( newdistsq >= distsq ) + { + i++; + continue; + } + else + { + distsq = newdistsq; + index = i; + } + } + i++; + } + return index; +} + +set_gamemode_var( var, val ) +{ + if ( !isDefined( game[ "gamemode_match" ] ) ) + { + game[ "gamemode_match" ] = []; + } + game[ "gamemode_match" ][ var ] = val; +} + +set_gamemode_var_once( var, val ) +{ + if ( !isDefined( game[ "gamemode_match" ] ) ) + { + game[ "gamemode_match" ] = []; + } + if ( !isDefined( game[ "gamemode_match" ][ var ] ) ) + { + game[ "gamemode_match" ][ var ] = val; + } +} + +set_game_var( var, val ) +{ + game[ var ] = val; +} + +set_game_var_once( var, val ) +{ + if ( !isDefined( game[ var ] ) ) + { + game[ var ] = val; + } +} + +get_game_var( var ) +{ + if ( isDefined( game[ var ] ) ) + { + return game[ var ]; + } + return undefined; +} + +get_gamemode_var( var ) +{ + if ( isDefined( game[ "gamemode_match" ] ) && isDefined( game[ "gamemode_match" ][ var ] ) ) + { + return game[ "gamemode_match" ][ var ]; + } + return undefined; +} + +waittill_subset( min_num, string1, string2, string3, string4, string5 ) +{ + self endon( "death" ); + ent = spawnstruct(); + ent.threads = 0; + returned_threads = 0; + if ( isDefined( string1 ) ) + { + self thread waittill_string( string1, ent ); + ent.threads++; + } + if ( isDefined( string2 ) ) + { + self thread waittill_string( string2, ent ); + ent.threads++; + } + if ( isDefined( string3 ) ) + { + self thread waittill_string( string3, ent ); + ent.threads++; + } + if ( isDefined( string4 ) ) + { + self thread waittill_string( string4, ent ); + ent.threads++; + } + if ( isDefined( string5 ) ) + { + self thread waittill_string( string5, ent ); + ent.threads++; + } + while ( ent.threads ) + { + ent waittill( "returned" ); + ent.threads--; + + returned_threads++; + if ( returned_threads >= min_num ) + { + break; + } + else + { + } + } + ent notify( "die" ); +} + +is_headshot( sweapon, shitloc, smeansofdeath ) +{ + if ( shitloc != "head" && shitloc != "helmet" ) + { + return 0; + } + if ( smeansofdeath == "MOD_IMPACT" && issubstr( sweapon, "knife_ballistic" ) ) + { + return 1; + } + if ( smeansofdeath != "MOD_MELEE" && smeansofdeath != "MOD_BAYONET" && smeansofdeath != "MOD_IMPACT" ) + { + return smeansofdeath != "MOD_UNKNOWN"; + } +} + +is_jumping() +{ + ground_ent = self getgroundent(); + return !isDefined( ground_ent ); +} + +is_explosive_damage( mod ) +{ + if ( !isDefined( mod ) ) + { + return 0; + } + if ( mod != "MOD_GRENADE" && mod != "MOD_GRENADE_SPLASH" && mod != "MOD_PROJECTILE" || mod == "MOD_PROJECTILE_SPLASH" && mod == "MOD_EXPLOSIVE" ) + { + return 1; + } + return 0; +} + +sndswitchannouncervox( who ) +{ + switch( who ) + { + case "sam": + game[ "zmbdialog" ][ "prefix" ] = "vox_zmba_sam"; + level.zmb_laugh_alias = "zmb_laugh_sam"; + level.sndannouncerisrich = 0; + break; + case "richtofen": + game[ "zmbdialog" ][ "prefix" ] = "vox_zmba"; + level.zmb_laugh_alias = "zmb_laugh_richtofen"; + level.sndannouncerisrich = 1; + break; + } +} + +do_player_general_vox( category, type, timer, chance ) +{ + if ( isDefined( timer ) && isDefined( level.votimer[ type ] ) && level.votimer[ type ] > 0 ) + { + return; + } + if ( !isDefined( chance ) ) + { + chance = maps/mp/zombies/_zm_audio::get_response_chance( type ); + } + if ( chance > randomint( 100 ) ) + { + self thread maps/mp/zombies/_zm_audio::create_and_play_dialog( category, type ); + if ( isDefined( timer ) ) + { + level.votimer[ type ] = timer; + level thread general_vox_timer( level.votimer[ type ], type ); + } + } +} + +general_vox_timer( timer, type ) +{ + level endon( "end_game" ); +/# + println( "ZM >> VOX TIMER STARTED FOR " + type + " ( " + timer + ")" ); +#/ + while ( timer > 0 ) + { + wait 1; + timer--; + + } + level.votimer[ type ] = timer; +/# + println( "ZM >> VOX TIMER ENDED FOR " + type + " ( " + timer + ")" ); +#/ +} + +create_vox_timer( type ) +{ + level.votimer[ type ] = 0; +} + +play_vox_to_player( category, type ) +{ + self thread maps/mp/zombies/_zm_audio::playvoxtoplayer( category, type ); +} + +is_favorite_weapon( weapon_to_check ) +{ + if ( !isDefined( self.favorite_wall_weapons_list ) ) + { + return 0; + } + _a6004 = self.favorite_wall_weapons_list; + _k6004 = getFirstArrayKey( _a6004 ); + while ( isDefined( _k6004 ) ) + { + weapon = _a6004[ _k6004 ]; + if ( weapon_to_check == weapon ) + { + return 1; + } + _k6004 = getNextArrayKey( _a6004, _k6004 ); + } + return 0; +} + +add_vox_response_chance( event, chance ) +{ + level.response_chances[ event ] = chance; +} + +set_demo_intermission_point() +{ + spawnpoints = getentarray( "mp_global_intermission", "classname" ); + if ( !spawnpoints.size ) + { + return; + } + spawnpoint = spawnpoints[ 0 ]; + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = ( level.scr_zm_ui_gametype + "_" ) + location; + i = 0; + while ( i < spawnpoints.size ) + { + while ( isDefined( spawnpoints[ i ].script_string ) ) + { + tokens = strtok( spawnpoints[ i ].script_string, " " ); + _a6044 = tokens; + _k6044 = getFirstArrayKey( _a6044 ); + while ( isDefined( _k6044 ) ) + { + token = _a6044[ _k6044 ]; + if ( token == match_string ) + { + spawnpoint = spawnpoints[ i ]; + i = spawnpoints.size; + i++; + continue; + } + else + { + _k6044 = getNextArrayKey( _a6044, _k6044 ); + } + } + } + i++; + } + setdemointermissionpoint( spawnpoint.origin, spawnpoint.angles ); +} + +register_map_navcard( navcard_on_map, navcard_needed_for_computer ) +{ + level.navcard_needed = navcard_needed_for_computer; + level.map_navcard = navcard_on_map; +} + +does_player_have_map_navcard( player ) +{ + return player maps/mp/zombies/_zm_stats::get_global_stat( level.map_navcard ); +} + +does_player_have_correct_navcard( player ) +{ + if ( !isDefined( level.navcard_needed ) ) + { + return 0; + } + return player maps/mp/zombies/_zm_stats::get_global_stat( level.navcard_needed ); +} + +set_player_is_female( onoff ) +{ + if ( isDefined( level.use_female_animations ) && level.use_female_animations ) + { + female_perk = "specialty_gpsjammer"; + if ( onoff ) + { + self setperk( female_perk ); + return; + } + else + { + self unsetperk( female_perk ); + } + } +} + +disable_player_move_states( forcestancechange ) +{ + self allowcrouch( 1 ); + self allowlean( 0 ); + self allowads( 0 ); + self allowsprint( 0 ); + self allowprone( 0 ); + self allowmelee( 0 ); + if ( isDefined( forcestancechange ) && forcestancechange == 1 ) + { + if ( self getstance() == "prone" ) + { + self setstance( "crouch" ); + } + } +} + +enable_player_move_states() +{ + if ( !isDefined( self._allow_lean ) || self._allow_lean == 1 ) + { + self allowlean( 1 ); + } + if ( !isDefined( self._allow_ads ) || self._allow_ads == 1 ) + { + self allowads( 1 ); + } + if ( !isDefined( self._allow_sprint ) || self._allow_sprint == 1 ) + { + self allowsprint( 1 ); + } + if ( !isDefined( self._allow_prone ) || self._allow_prone == 1 ) + { + self allowprone( 1 ); + } + if ( !isDefined( self._allow_melee ) || self._allow_melee == 1 ) + { + self allowmelee( 1 ); + } +} + +check_and_create_node_lists() +{ + if ( !isDefined( level._link_node_list ) ) + { + level._link_node_list = []; + } + if ( !isDefined( level._unlink_node_list ) ) + { + level._unlink_node_list = []; + } +} + +link_nodes( a, b ) +{ + if ( nodesarelinked( a, b ) ) + { + return; + } + check_and_create_node_lists(); + a_index_string = "" + a.origin; + b_index_string = "" + b.origin; + if ( !isDefined( level._link_node_list[ a_index_string ] ) ) + { + level._link_node_list[ a_index_string ] = spawnstruct(); + level._link_node_list[ a_index_string ].node = a; + level._link_node_list[ a_index_string ].links = []; + } + if ( !isDefined( level._link_node_list[ a_index_string ].links[ b_index_string ] ) ) + { + level._link_node_list[ a_index_string ].links[ b_index_string ] = b; + } + if ( isDefined( level._unlink_node_list[ a_index_string ] ) ) + { + if ( isDefined( level._unlink_node_list[ a_index_string ].links[ b_index_string ] ) ) + { + } + } + linknodes( a, b ); +} + +unlink_nodes( a, b ) +{ + if ( !nodesarelinked( a, b ) ) + { + return; + } + check_and_create_node_lists(); + a_index_string = "" + a.origin; + b_index_string = "" + b.origin; + if ( !isDefined( level._unlink_node_list[ a_index_string ] ) ) + { + level._unlink_node_list[ a_index_string ] = spawnstruct(); + level._unlink_node_list[ a_index_string ].node = a; + level._unlink_node_list[ a_index_string ].links = []; + } + if ( !isDefined( level._unlink_node_list[ a_index_string ].links[ b_index_string ] ) ) + { + level._unlink_node_list[ a_index_string ].links[ b_index_string ] = b; + } + if ( isDefined( level._link_node_list[ a_index_string ] ) ) + { + if ( isDefined( level._link_node_list[ a_index_string ].links[ b_index_string ] ) ) + { + } + } + unlinknodes( a, b ); +} + +spawn_path_node( origin, angles, k1, v1, k2, v2 ) +{ + if ( !isDefined( level._spawned_path_nodes ) ) + { + level._spawned_path_nodes = []; + } + node = spawnstruct(); + node.origin = origin; + node.angles = angles; + node.k1 = k1; + node.v1 = v1; + node.k2 = k2; + node.v2 = v2; + node.node = spawn_path_node_internal( origin, angles, k1, v1, k2, v2 ); + level._spawned_path_nodes[ level._spawned_path_nodes.size ] = node; + return node.node; +} + +spawn_path_node_internal( origin, angles, k1, v1, k2, v2 ) +{ + if ( isDefined( k2 ) ) + { + return spawnpathnode( "node_pathnode", origin, angles, k1, v1, k2, v2 ); + } + else + { + if ( isDefined( k1 ) ) + { + return spawnpathnode( "node_pathnode", origin, angles, k1, v1 ); + } + else + { + return spawnpathnode( "node_pathnode", origin, angles ); + } + } + return undefined; +} + +delete_spawned_path_nodes() +{ +} + +respawn_path_nodes() +{ + if ( !isDefined( level._spawned_path_nodes ) ) + { + return; + } + i = 0; + while ( i < level._spawned_path_nodes.size ) + { + node_struct = level._spawned_path_nodes[ i ]; +/# + println( "Re-spawning spawned path node @ " + node_struct.origin ); +#/ + node_struct.node = spawn_path_node_internal( node_struct.origin, node_struct.angles, node_struct.k1, node_struct.v1, node_struct.k2, node_struct.v2 ); + i++; + } +} + +link_changes_internal_internal( list, func ) +{ + keys = getarraykeys( list ); + i = 0; + while ( i < keys.size ) + { + node = list[ keys[ i ] ].node; + node_keys = getarraykeys( list[ keys[ i ] ].links ); + j = 0; + while ( j < node_keys.size ) + { + if ( isDefined( list[ keys[ i ] ].links[ node_keys[ j ] ] ) ) + { +/# + println( "Node at " + keys[ i ] + " to node at " + node_keys[ j ] ); +#/ + [[ func ]]( node, list[ keys[ i ] ].links[ node_keys[ j ] ] ); + } + j++; + } + i++; + } +} + +link_changes_internal( func_for_link_list, func_for_unlink_list ) +{ + if ( isDefined( level._link_node_list ) ) + { +/# + println( "Link List" ); +#/ + link_changes_internal_internal( level._link_node_list, func_for_link_list ); + } + if ( isDefined( level._unlink_node_list ) ) + { +/# + println( "UnLink List" ); +#/ + link_changes_internal_internal( level._unlink_node_list, func_for_unlink_list ); + } +} + +link_nodes_wrapper( a, b ) +{ + if ( !nodesarelinked( a, b ) ) + { + linknodes( a, b ); + } +} + +unlink_nodes_wrapper( a, b ) +{ + if ( nodesarelinked( a, b ) ) + { + unlinknodes( a, b ); + } +} + +undo_link_changes() +{ +/# + println( "***" ); + println( "***" ); + println( "*** Undoing link changes" ); +#/ + link_changes_internal( ::unlink_nodes_wrapper, ::link_nodes_wrapper ); + delete_spawned_path_nodes(); +} + +redo_link_changes() +{ +/# + println( "***" ); + println( "***" ); + println( "*** Redoing link changes" ); +#/ + respawn_path_nodes(); + link_changes_internal( ::link_nodes_wrapper, ::unlink_nodes_wrapper ); +} + +set_player_tombstone_index() +{ + if ( !isDefined( level.tombstone_index ) ) + { + level.tombstone_index = 0; + } + if ( !isDefined( self.tombstone_index ) ) + { + self.tombstone_index = level.tombstone_index; + level.tombstone_index++; + } +} + +hotjoin_setup_player( viewmodel ) +{ + if ( is_true( level.passed_introscreen ) && !isDefined( self.first_spawn ) && !isDefined( self.characterindex ) ) + { + self.first_spawn = 1; + self setviewmodel( viewmodel ); + return 1; + } + return 0; +} + +is_zombie_perk_bottle( str_weapon ) +{ + switch( str_weapon ) + { + case "zombie_perk_bottle_additionalprimaryweapon": + case "zombie_perk_bottle_cherry": + case "zombie_perk_bottle_deadshot": + case "zombie_perk_bottle_doubletap": + case "zombie_perk_bottle_jugg": + case "zombie_perk_bottle_marathon": + case "zombie_perk_bottle_nuke": + case "zombie_perk_bottle_revive": + case "zombie_perk_bottle_sleight": + case "zombie_perk_bottle_tombstone": + case "zombie_perk_bottle_vulture": + case "zombie_perk_bottle_whoswho": + b_is_perk_bottle = 1; + break; + default: + b_is_perk_bottle = 0; + break; + } + return b_is_perk_bottle; +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_vulture.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_vulture.gsc new file mode 100644 index 0000000..a1554c4 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_vulture.gsc @@ -0,0 +1,195 @@ +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init_vulture() +{ + setdvarint( "zombies_debug_vulture_perk", 1 ); + setdvarint( "zombies_perk_vulture_pickup_time", 12 ); + setdvarint( "zombies_perk_vulture_drop_chance", 25 ); + setdvarint( "zombies_perk_vulture_ammo_chance", 40 ); + setdvarint( "zombies_perk_vulture_points_chance", 50 ); + setdvarint( "zombies_perk_vulture_stink_chance", 10 ); +} + +enable_vulture_perk_for_level() +{ + level.zombiemode_using_vulture_perk = 1; +} + +give_vulture_perk() +{ + iprintln( "player " + self getentitynumber() + " has vulture perk!" ); + self.hasperkspecialtyvulture = 1; +} + +take_vulture_perk() +{ + iprintln( "player " + self getentitynumber() + " has lost vulture perk!" ); + self.hasperkspecialtyvulture = undefined; +} + +do_vulture_death( player ) +{ + if ( isDefined( self ) ) + { + self thread _do_vulture_death( player ); + } +} + +_do_vulture_death( player ) +{ + if ( should_do_vulture_drop() ) + { + str_bonus = get_vulture_drop_type(); + str_identifier = "_" + self getentitynumber() + "_" + getTime(); + player thread show_debug_info( self.origin, str_identifier, str_bonus ); + self thread check_vulture_drop_pickup( self.origin, player, str_identifier, str_bonus ); + } +} + +should_do_vulture_drop() +{ + n_roll = randomint( 100 ); + b_should_drop = n_roll > ( 100 - getDvarInt( #"70E3B3FA" ) ); + return b_should_drop; +} + +get_vulture_drop_type() +{ + n_chance_ammo = getDvarInt( #"F75E07AF" ); + n_chance_points = getDvarInt( #"D7BCDBE2" ); + n_chance_stink = getDvarInt( #"4918C38E" ); + n_total_weight = n_chance_ammo + n_chance_points + n_chance_stink; + n_cutoff_ammo = n_chance_ammo; + n_cutoff_points = n_chance_ammo + n_chance_points; + n_roll = randomint( n_total_weight ); + if ( n_roll < n_cutoff_ammo ) + { + str_bonus = "ammo"; + } + else if ( n_roll > n_cutoff_ammo && n_roll < n_cutoff_points ) + { + str_bonus = "points"; + } + else + { + str_bonus = "stink"; + } + return str_bonus; +} + +show_debug_info( v_drop_point, str_identifier, str_bonus ) +{ +/# + while ( getDvarInt( #"38E68F2B" ) ) + { + self endon( str_identifier ); + iprintln( "zombie dropped " + str_bonus ); + i = 0; + while ( i < ( getDvarInt( #"34FA67DE" ) * 20 ) ) + { + circle( v_drop_point, 32, get_debug_circle_color( str_bonus ), 0, 1, 1 ); + wait 0,05; + i++; +#/ + } + } +} + +get_debug_circle_color( str_bonus ) +{ + switch( str_bonus ) + { + case "ammo": + v_color = ( 1, 1, 1 ); + break; + case "points": + v_color = ( 1, 1, 1 ); + break; + case "stink": + v_color = ( 1, 1, 1 ); + break; + default: + v_color = ( 1, 1, 1 ); + break; + } + return v_color; +} + +check_vulture_drop_pickup( v_drop_origin, player, str_identifier, str_bonus ) +{ + player endon( "death" ); + player endon( "disconnect" ); + b_collected_vulture = 0; + n_times_to_check = int( getDvarInt( #"34FA67DE" ) / 0,25 ); + i = 0; + while ( i < n_times_to_check ) + { + if ( distancesquared( v_drop_origin, player.origin ) < 1024 ) + { + b_collected_vulture = 1; + player notify( str_identifier ); + break; + } + else + { + wait 0,25; + i++; + } + } + if ( b_collected_vulture ) + { + player give_vulture_bonus( str_bonus ); + } +} + +give_vulture_bonus( str_bonus ) +{ + switch( str_bonus ) + { + case "ammo": + self give_bonus_ammo(); + break; + case "points": + self give_bonus_points(); + break; + case "stink": + self give_bonus_stink(); + break; + default: +/# + assert( "invalid bonus string '" + str_bonus + "' used in give_vulture_bonus()!" ); +#/ + break; + } +} + +give_bonus_ammo() +{ + str_weapon_current = self getcurrentweapon(); + if ( str_weapon_current != "none" ) + { + n_ammo_count_current = self getweaponammostock( str_weapon_current ); + n_ammo_count_max = weaponmaxammo( str_weapon_current ); + n_bullets_refunded = int( n_ammo_count_max * 0,05 ); + self setweaponammostock( str_weapon_current, n_ammo_count_current + n_bullets_refunded ); +/# + if ( getDvarInt( #"38E68F2B" ) ) + { + iprintln( ( str_weapon_current + " bullets given: " ) + n_bullets_refunded ); +#/ + } + } +} + +give_bonus_points() +{ + self maps/mp/zombies/_zm_score::player_add_points( "vulture", 5 ); +} + +give_bonus_stink() +{ + iprintln( "zombie stink" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_ballistic_knife.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_ballistic_knife.gsc new file mode 100644 index 0000000..cd33180 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_ballistic_knife.gsc @@ -0,0 +1,278 @@ +#include maps/mp/zombies/_zm_stats; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + if ( isDefined( level._uses_retrievable_ballisitic_knives ) && level._uses_retrievable_ballisitic_knives == 1 ) + { + precachemodel( "t5_weapon_ballistic_knife_projectile" ); + precachemodel( "t5_weapon_ballistic_knife_blade_retrieve" ); + } +} + +on_spawn( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + player endon( "zmb_lost_knife" ); + level endon( "game_ended" ); + self waittill( "stationary", endpos, normal, angles, attacker, prey, bone ); + isfriendly = 0; + if ( isDefined( endpos ) ) + { + retrievable_model = spawn( "script_model", endpos ); + retrievable_model setmodel( "t5_weapon_ballistic_knife_blade_retrieve" ); + retrievable_model setowner( player ); + retrievable_model.owner = player; + retrievable_model.angles = angles; + retrievable_model.name = watcher.weapon; + if ( isDefined( prey ) ) + { + if ( isplayer( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + else + { + if ( isai( prey ) && player.team == prey.team ) + { + isfriendly = 1; + } + } + if ( !isfriendly ) + { + retrievable_model linkto( prey, bone ); + retrievable_model thread force_drop_knives_to_ground_on_death( player, prey ); + } + else + { + if ( isfriendly ) + { + retrievable_model physicslaunch( normal, ( randomint( 10 ), randomint( 10 ), randomint( 10 ) ) ); + normal = ( 0, 0, 1 ); + } + } + } + watcher.objectarray[ watcher.objectarray.size ] = retrievable_model; + if ( isfriendly ) + { + retrievable_model waittill( "stationary" ); + } + retrievable_model thread drop_knives_to_ground( player ); + if ( isfriendly ) + { + player notify( "ballistic_knife_stationary" ); + } + else + { + player notify( "ballistic_knife_stationary" ); + } + retrievable_model thread wait_to_show_glowing_model( prey ); + } +} + +wait_to_show_glowing_model( prey ) +{ + level endon( "game_ended" ); + self endon( "death" ); + wait 2; + self setmodel( "t5_weapon_ballistic_knife_blade_retrieve" ); +} + +on_spawn_retrieve_trigger( watcher, player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + player endon( "zmb_lost_knife" ); + level endon( "game_ended" ); + player waittill( "ballistic_knife_stationary", retrievable_model, normal, prey ); + if ( !isDefined( retrievable_model ) ) + { + return; + } + trigger_pos = []; + if ( isDefined( prey ) || isplayer( prey ) && isai( prey ) ) + { + trigger_pos[ 0 ] = prey.origin[ 0 ]; + trigger_pos[ 1 ] = prey.origin[ 1 ]; + trigger_pos[ 2 ] = prey.origin[ 2 ] + 10; + } + else + { + trigger_pos[ 0 ] = retrievable_model.origin[ 0 ] + ( 10 * normal[ 0 ] ); + trigger_pos[ 1 ] = retrievable_model.origin[ 1 ] + ( 10 * normal[ 1 ] ); + trigger_pos[ 2 ] = retrievable_model.origin[ 2 ] + ( 10 * normal[ 2 ] ); + } + pickup_trigger = spawn( "trigger_radius_use", ( trigger_pos[ 0 ], trigger_pos[ 1 ], trigger_pos[ 2 ] ) ); + pickup_trigger setcursorhint( "HINT_NOICON" ); + pickup_trigger.owner = player; + retrievable_model.retrievabletrigger = pickup_trigger; + hint_string = &"WEAPON_BALLISTIC_KNIFE_PICKUP"; + if ( isDefined( hint_string ) ) + { + pickup_trigger sethintstring( hint_string ); + } + else + { + pickup_trigger sethintstring( &"GENERIC_PICKUP" ); + } + pickup_trigger setteamfortrigger( player.team ); + player clientclaimtrigger( pickup_trigger ); + pickup_trigger enablelinkto(); + if ( isDefined( prey ) ) + { + pickup_trigger linkto( prey ); + } + else + { + pickup_trigger linkto( retrievable_model ); + } + if ( isDefined( level.knife_planted ) ) + { + [[ level.knife_planted ]]( retrievable_model, pickup_trigger, prey ); + } + retrievable_model thread watch_use_trigger( pickup_trigger, retrievable_model, ::pick_up, watcher.weapon, watcher.pickupsoundplayer, watcher.pickupsound ); + player thread watch_shutdown( pickup_trigger, retrievable_model ); +} + +debug_print( endpos ) +{ +/# + self endon( "death" ); + while ( 1 ) + { + print3d( endpos, "pickup_trigger" ); + wait 0,05; +#/ + } +} + +watch_use_trigger( trigger, model, callback, weapon, playersoundonuse, npcsoundonuse ) +{ + self endon( "death" ); + self endon( "delete" ); + level endon( "game_ended" ); + while ( 1 ) + { + trigger waittill( "trigger", player ); + while ( !isalive( player ) ) + { + continue; + } + while ( !player isonground() ) + { + continue; + } + if ( isDefined( trigger.triggerteam ) && player.team != trigger.triggerteam ) + { + continue; + } + if ( isDefined( trigger.claimedby ) && player != trigger.claimedby ) + { + continue; + } + if ( player usebuttonpressed() && !player.throwinggrenade && !player meleebuttonpressed() ) + { + if ( isDefined( playersoundonuse ) ) + { + player playlocalsound( playersoundonuse ); + } + if ( isDefined( npcsoundonuse ) ) + { + player playsound( npcsoundonuse ); + } + player thread [[ callback ]]( weapon, model, trigger ); + return; + } + else + { + } + } +} + +pick_up( weapon, model, trigger ) +{ + current_weapon = self getcurrentweapon(); + if ( current_weapon != weapon ) + { + clip_ammo = self getweaponammoclip( weapon ); + if ( !clip_ammo ) + { + self setweaponammoclip( weapon, 1 ); + } + else + { + new_ammo_stock = self getweaponammostock( weapon ) + 1; + self setweaponammostock( weapon, new_ammo_stock ); + } + } + else + { + new_ammo_stock = self getweaponammostock( weapon ) + 1; + self setweaponammostock( weapon, new_ammo_stock ); + } + self maps/mp/zombies/_zm_stats::increment_client_stat( "ballistic_knives_pickedup" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "ballistic_knives_pickedup" ); + model destroy_ent(); + trigger destroy_ent(); +} + +destroy_ent() +{ + if ( isDefined( self ) ) + { + if ( isDefined( self.glowing_model ) ) + { + self.glowing_model delete(); + } + self delete(); + } +} + +watch_shutdown( trigger, model ) +{ + self waittill_any( "death", "disconnect", "zmb_lost_knife" ); + trigger destroy_ent(); + model destroy_ent(); +} + +drop_knives_to_ground( player ) +{ + player endon( "death" ); + player endon( "zmb_lost_knife" ); + for ( ;; ) + { + level waittill( "drop_objects_to_ground", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread update_retrieve_trigger( player ); + } + } +} + +force_drop_knives_to_ground_on_death( player, prey ) +{ + self endon( "death" ); + player endon( "zmb_lost_knife" ); + prey waittill( "death" ); + self unlink(); + self physicslaunch( ( 0, 0, 1 ), vectorScale( ( 0, 0, 1 ), 5 ) ); + self thread update_retrieve_trigger( player ); +} + +update_retrieve_trigger( player ) +{ + self endon( "death" ); + player endon( "zmb_lost_knife" ); + if ( isDefined( level.custom_update_retrieve_trigger ) ) + { + self [[ level.custom_update_retrieve_trigger ]]( player ); + return; + } + self waittill( "stationary" ); + trigger = self.retrievabletrigger; + trigger.origin = ( self.origin[ 0 ], self.origin[ 1 ], self.origin[ 2 ] + 10 ); + trigger linkto( self ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_bowie.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_bowie.gsc new file mode 100644 index 0000000..54968b5 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_bowie.gsc @@ -0,0 +1,53 @@ +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( isDefined( level.bowie_cost ) ) + { + cost = level.bowie_cost; + } + else + { + cost = 3000; + } + maps/mp/zombies/_zm_melee_weapon::init( "bowie_knife_zm", "zombie_bowie_flourish", "knife_ballistic_bowie_zm", "knife_ballistic_bowie_upgraded_zm", cost, "bowie_upgrade", &"ZOMBIE_WEAPON_BOWIE_BUY", "bowie", ::has_bowie, ::give_bowie, ::take_bowie, ::bowie_flourish ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_bowie" ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_bowie_upgraded" ); +} + +spectator_respawn() +{ + maps/mp/zombies/_zm_melee_weapon::spectator_respawn( "bowie_upgrade", ::take_bowie, ::has_bowie ); +} + +has_bowie() +{ + if ( is_true( level._allow_melee_weapon_switching ) ) + { + return 0; + } + if ( !is_true( self._sickle_zm_equipped ) || is_true( self._bowie_zm_equipped ) && is_true( self._tazer_zm_equipped ) ) + { + return 1; + } + return 0; +} + +give_bowie() +{ + self._bowie_zm_equipped = 1; + self._sickle_zm_equipped = undefined; + self._tazer_zm_equipped = undefined; +} + +take_bowie() +{ + self._bowie_zm_equipped = undefined; +} + +bowie_flourish() +{ +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_claymore.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_claymore.gsc new file mode 100644 index 0000000..57ac3c0 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_claymore.gsc @@ -0,0 +1,487 @@ +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !isDefined( level.claymores_max_per_player ) ) + { + level.claymores_max_per_player = 12; + } + trigs = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < trigs.size ) + { + model = getent( trigs[ i ].target, "targetname" ); + if ( isDefined( model ) ) + { + model hide(); + } + i++; + } + array_thread( trigs, ::buy_claymores ); + level thread give_claymores_after_rounds(); + level.claymores_on_damage = ::satchel_damage; + level.pickup_claymores = ::pickup_claymores; + level.pickup_claymores_trigger_listener = ::pickup_claymores_trigger_listener; + level.claymore_detectiondot = cos( 70 ); + level.claymore_detectionmindist = 20; + level._effect[ "claymore_laser" ] = loadfx( "weapon/claymore/fx_claymore_laser" ); +} + +buy_claymores() +{ + self.zombie_cost = 1000; + self sethintstring( &"ZOMBIE_CLAYMORE_PURCHASE" ); + self setcursorhint( "HINT_NOICON" ); + self endon( "kill_trigger" ); + if ( !isDefined( self.stub ) ) + { + return; + } + if ( isDefined( self.stub ) && !isDefined( self.stub.claymores_triggered ) ) + { + self.stub.claymores_triggered = 0; + } + self.claymores_triggered = self.stub.claymores_triggered; + while ( 1 ) + { + self waittill( "trigger", who ); + while ( who in_revive_trigger() ) + { + continue; + } + while ( who has_powerup_weapon() ) + { + wait 0,1; + } + if ( is_player_valid( who ) ) + { + if ( who.score >= self.zombie_cost ) + { + if ( !who is_player_placeable_mine( "claymore_zm" ) ) + { + play_sound_at_pos( "purchase", self.origin ); + who maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + who thread claymore_setup(); + who thread show_claymore_hint( "claymore_purchased" ); + who thread maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", "grenade" ); + if ( isDefined( self.stub ) ) + { + self.claymores_triggered = self.stub.claymores_triggered; + } + if ( self.claymores_triggered == 0 ) + { + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread maps/mp/zombies/_zm_weapons::weapon_show( who ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.claymores_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.claymores_triggered = 1; + } + } + trigs = getentarray( "claymore_purchase", "targetname" ); + i = 0; + while ( i < trigs.size ) + { + trigs[ i ] setinvisibletoplayer( who ); + i++; + } + } + else who thread show_claymore_hint( "already_purchased" ); + } + } + } +} + +claymore_unitrigger_update_prompt( player ) +{ + if ( player is_player_placeable_mine( "claymore_zm" ) ) + { + return 0; + } + return 1; +} + +set_claymore_visible() +{ + players = get_players(); + trigs = getentarray( "claymore_purchase", "targetname" ); + while ( 1 ) + { + j = 0; + while ( j < players.size ) + { + while ( !players[ j ] is_player_placeable_mine( "claymore_zm" ) ) + { + i = 0; + while ( i < trigs.size ) + { + trigs[ i ] setinvisibletoplayer( players[ j ], 0 ); + i++; + } + } + j++; + } + wait 1; + players = get_players(); + } +} + +claymore_safe_to_plant() +{ + if ( self.owner.claymores.size >= level.claymores_max_per_player ) + { + return 0; + } + if ( isDefined( level.claymore_safe_to_plant ) ) + { + return self [[ level.claymore_safe_to_plant ]](); + } + return 1; +} + +claymore_wait_and_detonate() +{ + wait 0,1; + self detonate( self.owner ); +} + +claymore_watch() +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( "grenade_fire", claymore, weapname ); + if ( weapname == "claymore_zm" ) + { + claymore.owner = self; + claymore.team = self.team; + self notify( "zmb_enable_claymore_prompt" ); + if ( claymore claymore_safe_to_plant() ) + { + if ( isDefined( level.claymore_planted ) ) + { + self thread [[ level.claymore_planted ]]( claymore ); + } + claymore thread satchel_damage(); + claymore thread claymore_detonation(); + claymore thread play_claymore_effects(); + self maps/mp/zombies/_zm_stats::increment_client_stat( "claymores_planted" ); + self maps/mp/zombies/_zm_stats::increment_player_stat( "claymores_planted" ); + break; + } + else + { + claymore thread claymore_wait_and_detonate(); + } + } + } +} + +claymore_setup() +{ + if ( !isDefined( self.claymores ) ) + { + self.claymores = []; + } + self thread claymore_watch(); + self giveweapon( "claymore_zm" ); + self set_player_placeable_mine( "claymore_zm" ); + self setactionslot( 4, "weapon", "claymore_zm" ); + self setweaponammostock( "claymore_zm", 2 ); +} + +adjust_trigger_origin( origin ) +{ + origin += vectorScale( ( 0, 0, 1 ), 20 ); + return origin; +} + +on_spawn_retrieve_trigger( watcher, player ) +{ + self maps/mp/gametypes_zm/_weaponobjects::onspawnretrievableweaponobject( watcher, player ); + if ( isDefined( self.pickuptrigger ) ) + { + self.pickuptrigger sethintlowpriority( 0 ); + } +} + +pickup_claymores() +{ + player = self.owner; + if ( !player hasweapon( "claymore_zm" ) ) + { + player thread claymore_watch(); + player giveweapon( "claymore_zm" ); + player set_player_placeable_mine( "claymore_zm" ); + player setactionslot( 4, "weapon", "claymore_zm" ); + player setweaponammoclip( "claymore_zm", 0 ); + player notify( "zmb_enable_claymore_prompt" ); + } + else + { + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo >= clip_max_ammo ) + { + player notify( "zmb_disable_claymore_prompt" ); + return; + } + } + self pick_up(); + clip_ammo = player getweaponammoclip( self.name ); + clip_max_ammo = weaponclipsize( self.name ); + if ( clip_ammo >= clip_max_ammo ) + { + player notify( "zmb_disable_claymore_prompt" ); + } + player maps/mp/zombies/_zm_stats::increment_client_stat( "claymores_pickedup" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "claymores_pickedup" ); +} + +pickup_claymores_trigger_listener( trigger, player ) +{ + self thread pickup_claymores_trigger_listener_enable( trigger, player ); + self thread pickup_claymores_trigger_listener_disable( trigger, player ); +} + +pickup_claymores_trigger_listener_enable( trigger, player ) +{ + self endon( "delete" ); + while ( 1 ) + { + player waittill_any( "zmb_enable_claymore_prompt", "spawned_player" ); + if ( !isDefined( trigger ) ) + { + return; + } + trigger trigger_on(); + trigger linkto( self ); + } +} + +pickup_claymores_trigger_listener_disable( trigger, player ) +{ + self endon( "delete" ); + while ( 1 ) + { + player waittill( "zmb_disable_claymore_prompt" ); + if ( !isDefined( trigger ) ) + { + return; + } + trigger unlink(); + trigger trigger_off(); + } +} + +shouldaffectweaponobject( object ) +{ + pos = self.origin + vectorScale( ( 0, 0, 1 ), 32 ); + dirtopos = pos - object.origin; + objectforward = anglesToForward( object.angles ); + dist = vectordot( dirtopos, objectforward ); + if ( dist < level.claymore_detectionmindist ) + { + return 0; + } + dirtopos = vectornormalize( dirtopos ); + dot = vectordot( dirtopos, objectforward ); + return dot > level.claymore_detectiondot; +} + +claymore_detonation() +{ + self endon( "death" ); + self waittill_not_moving(); + detonateradius = 96; + damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 2 ); + damagearea setexcludeteamfortrigger( self.team ); + damagearea enablelinkto(); + damagearea linkto( self ); + if ( is_true( self.isonbus ) ) + { + damagearea setmovingplatformenabled( 1 ); + } + self.damagearea = damagearea; + self thread delete_claymores_on_death( self.owner, damagearea ); + self.owner.claymores[ self.owner.claymores.size ] = self; + while ( 1 ) + { + damagearea waittill( "trigger", ent ); + if ( isDefined( self.owner ) && ent == self.owner ) + { + continue; + } + while ( isDefined( ent.pers ) && isDefined( ent.pers[ "team" ] ) && ent.pers[ "team" ] == self.team ) + { + continue; + } + while ( !ent shouldaffectweaponobject( self ) ) + { + continue; + } + if ( ent damageconetrace( self.origin, self ) > 0 ) + { + self playsound( "wpn_claymore_alert" ); + wait 0,4; + if ( isDefined( self.owner ) ) + { + self detonate( self.owner ); + } + else + { + self detonate( undefined ); + } + return; + } + } +} + +delete_claymores_on_death( player, ent ) +{ + self waittill( "death" ); + if ( isDefined( player ) ) + { + arrayremovevalue( player.claymores, self ); + } + wait 0,05; + if ( isDefined( ent ) ) + { + ent delete(); + } +} + +satchel_damage() +{ + self setcandamage( 1 ); + self.health = 100000; + self.maxhealth = self.health; + attacker = undefined; + while ( 1 ) + { + self waittill( "damage", amount, attacker ); + if ( !isDefined( self ) ) + { + return; + } + self.health = self.maxhealth; + while ( !isplayer( attacker ) ) + { + continue; + } + if ( isDefined( self.owner ) && attacker == self.owner ) + { + continue; + } + while ( isDefined( attacker.pers ) && isDefined( attacker.pers[ "team" ] ) && attacker.pers[ "team" ] != level.zombie_team ) + { + continue; + } + } + if ( level.satchelexplodethisframe ) + { + wait ( 0,1 + randomfloat( 0,4 ) ); + } + else wait 0,05; + if ( !isDefined( self ) ) + { + return; + } + level.satchelexplodethisframe = 1; + thread reset_satchel_explode_this_frame(); + self detonate( attacker ); +} + +reset_satchel_explode_this_frame() +{ + wait 0,05; + level.satchelexplodethisframe = 0; +} + +play_claymore_effects() +{ + self endon( "death" ); + self waittill_not_moving(); + playfxontag( level._effect[ "claymore_laser" ], self, "tag_fx" ); +} + +give_claymores_after_rounds() +{ + while ( 1 ) + { + level waittill( "between_round_over" ); + while ( !level flag_exists( "teleporter_used" ) || !flag( "teleporter_used" ) ) + { + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( players[ i ] is_player_placeable_mine( "claymore_zm" ) ) + { + players[ i ] giveweapon( "claymore_zm" ); + players[ i ] set_player_placeable_mine( "claymore_zm" ); + players[ i ] setactionslot( 4, "weapon", "claymore_zm" ); + players[ i ] setweaponammoclip( "claymore_zm", 2 ); + } + i++; + } + } + } +} + +init_hint_hudelem( x, y, alignx, aligny, fontscale, alpha ) +{ + self.x = x; + self.y = y; + self.alignx = alignx; + self.aligny = aligny; + self.fontscale = fontscale; + self.alpha = alpha; + self.sort = 20; +} + +setup_client_hintelem() +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( !isDefined( self.hintelem ) ) + { + self.hintelem = newclienthudelem( self ); + } + self.hintelem init_hint_hudelem( 320, 220, "center", "bottom", 1,6, 1 ); +} + +show_claymore_hint( string ) +{ + self endon( "death" ); + self endon( "disconnect" ); + if ( string == "claymore_purchased" ) + { + text = &"ZOMBIE_CLAYMORE_HOWTO"; + } + else + { + text = &"ZOMBIE_CLAYMORE_ALREADY_PURCHASED"; + } + self setup_client_hintelem(); + self.hintelem settext( text ); + wait 3,5; + self.hintelem settext( "" ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc new file mode 100644 index 0000000..0427300 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_cymbal_monkey.gsc @@ -0,0 +1,565 @@ +#include maps/mp/zombies/_zm_clone; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +#using_animtree( "zombie_cymbal_monkey" ); + +init() +{ + if ( !cymbal_monkey_exists() ) + { + return; + } +/# + level.zombiemode_devgui_cymbal_monkey_give = ::player_give_cymbal_monkey; +#/ + level._effect[ "monkey_glow" ] = loadfx( "maps/zombie/fx_zombie_monkey_light" ); + level._effect[ "grenade_samantha_steal" ] = loadfx( "maps/zombie/fx_zmb_blackhole_trap_end" ); + level.cymbal_monkeys = []; + scriptmodelsuseanimtree( -1 ); +} + +player_give_cymbal_monkey() +{ + self giveweapon( "cymbal_monkey_zm" ); + self set_player_tactical_grenade( "cymbal_monkey_zm" ); + self thread player_handle_cymbal_monkey(); +} + +player_handle_cymbal_monkey() +{ + self notify( "starting_monkey_watch" ); + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + attract_dist_diff = level.monkey_attract_dist_diff; + if ( !isDefined( attract_dist_diff ) ) + { + attract_dist_diff = 45; + } + num_attractors = level.num_monkey_attractors; + if ( !isDefined( num_attractors ) ) + { + num_attractors = 96; + } + max_attract_dist = level.monkey_attract_dist; + if ( !isDefined( max_attract_dist ) ) + { + max_attract_dist = 1536; + } + while ( 1 ) + { + grenade = get_thrown_monkey(); + self player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ); + wait 0,05; + } +} + +watch_for_dud( model, actor ) +{ + self endon( "death" ); + self waittill( "grenade_dud" ); + model.dud = 1; + self playsound( "zmb_vox_monkey_scream" ); + self.monk_scream_vox = 1; + wait 3; + if ( isDefined( model ) ) + { + model delete(); + } + if ( isDefined( actor ) ) + { + actor delete(); + } + if ( isDefined( self.damagearea ) ) + { + self.damagearea delete(); + } + if ( isDefined( self ) ) + { + self delete(); + } +} + +watch_for_emp( model, actor ) +{ + self endon( "death" ); + while ( 1 ) + { + level waittill( "emp_detonate", origin, radius ); + if ( distancesquared( origin, self.origin ) < ( radius * radius ) ) + { + break; + } + else + { + } + } + self.stun_fx = 1; + if ( isDefined( level._equipment_emp_destroy_fx ) ) + { + playfx( level._equipment_emp_destroy_fx, self.origin + vectorScale( ( 0, 0, -1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); + } + wait 0,15; + self.attract_to_origin = 0; + self deactivate_zombie_point_of_interest(); + model clearanim( %o_monkey_bomb, 0 ); + wait 1; + self detonate(); + wait 1; + if ( isDefined( model ) ) + { + model delete(); + } + if ( isDefined( actor ) ) + { + actor delete(); + } + if ( isDefined( self.damagearea ) ) + { + self.damagearea delete(); + } + if ( isDefined( self ) ) + { + self delete(); + } +} + +clone_player_angles( owner ) +{ + self endon( "death" ); + owner endon( "death" ); + while ( isDefined( self ) ) + { + self.angles = owner.angles; + wait 0,05; + } +} + +show_briefly( showtime ) +{ + self endon( "show_owner" ); + if ( isDefined( self.show_for_time ) ) + { + self.show_for_time = showtime; + return; + } + self.show_for_time = showtime; + self setvisibletoall(); + while ( self.show_for_time > 0 ) + { + self.show_for_time -= 0,05; + wait 0,05; + } + self setvisibletoallexceptteam( level.zombie_team ); + self.show_for_time = undefined; +} + +show_owner_on_attack( owner ) +{ + owner endon( "hide_owner" ); + owner endon( "show_owner" ); + self endon( "explode" ); + self endon( "death" ); + self endon( "grenade_dud" ); + owner.show_for_time = undefined; + for ( ;; ) + { + owner waittill( "weapon_fired" ); + owner thread show_briefly( 0,5 ); + } +} + +hide_owner( owner ) +{ + owner notify( "hide_owner" ); + owner endon( "hide_owner" ); + owner setperk( "specialty_immunemms" ); + owner.no_burning_sfx = 1; + owner notify( "stop_flame_sounds" ); + owner setvisibletoallexceptteam( level.zombie_team ); + owner.hide_owner = 1; + if ( isDefined( level._effect[ "human_disappears" ] ) ) + { + playfx( level._effect[ "human_disappears" ], owner.origin ); + } + self thread show_owner_on_attack( owner ); + evt = self waittill_any_return( "explode", "death", "grenade_dud" ); +/# + println( "ZMCLONE: Player visible again because of " + evt ); +#/ + owner notify( "show_owner" ); + owner unsetperk( "specialty_immunemms" ); + if ( isDefined( level._effect[ "human_disappears" ] ) ) + { + playfx( level._effect[ "human_disappears" ], owner.origin ); + } + owner.no_burning_sfx = undefined; + owner setvisibletoall(); + owner.hide_owner = undefined; + owner show(); +} + +proximity_detonate( owner ) +{ + wait 1,5; + if ( !isDefined( self ) ) + { + return; + } + detonateradius = 96; + explosionradius = detonateradius * 2; + damagearea = spawn( "trigger_radius", self.origin + ( 0, 0, 0 - detonateradius ), 4, detonateradius, detonateradius * 1,5 ); + damagearea setexcludeteamfortrigger( owner.team ); + damagearea enablelinkto(); + damagearea linkto( self ); + self.damagearea = damagearea; + while ( isDefined( self ) ) + { + damagearea waittill( "trigger", ent ); + if ( isDefined( owner ) && ent == owner ) + { + continue; + } + if ( isDefined( ent.team ) && ent.team == owner.team ) + { + continue; + } + self playsound( "wpn_claymore_alert" ); + dist = distance( self.origin, ent.origin ); + radiusdamage( self.origin + vectorScale( ( 0, 0, -1 ), 12 ), explosionradius, 1, 1, owner, "MOD_GRENADE_SPLASH", "cymbal_monkey_zm" ); + if ( isDefined( owner ) ) + { + self detonate( owner ); + } + else + { + self detonate( undefined ); + } + break; + } + if ( isDefined( damagearea ) ) + { + damagearea delete(); + } +} + +player_throw_cymbal_monkey( grenade, num_attractors, max_attract_dist, attract_dist_diff ) +{ + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + if ( isDefined( grenade ) ) + { + grenade endon( "death" ); + if ( self maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + if ( isDefined( grenade.damagearea ) ) + { + grenade.damagearea delete(); + } + grenade delete(); + return; + } + grenade hide(); + model = spawn( "script_model", grenade.origin ); + model setmodel( "weapon_zombie_monkey_bomb" ); + model useanimtree( -1 ); + model linkto( grenade ); + model.angles = grenade.angles; + model thread monkey_cleanup( grenade ); + clone = undefined; + if ( isDefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view ) + { + model setvisibletoallexceptteam( level.zombie_team ); + clone = maps/mp/zombies/_zm_clone::spawn_player_clone( self, vectorScale( ( 0, 0, -1 ), 999 ), level.cymbal_monkey_clone_weapon, undefined ); + model.simulacrum = clone; + clone maps/mp/zombies/_zm_clone::clone_animate( "idle" ); + clone thread clone_player_angles( self ); + clone notsolid(); + clone ghost(); + } + grenade thread watch_for_dud( model, clone ); + grenade thread watch_for_emp( model, clone ); + info = spawnstruct(); + info.sound_attractors = []; + grenade thread monitor_zombie_groans( info ); + grenade waittill( "stationary" ); + if ( isDefined( level.grenade_planted ) ) + { + self thread [[ level.grenade_planted ]]( grenade, model ); + } + if ( isDefined( grenade ) ) + { + if ( isDefined( model ) ) + { + model setanim( %o_monkey_bomb ); + if ( isDefined( grenade.backlinked ) && !grenade.backlinked ) + { + model unlink(); + model.origin = grenade.origin; + model.angles = grenade.angles; + } + } + if ( isDefined( clone ) ) + { + clone forceteleport( grenade.origin, grenade.angles ); + clone thread hide_owner( self ); + grenade thread proximity_detonate( self ); + clone show(); + clone setinvisibletoall(); + clone setvisibletoteam( level.zombie_team ); + } + grenade resetmissiledetonationtime(); + playfxontag( level._effect[ "monkey_glow" ], model, "origin_animate_jnt" ); + valid_poi = check_point_in_enabled_zone( grenade.origin, undefined, undefined ); + if ( isDefined( level.check_valid_poi ) ) + { + valid_poi = grenade [[ level.check_valid_poi ]]( valid_poi ); + } + if ( valid_poi ) + { + grenade create_zombie_point_of_interest( max_attract_dist, num_attractors, 10000 ); + grenade.attract_to_origin = 1; + grenade thread create_zombie_point_of_interest_attractor_positions( 4, attract_dist_diff ); + grenade thread wait_for_attractor_positions_complete(); + grenade thread do_monkey_sound( model, info ); + level.cymbal_monkeys[ level.cymbal_monkeys.size ] = grenade; + } + else + { + grenade.script_noteworthy = undefined; + level thread grenade_stolen_by_sam( grenade, model, clone ); + } + return; + } + else + { + grenade.script_noteworthy = undefined; + level thread grenade_stolen_by_sam( grenade, model, clone ); + } + } +} + +grenade_stolen_by_sam( ent_grenade, ent_model, ent_actor ) +{ + if ( !isDefined( ent_model ) ) + { + return; + } + direction = ent_model.origin; + direction = ( direction[ 1 ], direction[ 0 ], 0 ); + if ( direction[ 1 ] < 0 || direction[ 0 ] > 0 && direction[ 1 ] > 0 ) + { + direction = ( direction[ 0 ], direction[ 1 ] * -1, 0 ); + } + else + { + if ( direction[ 0 ] < 0 ) + { + direction = ( direction[ 0 ] * -1, direction[ 1 ], 0 ); + } + } + players = get_players(); + i = 0; + while ( i < players.size ) + { + if ( isalive( players[ i ] ) ) + { + players[ i ] playlocalsound( level.zmb_laugh_alias ); + } + i++; + } + playfxontag( level._effect[ "grenade_samantha_steal" ], ent_model, "tag_origin" ); + ent_model movez( 60, 1, 0,25, 0,25 ); + ent_model vibrate( direction, 1,5, 2,5, 1 ); + ent_model waittill( "movedone" ); + if ( isDefined( self.damagearea ) ) + { + self.damagearea delete(); + } + ent_model delete(); + if ( isDefined( ent_actor ) ) + { + ent_actor delete(); + } + if ( isDefined( ent_grenade ) ) + { + if ( isDefined( ent_grenade.damagearea ) ) + { + ent_grenade.damagearea delete(); + } + ent_grenade delete(); + } +} + +wait_for_attractor_positions_complete() +{ + self waittill( "attractor_positions_generated" ); + self.attract_to_origin = 0; +} + +monkey_cleanup( parent ) +{ + while ( 1 ) + { + if ( !isDefined( parent ) ) + { + if ( isDefined( self ) && isDefined( self.dud ) && self.dud ) + { + wait 6; + } + if ( isDefined( self.simulacrum ) ) + { + self.simulacrum delete(); + } + self_delete(); + return; + } + wait 0,05; + } +} + +do_monkey_sound( model, info ) +{ + self.monk_scream_vox = 0; + if ( isDefined( level.grenade_safe_to_bounce ) ) + { + if ( !( [[ level.grenade_safe_to_bounce ]]( self.owner, "cymbal_monkey_zm" ) ) ) + { + self playsound( "zmb_vox_monkey_scream" ); + self.monk_scream_vox = 1; + } + } + if ( !self.monk_scream_vox && level.music_override == 0 ) + { + if ( isDefined( level.cymbal_monkey_dual_view ) && level.cymbal_monkey_dual_view ) + { + self playsoundtoteam( "zmb_monkey_song", "allies" ); + } + else + { + self playsound( "zmb_monkey_song" ); + } + } + if ( !self.monk_scream_vox ) + { + self thread play_delayed_explode_vox(); + } + self waittill( "explode", position ); + level notify( "grenade_exploded" ); + monkey_index = -1; + i = 0; + while ( i < level.cymbal_monkeys.size ) + { + if ( !isDefined( level.cymbal_monkeys[ i ] ) ) + { + monkey_index = i; + break; + } + else + { + i++; + } + } + if ( monkey_index >= 0 ) + { + arrayremoveindex( level.cymbal_monkeys, monkey_index ); + } + if ( isDefined( model ) ) + { + model clearanim( %o_monkey_bomb, 0,2 ); + } + i = 0; + while ( i < info.sound_attractors.size ) + { + if ( isDefined( info.sound_attractors[ i ] ) ) + { + info.sound_attractors[ i ] notify( "monkey_blown_up" ); + } + i++; + } +} + +play_delayed_explode_vox() +{ + wait 6,5; + if ( isDefined( self ) ) + { + self playsound( "zmb_vox_monkey_explode" ); + } +} + +get_thrown_monkey() +{ + self endon( "disconnect" ); + self endon( "starting_monkey_watch" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + if ( weapname == "cymbal_monkey_zm" ) + { + grenade.use_grenade_special_long_bookmark = 1; + grenade.grenade_multiattack_bookmark_count = 1; + return grenade; + } + wait 0,05; + } +} + +monitor_zombie_groans( info ) +{ + self endon( "explode" ); + while ( 1 ) + { + if ( !isDefined( self ) ) + { + return; + } + while ( !isDefined( self.attractor_array ) ) + { + wait 0,05; + } + i = 0; + while ( i < self.attractor_array.size ) + { + if ( array_check_for_dupes( info.sound_attractors, self.attractor_array[ i ] ) ) + { + if ( isDefined( self.origin ) && isDefined( self.attractor_array[ i ].origin ) ) + { + if ( distancesquared( self.origin, self.attractor_array[ i ].origin ) < 250000 ) + { + info.sound_attractors[ info.sound_attractors.size ] = self.attractor_array[ i ]; + self.attractor_array[ i ] thread play_zombie_groans(); + } + } + } + i++; + } + wait 0,05; + } +} + +play_zombie_groans() +{ + self endon( "death" ); + self endon( "monkey_blown_up" ); + while ( 1 ) + { + if ( isDefined( self ) ) + { + self playsound( "zmb_vox_zombie_groan" ); + wait randomfloatrange( 2, 3 ); + continue; + } + else + { + return; + } + } +} + +cymbal_monkey_exists() +{ + return isDefined( level.zombie_weapons[ "cymbal_monkey_zm" ] ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_emp_bomb.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_emp_bomb.gsc new file mode 100644 index 0000000..73a8a86 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_emp_bomb.gsc @@ -0,0 +1,369 @@ +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_ai_basic; +#include maps/mp/zombies/_zm_power; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !emp_bomb_exists() ) + { + return; + } + set_zombie_var( "emp_stun_range", 600 ); + set_zombie_var( "emp_stun_time", 20 ); + set_zombie_var( "emp_perk_off_range", 420 ); + set_zombie_var( "emp_perk_off_time", 90 ); + precacheshellshock( "frag_grenade_mp" ); +/# + level.zombiemode_devgui_emp_bomb_give = ::player_give_emp_bomb; +#/ + level thread onplayerconnect(); + level._equipment_emp_destroy_fx = loadfx( "weapon/emp/fx_emp_explosion_equip" ); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread watch_for_grenade_throw(); + } +} + +player_give_emp_bomb() +{ + self giveweapon( "emp_grenade_zm" ); + self set_player_tactical_grenade( "emp_grenade_zm" ); +} + +emp_bomb_exists() +{ + return isDefined( level.zombie_weapons[ "emp_grenade_zm" ] ); +} + +watch_for_grenade_throw() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + while ( weapname != "emp_grenade_zm" ) + { + continue; + } + grenade.use_grenade_special_bookmark = 1; + grenade.grenade_multiattack_bookmark_count = 1; + grenade.owner = self; + self thread emp_detonate( grenade ); + } +} + +emp_detonate( grenade ) +{ + grenade_owner = undefined; + if ( isDefined( grenade.owner ) ) + { + grenade_owner = grenade.owner; + } + grenade waittill( "explode", grenade_origin ); + emp_radius = level.zombie_vars[ "emp_perk_off_range" ]; + emp_time = level.zombie_vars[ "emp_perk_off_time" ]; + origin = grenade_origin; + if ( !isDefined( origin ) ) + { + return; + } + level notify( "emp_detonate" ); + self thread emp_detonate_zombies( grenade_origin, grenade_owner ); + if ( isDefined( level.custom_emp_detonate ) ) + { + thread [[ level.custom_emp_detonate ]]( grenade_origin ); + } + if ( isDefined( grenade_owner ) ) + { + grenade_owner thread destroyequipment( origin, emp_radius ); + } + players_emped = emp_players( origin, emp_radius ); + disabled_list = maps/mp/zombies/_zm_power::change_power_in_radius( -1, origin, emp_radius ); + wait emp_time; + maps/mp/zombies/_zm_power::revert_power_to_list( 1, origin, emp_radius, disabled_list ); + unemp_players( players_emped ); +} + +emp_detonate_zombies( grenade_origin, grenade_owner ) +{ + zombies = get_array_of_closest( grenade_origin, getaispeciesarray( level.zombie_team, "all" ), undefined, undefined, level.zombie_vars[ "emp_stun_range" ] ); + if ( !isDefined( zombies ) ) + { + return; + } + i = 0; + while ( i < zombies.size ) + { + if ( !isDefined( zombies[ i ] ) || isDefined( zombies[ i ].ignore_inert ) && zombies[ i ].ignore_inert ) + { + i++; + continue; + } + else + { + zombies[ i ].becoming_inert = 1; + } + i++; + } + stunned = 0; + i = 0; + while ( i < zombies.size ) + { + if ( !isDefined( zombies[ i ] ) || isDefined( zombies[ i ].ignore_inert ) && zombies[ i ].ignore_inert ) + { + i++; + continue; + } + else + { + stunned++; + zombies[ i ] thread stun_zombie(); + wait 0,05; + } + i++; + } + if ( stunned >= 10 && isDefined( grenade_owner ) ) + { + grenade_owner notify( "the_lights_of_their_eyes" ); + } +} + +stun_zombie() +{ + self endon( "death" ); + self notify( "stun_zombie" ); + self endon( "stun_zombie" ); + if ( self.health <= 0 ) + { +/# + iprintln( "trying to stun a dead zombie" ); +#/ + return; + } + if ( isDefined( self.stun_zombie ) ) + { + self thread [[ self.stun_zombie ]](); + return; + } + self thread maps/mp/zombies/_zm_ai_basic::start_inert(); +} + +emp_players( origin, radius ) +{ + players_emped = []; + players = get_players(); + rsquared = radius * radius; + _a192 = players; + _k192 = getFirstArrayKey( _a192 ); + while ( isDefined( _k192 ) ) + { + player = _a192[ _k192 ]; + if ( isalive( player ) && distancesquared( origin, player.origin ) < rsquared ) + { + player player_emp_on(); + players_emped[ players_emped.size ] = player; + } + _k192 = getNextArrayKey( _a192, _k192 ); + } + return players_emped; +} + +unemp_players( players_emped ) +{ + _a206 = players_emped; + _k206 = getFirstArrayKey( _a206 ); + while ( isDefined( _k206 ) ) + { + player = _a206[ _k206 ]; + player player_emp_off(); + _k206 = getNextArrayKey( _a206, _k206 ); + } +} + +player_emp_on() +{ + self.empgrenaded = 1; + self setempjammed( 1 ); + self shellshock( "frag_grenade_mp", 2 ); +} + +player_emp_off() +{ + if ( isDefined( self ) ) + { + self stopshellshock(); + self setempjammed( 0 ); + self.empgrenaded = undefined; + } +} + +getwatcherforweapon( weapname ) +{ + if ( !isDefined( self ) ) + { + return undefined; + } + if ( !isplayer( self ) ) + { + return undefined; + } + i = 0; + while ( i < self.weaponobjectwatcherarray.size ) + { + if ( self.weaponobjectwatcherarray[ i ].weapon != weapname ) + { + i++; + continue; + } + else + { + return self.weaponobjectwatcherarray[ i ]; + } + i++; + } + return undefined; +} + +destroyequipment( origin, radius ) +{ + grenades = getentarray( "grenade", "classname" ); + rsquared = radius * radius; + i = 0; + while ( i < grenades.size ) + { + item = grenades[ i ]; + if ( distancesquared( origin, item.origin ) > rsquared ) + { + i++; + continue; + } + else if ( !isDefined( item.name ) ) + { + i++; + continue; + } + else if ( !is_offhand_weapon( item.name ) ) + { + i++; + continue; + } + else watcher = item.owner getwatcherforweapon( item.name ); + if ( !isDefined( watcher ) ) + { + i++; + continue; + } + else + { + watcher thread waitanddetonate( item, 0, self, "emp_grenade_zm" ); + } + i++; + } + equipment = maps/mp/zombies/_zm_equipment::get_destructible_equipment_list(); + i = 0; + while ( i < equipment.size ) + { + item = equipment[ i ]; + if ( !isDefined( item ) ) + { + i++; + continue; + } + else if ( distancesquared( origin, item.origin ) > rsquared ) + { + i++; + continue; + } + else if ( isDefined( item.isriotshield ) && item.isriotshield ) + { + i++; + continue; + } + else + { + waitanddamage( item, 505 ); + } + i++; + } +} + +isempweapon( weaponname ) +{ + if ( isDefined( weaponname ) && weaponname != "emp_mp" || weaponname == "emp_grenade_mp" && weaponname == "emp_grenade_zm" ) + { + return 1; + } + return 0; +} + +waitanddetonate( object, delay, attacker, weaponname ) +{ + object endon( "death" ); + object endon( "hacked" ); + from_emp = isempweapon( weaponname ); + if ( from_emp ) + { + object.stun_fx = 1; + if ( isDefined( level._equipment_emp_destroy_fx ) ) + { + playfx( level._equipment_emp_destroy_fx, object.origin + vectorScale( ( 0, 0, 1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); + } + delay = 1,1; + } + if ( delay ) + { + wait delay; + } + if ( isDefined( object.detonated ) && object.detonated == 1 ) + { + return; + } + if ( !isDefined( self.detonate ) ) + { + return; + } + if ( isDefined( attacker ) && isplayer( attacker ) && isDefined( attacker.pers[ "team" ] ) && isDefined( object.owner ) && isDefined( object.owner.pers[ "team" ] ) ) + { + if ( level.teambased ) + { + if ( attacker.pers[ "team" ] != object.owner.pers[ "team" ] ) + { + attacker notify( "destroyed_explosive" ); + } + } + else + { + if ( attacker != object.owner ) + { + attacker notify( "destroyed_explosive" ); + } + } + } + object.detonated = 1; + object [[ self.detonate ]]( attacker, weaponname ); +} + +waitanddamage( object, damage ) +{ + object endon( "death" ); + object endon( "hacked" ); + object.stun_fx = 1; + if ( isDefined( level._equipment_emp_destroy_fx ) ) + { + playfx( level._equipment_emp_destroy_fx, object.origin + vectorScale( ( 0, 0, 1 ), 5 ), ( 0, randomfloat( 360 ), 0 ) ); + } + delay = 1,1; + if ( delay ) + { + wait delay; + } + object maps/mp/zombies/_zm_equipment::item_damage( damage ); +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_jetgun.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_jetgun.gsc new file mode 100644 index 0000000..b7a7a34 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_jetgun.gsc @@ -0,0 +1,910 @@ +#include maps/mp/animscripts/zm_run; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zombies/_zm_powerups; +#include maps/mp/zombies/_zm_buildables; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + if ( !maps/mp/zombies/_zm_weapons::is_weapon_included( "jetgun_zm" ) ) + { + return; + } + maps/mp/zombies/_zm_equipment::register_equipment( "jetgun_zm", &"ZOMBIE_EQUIP_JETGUN_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_JETGUN_HOWTO", "jetgun_zm_icon", "jetgun", ::jetgun_activation_watcher_thread, undefined, ::dropjetgun, ::pickupjetgun ); + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "jetgun", &"ZOMBIE_EQUIP_JETGUN_PICKUP_HINT_STRING" ); + level._effect[ "jetgun_smoke_cloud" ] = loadfx( "weapon/thunder_gun/fx_thundergun_smoke_cloud" ); + level._effect[ "jetgun_overheat" ] = loadfx( "weapon/jet_gun/fx_jetgun_overheat" ); + level._effect[ "jetgun_vortex" ] = loadfx( "weapon/jet_gun/fx_jetgun_on" ); + level._effect[ "jetgun_meat_grinder" ] = loadfx( "weapon/jet_gun/fx_jetgun_kill" ); + set_zombie_var( "jetgun_cylinder_radius", 1024 ); + set_zombie_var( "jetgun_grind_range", 128 ); + set_zombie_var( "jetgun_gib_range", 256 ); + set_zombie_var( "jetgun_gib_damage", 50 ); + set_zombie_var( "jetgun_knockdown_range", 256 ); + set_zombie_var( "jetgun_drag_range", 2048 ); + set_zombie_var( "jetgun_knockdown_damage", 15 ); + set_zombie_var( "powerup_move_dist", 50 ); + set_zombie_var( "powerup_drag_range", 500 ); + level.jetgun_pulled_in_range = int( level.zombie_vars[ "jetgun_drag_range" ] / 8 ) * ( level.zombie_vars[ "jetgun_drag_range" ] / 8 ); + level.jetgun_pulling_in_range = int( level.zombie_vars[ "jetgun_drag_range" ] / 4 ) * ( level.zombie_vars[ "jetgun_drag_range" ] / 4 ); + level.jetgun_inner_range = int( level.zombie_vars[ "jetgun_drag_range" ] / 2 ) * ( level.zombie_vars[ "jetgun_drag_range" ] / 2 ); + level.jetgun_outer_edge = int( level.zombie_vars[ "jetgun_drag_range" ] * level.zombie_vars[ "jetgun_drag_range" ] ); + level.jetgun_gib_refs = []; + level.jetgun_gib_refs[ level.jetgun_gib_refs.size ] = "guts"; + level.jetgun_gib_refs[ level.jetgun_gib_refs.size ] = "right_arm"; + level.jetgun_gib_refs[ level.jetgun_gib_refs.size ] = "left_arm"; + level.jetgun_gib_refs[ level.jetgun_gib_refs.size ] = "right_leg"; + level.jetgun_gib_refs[ level.jetgun_gib_refs.size ] = "left_leg"; + level.jetgun_gib_refs[ level.jetgun_gib_refs.size ] = "no_legs"; +/# + level thread jetgun_devgui_dvar_think(); + level.zm_devgui_jetgun_never_overheat = ::never_overheat; +#/ + onplayerconnect_callback( ::jetgun_on_player_connect ); +} + +dropjetgun() +{ + item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "t6_wpn_zmb_jet_gun_world", "jetgun_zm", self.origin + vectorScale( ( 1, 0, 1 ), 30 ), self.angles ); + if ( isDefined( item ) ) + { + item.overheating = self.jetgun_overheating; + item.heatval = self.jetgun_heatval; + item.original_owner = self; + item.owner = undefined; + item.name = "jetgun_zm"; + item.requires_pickup = 1; + } + self.jetgun_overheating = undefined; + self.jetgun_heatval = undefined; + self takeweapon( "jetgun_zm" ); + return item; +} + +pickupjetgun( item ) +{ + item.owner = self; + if ( isDefined( item.overheating ) && isDefined( item.heatval ) ) + { + self.jetgun_overheating = item.overheating; + self.jetgun_heatval = item.heatval; + } + item.overheating = undefined; + item.heatval = undefined; + self setcurrentweaponspinlerp( 0 ); +} + +jetgun_activation_watcher_thread() +{ + self endon( "zombified" ); + self endon( "disconnect" ); + self endon( "jetgun_zm_taken" ); + while ( 1 ) + { + self waittill_either( "jetgun_zm_activate", "jetgun_zm_deactivate" ); + } +} + +jetgun_devgui_dvar_think() +{ +/# + if ( !maps/mp/zombies/_zm_weapons::is_weapon_included( "jetgun_zm" ) ) + { + return; + } + setdvar( "scr_jetgun_cylinder_radius", level.zombie_vars[ "jetgun_cylinder_radius" ] ); + setdvar( "scr_jetgun_grind_range", level.zombie_vars[ "jetgun_grind_range" ] ); + setdvar( "scr_jetgun_drag_range", level.zombie_vars[ "jetgun_drag_range" ] ); + setdvar( "scr_jetgun_gib_range", level.zombie_vars[ "jetgun_gib_range" ] ); + setdvar( "scr_jetgun_gib_damage", level.zombie_vars[ "jetgun_gib_damage" ] ); + setdvar( "scr_jetgun_knockdown_range", level.zombie_vars[ "jetgun_knockdown_range" ] ); + setdvar( "scr_jetgun_knockdown_damage", level.zombie_vars[ "jetgun_knockdown_damage" ] ); + for ( ;; ) + { + level.zombie_vars[ "jetgun_cylinder_radius" ] = getDvarInt( "scr_jetgun_cylinder_radius" ); + level.zombie_vars[ "jetgun_grind_range" ] = getDvarInt( "scr_jetgun_grind_range" ); + level.zombie_vars[ "jetgun_drag_range" ] = getDvarInt( "scr_jetgun_drag_range" ); + level.zombie_vars[ "jetgun_gib_range" ] = getDvarInt( "scr_jetgun_gib_range" ); + level.zombie_vars[ "jetgun_gib_damage" ] = getDvarInt( "scr_jetgun_gib_damage" ); + level.zombie_vars[ "jetgun_knockdown_range" ] = getDvarInt( "scr_jetgun_knockdown_range" ); + level.zombie_vars[ "jetgun_knockdown_damage" ] = getDvarInt( "scr_jetgun_knockdown_damage" ); + wait 0,5; +#/ + } +} + +jetgun_on_player_connect() +{ + self thread wait_for_jetgun_fired(); + self thread watch_weapon_changes(); + self thread handle_overheated_jetgun(); +} + +get_jetgun_engine_direction() +{ + return self getcurrentweaponspinlerp(); +} + +set_jetgun_engine_direction( nv ) +{ + self setcurrentweaponspinlerp( nv ); +} + +never_overheat() +{ +/# + self notify( "never_overheat" ); + self endon( "never_overheat" ); + self endon( "death_or_disconnect" ); + while ( 1 ) + { + if ( self getcurrentweapon() == "jetgun_zm" ) + { + self setweaponoverheating( 0, 0 ); + } + wait 0,05; +#/ + } +} + +watch_overheat() +{ + self endon( "death_or_disconnect" ); + self endon( "weapon_change" ); + if ( self getcurrentweapon() == "jetgun_zm" && isDefined( self.jetgun_overheating ) && isDefined( self.jetgun_heatval ) ) + { + self setweaponoverheating( self.jetgun_overheating, self.jetgun_heatval ); + } + while ( 1 ) + { + if ( self getcurrentweapon() == "jetgun_zm" ) + { + overheating = self isweaponoverheating( 0 ); + heat = self isweaponoverheating( 1 ); + self.jetgun_overheating = overheating; + self.jetgun_heatval = heat; + if ( overheating ) + { + self notify( "jetgun_overheated" ); + } + if ( heat > 75 ) + { + self thread play_overheat_fx(); + } + } + wait 0,05; + } +} + +play_overheat_fx() +{ + if ( isDefined( self.overheat_fx_playing ) && !self.overheat_fx_playing ) + { + self.overheat_fx_playing = 1; + playfxontag( level._effect[ "jetgun_overheat" ], self, "tag_flash" ); + wait 5; + if ( isDefined( self ) ) + { + self.overheat_fx_playing = 0; + } + } +} + +handle_overheated_jetgun() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "jetgun_overheated" ); + if ( self getcurrentweapon() == "jetgun_zm" ) + { + if ( isDefined( level.explode_overheated_jetgun ) && level.explode_overheated_jetgun ) + { + self thread maps/mp/zombies/_zm_equipment::equipment_release( "jetgun_zm" ); + weapon_org = self gettagorigin( "tag_weapon" ); + pcount = get_players().size; + pickup_time = 360 / pcount; + maps/mp/zombies/_zm_buildables::player_explode_buildable( "jetgun_zm", weapon_org, 250, 1, pickup_time ); + self.jetgun_overheating = undefined; + self.jetgun_heatval = undefined; + self playsound( "wpn_jetgun_explo" ); + break; + } + else + { + if ( isDefined( level.unbuild_overheated_jetgun ) && level.unbuild_overheated_jetgun ) + { + self thread maps/mp/zombies/_zm_equipment::equipment_release( "jetgun_zm" ); + maps/mp/zombies/_zm_buildables::unbuild_buildable( "jetgun_zm", 1 ); + self.jetgun_overheating = undefined; + self.jetgun_heatval = undefined; + break; + } + else + { + if ( isDefined( level.take_overheated_jetgun ) && level.take_overheated_jetgun ) + { + self thread maps/mp/zombies/_zm_equipment::equipment_release( "jetgun_zm" ); + self.jetgun_overheating = undefined; + self.jetgun_heatval = undefined; + } + } + } + } + } +} + +watch_weapon_changes() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "weapon_change", weapon ); + if ( weapon == "jetgun_zm" ) + { +/# + if ( getDvarInt( #"BCDDAAFF" ) > 0 ) + { + self thread zombie_drag_radius(); +#/ + } + self thread watch_overheat(); + } + } +} + +wait_for_jetgun_fired() +{ + self endon( "disconnect" ); + self waittill( "spawned_player" ); + for ( ;; ) + { + self waittill( "weapon_fired" ); + currentweapon = self getcurrentweapon(); + if ( currentweapon == "jetgun_zm" || currentweapon == "jetgun_upgraded_zm" ) + { + self jetgun_firing(); + } + } +} + +jetgun_network_choke() +{ + level.jetgun_network_choke_count++; + if ( level.jetgun_network_choke_count % 10 ) + { + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + } +} + +is_jetgun_firing() +{ + return abs( self get_jetgun_engine_direction() ) > 0,2; +} + +jetgun_firing() +{ + if ( !isDefined( self.jetsound_ent ) ) + { + self.jetsound_ent = spawn( "script_origin", self.origin ); + self.jetsound_ent linkto( self, "tag_origin" ); + } + jetgun_fired = 0; + if ( self is_jetgun_firing() && jetgun_fired == 0 ) + { + self.jetsound_ent playloopsound( "wpn_jetgun_effect_plr_loop", 0,8 ); + self.jetsound_ent playsound( "wpn_jetgun_effect_plr_start" ); + self notify( "jgun_snd" ); + } + while ( self is_jetgun_firing() ) + { + jetgun_fired = 1; + self thread jetgun_fired(); + view_pos = self gettagorigin( "tag_flash" ); + view_angles = self gettagangles( "tag_flash" ); + if ( self get_jetgun_engine_direction() < 0 ) + { + playfx( level._effect[ "jetgun_smoke_cloud" ], view_pos - self getplayerviewheight(), anglesToForward( view_angles ), anglesToUp( view_angles ) ); + } + else + { + playfx( level._effect[ "jetgun_smoke_cloud" ], view_pos - self getplayerviewheight(), anglesToForward( view_angles ) * -1, anglesToUp( view_angles ) ); + } + wait 0,25; + } + if ( jetgun_fired == 1 ) + { + self.jetsound_ent stoploopsound( 0,5 ); + self.jetsound_ent playsound( "wpn_jetgun_effect_plr_end" ); + self.jetsound_ent thread sound_ent_cleanup(); + jetgun_fired = 0; + } +} + +sound_ent_cleanup() +{ + self endon( "jgun_snd" ); + wait 4; + if ( isDefined( self.jetsound_ent ) ) + { + self delete(); + } +} + +jetgun_fired() +{ + if ( !self is_jetgun_firing() ) + { + return; + } + origin = self getweaponmuzzlepoint(); + physicsjetthrust( origin, self getweaponforwarddir() * -1, level.zombie_vars[ "jetgun_grind_range" ], self get_jetgun_engine_direction(), 0,85 ); + if ( !isDefined( level.jetgun_knockdown_enemies ) ) + { + level.jetgun_knockdown_enemies = []; + level.jetgun_knockdown_gib = []; + level.jetgun_drag_enemies = []; + level.jetgun_fling_enemies = []; + level.jetgun_grind_enemies = []; + } + powerups = maps/mp/zombies/_zm_powerups::get_powerups(); + if ( isDefined( powerups ) && powerups.size ) + { + self thread try_pull_powerups( powerups ); + } + self jetgun_get_enemies_in_range( self get_jetgun_engine_direction() ); + level.jetgun_network_choke_count = 0; + _a408 = level.jetgun_fling_enemies; + index = getFirstArrayKey( _a408 ); + while ( isDefined( index ) ) + { + zombie = _a408[ index ]; + jetgun_network_choke(); + if ( isDefined( zombie ) ) + { + zombie thread jetgun_fling_zombie( self, index ); + } + index = getNextArrayKey( _a408, index ); + } + _a418 = level.jetgun_drag_enemies; + _k418 = getFirstArrayKey( _a418 ); + while ( isDefined( _k418 ) ) + { + zombie = _a418[ _k418 ]; + jetgun_network_choke(); + if ( isDefined( zombie ) ) + { + zombie.jetgun_owner = self; + zombie thread jetgun_drag_zombie( origin, -1 * self get_jetgun_engine_direction() ); + } + _k418 = getNextArrayKey( _a418, _k418 ); + } + level.jetgun_knockdown_enemies = []; + level.jetgun_knockdown_gib = []; + level.jetgun_drag_enemies = []; + level.jetgun_fling_enemies = []; + level.jetgun_grind_enemies = []; +} + +try_pull_powerups( powerups ) +{ + powerup_move_dist = level.zombie_vars[ "powerup_move_dist" ] * -1 * self get_jetgun_engine_direction(); + powerup_range_squared = level.zombie_vars[ "powerup_drag_range" ] * level.zombie_vars[ "powerup_drag_range" ]; + view_pos = self getweaponmuzzlepoint(); + forward_view_angles = self getweaponforwarddir(); + _a453 = powerups; + _k453 = getFirstArrayKey( _a453 ); + while ( isDefined( _k453 ) ) + { + powerup = _a453[ _k453 ]; + if ( distancesquared( view_pos, powerup.origin ) > powerup_range_squared ) + { + } + else normal = vectornormalize( powerup.origin - view_pos ); + dot = vectordot( forward_view_angles, normal ); + if ( abs( dot ) < 0,7 ) + { + } + else + { + powerup notify( "move_powerup" ); + } + _k453 = getNextArrayKey( _a453, _k453 ); + } +} + +jetgun_get_enemies_in_range( invert ) +{ + view_pos = self getweaponmuzzlepoint(); + zombies = get_array_of_closest( view_pos, get_round_enemy_array(), undefined, 3, level.zombie_vars[ "jetgun_drag_range" ] ); + if ( !isDefined( zombies ) ) + { + } + knockdown_range_squared = level.zombie_vars[ "jetgun_knockdown_range" ] * level.zombie_vars[ "jetgun_knockdown_range" ]; + drag_range_squared = level.zombie_vars[ "jetgun_drag_range" ] * level.zombie_vars[ "jetgun_drag_range" ]; + gib_range_squared = level.zombie_vars[ "jetgun_gib_range" ] * level.zombie_vars[ "jetgun_gib_range" ]; + grind_range_squared = level.zombie_vars[ "jetgun_grind_range" ] * level.zombie_vars[ "jetgun_grind_range" ]; + cylinder_radius_squared = level.zombie_vars[ "jetgun_cylinder_radius" ] * level.zombie_vars[ "jetgun_cylinder_radius" ]; + forward_view_angles = self getweaponforwarddir(); + end_pos = view_pos + vectorScale( forward_view_angles, level.zombie_vars[ "jetgun_knockdown_range" ] ); +/# + if ( getDvarInt( #"BCDDAAFF" ) == 2 ) + { + near_circle_pos = view_pos + vectorScale( forward_view_angles, 2 ); + circle( near_circle_pos, level.zombie_vars[ "jetgun_cylinder_radius" ], ( 1, 0, 1 ), 0, 0, 100 ); + line( near_circle_pos, end_pos, ( 1, 0, 1 ), 1, 0, 100 ); + circle( end_pos, level.zombie_vars[ "jetgun_cylinder_radius" ], ( 1, 0, 1 ), 0, 0, 100 ); +#/ + } + i = 0; + while ( i < zombies.size ) + { + self jetgun_check_enemies_in_range( zombies[ i ], view_pos, drag_range_squared, gib_range_squared, grind_range_squared, cylinder_radius_squared, forward_view_angles, end_pos, invert ); + i++; + } +} + +jetgun_check_enemies_in_range( zombie, view_pos, drag_range_squared, gib_range_squared, grind_range_squared, cylinder_radius_squared, forward_view_angles, end_pos, invert ) +{ + if ( !isDefined( zombie ) ) + { + return; + } + if ( !isDefined( zombie ) ) + { + return; + } + if ( zombie enemy_killed_by_jetgun() ) + { + return; + } + if ( !isDefined( zombie.ai_state ) || zombie.ai_state != "find_flesh" && zombie.ai_state != "zombieMoveOnBus" ) + { + return; + } + if ( isDefined( zombie.in_the_ground ) && zombie.in_the_ground ) + { + return; + } + if ( isDefined( zombie.is_avogadro ) && zombie.is_avogadro ) + { + return; + } + if ( isDefined( zombie.isdog ) && zombie.isdog ) + { + return; + } + if ( isDefined( zombie.isscreecher ) && zombie.isscreecher ) + { + return; + } + if ( isDefined( self.animname ) && self.animname == "quad_zombie" ) + { + return; + } + test_origin = zombie getcentroid(); + test_range_squared = distancesquared( view_pos, test_origin ); + if ( test_range_squared > drag_range_squared ) + { + zombie jetgun_debug_print( "range", ( 1, 0, 1 ) ); + return; + } + normal = vectornormalize( test_origin - view_pos ); + dot = vectordot( forward_view_angles, normal ); + if ( abs( dot ) < 0,7 ) + { + zombie jetgun_debug_print( "dot", ( 1, 0, 1 ) ); + return; + } + radial_origin = pointonsegmentnearesttopoint( view_pos, end_pos, test_origin ); + if ( distancesquared( test_origin, radial_origin ) > cylinder_radius_squared ) + { + zombie jetgun_debug_print( "cylinder", ( 1, 0, 1 ) ); + return; + } + if ( zombie damageconetrace( view_pos, self ) == 0 ) + { + zombie jetgun_debug_print( "cone", ( 1, 0, 1 ) ); + return; + } + jetgun_blow_suck = invert; + if ( dot <= 0 ) + { + jetgun_blow_suck *= -1; + } + if ( test_range_squared < grind_range_squared ) + { + level.jetgun_fling_enemies[ level.jetgun_fling_enemies.size ] = zombie; + level.jetgun_grind_enemies[ level.jetgun_grind_enemies.size ] = dot < 0; + } + else + { + if ( test_range_squared < drag_range_squared && dot > 0 ) + { + level.jetgun_drag_enemies[ level.jetgun_drag_enemies.size ] = zombie; + } + } +} + +jetgun_debug_print( msg, color ) +{ +/# + if ( !getDvarInt( #"BCDDAAFF" ) ) + { + return; + } + if ( !isDefined( color ) ) + { + color = ( 1, 0, 1 ); + } + print3d( self.origin + vectorScale( ( 1, 0, 1 ), 60 ), msg, color, 1, 1, 40 ); +#/ +} + +jetgun_debug_print_on_ent( msg, color ) +{ +/# + if ( !getDvarInt( #"BCDDAAFF" ) ) + { + return; + } + if ( !isDefined( color ) ) + { + color = ( 1, 0, 1 ); + } + self notify( "new_jetgun_debug_print_on_ent" ); + self endon( "death" ); + self endon( "jetgun_end_drag_state" ); + self endon( "new_jetgun_debug_print_on_ent" ); + while ( 1 ) + { + print3d( self.origin + vectorScale( ( 1, 0, 1 ), 60 ), msg, color, 1, 1 ); + wait 0,05; +#/ + } +} + +try_gibbing() +{ + if ( isDefined( self ) && isDefined( self.a ) && isDefined( self.isscreecher ) && !self.isscreecher ) + { + self.a.gib_ref = random( level.jetgun_gib_refs ); + self thread maps/mp/animscripts/zm_death::do_gib(); + } +} + +jetgun_handle_death_notetracks( note ) +{ + if ( note == "jetgunned" ) + { + self thread jetgun_grind_death_ending(); + } +} + +jetgun_grind_death_ending() +{ + if ( !isDefined( self ) ) + { + return; + } + self hide(); + wait 0,1; + self self_delete(); +} + +jetgun_grind_zombie( player ) +{ + player endon( "death" ); + player endon( "disconnect" ); + self endon( "death" ); + if ( !isDefined( self.jetgun_grind ) ) + { + self.jetgun_grind = 1; + self notify( "grinding" ); + player set_jetgun_engine_direction( 0,5 * player get_jetgun_engine_direction() ); + if ( is_mature() ) + { + if ( isDefined( level._effect[ "zombie_guts_explosion" ] ) ) + { + playfx( level._effect[ "zombie_guts_explosion" ], self gettagorigin( "J_SpineLower" ) ); + } + } + self.nodeathragdoll = 1; + self.handle_death_notetracks = ::jetgun_handle_death_notetracks; + self dodamage( self.health + 666, player.origin, player ); + } +} + +jetgun_fling_zombie( player, index ) +{ + if ( !isDefined( self ) ) + { + return; + } + if ( isDefined( self.jetgun_fling_func ) ) + { + self [[ self.jetgun_fling_func ]]( player ); + return; + } + was_alive = isalive( self ); + if ( was_alive ) + { + self.jetgun_fling = 1; + self notify( "flinging" ); + deathanim = undefined; + if ( is_mature() ) + { + player weaponplayejectbrass(); + } + if ( isDefined( self.has_legs ) && self.has_legs ) + { + if ( isDefined( self.jetgun_drag_state ) && self.jetgun_drag_state == "jetgun_sprint" ) + { + deathanim = "zm_jetgun_sprint_death"; + } + else + { + deathanim = "zm_jetgun_death"; + } + } + else + { + deathanim = "zm_jetgun_death_crawl"; + } + self.deathanim = deathanim; + player playsound( "evt_jetgun_zmb_suck" ); + } + self thread jetgun_grind_zombie( player ); +} + +jetgun_drag_zombie( vdir, speed ) +{ + if ( isDefined( self.jetgun_drag_func ) ) + { + self [[ self.jetgun_drag_func ]]( vdir, speed ); + return; + } + self zombie_do_drag( vdir, speed ); +} + +jetgun_knockdown_zombie( player, gib ) +{ + self endon( "death" ); + return; + if ( isDefined( self.jetgun_knockdown_func ) ) + { + self [[ self.jetgun_knockdown_func ]]( player, gib ); + } + else + { + self dodamage( level.zombie_vars[ "jetgun_knockdown_damage" ], player.origin, player ); + } + if ( gib ) + { + self.a.gib_ref = random( level.jetgun_gib_refs ); + self thread maps/mp/animscripts/zm_death::do_gib(); + } + self.jetgun_handle_pain_notetracks = ::handle_jetgun_pain_notetracks; + self dodamage( level.zombie_vars[ "jetgun_knockdown_damage" ], player.origin, player ); +} + +handle_jetgun_pain_notetracks( note ) +{ + if ( note == "zombie_knockdown_ground_impact" ) + { + playfx( level._effect[ "jetgun_knockdown_ground" ], self.origin, anglesToForward( self.angles ), anglesToUp( self.angles ) ); + } +} + +is_jetgun_damage() +{ + if ( isDefined( self.damageweapon ) && self.damageweapon != "jetgun_zm" && self.damageweapon == "jetgun_upgraded_zm" ) + { + if ( self.damagemod != "MOD_GRENADE" ) + { + return self.damagemod != "MOD_GRENADE_SPLASH"; + } + } +} + +enemy_killed_by_jetgun() +{ + if ( isDefined( self.jetgun_fling ) && !self.jetgun_fling ) + { + if ( isDefined( self.jetgun_grind ) ) + { + return self.jetgun_grind; + } + } +} + +zombie_do_drag( vdir, speed ) +{ + if ( !self zombie_is_in_drag_state() ) + { + self zombie_enter_drag_state( vdir, speed ); + self thread zombie_drag_think(); + } + else + { + self zombie_keep_in_drag_state( vdir, speed ); + } +} + +zombie_is_in_drag_state() +{ + if ( isDefined( self.drag_state ) ) + { + return self.drag_state; + } +} + +zombie_should_stay_in_drag_state() +{ + if ( !isDefined( self ) || !isalive( self ) ) + { + return 0; + } + if ( isDefined( self.jetgun_owner ) || self.jetgun_owner getcurrentweapon() != "jetgun_zm" && !self.jetgun_owner is_jetgun_firing() ) + { + return 0; + } + if ( isDefined( self.drag_state ) && self.drag_state ) + { + return 1; + } + return 0; +} + +zombie_keep_in_drag_state( vdir, speed ) +{ + self.drag_start_time = getTime(); + self.drag_target = vdir; +} + +zombie_enter_drag_state( vdir, speed ) +{ + self.drag_state = 1; + self.jetgun_drag_state = "unaffected"; + if ( isDefined( self.is_traversing ) ) + { + self.was_traversing = self.is_traversing; + } + self notify( "killanimscript" ); + self zombie_keep_in_drag_state( vdir, speed ); + self.zombie_move_speed_pre_jetgun_drag = self.zombie_move_speed; +} + +zombie_exit_drag_state() +{ + self notify( "jetgun_end_drag_state" ); + self.drag_state = 0; + self.jetgun_drag_state = "unaffected"; + self.needs_run_update = 1; + if ( isDefined( self.zombie_move_speed_pre_jetgun_drag ) ) + { + self set_zombie_run_cycle( self.zombie_move_speed_pre_jetgun_drag ); + self.zombie_move_speed_pre_jetgun_drag = undefined; + } + else + { + self set_zombie_run_cycle(); + } + if ( isDefined( self.isdog ) && !self.isdog ) + { + self maps/mp/animscripts/zm_run::moverun(); + } + if ( isDefined( self.was_traversing ) && self.was_traversing ) + { + self traversemode( "gravity" ); + self.a.nodeath = 0; + self maps/mp/animscripts/zm_run::needsupdate(); + if ( !self.isdog ) + { + self maps/mp/animscripts/zm_run::moverun(); + } + self.is_traversing = 0; + self notify( "zombie_end_traverse" ); + if ( is_mature() ) + { + if ( isDefined( level._effect[ "zombie_guts_explosion" ] ) ) + { + playfx( level._effect[ "zombie_guts_explosion" ], self gettagorigin( "J_SpineLower" ) ); + } + } + self.nodeathragdoll = 1; + self dodamage( self.health + 666, self.origin, self ); + } +} + +aiphysicstrace( start, end ) +{ + result = physicstrace( start, end, ( 1, 0, 1 ), ( 1, 0, 1 ), self ); + return result[ "position" ]; +} + +zombie_drag_think() +{ + self endon( "death" ); + self endon( "flinging" ); + self endon( "grinding" ); + while ( self zombie_should_stay_in_drag_state() ) + { + self._distance_to_jetgun_owner = distancesquared( self.origin, self.jetgun_owner.origin ); + jetgun_network_choke(); + if ( self.zombie_move_speed == "sprint" || self._distance_to_jetgun_owner < level.jetgun_pulled_in_range ) + { + self jetgun_drag_set( "jetgun_sprint", "jetgun_walk_fast_crawl" ); + } + else + { + if ( self._distance_to_jetgun_owner < level.jetgun_pulling_in_range ) + { + self jetgun_drag_set( "jetgun_walk_fast", "jetgun_walk_fast" ); + break; + } + else if ( self._distance_to_jetgun_owner < level.jetgun_inner_range ) + { + self jetgun_drag_set( "jetgun_walk", "jetgun_walk_slow_crawl" ); + break; + } + else + { + if ( self._distance_to_jetgun_owner < level.jetgun_outer_edge ) + { + self jetgun_drag_set( "jetgun_walk_slow", "jetgun_walk_slow_crawl" ); + } + } + } + wait 0,1; + } + self thread zombie_exit_drag_state(); +} + +jetgun_drag_set( legsanim, crawlanim ) +{ + self endon( "death" ); + self.needs_run_update = 1; + if ( self.has_legs ) + { + self._had_legs = 1; + self set_zombie_run_cycle( legsanim ); + } + else + { + self._had_legs = 0; + self set_zombie_run_cycle( crawlanim ); + } +/# + if ( self.jetgun_drag_state != legsanim ) + { + self thread jetgun_debug_print_on_ent( legsanim, ( 1, 0, 1 ) ); +#/ + } + self.jetgun_drag_state = legsanim; +} + +zombie_drag_radius() +{ +/# + self endon( "death_or_disconnect" ); + self endon( "weapon_change" ); + while ( 1 ) + { + circle( self.origin, level.zombie_vars[ "jetgun_grind_range" ], vectorScale( ( 1, 0, 1 ), 0,5 ) ); + circle( self.origin, level.zombie_vars[ "jetgun_drag_range" ] / 8, ( 1, 0, 1 ) ); + circle( self.origin, level.zombie_vars[ "jetgun_drag_range" ] / 4, ( 1, 0, 1 ) ); + circle( self.origin, level.zombie_vars[ "jetgun_drag_range" ] / 2, ( 1, 0, 1 ) ); + circle( self.origin, level.zombie_vars[ "jetgun_drag_range" ], ( 1, 0, 1 ) ); + wait 0,05; +#/ + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_riotshield.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_riotshield.gsc new file mode 100644 index 0000000..e049751 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_riotshield.gsc @@ -0,0 +1,777 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/animscripts/zm_death; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_utility; +#include common_scripts/utility; +#include maps/mp/_utility; + +init() +{ + maps/mp/zombies/_zm_riotshield::init(); + set_zombie_var( "riotshield_cylinder_radius", 360 ); + set_zombie_var( "riotshield_fling_range", 90 ); + set_zombie_var( "riotshield_gib_range", 90 ); + set_zombie_var( "riotshield_gib_damage", 75 ); + set_zombie_var( "riotshield_knockdown_range", 90 ); + set_zombie_var( "riotshield_knockdown_damage", 15 ); + set_zombie_var( "riotshield_hit_points", 1500 ); + set_zombie_var( "riotshield_fling_damage_shield", 100 ); + set_zombie_var( "riotshield_knockdown_damage_shield", 15 ); + level.riotshield_network_choke_count = 0; + level.riotshield_gib_refs = []; + level.riotshield_gib_refs[ level.riotshield_gib_refs.size ] = "guts"; + level.riotshield_gib_refs[ level.riotshield_gib_refs.size ] = "right_arm"; + level.riotshield_gib_refs[ level.riotshield_gib_refs.size ] = "left_arm"; + level.riotshield_damage_callback = ::player_damage_shield; + level.deployed_riotshield_damage_callback = ::deployed_damage_shield; + level.transferriotshield = ::transferriotshield; + level.cantransferriotshield = ::cantransferriotshield; + maps/mp/zombies/_zm_spawner::register_zombie_damage_callback( ::riotshield_zombie_damage_response ); + maps/mp/zombies/_zm_equipment::register_equipment( "riotshield_zm", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING", &"ZOMBIE_EQUIP_RIOTSHIELD_HOWTO", "riotshield_zm_icon", "riotshield", ::riotshield_activation_watcher_thread, undefined, ::dropshield, ::pickupshield ); + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "riotshield", &"ZOMBIE_EQUIP_RIOTSHIELD_PICKUP_HINT_STRING" ); + onplayerconnect_callback( ::onplayerconnect ); +} + +onplayerconnect() +{ + self.player_shield_reset_health = ::player_init_shield_health; + self.player_shield_apply_damage = ::player_damage_shield; + self.player_shield_reset_location = ::player_init_shield_location; + self thread watchriotshielduse(); + self thread watchriotshieldmelee(); + self thread player_watch_laststand(); +} + +dropshield() +{ + self.shield_placement = 0; + self maps/mp/zombies/_zm_riotshield::updateriotshieldmodel(); + item = self maps/mp/zombies/_zm_equipment::placed_equipment_think( "t6_wpn_zmb_shield_world", "riotshield_zm", self.origin + vectorScale( ( 0, 0, 1 ), 30 ), self.angles ); + if ( isDefined( item ) ) + { + item.shielddamagetaken = self.shielddamagetaken; + item.original_owner = self; + item.owner = undefined; + item.name = level.riotshield_name; + item.isriotshield = 1; + item deployed_damage_shield( 0 ); + item setscriptmoverflag( 0 ); + item.requires_pickup = 1; + item thread watchtoofriendly( self ); + } + self takeweapon( level.riotshield_name ); + return item; +} + +watchtoofriendly( player ) +{ + wait 1; + if ( isDefined( self ) && isDefined( player ) && distance2dsquared( self.origin, player.origin ) < 36 ) + { + if ( isalive( player ) ) + { + player playlocalsound( level.zmb_laugh_alias ); + } + player maps/mp/zombies/_zm_stats::increment_client_stat( "cheat_total", 0 ); + self deployed_damage_shield( 2000 ); + } +} + +pickupshield( item ) +{ + item.owner = self; + damage = item.shielddamagetaken; + damagemax = level.zombie_vars[ "riotshield_hit_points" ]; + self.shielddamagetaken = damage; + self player_set_shield_health( damage, damagemax ); +} + +placeshield( origin, angles ) +{ + if ( self getcurrentweapon() != level.riotshield_name ) + { + self switchtoweapon( level.riotshield_name ); + self waittill( "weapon_change" ); + } + item = self maps/mp/zombies/_zm_riotshield::doriotshielddeploy( origin, angles ); + if ( isDefined( item ) ) + { + item.origin = self.origin + vectorScale( ( 0, 0, 1 ), 30 ); + item.angles = self.angles; + item.owner = self; + } + return item; +} + +cantransferriotshield( fromplayer, toplayer ) +{ + if ( isDefined( toplayer.screecher_weapon ) ) + { + return 0; + } + if ( isDefined( toplayer.is_drinking ) && toplayer.is_drinking > 0 ) + { + return 0; + } + if ( toplayer maps/mp/zombies/_zm_laststand::player_is_in_laststand() || toplayer in_revive_trigger() ) + { + return 0; + } + if ( toplayer isthrowinggrenade() ) + { + return 0; + } + if ( fromplayer == toplayer ) + { + return 1; + } + if ( toplayer is_player_equipment( level.riotshield_name ) && toplayer.shield_placement != 3 ) + { + return 0; + } + if ( fromplayer.session_team != toplayer.session_team ) + { + return 0; + } + return 1; +} + +transferriotshield( fromplayer, toplayer ) +{ + damage = fromplayer.shielddamagetaken; + toplayer player_take_riotshield(); + fromplayer player_take_riotshield(); + toplayer.shielddamagetaken = damage; + toplayer.shield_placement = 3; + toplayer.shield_damage_level = 0; + toplayer maps/mp/zombies/_zm_equipment::equipment_give( "riotshield_zm" ); + toplayer switchtoweapon( "riotshield_zm" ); + damagemax = level.zombie_vars[ "riotshield_hit_points" ]; + toplayer player_set_shield_health( damage, damagemax ); +} + +player_take_riotshield() +{ + self notify( "destroy_riotshield" ); + if ( self getcurrentweapon() == "riotshield_zm" ) + { + new_primary = ""; + if ( isDefined( self.laststand ) && self.laststand ) + { + new_primary = self.laststandpistol; + self giveweapon( new_primary ); + } + else + { + primaryweapons = self getweaponslistprimaries(); + i = 0; + while ( i < primaryweapons.size ) + { + if ( primaryweapons[ i ] != "riotshield_zm" ) + { + new_primary = primaryweapons[ i ]; + break; + } + else + { + i++; + } + } + if ( new_primary == "" ) + { + self maps/mp/zombies/_zm_weapons::give_fallback_weapon(); + new_primary = "zombie_fists_zm"; + } + } + self switchtoweaponimmediate( new_primary ); + self playsound( "wpn_riotshield_zm_destroy" ); + self waittill( "weapon_change" ); + } + self maps/mp/zombies/_zm_riotshield::removeriotshield(); + self maps/mp/zombies/_zm_equipment::equipment_take( "riotshield_zm" ); + self.hasriotshield = 0; + self.hasriotshieldequipped = 0; +} + +player_watch_laststand() +{ + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "entering_last_stand" ); + if ( self getcurrentweapon() == "riotshield_zm" ) + { + new_primary = self.laststandpistol; + self giveweapon( new_primary ); + self switchtoweaponimmediate( new_primary ); + } + } +} + +player_init_shield_health() +{ + retval = self.shielddamagetaken > 0; + self.shielddamagetaken = 0; + self.shield_damage_level = 0; + self maps/mp/zombies/_zm_riotshield::updateriotshieldmodel(); + return retval; +} + +player_init_shield_location() +{ + self.hasriotshield = 1; + self.hasriotshieldequipped = 0; + self.shield_placement = 2; + self maps/mp/zombies/_zm_riotshield::updateriotshieldmodel(); +} + +player_set_shield_health( damage, max_damage ) +{ + shieldhealth = int( ( 100 * ( max_damage - damage ) ) / max_damage ); + if ( shieldhealth >= 50 ) + { + self.shield_damage_level = 0; + } + else if ( shieldhealth >= 25 ) + { + self.shield_damage_level = 2; + } + else + { + self.shield_damage_level = 3; + } + self maps/mp/zombies/_zm_riotshield::updateriotshieldmodel(); +} + +deployed_set_shield_health( damage, max_damage ) +{ + shieldhealth = int( ( 100 * ( max_damage - damage ) ) / max_damage ); + if ( shieldhealth >= 50 ) + { + self.shield_damage_level = 0; + } + else if ( shieldhealth >= 25 ) + { + self.shield_damage_level = 2; + } + else + { + self.shield_damage_level = 3; + } + self maps/mp/zombies/_zm_riotshield::updatestandaloneriotshieldmodel(); +} + +player_damage_shield( idamage, bheld ) +{ + damagemax = level.zombie_vars[ "riotshield_hit_points" ]; + if ( !isDefined( self.shielddamagetaken ) ) + { + self.shielddamagetaken = 0; + } + self.shielddamagetaken += idamage; + if ( self.shielddamagetaken >= damagemax ) + { + if ( bheld || !isDefined( self.shield_ent ) ) + { + self playrumbleonentity( "damage_heavy" ); + earthquake( 1, 0,75, self.origin, 100 ); + } + else + { + if ( isDefined( self.shield_ent ) ) + { + if ( is_true( self.shield_ent.destroy_begun ) ) + { + return; + } + self.shield_ent.destroy_begun = 1; + shield_origin = self.shield_ent.origin; + level thread maps/mp/zombies/_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); + wait 1; + playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); + } + } + self thread player_take_riotshield(); + } + else + { + if ( bheld ) + { + self playrumbleonentity( "damage_light" ); + earthquake( 0,5, 0,5, self.origin, 100 ); + } + self player_set_shield_health( self.shielddamagetaken, damagemax ); + self playsound( "fly_riotshield_zm_impact_zombies" ); + } +} + +deployed_damage_shield( idamage ) +{ + damagemax = level.zombie_vars[ "riotshield_hit_points" ]; + if ( !isDefined( self.shielddamagetaken ) ) + { + self.shielddamagetaken = 0; + } + self.shielddamagetaken += idamage; + if ( self.shielddamagetaken >= damagemax ) + { + shield_origin = self.origin; + if ( isDefined( self.stub ) ) + { + thread maps/mp/zombies/_zm_unitrigger::unregister_unitrigger( self.stub ); + } + if ( isDefined( self.original_owner ) ) + { + self.original_owner maps/mp/zombies/_zm_equipment::equipment_take( "riotshield_zm" ); + } + maps/mp/zombies/_zm_equipment::equipment_disappear_fx( shield_origin, level._riotshield_dissapear_fx ); + playsoundatposition( "wpn_riotshield_zm_destroy", shield_origin ); + self_delete(); + } + else + { + self deployed_set_shield_health( self.shielddamagetaken, damagemax ); + } +} + +riotshield_activation_watcher_thread() +{ + self endon( "zombified" ); + self endon( "disconnect" ); + self endon( "riotshield_zm_taken" ); + while ( 1 ) + { + self waittill_either( "riotshield_zm_activate", "riotshield_zm_deactivate" ); + } +} + +watchriotshielduse() +{ + self endon( "death" ); + self endon( "disconnect" ); + self.shielddamagetaken = 0; + self thread maps/mp/zombies/_zm_riotshield::trackriotshield(); + self thread maps/mp/zombies/_zm_riotshield::watchshieldlaststand(); + self thread trackstuckzombies(); + for ( ;; ) + { + self waittill( "raise_riotshield" ); + self thread maps/mp/zombies/_zm_riotshield::startriotshielddeploy(); + } +} + +watchriotshieldmelee() +{ + for ( ;; ) + { + self waittill( "weapon_melee", weapon ); + if ( weapon == level.riotshield_name ) + { + self riotshield_melee(); + } + } +} + +is_riotshield_damage( mod, player, amount ) +{ + if ( mod == "MOD_MELEE" && player hasweapon( level.riotshield_name ) && amount < 10 ) + { + return 1; + } + return 0; +} + +riotshield_damage( amount ) +{ +} + +riotshield_fling_zombie( player, fling_vec, index ) +{ + if ( !isDefined( self ) || !isalive( self ) ) + { + return; + } + if ( isDefined( self.ignore_riotshield ) && self.ignore_riotshield ) + { + return; + } + if ( isDefined( self.riotshield_fling_func ) ) + { + self [[ self.riotshield_fling_func ]]( player ); + return; + } + damage = 2500; + self dodamage( damage, player.origin, player, player, "", "MOD_IMPACT" ); + if ( self.health < 1 ) + { + self.riotshield_death = 1; + self startragdoll(); + self launchragdoll( fling_vec ); + } +} + +zombie_knockdown( player, gib ) +{ + damage = level.zombie_vars[ "riotshield_knockdown_damage" ]; + if ( isDefined( level.override_riotshield_damage_func ) ) + { + self [[ level.override_riotshield_damage_func ]]( player, gib ); + } + else + { + if ( gib ) + { + self.a.gib_ref = random( level.riotshield_gib_refs ); + self thread maps/mp/animscripts/zm_death::do_gib(); + } + self dodamage( damage, player.origin, player ); + } +} + +riotshield_knockdown_zombie( player, gib ) +{ + self endon( "death" ); + playsoundatposition( "vox_riotshield_forcehit", self.origin ); + playsoundatposition( "wpn_riotshield_proj_impact", self.origin ); + if ( !isDefined( self ) || !isalive( self ) ) + { + return; + } + if ( isDefined( self.riotshield_knockdown_func ) ) + { + self [[ self.riotshield_knockdown_func ]]( player, gib ); + } + else + { + self zombie_knockdown( player, gib ); + } + self dodamage( level.zombie_vars[ "riotshield_knockdown_damage" ], player.origin, player ); + self playsound( "fly_riotshield_forcehit" ); +} + +riotshield_get_enemies_in_range() +{ + view_pos = self geteye(); + zombies = get_array_of_closest( view_pos, get_round_enemy_array(), undefined, undefined, 2 * level.zombie_vars[ "riotshield_knockdown_range" ] ); + if ( !isDefined( zombies ) ) + { + return; + } + knockdown_range_squared = level.zombie_vars[ "riotshield_knockdown_range" ] * level.zombie_vars[ "riotshield_knockdown_range" ]; + gib_range_squared = level.zombie_vars[ "riotshield_gib_range" ] * level.zombie_vars[ "riotshield_gib_range" ]; + fling_range_squared = level.zombie_vars[ "riotshield_fling_range" ] * level.zombie_vars[ "riotshield_fling_range" ]; + cylinder_radius_squared = level.zombie_vars[ "riotshield_cylinder_radius" ] * level.zombie_vars[ "riotshield_cylinder_radius" ]; + forward_view_angles = self getweaponforwarddir(); + end_pos = view_pos + vectorScale( forward_view_angles, level.zombie_vars[ "riotshield_knockdown_range" ] ); +/# + if ( getDvarInt( #"BF480CE9" ) == 2 ) + { + near_circle_pos = view_pos + vectorScale( forward_view_angles, 2 ); + circle( near_circle_pos, level.zombie_vars[ "riotshield_cylinder_radius" ], ( 0, 0, 1 ), 0, 0, 100 ); + line( near_circle_pos, end_pos, ( 0, 0, 1 ), 1, 0, 100 ); + circle( end_pos, level.zombie_vars[ "riotshield_cylinder_radius" ], ( 0, 0, 1 ), 0, 0, 100 ); +#/ + } + i = 0; + while ( i < zombies.size ) + { + if ( !isDefined( zombies[ i ] ) || !isalive( zombies[ i ] ) ) + { + i++; + continue; + } + else + { + test_origin = zombies[ i ] getcentroid(); + test_range_squared = distancesquared( view_pos, test_origin ); + if ( test_range_squared > knockdown_range_squared ) + { + zombies[ i ] riotshield_debug_print( "range", ( 0, 0, 1 ) ); + return; + } + normal = vectornormalize( test_origin - view_pos ); + dot = vectordot( forward_view_angles, normal ); + if ( dot <= 0 ) + { + zombies[ i ] riotshield_debug_print( "dot", ( 0, 0, 1 ) ); + i++; + continue; + } + else radial_origin = pointonsegmentnearesttopoint( view_pos, end_pos, test_origin ); + if ( distancesquared( test_origin, radial_origin ) > cylinder_radius_squared ) + { + zombies[ i ] riotshield_debug_print( "cylinder", ( 0, 0, 1 ) ); + i++; + continue; + } + else if ( zombies[ i ] damageconetrace( view_pos, self ) == 0 ) + { + zombies[ i ] riotshield_debug_print( "cone", ( 0, 0, 1 ) ); + i++; + continue; + } + else if ( test_range_squared < fling_range_squared ) + { + level.riotshield_fling_enemies[ level.riotshield_fling_enemies.size ] = zombies[ i ]; + dist_mult = ( fling_range_squared - test_range_squared ) / fling_range_squared; + fling_vec = vectornormalize( test_origin - view_pos ); + if ( test_range_squared >= 5000 ) + { + fling_vec += vectornormalize( test_origin - radial_origin ); + } + fling_vec = ( fling_vec[ 0 ], fling_vec[ 1 ], abs( fling_vec[ 2 ] ) ); + fling_vec = vectorScale( fling_vec, 100 + ( 100 * dist_mult ) ); + level.riotshield_fling_vecs[ level.riotshield_fling_vecs.size ] = fling_vec; + zombies[ i ] riotshield_debug_print( "fling", ( 0, 0, 1 ) ); + i++; + continue; + } + else + { + level.riotshield_knockdown_enemies[ level.riotshield_knockdown_enemies.size ] = zombies[ i ]; + level.riotshield_knockdown_gib[ level.riotshield_knockdown_gib.size ] = 0; + zombies[ i ] riotshield_debug_print( "knockdown", ( 0, 0, 1 ) ); + } + } + i++; + } +} + +riotshield_network_choke() +{ + level.riotshield_network_choke_count++; + if ( level.riotshield_network_choke_count % 10 ) + { + wait_network_frame(); + wait_network_frame(); + wait_network_frame(); + } +} + +riotshield_melee() +{ + if ( !isDefined( level.riotshield_knockdown_enemies ) ) + { + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; + } + self riotshield_get_enemies_in_range(); + shield_damage = 0; + level.riotshield_network_choke_count = 0; + i = 0; + while ( i < level.riotshield_fling_enemies.size ) + { + riotshield_network_choke(); + if ( isDefined( level.riotshield_fling_enemies[ i ] ) ) + { + level.riotshield_fling_enemies[ i ] thread riotshield_fling_zombie( self, level.riotshield_fling_vecs[ i ], i ); + shield_damage += level.zombie_vars[ "riotshield_fling_damage_shield" ]; + } + i++; + } + i = 0; + while ( i < level.riotshield_knockdown_enemies.size ) + { + riotshield_network_choke(); + level.riotshield_knockdown_enemies[ i ] thread riotshield_knockdown_zombie( self, level.riotshield_knockdown_gib[ i ] ); + shield_damage += level.zombie_vars[ "riotshield_knockdown_damage_shield" ]; + i++; + } + level.riotshield_knockdown_enemies = []; + level.riotshield_knockdown_gib = []; + level.riotshield_fling_enemies = []; + level.riotshield_fling_vecs = []; + if ( shield_damage ) + { + self player_damage_shield( shield_damage, 0 ); + } +} + +trackstuckzombies() +{ + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "deployed_riotshield" ); + if ( isDefined( self.riotshieldentity ) ) + { + self thread watchstuckzombies(); + } + } +} + +attack_shield( shield ) +{ + self endon( "death" ); + shield.owner endon( "death" ); + shield.owner endon( "disconnect" ); + shield.owner endon( "start_riotshield_deploy" ); + shield.owner endon( "destroy_riotshield" ); + if ( isDefined( self.doing_shield_attack ) && self.doing_shield_attack ) + { + return 0; + } + self.old_origin = self.origin; + if ( getDvar( "zombie_shield_attack_freq" ) == "" ) + { + setdvar( "zombie_shield_attack_freq", "15" ); + } + freq = getDvarInt( "zombie_shield_attack_freq" ); + self.doing_shield_attack = 1; + self.enemyoverride[ 0 ] = shield.origin; + self.enemyoverride[ 1 ] = shield; + wait ( randomint( 100 ) / 100 ); + self thread maps/mp/zombies/_zm_audio::do_zombies_playvocals( "attack", self.animname ); + attackanim = "zm_riotshield_melee"; + if ( !self.has_legs ) + { + attackanim += "_crawl"; + } + self orientmode( "face point", shield.origin ); + self animscripted( self.origin, flat_angle( vectorToAngle( shield.origin - self.origin ) ), attackanim ); + if ( isDefined( shield.owner.player_shield_apply_damage ) ) + { + shield.owner [[ shield.owner.player_shield_apply_damage ]]( 100, 0 ); + } + else + { + shield.owner player_damage_shield( 100, 0 ); + } + self thread attack_shield_stop( shield ); + wait ( randomint( 100 ) / 100 ); + self.doing_shield_attack = 0; + self orientmode( "face default" ); +} + +attack_shield_stop( shield ) +{ + self notify( "attack_shield_stop" ); + self endon( "attack_shield_stop" ); + self endon( "death" ); + shield waittill( "death" ); + self stopanimscripted(); + if ( isDefined( self.doing_shield_attack ) && self.doing_shield_attack ) + { + breachanim = "zm_riotshield_breakthrough"; + if ( !self.has_legs ) + { + breachanim += "_crawl"; + } + self animscripted( self.origin, flat_angle( self.angles ), breachanim ); + } +} + +window_notetracks( msg, player ) +{ + self endon( "death" ); + while ( 1 ) + { + self waittill( msg, notetrack ); + if ( notetrack == "end" ) + { + return; + } + if ( notetrack == "fire" ) + { + player player_damage_shield( 100, 0 ); + } + } +} + +watchstuckzombies() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self endon( "destroy_riotshield" ); + self endon( "deployed_riotshield" ); + level endon( "intermission" ); + self.riotshieldentity maps/mp/zombies/_zm_equipment::item_attract_zombies(); +} + +riotshield_active() +{ + return self maps/mp/zombies/_zm_equipment::is_equipment_active( "riotshield_zm" ); +} + +riotshield_debug_print( msg, color ) +{ +/# + if ( !getDvarInt( #"BF480CE9" ) ) + { + return; + } + if ( !isDefined( color ) ) + { + color = ( 0, 0, 1 ); + } + print3d( self.origin + vectorScale( ( 0, 0, 1 ), 60 ), msg, color, 1, 1, 40 ); +#/ +} + +shield_zombie_attract_func( poi ) +{ +} + +shield_zombie_arrive_func( poi ) +{ + self endon( "death" ); + self endon( "zombie_acquire_enemy" ); + self endon( "path_timer_done" ); + self waittill( "goal" ); + if ( isDefined( poi.owner ) ) + { + poi.owner player_damage_shield( 100, 0 ); + if ( isDefined( poi.owner.player_shield_apply_damage ) ) + { + poi.owner [[ poi.owner.player_shield_apply_damage ]]( 100, 0 ); + } + } +} + +createriotshieldattractor() +{ + self create_zombie_point_of_interest( 50, 8, 0, 1, ::shield_zombie_attract_func, ::shield_zombie_arrive_func ); + self thread create_zombie_point_of_interest_attractor_positions( 4, 15, 15 ); + return get_zombie_point_of_interest( self.origin ); +} + +riotshield_zombie_damage_response( mod, hit_location, hit_origin, player, amount ) +{ + if ( self is_riotshield_damage( mod, player, amount ) ) + { + self riotshield_damage( amount ); + return 1; + } + return 0; +} + +watchriotshieldattractor() +{ + self endon( "death" ); + self endon( "disconnect" ); + self endon( "start_riotshield_deploy" ); + self endon( "destroy_riotshield" ); + self endon( "deployed_riotshield" ); + poi = self.riotshieldentity createriotshieldattractor(); +} + +trackriotshieldattractor() +{ + self endon( "death" ); + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "deployed_riotshield" ); + self thread watchriotshieldattractor(); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc new file mode 100644 index 0000000..3e6a41d --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weap_tazer_knuckles.gsc @@ -0,0 +1,150 @@ +#include maps/mp/zombies/_zm_audio; +#include maps/mp/zombies/_zm_spawner; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_net; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ + registerclientfield( "toplayer", "tazer_flourish", 1, 1, "int" ); + register_melee_weapon_for_level( "tazer_knuckles_zm" ); + if ( isDefined( level.tazer_cost ) ) + { + cost = level.tazer_cost; + } + else + { + cost = 6000; + } + level.use_tazer_impact_fx = 0; + maps/mp/zombies/_zm_melee_weapon::init( "tazer_knuckles_zm", "zombie_tazer_flourish", "knife_ballistic_no_melee_zm", "knife_ballistic_no_melee_upgraded_zm", cost, "tazer_upgrade", &"ZOMBIE_WEAPON_TAZER_BUY", "tazerknuckles", ::has_tazer, ::give_tazer, ::take_tazer, ::tazer_flourish_fx ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_no_melee" ); + maps/mp/zombies/_zm_weapons::add_retrievable_knife_init_name( "knife_ballistic_no_melee_upgraded" ); + maps/mp/zombies/_zm_spawner::add_cusom_zombie_spawn_logic( ::watch_bodily_functions ); + level._effect[ "fx_zmb_taser_vomit" ] = loadfx( "maps/zombie/fx_zmb_taser_vomit" ); + level._effect[ "fx_zmb_taser_flourish" ] = loadfx( "weapon/taser/fx_taser_knuckles_anim_zmb" ); + if ( level.script != "zm_transit" ) + { + level._effect[ "fx_zmb_tazer_impact" ] = loadfx( "weapon/taser/fx_taser_knuckles_impact_zmb" ); + level.use_tazer_impact_fx = 1; + } + level.tazer_flourish_delay = 0,5; +} + +spectator_respawn() +{ + maps/mp/zombies/_zm_melee_weapon::spectator_respawn( "tazer_upgrade", ::take_tazer, ::has_tazer ); +} + +watch_bodily_functions() +{ + if ( isDefined( self.isscreecher ) || self.isscreecher && isDefined( self.is_avogadro ) && self.is_avogadro ) + { + return; + } + while ( 1 ) + { + self waittill( "damage", amount, attacker, direction_vec, point, type ); + if ( !isDefined( self ) ) + { + return; + } + if ( !isDefined( attacker ) || !isplayer( attacker ) ) + { + continue; + } + while ( type != "MOD_MELEE" ) + { + continue; + } + if ( !attacker hasweapon( "tazer_knuckles_zm" ) || isDefined( self.hasriotshieldequipped ) && self.hasriotshieldequipped ) + { + continue; + } + ch = randomint( 100 ); + if ( ch < 4 ) + { + playfxontag( level._effect[ "fx_zmb_taser_vomit" ], self, "j_neck" ); + } + if ( level.use_tazer_impact_fx ) + { + tags = []; + tags[ 0 ] = "J_Head"; + tags[ 1 ] = "J_Neck"; + playfxontag( level._effect[ "fx_zmb_tazer_impact" ], self, random( tags ) ); + } + } +} + +onplayerconnect() +{ + self thread onplayerspawned(); +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchtazerknucklemelee(); + } +} + +watchtazerknucklemelee() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "weapon_melee", weapon ); + if ( weapon == "tazer_knuckles_zm" ) + { + self tazerknuckle_melee(); + } + } +} + +tazerknuckle_melee() +{ +} + +has_tazer() +{ + if ( isDefined( level._allow_melee_weapon_switching ) && level._allow_melee_weapon_switching ) + { + return 0; + } + if ( isDefined( self._sickle_zm_equipped ) && !self._sickle_zm_equipped && isDefined( self._bowie_zm_equipped ) || self._bowie_zm_equipped && isDefined( self._tazer_zm_equipped ) && self._tazer_zm_equipped ) + { + return 1; + } + return 0; +} + +give_tazer() +{ + self._tazer_zm_equipped = 1; + self._bowie_zm_equipped = undefined; + self._sickle_zm_equipped = undefined; +} + +take_tazer() +{ + self._tazer_zm_equipped = undefined; +} + +tazer_flourish_fx() +{ + self waittill( "weapon_change", newweapon ); + if ( newweapon == "zombie_tazer_flourish" ) + { + self endon( "weapon_change" ); + wait level.tazer_flourish_delay; + self thread maps/mp/zombies/_zm_audio::playerexert( "hitmed" ); + self setclientfieldtoplayer( "tazer_flourish", 1 ); + wait_network_frame(); + self setclientfieldtoplayer( "tazer_flourish", 0 ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_weapons.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_weapons.gsc new file mode 100644 index 0000000..370ac44 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_weapons.gsc @@ -0,0 +1,2722 @@ +#include maps/mp/zombies/_zm_weap_cymbal_monkey; +#include maps/mp/zombies/_zm_weapons; +#include maps/mp/zombies/_zm_stats; +#include maps/mp/zombies/_zm_equipment; +#include maps/mp/zombies/_zm_laststand; +#include maps/mp/zombies/_zm_score; +#include maps/mp/zombies/_zm_melee_weapon; +#include maps/mp/zombies/_zm_unitrigger; +#include maps/mp/zombies/_zm_chugabud; +#include maps/mp/zombies/_zm_audio; +#include maps/mp/gametypes_zm/_weapons; +#include maps/mp/gametypes_zm/_weaponobjects; +#include maps/mp/zombies/_zm_magicbox; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ +/# + println( "ZM >> init (_zm_weapons.gsc)" ); +#/ + init_weapons(); + init_weapon_upgrade(); + init_weapon_toggle(); + init_pay_turret(); + init_weapon_cabinet(); + precacheshader( "minimap_icon_mystery_box" ); + precacheshader( "specialty_instakill_zombies" ); + precacheshader( "specialty_firesale_zombies" ); + precacheitem( "zombie_fists_zm" ); + level._weaponobjects_on_player_connect_override = ::weaponobjects_on_player_connect_override; + level._zombiemode_check_firesale_loc_valid_func = ::default_check_firesale_loc_valid_func; + level.missileentities = []; + setupretrievablehintstrings(); + level thread onplayerconnect(); +} + +setupretrievablehintstrings() +{ + maps/mp/gametypes_zm/_weaponobjects::createretrievablehint( "claymore", &"WEAPON_CLAYMORE_PICKUP" ); +} + +onplayerconnect() +{ + for ( ;; ) + { + level waittill( "connecting", player ); + player thread onplayerspawned(); + } +} + +onplayerspawned() +{ + self endon( "disconnect" ); + for ( ;; ) + { + self waittill( "spawned_player" ); + self thread watchforgrenadeduds(); + self thread watchforgrenadelauncherduds(); + self.staticweaponsstarttime = getTime(); + } +} + +watchforgrenadeduds() +{ + self endon( "spawned_player" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "grenade_fire", grenade, weapname ); + grenade thread checkgrenadefordud( weapname, 1, self ); + grenade thread watchforscriptexplosion( weapname, 1, self ); + } +} + +watchforgrenadelauncherduds() +{ + self endon( "spawned_player" ); + self endon( "disconnect" ); + while ( 1 ) + { + self waittill( "grenade_launcher_fire", grenade, weapname ); + grenade thread checkgrenadefordud( weapname, 0, self ); + grenade thread watchforscriptexplosion( weapname, 0, self ); + } +} + +grenade_safe_to_throw( player, weapname ) +{ + if ( isDefined( level.grenade_safe_to_throw ) ) + { + return self [[ level.grenade_safe_to_throw ]]( player, weapname ); + } + return 1; +} + +grenade_safe_to_bounce( player, weapname ) +{ + if ( isDefined( level.grenade_safe_to_bounce ) ) + { + return self [[ level.grenade_safe_to_bounce ]]( player, weapname ); + } + return 1; +} + +makegrenadedudanddestroy() +{ + self endon( "death" ); + self notify( "grenade_dud" ); + self makegrenadedud(); + wait 3; + if ( isDefined( self ) ) + { + self delete(); + } +} + +checkgrenadefordud( weapname, isthrowngrenade, player ) +{ + self endon( "death" ); + player endon( "zombify" ); + if ( !self grenade_safe_to_throw( player, weapname ) ) + { + self thread makegrenadedudanddestroy(); + return; + } + for ( ;; ) + { + self waittill_any_timeout( 0,25, "grenade_bounce", "stationary" ); + if ( !self grenade_safe_to_bounce( player, weapname ) ) + { + self thread makegrenadedudanddestroy(); + return; + } + } +} + +wait_explode() +{ + self endon( "grenade_dud" ); + self endon( "done" ); + self waittill( "explode", position ); + level.explode_position = position; + level.explode_position_valid = 1; + self notify( "done" ); +} + +wait_timeout( time ) +{ + self endon( "grenade_dud" ); + self endon( "done" ); + wait time; + self notify( "done" ); +} + +wait_for_explosion( time ) +{ + level.explode_position = ( 0, 0, 0 ); + level.explode_position_valid = 0; + self thread wait_explode(); + self thread wait_timeout( time ); + self waittill( "done" ); + self notify( "death_or_explode" ); +} + +watchforscriptexplosion( weapname, isthrowngrenade, player ) +{ + self endon( "grenade_dud" ); + if ( is_lethal_grenade( weapname ) || is_grenade_launcher( weapname ) ) + { + self thread wait_for_explosion( 20 ); + self waittill( "death_or_explode", exploded, position ); + if ( exploded ) + { + level notify( "grenade_exploded" ); + } + } +} + +switch_from_alt_weapon( current_weapon ) +{ + if ( is_alt_weapon( current_weapon ) ) + { + alt = weaponaltweaponname( current_weapon ); + while ( alt == "none" ) + { + primaryweapons = self getweaponslistprimaries(); + alt = primaryweapons[ 0 ]; + _a200 = primaryweapons; + _k200 = getFirstArrayKey( _a200 ); + while ( isDefined( _k200 ) ) + { + weapon = _a200[ _k200 ]; + if ( weaponaltweaponname( weapon ) == current_weapon ) + { + alt = weapon; + break; + } + else + { + _k200 = getNextArrayKey( _a200, _k200 ); + } + } + } + self switchtoweaponimmediate( alt ); + self waittill_notify_or_timeout( "weapon_change_complete", 1 ); + return alt; + } + return current_weapon; +} + +give_fallback_weapon() +{ + self giveweapon( "zombie_fists_zm" ); + self switchtoweapon( "zombie_fists_zm" ); +} + +take_fallback_weapon() +{ + if ( self hasweapon( "zombie_fists_zm" ) ) + { + self takeweapon( "zombie_fists_zm" ); + } +} + +switch_back_primary_weapon( oldprimary ) +{ + if ( isDefined( self.laststand ) && self.laststand ) + { + return; + } + primaryweapons = self getweaponslistprimaries(); + if ( isDefined( oldprimary ) && isinarray( primaryweapons, oldprimary ) ) + { + self switchtoweapon( oldprimary ); + } + else + { + if ( isDefined( primaryweapons ) && primaryweapons.size > 0 ) + { + self switchtoweapon( primaryweapons[ 0 ] ); + } + } +} + +add_retrievable_knife_init_name( name ) +{ + if ( !isDefined( level.retrievable_knife_init_names ) ) + { + level.retrievable_knife_init_names = []; + } + level.retrievable_knife_init_names[ level.retrievable_knife_init_names.size ] = name; +} + +watchweaponusagezm() +{ + self endon( "death" ); + self endon( "disconnect" ); + level endon( "game_ended" ); + for ( ;; ) + { + self waittill( "weapon_fired", curweapon ); + self.lastfiretime = getTime(); + self.hasdonecombat = 1; + if ( isDefined( self.hitsthismag[ curweapon ] ) ) + { + self thread updatemagshots( curweapon ); + } + switch( weaponclass( curweapon ) ) + { + case "rifle": + if ( curweapon == "crossbow_explosive_mp" ) + { + level.globalcrossbowfired++; + self addweaponstat( curweapon, "shots", 1 ); + self thread begingrenadetracking(); + break; + } + else case "mg": + case "pistol": + case "pistol spread": + case "pistolspread": + case "smg": + case "spread": + self trackweaponfire( curweapon ); + level.globalshotsfired++; + break; + case "grenade": + case "rocketlauncher": + if ( is_alt_weapon( curweapon ) ) + { + curweapon = weaponaltweaponname( curweapon ); + } + self addweaponstat( curweapon, "shots", 1 ); + break; + default: + } + switch( curweapon ) + { + case "m202_flash_mp": + case "m220_tow_mp": + case "m32_mp": + case "minigun_mp": + case "mp40_blinged_mp": + self.usedkillstreakweapon[ curweapon ] = 1; + break; + continue; + default: + } + } + } + } +} + +trackweaponzm() +{ + self.currentweapon = self getcurrentweapon(); + self.currenttime = getTime(); + spawnid = getplayerspawnid( self ); + while ( 1 ) + { + event = self waittill_any_return( "weapon_change", "death", "disconnect", "bled_out" ); + newtime = getTime(); + if ( event == "weapon_change" ) + { + newweapon = self getcurrentweapon(); + if ( newweapon != "none" && newweapon != self.currentweapon ) + { + updatelastheldweapontimingszm( newtime ); + self.currentweapon = newweapon; + self.currenttime = newtime; + } + continue; + } + else + { + if ( event != "disconnect" ) + { + updateweapontimingszm( newtime ); + } + return; + } + } +} + +updatelastheldweapontimingszm( newtime ) +{ + if ( isDefined( self.currentweapon ) && isDefined( self.currenttime ) ) + { + curweapon = self.currentweapon; + totaltime = int( ( newtime - self.currenttime ) / 1000 ); + if ( totaltime > 0 ) + { + if ( is_alt_weapon( curweapon ) ) + { + curweapon = weaponaltweaponname( curweapon ); + } + self addweaponstat( curweapon, "timeUsed", totaltime ); + } + } +} + +updateweapontimingszm( newtime ) +{ + if ( self is_bot() ) + { + return; + } + updatelastheldweapontimingszm( newtime ); + if ( !isDefined( self.staticweaponsstarttime ) ) + { + return; + } + totaltime = int( ( newtime - self.staticweaponsstarttime ) / 1000 ); + if ( totaltime < 0 ) + { + return; + } + self.staticweaponsstarttime = newtime; +} + +watchweaponchangezm() +{ + self endon( "death" ); + self endon( "disconnect" ); + self.lastdroppableweapon = self getcurrentweapon(); + self.hitsthismag = []; + weapon = self getcurrentweapon(); + if ( isDefined( weapon ) && weapon != "none" && !isDefined( self.hitsthismag[ weapon ] ) ) + { + self.hitsthismag[ weapon ] = weaponclipsize( weapon ); + } + while ( 1 ) + { + previous_weapon = self getcurrentweapon(); + self waittill( "weapon_change", newweapon ); + if ( maydropweapon( newweapon ) ) + { + self.lastdroppableweapon = newweapon; + } + if ( newweapon != "none" ) + { + if ( !isDefined( self.hitsthismag[ newweapon ] ) ) + { + self.hitsthismag[ newweapon ] = weaponclipsize( newweapon ); + } + } + } +} + +weaponobjects_on_player_connect_override_internal() +{ + self maps/mp/gametypes_zm/_weaponobjects::createbasewatchers(); + self createclaymorewatcher_zm(); + i = 0; + while ( i < level.retrievable_knife_init_names.size ) + { + self createballisticknifewatcher_zm( level.retrievable_knife_init_names[ i ], level.retrievable_knife_init_names[ i ] + "_zm" ); + i++; + } + self maps/mp/gametypes_zm/_weaponobjects::setupretrievablewatcher(); + if ( !isDefined( self.weaponobjectwatcherarray ) ) + { + self.weaponobjectwatcherarray = []; + } + self thread maps/mp/gametypes_zm/_weaponobjects::watchweaponobjectspawn(); + self thread maps/mp/gametypes_zm/_weaponobjects::watchweaponprojectileobjectspawn(); + self thread maps/mp/gametypes_zm/_weaponobjects::deleteweaponobjectson(); + self.concussionendtime = 0; + self.hasdonecombat = 0; + self.lastfiretime = 0; + self thread watchweaponusagezm(); + self thread maps/mp/gametypes_zm/_weapons::watchgrenadeusage(); + self thread maps/mp/gametypes_zm/_weapons::watchmissileusage(); + self thread watchweaponchangezm(); + self thread maps/mp/gametypes_zm/_weapons::watchturretuse(); + self thread trackweaponzm(); + self notify( "weapon_watchers_created" ); +} + +weaponobjects_on_player_connect_override() +{ + add_retrievable_knife_init_name( "knife_ballistic" ); + add_retrievable_knife_init_name( "knife_ballistic_upgraded" ); + onplayerconnect_callback( ::weaponobjects_on_player_connect_override_internal ); +} + +createclaymorewatcher_zm() +{ + watcher = self maps/mp/gametypes_zm/_weaponobjects::createuseweaponobjectwatcher( "claymore", "claymore_zm", self.team ); + watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_weap_claymore::on_spawn_retrieve_trigger; + watcher.adjusttriggerorigin = ::maps/mp/zombies/_zm_weap_claymore::adjust_trigger_origin; + watcher.pickup = level.pickup_claymores; + watcher.pickup_trigger_listener = level.pickup_claymores_trigger_listener; + watcher.skip_weapon_object_damage = 1; + watcher.headicon = 0; + watcher.watchforfire = 1; + watcher.detonate = ::claymoredetonate; + watcher.ondamage = level.claymores_on_damage; +} + +createballisticknifewatcher_zm( name, weapon ) +{ + watcher = self maps/mp/gametypes_zm/_weaponobjects::createuseweaponobjectwatcher( name, weapon, self.team ); + watcher.onspawn = ::maps/mp/zombies/_zm_weap_ballistic_knife::on_spawn; + watcher.onspawnretrievetriggers = ::maps/mp/zombies/_zm_weap_ballistic_knife::on_spawn_retrieve_trigger; + watcher.storedifferentobject = 1; + watcher.headicon = 0; +} + +isempweapon( weaponname ) +{ + if ( isDefined( weaponname ) && weaponname != "emp_mp" || weaponname == "emp_grenade_mp" && weaponname == "emp_grenade_zm" ) + { + return 1; + } + return 0; +} + +claymoredetonate( attacker, weaponname ) +{ + from_emp = isempweapon( weaponname ); + if ( from_emp ) + { + self delete(); + return; + } + if ( isDefined( attacker ) ) + { + self detonate( attacker ); + } + else if ( isDefined( self.owner ) && isplayer( self.owner ) ) + { + self detonate( self.owner ); + } + else + { + self detonate(); + } +} + +default_check_firesale_loc_valid_func() +{ + return 1; +} + +add_zombie_weapon( weapon_name, upgrade_name, hint, cost, weaponvo, weaponvoresp, ammo_cost, create_vox ) +{ + if ( isDefined( level.zombie_include_weapons ) && !isDefined( level.zombie_include_weapons[ weapon_name ] ) ) + { + return; + } + table = "mp/zombiemode.csv"; + table_cost = tablelookup( table, 0, weapon_name, 1 ); + table_ammo_cost = tablelookup( table, 0, weapon_name, 2 ); + if ( isDefined( table_cost ) && table_cost != "" ) + { + cost = round_up_to_ten( int( table_cost ) ); + } + if ( isDefined( table_ammo_cost ) && table_ammo_cost != "" ) + { + ammo_cost = round_up_to_ten( int( table_ammo_cost ) ); + } + precachestring( hint ); + struct = spawnstruct(); + if ( !isDefined( level.zombie_weapons ) ) + { + level.zombie_weapons = []; + } + struct.weapon_name = weapon_name; + struct.upgrade_name = upgrade_name; + struct.weapon_classname = "weapon_" + weapon_name; + struct.hint = hint; + struct.cost = cost; + struct.vox = weaponvo; + struct.vox_response = weaponvoresp; +/# + println( "ZM >> Looking for weapon - " + weapon_name ); +#/ + struct.is_in_box = level.zombie_include_weapons[ weapon_name ]; + if ( !isDefined( ammo_cost ) ) + { + ammo_cost = round_up_to_ten( int( cost * 0,5 ) ); + } + struct.ammo_cost = ammo_cost; + level.zombie_weapons[ weapon_name ] = struct; + if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch && isDefined( upgrade_name ) ) + { + add_attachments( weapon_name, upgrade_name ); + } + if ( isDefined( create_vox ) ) + { + level.vox maps/mp/zombies/_zm_audio::zmbvoxadd( "player", "weapon_pickup", weapon_name, weaponvo, undefined ); + } +/# + if ( isDefined( level.devgui_add_weapon ) ) + { + [[ level.devgui_add_weapon ]]( weapon_name, upgrade_name, hint, cost, weaponvo, weaponvoresp, ammo_cost ); +#/ + } +} + +add_attachments( weapon_name, upgrade_name ) +{ + table = "zm/pap_attach.csv"; + if ( isDefined( level.weapon_attachment_table ) ) + { + table = level.weapon_attachment_table; + } + row = tablelookuprownum( table, 0, upgrade_name ); + while ( row > -1 ) + { + level.zombie_weapons[ weapon_name ].default_attachment = tablelookup( table, 0, upgrade_name, 1 ); + level.zombie_weapons[ weapon_name ].addon_attachments = []; + index = 2; + next_addon = tablelookup( table, 0, upgrade_name, index ); + while ( isDefined( next_addon ) && next_addon.size > 0 ) + { + level.zombie_weapons[ weapon_name ].addon_attachments[ level.zombie_weapons[ weapon_name ].addon_attachments.size ] = next_addon; + index++; + next_addon = tablelookup( table, 0, upgrade_name, index ); + } + } +} + +default_weighting_func() +{ + return 1; +} + +default_tesla_weighting_func() +{ + num_to_add = 1; + if ( isDefined( level.pulls_since_last_tesla_gun ) ) + { + if ( isDefined( level.player_drops_tesla_gun ) && level.player_drops_tesla_gun == 1 ) + { + num_to_add += int( 0,2 * level.zombie_include_weapons.size ); + } + if ( !isDefined( level.player_seen_tesla_gun ) || level.player_seen_tesla_gun == 0 ) + { + if ( level.round_number > 10 ) + { + num_to_add += int( 0,2 * level.zombie_include_weapons.size ); + } + else + { + if ( level.round_number > 5 ) + { + num_to_add += int( 0,15 * level.zombie_include_weapons.size ); + } + } + } + } + return num_to_add; +} + +default_1st_move_weighting_func() +{ + if ( level.chest_moves > 0 ) + { + num_to_add = 1; + return num_to_add; + } + else + { + return 0; + } +} + +default_upgrade_weapon_weighting_func() +{ + if ( level.chest_moves > 1 ) + { + return 1; + } + else + { + return 0; + } +} + +default_cymbal_monkey_weighting_func() +{ + players = get_players(); + count = 0; + i = 0; + while ( i < players.size ) + { + if ( players[ i ] has_weapon_or_upgrade( "cymbal_monkey_zm" ) ) + { + count++; + } + i++; + } + if ( count > 0 ) + { + return 1; + } + else + { + if ( level.round_number < 10 ) + { + return 3; + } + else + { + return 5; + } + } +} + +is_weapon_included( weapon_name ) +{ + if ( !isDefined( level.zombie_weapons ) ) + { + return 0; + } + return isDefined( level.zombie_weapons[ weapon_name ] ); +} + +is_weapon_or_base_included( weapon_name ) +{ + if ( !isDefined( level.zombie_weapons ) ) + { + return 0; + } + if ( isDefined( level.zombie_weapons[ weapon_name ] ) ) + { + return 1; + } + base = get_base_weapon_name( weapon_name, 1 ); + if ( isDefined( level.zombie_weapons[ base ] ) ) + { + return 1; + } + return 0; +} + +include_zombie_weapon( weapon_name, in_box, collector, weighting_func ) +{ + if ( !isDefined( level.zombie_include_weapons ) ) + { + level.zombie_include_weapons = []; + } + if ( !isDefined( in_box ) ) + { + in_box = 1; + } +/# + println( "ZM >> Including weapon - " + weapon_name ); +#/ + level.zombie_include_weapons[ weapon_name ] = in_box; + precacheitem( weapon_name ); + if ( !isDefined( weighting_func ) ) + { + level.weapon_weighting_funcs[ weapon_name ] = ::default_weighting_func; + } + else + { + level.weapon_weighting_funcs[ weapon_name ] = weighting_func; + } +} + +init_weapons() +{ + if ( isDefined( level._zombie_custom_add_weapons ) ) + { + [[ level._zombie_custom_add_weapons ]](); + } + precachemodel( "zombie_teddybear" ); +} + +add_limited_weapon( weapon_name, amount ) +{ + if ( !isDefined( level.limited_weapons ) ) + { + level.limited_weapons = []; + } + level.limited_weapons[ weapon_name ] = amount; +} + +limited_weapon_below_quota( weapon, ignore_player, pap_triggers ) +{ + while ( isDefined( level.limited_weapons[ weapon ] ) ) + { + if ( !isDefined( pap_triggers ) ) + { + pap_triggers = getentarray( "specialty_weapupgrade", "script_noteworthy" ); + } + players = get_players(); + count = 0; + limit = level.limited_weapons[ weapon ]; + i = 0; + while ( i < players.size ) + { + if ( isDefined( ignore_player ) && ignore_player == players[ i ] ) + { + i++; + continue; + } + else + { + if ( players[ i ] has_weapon_or_upgrade( weapon ) ) + { + count++; + if ( count >= limit ) + { + return 0; + } + } + } + i++; + } + k = 0; + while ( k < pap_triggers.size ) + { + if ( isDefined( pap_triggers[ k ].current_weapon ) && pap_triggers[ k ].current_weapon == weapon ) + { + count++; + if ( count >= limit ) + { + return 0; + } + } + k++; + } + if ( maps/mp/zombies/_zm_chugabud::is_weapon_available_in_chugabud_corpse( weapon ) ) + { + return 0; + } + chestindex = 0; + while ( chestindex < level.chests.size ) + { + if ( isDefined( level.chests[ chestindex ].zbarrier.weapon_string ) && level.chests[ chestindex ].zbarrier.weapon_string == weapon ) + { + count++; + if ( count >= limit ) + { + return 0; + } + } + chestindex++; + } + while ( isDefined( level.random_weapon_powerups ) ) + { + powerupindex = 0; + while ( powerupindex < level.random_weapon_powerups.size ) + { + if ( isDefined( level.random_weapon_powerups[ powerupindex ] ) && level.random_weapon_powerups[ powerupindex ].base_weapon == weapon ) + { + count++; + if ( count >= limit ) + { + return 0; + } + } + powerupindex++; + } + } + } + return 1; +} + +init_pay_turret() +{ + pay_turrets = []; + pay_turrets = getentarray( "pay_turret", "targetname" ); + i = 0; + while ( i < pay_turrets.size ) + { + cost = level.pay_turret_cost; + if ( !isDefined( cost ) ) + { + cost = 1000; + } + pay_turrets[ i ] sethintstring( &"ZOMBIE_PAY_TURRET", cost ); + pay_turrets[ i ] setcursorhint( "HINT_NOICON" ); + pay_turrets[ i ] usetriggerrequirelookat(); + pay_turrets[ i ] thread pay_turret_think( cost ); + i++; + } +} + +init_spawnable_weapon_upgrade() +{ + spawn_list = []; + spawnable_weapon_spawns = getstructarray( "weapon_upgrade", "targetname" ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "bowie_upgrade", "targetname" ), 1, 0 ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "sickle_upgrade", "targetname" ), 1, 0 ); + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "tazer_upgrade", "targetname" ), 1, 0 ); + if ( !is_true( level.headshots_only ) ) + { + spawnable_weapon_spawns = arraycombine( spawnable_weapon_spawns, getstructarray( "claymore_purchase", "targetname" ), 1, 0 ); + } + match_string = ""; + location = level.scr_zm_map_start_location; + if ( location != "default" && location == "" && isDefined( level.default_start_location ) ) + { + location = level.default_start_location; + } + match_string = level.scr_zm_ui_gametype; + if ( location != "" ) + { + match_string = ( match_string + "_" ) + location; + } + match_string_plus_space = " " + match_string; + i = 0; + while ( i < spawnable_weapon_spawns.size ) + { + spawnable_weapon = spawnable_weapon_spawns[ i ]; + if ( isDefined( spawnable_weapon.zombie_weapon_upgrade ) && spawnable_weapon.zombie_weapon_upgrade == "sticky_grenade_zm" && is_true( level.headshots_only ) ) + { + i++; + continue; + } + else + { + if ( !isDefined( spawnable_weapon.script_noteworthy ) || spawnable_weapon.script_noteworthy == "" ) + { + spawn_list[ spawn_list.size ] = spawnable_weapon; + i++; + continue; + } + else + { + matches = strtok( spawnable_weapon.script_noteworthy, "," ); + j = 0; + while ( j < matches.size ) + { + if ( matches[ j ] == match_string || matches[ j ] == match_string_plus_space ) + { + spawn_list[ spawn_list.size ] = spawnable_weapon; + } + j++; + } + } + } + i++; + } + tempmodel = spawn( "script_model", ( 0, 0, 0 ) ); + i = 0; + while ( i < spawn_list.size ) + { + clientfieldname = ( spawn_list[ i ].zombie_weapon_upgrade + "_" ) + spawn_list[ i ].origin; + registerclientfield( "world", clientfieldname, 1, 2, "int" ); + target_struct = getstruct( spawn_list[ i ].target, "targetname" ); + precachemodel( target_struct.model ); + unitrigger_stub = spawnstruct(); + unitrigger_stub.origin = spawn_list[ i ].origin; + unitrigger_stub.angles = spawn_list[ i ].angles; + tempmodel.origin = spawn_list[ i ].origin; + tempmodel.angles = spawn_list[ i ].angles; + mins = undefined; + maxs = undefined; + absmins = undefined; + absmaxs = undefined; + tempmodel setmodel( target_struct.model ); + tempmodel useweaponhidetags( spawn_list[ i ].zombie_weapon_upgrade ); + mins = tempmodel getmins(); + maxs = tempmodel getmaxs(); + absmins = tempmodel getabsmins(); + absmaxs = tempmodel getabsmaxs(); + bounds = absmaxs - absmins; + unitrigger_stub.script_length = bounds[ 0 ] * 0,25; + unitrigger_stub.script_width = bounds[ 1 ]; + unitrigger_stub.script_height = bounds[ 2 ]; + unitrigger_stub.origin -= anglesToRight( unitrigger_stub.angles ) * ( unitrigger_stub.script_length * 0,4 ); + unitrigger_stub.target = spawn_list[ i ].target; + unitrigger_stub.targetname = spawn_list[ i ].targetname; + unitrigger_stub.cursor_hint = "HINT_NOICON"; + if ( spawn_list[ i ].targetname == "weapon_upgrade" ) + { + unitrigger_stub.hint_string = get_weapon_hint( spawn_list[ i ].zombie_weapon_upgrade ); + unitrigger_stub.cost = get_weapon_cost( spawn_list[ i ].zombie_weapon_upgrade ); + } + unitrigger_stub.weapon_upgrade = spawn_list[ i ].zombie_weapon_upgrade; + unitrigger_stub.script_unitrigger_type = "unitrigger_box_use"; + unitrigger_stub.require_look_at = 1; + if ( isDefined( spawn_list[ i ].require_look_from ) && spawn_list[ i ].require_look_from ) + { + unitrigger_stub.require_look_from = 1; + } + unitrigger_stub.zombie_weapon_upgrade = spawn_list[ i ].zombie_weapon_upgrade; + unitrigger_stub.clientfieldname = clientfieldname; + if ( unitrigger_stub.zombie_weapon_upgrade == "claymore_zm" ) + { + unitrigger_force_per_player_triggers( unitrigger_stub, 1 ); + unitrigger_stub.prompt_and_visibility_func = ::maps/mp/zombies/_zm_weap_claymore::claymore_unitrigger_update_prompt; + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::maps/mp/zombies/_zm_weap_claymore::buy_claymores ); + } + else + { + if ( unitrigger_stub.zombie_weapon_upgrade == "tazer_knuckles_zm" && isDefined( level.taser_trig_adjustment ) ) + { + unitrigger_stub.origin += level.taser_trig_adjustment; + } + maps/mp/zombies/_zm_unitrigger::register_static_unitrigger( unitrigger_stub, ::weapon_spawn_think ); + } + spawn_list[ i ].trigger_stub = unitrigger_stub; + i++; + } + level._spawned_wallbuys = spawn_list; + tempmodel delete(); +} + +reset_wallbuy_internal( set_hint_string ) +{ + if ( isDefined( self.first_time_triggered ) && self.first_time_triggered == 1 ) + { + self.first_time_triggered = 0; + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 0 ); + } + if ( set_hint_string ) + { + hint_string = get_weapon_hint( self.zombie_weapon_upgrade ); + cost = get_weapon_cost( self.zombie_weapon_upgrade ); + self sethintstring( hint_string, cost ); + } + } +} + +reset_wallbuys() +{ + weapon_spawns = []; + weapon_spawns = getentarray( "weapon_upgrade", "targetname" ); + melee_and_grenade_spawns = []; + melee_and_grenade_spawns = getentarray( "bowie_upgrade", "targetname" ); + melee_and_grenade_spawns = arraycombine( melee_and_grenade_spawns, getentarray( "sickle_upgrade", "targetname" ), 1, 0 ); + melee_and_grenade_spawns = arraycombine( melee_and_grenade_spawns, getentarray( "tazer_upgrade", "targetname" ), 1, 0 ); + if ( !is_true( level.headshots_only ) ) + { + melee_and_grenade_spawns = arraycombine( melee_and_grenade_spawns, getentarray( "claymore_purchase", "targetname" ), 1, 0 ); + } + i = 0; + while ( i < weapon_spawns.size ) + { + weapon_spawns[ i ] reset_wallbuy_internal( 1 ); + i++; + } + i = 0; + while ( i < melee_and_grenade_spawns.size ) + { + melee_and_grenade_spawns[ i ] reset_wallbuy_internal( 0 ); + i++; + } + while ( isDefined( level._unitriggers ) ) + { + candidates = []; + i = 0; + while ( i < level._unitriggers.trigger_stubs.size ) + { + stub = level._unitriggers.trigger_stubs[ i ]; + tn = stub.targetname; + if ( tn != "weapon_upgrade" && tn != "bowie_upgrade" && tn != "sickle_upgrade" || tn == "tazer_upgrade" && tn == "claymore_purchase" ) + { + stub.first_time_triggered = 0; + if ( isDefined( stub.clientfieldname ) ) + { + level setclientfield( stub.clientfieldname, 0 ); + } + if ( tn == "weapon_upgrade" ) + { + stub.hint_string = get_weapon_hint( stub.zombie_weapon_upgrade ); + stub.cost = get_weapon_cost( stub.zombie_weapon_upgrade ); + } + } + i++; + } + } +} + +init_weapon_upgrade() +{ + init_spawnable_weapon_upgrade(); + weapon_spawns = []; + weapon_spawns = getentarray( "weapon_upgrade", "targetname" ); + i = 0; + while ( i < weapon_spawns.size ) + { + hint_string = get_weapon_hint( weapon_spawns[ i ].zombie_weapon_upgrade ); + cost = get_weapon_cost( weapon_spawns[ i ].zombie_weapon_upgrade ); + weapon_spawns[ i ] sethintstring( hint_string, cost ); + weapon_spawns[ i ] setcursorhint( "HINT_NOICON" ); + weapon_spawns[ i ] usetriggerrequirelookat(); + weapon_spawns[ i ] thread weapon_spawn_think(); + model = getent( weapon_spawns[ i ].target, "targetname" ); + if ( isDefined( model ) ) + { + model useweaponhidetags( weapon_spawns[ i ].zombie_weapon_upgrade ); + model hide(); + } + i++; + } +} + +init_weapon_toggle() +{ + if ( !isDefined( level.magic_box_weapon_toggle_init_callback ) ) + { + return; + } + level.zombie_weapon_toggles = []; + level.zombie_weapon_toggle_max_active_count = 0; + level.zombie_weapon_toggle_active_count = 0; + precachestring( &"ZOMBIE_WEAPON_TOGGLE_DISABLED" ); + precachestring( &"ZOMBIE_WEAPON_TOGGLE_ACTIVATE" ); + precachestring( &"ZOMBIE_WEAPON_TOGGLE_DEACTIVATE" ); + precachestring( &"ZOMBIE_WEAPON_TOGGLE_ACQUIRED" ); + level.zombie_weapon_toggle_disabled_hint = &"ZOMBIE_WEAPON_TOGGLE_DISABLED"; + level.zombie_weapon_toggle_activate_hint = &"ZOMBIE_WEAPON_TOGGLE_ACTIVATE"; + level.zombie_weapon_toggle_deactivate_hint = &"ZOMBIE_WEAPON_TOGGLE_DEACTIVATE"; + level.zombie_weapon_toggle_acquired_hint = &"ZOMBIE_WEAPON_TOGGLE_ACQUIRED"; + precachemodel( "zombie_zapper_cagelight" ); + precachemodel( "zombie_zapper_cagelight_green" ); + precachemodel( "zombie_zapper_cagelight_red" ); + precachemodel( "zombie_zapper_cagelight_on" ); + level.zombie_weapon_toggle_disabled_light = "zombie_zapper_cagelight"; + level.zombie_weapon_toggle_active_light = "zombie_zapper_cagelight_green"; + level.zombie_weapon_toggle_inactive_light = "zombie_zapper_cagelight_red"; + level.zombie_weapon_toggle_acquired_light = "zombie_zapper_cagelight_on"; + weapon_toggle_ents = []; + weapon_toggle_ents = getentarray( "magic_box_weapon_toggle", "targetname" ); + i = 0; + while ( i < weapon_toggle_ents.size ) + { + struct = spawnstruct(); + struct.trigger = weapon_toggle_ents[ i ]; + struct.weapon_name = struct.trigger.script_string; + struct.upgrade_name = level.zombie_weapons[ struct.trigger.script_string ].upgrade_name; + struct.enabled = 0; + struct.active = 0; + struct.acquired = 0; + target_array = []; + target_array = getentarray( struct.trigger.target, "targetname" ); + j = 0; + while ( j < target_array.size ) + { + switch( target_array[ j ].script_string ) + { + case "light": + struct.light = target_array[ j ]; + struct.light setmodel( level.zombie_weapon_toggle_disabled_light ); + break; + j++; + continue; + case "weapon": + struct.weapon_model = target_array[ j ]; + struct.weapon_model hide(); + break; + j++; + continue; + } + j++; + } + struct.trigger sethintstring( level.zombie_weapon_toggle_disabled_hint ); + struct.trigger setcursorhint( "HINT_NOICON" ); + struct.trigger usetriggerrequirelookat(); + struct thread weapon_toggle_think(); + level.zombie_weapon_toggles[ struct.weapon_name ] = struct; + i++; + } + level thread [[ level.magic_box_weapon_toggle_init_callback ]](); +} + +get_weapon_toggle( weapon_name ) +{ + if ( !isDefined( level.zombie_weapon_toggles ) ) + { + return undefined; + } + if ( isDefined( level.zombie_weapon_toggles[ weapon_name ] ) ) + { + return level.zombie_weapon_toggles[ weapon_name ]; + } + keys = getarraykeys( level.zombie_weapon_toggles ); + i = 0; + while ( i < keys.size ) + { + if ( weapon_name == level.zombie_weapon_toggles[ keys[ i ] ].upgrade_name ) + { + return level.zombie_weapon_toggles[ keys[ i ] ]; + } + i++; + } + return undefined; +} + +is_weapon_toggle( weapon_name ) +{ + return isDefined( get_weapon_toggle( weapon_name ) ); +} + +disable_weapon_toggle( weapon_name ) +{ + toggle = get_weapon_toggle( weapon_name ); + if ( !isDefined( toggle ) ) + { + return; + } + if ( toggle.active ) + { + level.zombie_weapon_toggle_active_count--; + + } + toggle.enabled = 0; + toggle.active = 0; + toggle.light setmodel( level.zombie_weapon_toggle_disabled_light ); + toggle.weapon_model hide(); + toggle.trigger sethintstring( level.zombie_weapon_toggle_disabled_hint ); +} + +enable_weapon_toggle( weapon_name ) +{ + toggle = get_weapon_toggle( weapon_name ); + if ( !isDefined( toggle ) ) + { + return; + } + toggle.enabled = 1; + toggle.weapon_model show(); + toggle.weapon_model useweaponhidetags( weapon_name ); + deactivate_weapon_toggle( weapon_name ); +} + +activate_weapon_toggle( weapon_name, trig_for_vox ) +{ + if ( level.zombie_weapon_toggle_active_count >= level.zombie_weapon_toggle_max_active_count ) + { + if ( isDefined( trig_for_vox ) ) + { + trig_for_vox thread maps/mp/zombies/_zm_audio::weapon_toggle_vox( "max" ); + } + return; + } + toggle = get_weapon_toggle( weapon_name ); + if ( !isDefined( toggle ) ) + { + return; + } + if ( isDefined( trig_for_vox ) ) + { + trig_for_vox thread maps/mp/zombies/_zm_audio::weapon_toggle_vox( "activate", weapon_name ); + } + level.zombie_weapon_toggle_active_count++; + toggle.active = 1; + toggle.light setmodel( level.zombie_weapon_toggle_active_light ); + toggle.trigger sethintstring( level.zombie_weapon_toggle_deactivate_hint ); +} + +deactivate_weapon_toggle( weapon_name, trig_for_vox ) +{ + toggle = get_weapon_toggle( weapon_name ); + if ( !isDefined( toggle ) ) + { + return; + } + if ( isDefined( trig_for_vox ) ) + { + trig_for_vox thread maps/mp/zombies/_zm_audio::weapon_toggle_vox( "deactivate", weapon_name ); + } + if ( toggle.active ) + { + level.zombie_weapon_toggle_active_count--; + + } + toggle.active = 0; + toggle.light setmodel( level.zombie_weapon_toggle_inactive_light ); + toggle.trigger sethintstring( level.zombie_weapon_toggle_activate_hint ); +} + +acquire_weapon_toggle( weapon_name, player ) +{ + toggle = get_weapon_toggle( weapon_name ); + if ( !isDefined( toggle ) ) + { + return; + } + if ( !toggle.active || toggle.acquired ) + { + return; + } + toggle.acquired = 1; + toggle.light setmodel( level.zombie_weapon_toggle_acquired_light ); + toggle.trigger sethintstring( level.zombie_weapon_toggle_acquired_hint ); + toggle thread unacquire_weapon_toggle_on_death_or_disconnect_thread( player ); +} + +unacquire_weapon_toggle_on_death_or_disconnect_thread( player ) +{ + self notify( "end_unacquire_weapon_thread" ); + self endon( "end_unacquire_weapon_thread" ); + player waittill_any( "spawned_spectator", "disconnect" ); + unacquire_weapon_toggle( self.weapon_name ); +} + +unacquire_weapon_toggle( weapon_name ) +{ + toggle = get_weapon_toggle( weapon_name ); + if ( !isDefined( toggle ) ) + { + return; + } + if ( !toggle.active || !toggle.acquired ) + { + return; + } + toggle.acquired = 0; + toggle.light setmodel( level.zombie_weapon_toggle_active_light ); + toggle.trigger sethintstring( level.zombie_weapon_toggle_deactivate_hint ); + toggle notify( "end_unacquire_weapon_thread" ); +} + +weapon_toggle_think() +{ + for ( ;; ) + { + self.trigger waittill( "trigger", player ); + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + continue; + } + else if ( !self.enabled || self.acquired ) + { + self.trigger thread maps/mp/zombies/_zm_audio::weapon_toggle_vox( "max" ); + continue; + } + else + { + if ( !self.active ) + { + activate_weapon_toggle( self.weapon_name, self.trigger ); + break; + } + else + { + deactivate_weapon_toggle( self.weapon_name, self.trigger ); + } + } + } +} + +init_weapon_cabinet() +{ + weapon_cabs = getentarray( "weapon_cabinet_use", "targetname" ); +/# + println( "ZM >> init_weapon_cabinet (_zm_weapons.gsc) num=" + weapon_cabs.size ); +#/ + i = 0; + while ( i < weapon_cabs.size ) + { + weapon_cabs[ i ] sethintstring( &"ZOMBIE_CABINET_OPEN_1500" ); + weapon_cabs[ i ] setcursorhint( "HINT_NOICON" ); + weapon_cabs[ i ] usetriggerrequirelookat(); + i++; + } + array_thread( weapon_cabs, ::weapon_cabinet_think ); +} + +get_weapon_hint( weapon_name ) +{ +/# + assert( isDefined( level.zombie_weapons[ weapon_name ] ), weapon_name + " was not included or is not part of the zombie weapon list." ); +#/ + return level.zombie_weapons[ weapon_name ].hint; +} + +get_weapon_cost( weapon_name ) +{ +/# + assert( isDefined( level.zombie_weapons[ weapon_name ] ), weapon_name + " was not included or is not part of the zombie weapon list." ); +#/ + return level.zombie_weapons[ weapon_name ].cost; +} + +get_ammo_cost( weapon_name ) +{ +/# + assert( isDefined( level.zombie_weapons[ weapon_name ] ), weapon_name + " was not included or is not part of the zombie weapon list." ); +#/ + return level.zombie_weapons[ weapon_name ].ammo_cost; +} + +get_is_in_box( weapon_name ) +{ +/# + assert( isDefined( level.zombie_weapons[ weapon_name ] ), weapon_name + " was not included or is not part of the zombie weapon list." ); +#/ + return level.zombie_weapons[ weapon_name ].is_in_box; +} + +weapon_supports_attachments( weaponname ) +{ + weaponname = get_base_weapon_name( weaponname ); + attachments = level.zombie_weapons[ weaponname ].addon_attachments; + if ( isDefined( attachments ) ) + { + return attachments.size > 1; + } +} + +random_attachment( weaponname, exclude ) +{ + lo = 0; + if ( isDefined( level.zombie_weapons[ weaponname ].addon_attachments ) && level.zombie_weapons[ weaponname ].addon_attachments.size > 0 ) + { + attachments = level.zombie_weapons[ weaponname ].addon_attachments; + } + else + { + attachments = getweaponsupportedattachments( weaponname ); + lo = 1; + } + minatt = lo; + if ( isDefined( exclude ) && exclude != "none" ) + { + minatt = lo + 1; + } + while ( attachments.size > minatt ) + { + while ( 1 ) + { + idx = randomint( attachments.size - lo ) + lo; + if ( !isDefined( exclude ) || attachments[ idx ] != exclude ) + { + return attachments[ idx ]; + } + } + } + return "none"; +} + +get_base_name( weaponname ) +{ + split = strtok( weaponname, "+" ); + if ( split.size > 1 ) + { + return split[ 0 ]; + } + return weaponname; +} + +get_attachment_name( weaponname, att_id ) +{ + split = strtok( weaponname, "+" ); + if ( isDefined( att_id ) ) + { + attachment = att_id + 1; + if ( split.size > attachment ) + { + return split[ attachment ]; + } + } + else + { + if ( split.size > 1 ) + { + att = split[ 1 ]; + idx = 2; + while ( split.size > idx ) + { + att = ( att + "+" ) + split[ idx ]; + idx++; + } + return att; + } + } + return undefined; +} + +get_attachment_index( weapon ) +{ + att = get_attachment_name( weapon ); + if ( att == "none" ) + { + return -1; + } + base = get_base_name( weapon ); + if ( att == level.zombie_weapons[ base ].default_attachment ) + { + return 0; + } + while ( isDefined( level.zombie_weapons[ base ].addon_attachments ) ) + { + i = 0; + while ( i < level.zombie_weapons[ base ].addon_attachments.size ) + { + if ( level.zombie_weapons[ base ].addon_attachments[ i ] == att ) + { + return i + 1; + } + i++; + } + } +/# + println( "ZM WEAPON ERROR: Unrecognized attachment in weapon " + weapon ); +#/ + return -1; +} + +has_attachment( weaponname, att ) +{ + split = strtok( weaponname, "+" ); + idx = 1; + while ( split.size > idx ) + { + if ( att == split[ idx ] ) + { + return 1; + } + } + return 0; +} + +get_base_weapon_name( upgradedweaponname, base_if_not_upgraded ) +{ + if ( !isDefined( upgradedweaponname ) || upgradedweaponname == "" ) + { + return undefined; + } + upgradedweaponname = tolower( upgradedweaponname ); + upgradedweaponname = get_base_name( upgradedweaponname ); + ziw_keys = getarraykeys( level.zombie_weapons ); + i = 0; + while ( i < level.zombie_weapons.size ) + { + if ( isDefined( level.zombie_weapons[ ziw_keys[ i ] ].upgrade_name ) && level.zombie_weapons[ ziw_keys[ i ] ].upgrade_name == upgradedweaponname ) + { + return ziw_keys[ i ]; + } + i++; + } + if ( isDefined( base_if_not_upgraded ) && base_if_not_upgraded ) + { + return upgradedweaponname; + } + return undefined; +} + +get_upgrade_weapon( weaponname, add_attachment ) +{ + rootweaponname = tolower( weaponname ); + rootweaponname = get_base_name( rootweaponname ); + baseweaponname = get_base_weapon_name( rootweaponname, 1 ); + newweapon = rootweaponname; + if ( !is_weapon_upgraded( rootweaponname ) ) + { + newweapon = level.zombie_weapons[ rootweaponname ].upgrade_name; + } + if ( isDefined( add_attachment ) && add_attachment && isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + { + oldatt = get_attachment_name( weaponname ); + att = random_attachment( baseweaponname, oldatt ); + newweapon = ( newweapon + "+" ) + att; + } + else + { + if ( isDefined( level.zombie_weapons[ rootweaponname ] ) && isDefined( level.zombie_weapons[ rootweaponname ].default_attachment ) ) + { + att = level.zombie_weapons[ rootweaponname ].default_attachment; + newweapon = ( newweapon + "+" ) + att; + } + } + return newweapon; +} + +can_upgrade_weapon( weaponname ) +{ + if ( isDefined( weaponname ) || weaponname == "" && weaponname == "zombie_fists_zm" ) + { + return 0; + } + weaponname = tolower( weaponname ); + weaponname = get_base_name( weaponname ); + if ( !is_weapon_upgraded( weaponname ) ) + { + return isDefined( level.zombie_weapons[ weaponname ].upgrade_name ); + } + if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch && weapon_supports_attachments( weaponname ) ) + { + return 1; + } + return 0; +} + +will_upgrade_weapon_as_attachment( weaponname ) +{ + if ( isDefined( weaponname ) || weaponname == "" && weaponname == "zombie_fists_zm" ) + { + return 0; + } + weaponname = tolower( weaponname ); + weaponname = get_base_name( weaponname ); + if ( !is_weapon_upgraded( weaponname ) ) + { + return 0; + } + if ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch && weapon_supports_attachments( weaponname ) ) + { + return 1; + } + return 0; +} + +is_weapon_upgraded( weaponname ) +{ + if ( isDefined( weaponname ) || weaponname == "" && weaponname == "zombie_fists_zm" ) + { + return 0; + } + weaponname = tolower( weaponname ); + weaponname = get_base_name( weaponname ); + ziw_keys = getarraykeys( level.zombie_weapons ); + i = 0; + while ( i < level.zombie_weapons.size ) + { + if ( isDefined( level.zombie_weapons[ ziw_keys[ i ] ].upgrade_name ) && level.zombie_weapons[ ziw_keys[ i ] ].upgrade_name == weaponname ) + { + return 1; + } + i++; + } + return 0; +} + +get_weapon_with_attachments( weaponname ) +{ + if ( self hasweapon( weaponname ) ) + { + return weaponname; + } + while ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + { + weaponname = tolower( weaponname ); + weaponname = get_base_name( weaponname ); + weapons = self getweaponslist( 1 ); + _a1818 = weapons; + _k1818 = getFirstArrayKey( _a1818 ); + while ( isDefined( _k1818 ) ) + { + weapon = _a1818[ _k1818 ]; + weapon = tolower( weapon ); + weapon_base = get_base_name( weapon ); + if ( weaponname == weapon_base ) + { + return weapon; + } + _k1818 = getNextArrayKey( _a1818, _k1818 ); + } + } + return undefined; +} + +has_weapon_or_attachments( weaponname ) +{ + if ( self hasweapon( weaponname ) ) + { + return 1; + } + while ( isDefined( level.zombiemode_reusing_pack_a_punch ) && level.zombiemode_reusing_pack_a_punch ) + { + weaponname = tolower( weaponname ); + weaponname = get_base_name( weaponname ); + weapons = self getweaponslist( 1 ); + _a1840 = weapons; + _k1840 = getFirstArrayKey( _a1840 ); + while ( isDefined( _k1840 ) ) + { + weapon = _a1840[ _k1840 ]; + weapon = tolower( weapon ); + weapon = get_base_name( weapon ); + if ( weaponname == weapon ) + { + return 1; + } + _k1840 = getNextArrayKey( _a1840, _k1840 ); + } + } + return 0; +} + +has_upgrade( weaponname ) +{ + weaponname = get_base_name( weaponname ); + has_upgrade = 0; + if ( isDefined( level.zombie_weapons[ weaponname ] ) && isDefined( level.zombie_weapons[ weaponname ].upgrade_name ) ) + { + has_upgrade = self has_weapon_or_attachments( level.zombie_weapons[ weaponname ].upgrade_name ); + } + if ( !has_upgrade && weaponname == "knife_ballistic_zm" ) + { + has_weapon = self maps/mp/zombies/_zm_melee_weapon::has_upgraded_ballistic_knife(); + } + return has_upgrade; +} + +has_weapon_or_upgrade( weaponname ) +{ + weaponname = get_base_name( weaponname ); + upgradedweaponname = weaponname; + if ( isDefined( level.zombie_weapons[ weaponname ] ) && isDefined( level.zombie_weapons[ weaponname ].upgrade_name ) ) + { + upgradedweaponname = level.zombie_weapons[ weaponname ].upgrade_name; + } + has_weapon = 0; + if ( isDefined( level.zombie_weapons[ weaponname ] ) ) + { + if ( !self has_weapon_or_attachments( weaponname ) ) + { + has_weapon = self has_upgrade( weaponname ); + } + } + if ( !has_weapon && weaponname == "knife_ballistic_zm" ) + { + has_weapon = self maps/mp/zombies/_zm_melee_weapon::has_any_ballistic_knife(); + } + if ( !has_weapon && is_equipment( weaponname ) ) + { + has_weapon = self is_equipment_active( weaponname ); + } + return has_weapon; +} + +get_player_weapon_with_same_base( weaponname ) +{ + weaponname = tolower( weaponname ); + weaponname = get_base_name( weaponname ); + retweapon = get_weapon_with_attachments( weaponname ); + while ( !isDefined( retweapon ) ) + { + if ( isDefined( level.zombie_weapons[ weaponname ] ) ) + { + retweapon = get_weapon_with_attachments( level.zombie_weapons[ weaponname ].upgrade_name ); + break; + } + else + { + ziw_keys = getarraykeys( level.zombie_weapons ); + i = 0; + while ( i < level.zombie_weapons.size ) + { + if ( isDefined( level.zombie_weapons[ ziw_keys[ i ] ].upgrade_name ) && level.zombie_weapons[ ziw_keys[ i ] ].upgrade_name == weaponname ) + { + retweapon = get_weapon_with_attachments( ziw_keys[ i ] ); + } + i++; + } + } + } + return retweapon; +} + +pay_turret_think( cost ) +{ + if ( !isDefined( self.target ) ) + { + return; + } + turret = getent( self.target, "targetname" ); + if ( !isDefined( turret ) ) + { + return; + } + turret maketurretunusable(); + zone_name = turret get_current_zone(); + if ( !isDefined( zone_name ) ) + { + zone_name = ""; + } + while ( 1 ) + { + self waittill( "trigger", player ); + while ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + } + while ( player in_revive_trigger() ) + { + wait 0,1; + } + while ( player.is_drinking > 0 ) + { + wait 0,1; + } + if ( player.score >= cost ) + { + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, cost, zone_name, self.origin, "turret" ); + turret maketurretusable(); + turret useby( player ); + self disable_trigger(); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", "mg" ); + player.curr_pay_turret = turret; + turret thread watch_for_laststand( player ); + turret thread watch_for_fake_death( player ); + if ( isDefined( level.turret_timer ) ) + { + turret thread watch_for_timeout( player, level.turret_timer ); + } + while ( isDefined( turret getturretowner() ) && turret getturretowner() == player ) + { + wait 0,05; + } + turret notify( "stop watching" ); + player.curr_pay_turret = undefined; + turret maketurretunusable(); + self enable_trigger(); + continue; + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money", undefined, 0 ); + } + } +} + +watch_for_laststand( player ) +{ + self endon( "stop watching" ); + while ( !player maps/mp/zombies/_zm_laststand::player_is_in_laststand() ) + { + if ( isDefined( level.intermission ) && level.intermission ) + { + intermission = 1; + } + wait 0,05; + } + if ( isDefined( self getturretowner() ) && self getturretowner() == player ) + { + self useby( player ); + } +} + +watch_for_fake_death( player ) +{ + self endon( "stop watching" ); + player waittill( "fake_death" ); + if ( isDefined( self getturretowner() ) && self getturretowner() == player ) + { + self useby( player ); + } +} + +watch_for_timeout( player, time ) +{ + self endon( "stop watching" ); + self thread cancel_timer_on_end( player ); + wait time; + if ( isDefined( self getturretowner() ) && self getturretowner() == player ) + { + self useby( player ); + } +} + +cancel_timer_on_end( player ) +{ + self waittill( "stop watching" ); + player notify( "stop watching" ); +} + +weapon_cabinet_door_open( left_or_right ) +{ + if ( left_or_right == "left" ) + { + self rotateyaw( 120, 0,3, 0,2, 0,1 ); + } + else + { + if ( left_or_right == "right" ) + { + self rotateyaw( -120, 0,3, 0,2, 0,1 ); + } + } +} + +weapon_set_first_time_hint( cost, ammo_cost ) +{ + if ( isDefined( level.has_pack_a_punch ) && !level.has_pack_a_punch ) + { + self sethintstring( &"ZOMBIE_WEAPONCOSTAMMO", cost, ammo_cost ); + } + else + { + self sethintstring( &"ZOMBIE_WEAPONCOSTAMMO_UPGRADE", cost, ammo_cost ); + } +} + +weapon_spawn_think() +{ + cost = get_weapon_cost( self.zombie_weapon_upgrade ); + ammo_cost = get_ammo_cost( self.zombie_weapon_upgrade ); + is_grenade = weapontype( self.zombie_weapon_upgrade ) == "grenade"; + second_endon = undefined; + if ( isDefined( self.stub ) ) + { + second_endon = "kill_trigger"; + self.first_time_triggered = self.stub.first_time_triggered; + } + self thread decide_hide_show_hint( "stop_hint_logic", second_endon ); + if ( is_grenade ) + { + self.first_time_triggered = 0; + hint = get_weapon_hint( self.zombie_weapon_upgrade ); + self sethintstring( hint, cost ); + } + else if ( !isDefined( self.first_time_triggered ) ) + { + self.first_time_triggered = 0; + if ( isDefined( self.stub ) ) + { + self.stub.first_time_triggered = 0; + } + } + else + { + if ( self.first_time_triggered ) + { + self weapon_set_first_time_hint( cost, get_ammo_cost( self.zombie_weapon_upgrade ) ); + } + } + for ( ;; ) + { + self waittill( "trigger", player ); + if ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + continue; + } + else if ( !player can_buy_weapon() ) + { + wait 0,1; + continue; + } + else if ( isDefined( self.stub ) && isDefined( self.stub.require_look_from ) && self.stub.require_look_from ) + { + toplayer = player get_eye() - self.origin; + forward = -1 * anglesToRight( self.angles ); + dot = vectordot( toplayer, forward ); + if ( dot < 0 ) + { + continue; + } + } + else if ( player has_powerup_weapon() ) + { + wait 0,1; + continue; + } + else + { + player_has_weapon = player has_weapon_or_upgrade( self.zombie_weapon_upgrade ); + if ( !player_has_weapon ) + { + if ( player.score >= cost ) + { + if ( self.first_time_triggered == 0 ) + { + self show_all_weapon_buys( player, cost, ammo_cost, is_grenade ); + } + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, cost, self.zombie_weapon_upgrade, self.origin, "weapon" ); + if ( self.zombie_weapon_upgrade == "riotshield_zm" ) + { + player maps/mp/zombies/_zm_equipment::equipment_give( "riotshield_zm" ); + if ( isDefined( player.player_shield_reset_health ) ) + { + player [[ player.player_shield_reset_health ]](); + } + } + else if ( self.zombie_weapon_upgrade == "jetgun_zm" ) + { + player maps/mp/zombies/_zm_equipment::equipment_give( "jetgun_zm" ); + } + else + { + if ( is_lethal_grenade( self.zombie_weapon_upgrade ) ) + { + player takeweapon( player get_player_lethal_grenade() ); + player set_player_lethal_grenade( self.zombie_weapon_upgrade ); + } + player weapon_give( self.zombie_weapon_upgrade ); + } + player maps/mp/zombies/_zm_stats::increment_client_stat( "wallbuy_weapons_purchased" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "wallbuy_weapons_purchased" ); + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + } + } + else if ( isDefined( self.hacked ) && self.hacked ) + { + if ( !player has_upgrade( self.zombie_weapon_upgrade ) ) + { + ammo_cost = 4500; + } + else + { + ammo_cost = get_ammo_cost( self.zombie_weapon_upgrade ); + } + } + else + { + if ( player has_upgrade( self.zombie_weapon_upgrade ) ) + { + ammo_cost = 4500; + break; + } + else + { + ammo_cost = get_ammo_cost( self.zombie_weapon_upgrade ); + } + } + if ( self.zombie_weapon_upgrade == "riotshield_zm" ) + { + play_sound_on_ent( "no_purchase" ); + } + else if ( player.score >= ammo_cost ) + { + if ( self.first_time_triggered == 0 ) + { + self show_all_weapon_buys( player, cost, ammo_cost, is_grenade ); + } + if ( player has_upgrade( self.zombie_weapon_upgrade ) ) + { + player maps/mp/zombies/_zm_stats::increment_client_stat( "upgraded_ammo_purchased" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "upgraded_ammo_purchased" ); + } + else + { + player maps/mp/zombies/_zm_stats::increment_client_stat( "ammo_purchased" ); + player maps/mp/zombies/_zm_stats::increment_player_stat( "ammo_purchased" ); + } + if ( self.zombie_weapon_upgrade == "riotshield_zm" ) + { + if ( isDefined( player.player_shield_reset_health ) ) + { + ammo_given = player [[ player.player_shield_reset_health ]](); + } + else + { + ammo_given = 0; + } + } + else if ( player has_upgrade( self.zombie_weapon_upgrade ) ) + { + ammo_given = player ammo_give( level.zombie_weapons[ self.zombie_weapon_upgrade ].upgrade_name ); + } + else + { + ammo_given = player ammo_give( self.zombie_weapon_upgrade ); + } + if ( ammo_given ) + { + player maps/mp/zombies/_zm_score::minus_to_player_score( ammo_cost ); + bbprint( "zombie_uses", "playername %s playerscore %d round %d cost %d name %s x %f y %f z %f type %s", player.name, player.score, level.round_number, ammo_cost, self.zombie_weapon_upgrade, self.origin, "ammo" ); + } + } + else play_sound_on_ent( "no_purchase" ); + if ( isDefined( level.custom_generic_deny_vo_func ) ) + { + player [[ level.custom_generic_deny_vo_func ]](); + } + else + { + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + } + if ( isDefined( self.stub ) && isDefined( self.stub.prompt_and_visibility_func ) ) + { + self [[ self.stub.prompt_and_visibility_func ]]( player ); + } + } + } +} + +show_all_weapon_buys( player, cost, ammo_cost, is_grenade ) +{ + model = getent( self.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread weapon_show( player ); + } + else + { + if ( isDefined( self.clientfieldname ) ) + { + level setclientfield( self.clientfieldname, 1 ); + } + } + self.first_time_triggered = 1; + if ( isDefined( self.stub ) ) + { + self.stub.first_time_triggered = 1; + } + if ( !is_grenade ) + { + self weapon_set_first_time_hint( cost, ammo_cost ); + } + if ( isDefined( level.dont_link_common_wallbuys ) && !level.dont_link_common_wallbuys && isDefined( level._spawned_wallbuys ) ) + { + i = 0; + while ( i < level._spawned_wallbuys.size ) + { + wallbuy = level._spawned_wallbuys[ i ]; + if ( isDefined( self.stub ) && isDefined( wallbuy.trigger_stub ) && self.stub.clientfieldname == wallbuy.trigger_stub.clientfieldname ) + { + i++; + continue; + } + else + { + if ( self.zombie_weapon_upgrade == wallbuy.zombie_weapon_upgrade ) + { + if ( isDefined( wallbuy.trigger_stub ) && isDefined( wallbuy.trigger_stub.clientfieldname ) ) + { + level setclientfield( wallbuy.trigger_stub.clientfieldname, 1 ); + } + else + { + if ( isDefined( wallbuy.target ) ) + { + model = getent( wallbuy.target, "targetname" ); + if ( isDefined( model ) ) + { + model thread weapon_show( player ); + } + } + } + if ( isDefined( wallbuy.trigger_stub ) ) + { + wallbuy.trigger_stub.first_time_triggered = 1; + if ( isDefined( wallbuy.trigger_stub.trigger ) ) + { + wallbuy.trigger_stub.trigger.first_time_triggered = 1; + if ( !is_grenade ) + { + wallbuy.trigger_stub.trigger weapon_set_first_time_hint( cost, ammo_cost ); + } + } + i++; + continue; + } + else + { + if ( !is_grenade ) + { + wallbuy weapon_set_first_time_hint( cost, ammo_cost ); + } + } + } + } + i++; + } + } +} + +weapon_show( player ) +{ + player_angles = vectorToAngle( player.origin - self.origin ); + player_yaw = player_angles[ 1 ]; + weapon_yaw = self.angles[ 1 ]; + if ( isDefined( self.script_int ) ) + { + weapon_yaw -= self.script_int; + } + yaw_diff = angleClamp180( player_yaw - weapon_yaw ); + if ( yaw_diff > 0 ) + { + yaw = weapon_yaw - 90; + } + else + { + yaw = weapon_yaw + 90; + } + self.og_origin = self.origin; + self.origin += anglesToForward( ( 0, yaw, 0 ) ) * 8; + wait 0,05; + self show(); + play_sound_at_pos( "weapon_show", self.origin, self ); + time = 1; + if ( !isDefined( self._linked_ent ) ) + { + self moveto( self.og_origin, time ); + } +} + +get_pack_a_punch_weapon_options( weapon ) +{ + if ( !isDefined( self.pack_a_punch_weapon_options ) ) + { + self.pack_a_punch_weapon_options = []; + } + if ( !is_weapon_upgraded( weapon ) ) + { + return self calcweaponoptions( 0, 0, 0, 0, 0 ); + } + if ( isDefined( self.pack_a_punch_weapon_options[ weapon ] ) ) + { + return self.pack_a_punch_weapon_options[ weapon ]; + } + smiley_face_reticle_index = 1; + base = get_base_name( weapon ); + camo_index = 39; + lens_index = randomintrange( 0, 6 ); + reticle_index = randomintrange( 0, 16 ); + reticle_color_index = randomintrange( 0, 6 ); + plain_reticle_index = 16; + r = randomint( 10 ); + use_plain = r < 3; + if ( base == "saritch_upgraded_zm" ) + { + reticle_index = smiley_face_reticle_index; + } + else + { + if ( use_plain ) + { + reticle_index = plain_reticle_index; + } + } +/# + if ( getDvarInt( #"471F9AB9" ) >= 0 ) + { + reticle_index = getDvarInt( #"471F9AB9" ); +#/ + } + scary_eyes_reticle_index = 8; + purple_reticle_color_index = 3; + if ( reticle_index == scary_eyes_reticle_index ) + { + reticle_color_index = purple_reticle_color_index; + } + letter_a_reticle_index = 2; + pink_reticle_color_index = 6; + if ( reticle_index == letter_a_reticle_index ) + { + reticle_color_index = pink_reticle_color_index; + } + letter_e_reticle_index = 7; + green_reticle_color_index = 1; + if ( reticle_index == letter_e_reticle_index ) + { + reticle_color_index = green_reticle_color_index; + } + self.pack_a_punch_weapon_options[ weapon ] = self calcweaponoptions( camo_index, lens_index, reticle_index, reticle_color_index ); + return self.pack_a_punch_weapon_options[ weapon ]; +} + +weapon_give( weapon, is_upgrade, magic_box ) +{ + primaryweapons = self getweaponslistprimaries(); + current_weapon = self getcurrentweapon(); + current_weapon = self maps/mp/zombies/_zm_weapons::switch_from_alt_weapon( current_weapon ); + weapon_limit = 2; + if ( !isDefined( is_upgrade ) ) + { + is_upgrade = 0; + } + if ( self hasperk( "specialty_additionalprimaryweapon" ) ) + { + weapon_limit = 3; + } + if ( is_equipment( weapon ) ) + { + self maps/mp/zombies/_zm_equipment::equipment_give( weapon ); + } + if ( weapon == "riotshield_zm" ) + { + if ( isDefined( self.player_shield_reset_health ) ) + { + self [[ self.player_shield_reset_health ]](); + } + } + if ( self hasweapon( weapon ) ) + { + if ( issubstr( weapon, "knife_ballistic_" ) ) + { + self notify( "zmb_lost_knife" ); + } + self givestartammo( weapon ); + if ( !is_offhand_weapon( weapon ) ) + { + self switchtoweapon( weapon ); + } + return; + } + if ( is_melee_weapon( weapon ) ) + { + current_weapon = maps/mp/zombies/_zm_melee_weapon::change_melee_weapon( weapon, current_weapon ); + } + else if ( is_lethal_grenade( weapon ) ) + { + old_lethal = self get_player_lethal_grenade(); + if ( isDefined( old_lethal ) && old_lethal != "" ) + { + self takeweapon( old_lethal ); + unacquire_weapon_toggle( old_lethal ); + } + self set_player_lethal_grenade( weapon ); + } + else if ( is_tactical_grenade( weapon ) ) + { + old_tactical = self get_player_tactical_grenade(); + if ( isDefined( old_tactical ) && old_tactical != "" ) + { + self takeweapon( old_tactical ); + unacquire_weapon_toggle( old_tactical ); + } + self set_player_tactical_grenade( weapon ); + } + else + { + if ( is_placeable_mine( weapon ) ) + { + old_mine = self get_player_placeable_mine(); + if ( isDefined( old_mine ) ) + { + self takeweapon( old_mine ); + unacquire_weapon_toggle( old_mine ); + } + self set_player_placeable_mine( weapon ); + } + } + if ( !is_offhand_weapon( weapon ) ) + { + self maps/mp/zombies/_zm_weapons::take_fallback_weapon(); + } + if ( primaryweapons.size >= weapon_limit ) + { + if ( is_placeable_mine( current_weapon ) || is_equipment( current_weapon ) ) + { + current_weapon = undefined; + } + if ( isDefined( current_weapon ) ) + { + if ( !is_offhand_weapon( weapon ) ) + { + if ( current_weapon == "tesla_gun_zm" ) + { + level.player_drops_tesla_gun = 1; + } + if ( issubstr( current_weapon, "knife_ballistic_" ) ) + { + self notify( "zmb_lost_knife" ); + } + self takeweapon( current_weapon ); + unacquire_weapon_toggle( current_weapon ); + } + } + } + if ( isDefined( level.zombiemode_offhand_weapon_give_override ) ) + { + if ( self [[ level.zombiemode_offhand_weapon_give_override ]]( weapon ) ) + { + return; + } + } + if ( weapon == "cymbal_monkey_zm" ) + { + self maps/mp/zombies/_zm_weap_cymbal_monkey::player_give_cymbal_monkey(); + self play_weapon_vo( weapon ); + return; + } + else if ( issubstr( weapon, "knife_ballistic_" ) ) + { + weapon = self maps/mp/zombies/_zm_melee_weapon::give_ballistic_knife( weapon, issubstr( weapon, "upgraded" ) ); + } + else + { + if ( weapon == "claymore_zm" ) + { + self thread maps/mp/zombies/_zm_weap_claymore::claymore_setup(); + self play_weapon_vo( weapon ); + return; + } + } + self play_sound_on_ent( "purchase" ); + if ( weapon == "ray_gun_zm" ) + { + playsoundatposition( "mus_raygun_stinger", ( 0, 0, 0 ) ); + } + if ( !is_weapon_upgraded( weapon ) ) + { + self giveweapon( weapon ); + } + else + { + self giveweapon( weapon, 0, self get_pack_a_punch_weapon_options( weapon ) ); + } + acquire_weapon_toggle( weapon, self ); + self givestartammo( weapon ); + if ( !is_offhand_weapon( weapon ) ) + { + if ( !is_melee_weapon( weapon ) ) + { + self switchtoweapon( weapon ); + } + else + { + self switchtoweapon( current_weapon ); + } + } + self play_weapon_vo( weapon ); +} + +play_weapon_vo( weapon ) +{ + if ( isDefined( level._audio_custom_weapon_check ) ) + { + type = self [[ level._audio_custom_weapon_check ]]( weapon ); + } + else + { + type = self weapon_type_check( weapon ); + } + if ( type == "crappy" ) + { + return; + } + if ( type != "favorite" && type != "upgrade" ) + { + type = weapon; + } + self maps/mp/zombies/_zm_audio::create_and_play_dialog( "weapon_pickup", type ); +} + +weapon_type_check( weapon ) +{ + if ( !isDefined( self.entity_num ) ) + { + return "crappy"; + } + weapon = get_base_name( weapon ); + if ( self is_favorite_weapon( weapon ) ) + { + return "favorite"; + } + if ( issubstr( weapon, "upgraded" ) ) + { + return "upgrade"; + } + else + { + return level.zombie_weapons[ weapon ].vox; + } +} + +get_player_index( player ) +{ +/# + assert( isplayer( player ) ); +#/ +/# + assert( isDefined( player.characterindex ) ); +#/ +/# + if ( player.entity_num == 0 && getDvar( #"2222BA21" ) != "" ) + { + new_vo_index = getDvarInt( #"2222BA21" ); + return new_vo_index; +#/ + } + return player.characterindex; +} + +ammo_give( weapon ) +{ + give_ammo = 0; + if ( !is_offhand_weapon( weapon ) ) + { + weapon = get_weapon_with_attachments( weapon ); + if ( isDefined( weapon ) ) + { + stockmax = 0; + stockmax = weaponstartammo( weapon ); + clipcount = self getweaponammoclip( weapon ); + currstock = self getammocount( weapon ); + if ( ( currstock - clipcount ) >= stockmax ) + { + give_ammo = 0; + } + else + { + give_ammo = 1; + } + } + } + else + { + if ( self has_weapon_or_upgrade( weapon ) ) + { + if ( self getammocount( weapon ) < weaponmaxammo( weapon ) ) + { + give_ammo = 1; + } + } + } + if ( give_ammo ) + { + self play_sound_on_ent( "purchase" ); + self givemaxammo( weapon ); + alt_weap = weaponaltweaponname( weapon ); + if ( alt_weap != "none" ) + { + self givemaxammo( alt_weap ); + } + return 1; + } + if ( !give_ammo ) + { + return 0; + } +} + +weapon_cabinet_think() +{ + weapons = getentarray( "cabinet_weapon", "targetname" ); + doors = getentarray( self.target, "targetname" ); + i = 0; + while ( i < doors.size ) + { + doors[ i ] notsolid(); + i++; + } + self.has_been_used_once = 0; + self thread decide_hide_show_hint(); + while ( 1 ) + { + self waittill( "trigger", player ); + while ( !player can_buy_weapon() ) + { + wait 0,1; + } + cost = 1500; + if ( self.has_been_used_once ) + { + cost = get_weapon_cost( self.zombie_weapon_upgrade ); + } + else + { + if ( isDefined( self.zombie_cost ) ) + { + cost = self.zombie_cost; + } + } + ammo_cost = get_ammo_cost( self.zombie_weapon_upgrade ); + while ( !is_player_valid( player ) ) + { + player thread ignore_triggers( 0,5 ); + } + if ( self.has_been_used_once ) + { + player_has_weapon = player has_weapon_or_upgrade( self.zombie_weapon_upgrade ); + if ( !player_has_weapon ) + { + if ( player.score >= cost ) + { + self play_sound_on_ent( "purchase" ); + player maps/mp/zombies/_zm_score::minus_to_player_score( cost ); + player weapon_give( self.zombie_weapon_upgrade ); + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + } + } + else if ( player.score >= ammo_cost ) + { + ammo_given = player ammo_give( self.zombie_weapon_upgrade ); + if ( ammo_given ) + { + self play_sound_on_ent( "purchase" ); + player maps/mp/zombies/_zm_score::minus_to_player_score( ammo_cost ); + } + } + else play_sound_on_ent( "no_purchase" ); + if ( isDefined( level.custom_generic_deny_vo_func ) ) + { + player [[ level.custom_generic_deny_vo_func ]](); + } + else + { + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + } + continue; + } + else if ( player.score >= cost ) + { + self.has_been_used_once = 1; + self play_sound_on_ent( "purchase" ); + self sethintstring( &"ZOMBIE_WEAPONCOSTAMMO", cost, ammo_cost ); + self setcursorhint( "HINT_NOICON" ); + player maps/mp/zombies/_zm_score::minus_to_player_score( self.zombie_cost ); + doors = getentarray( self.target, "targetname" ); + i = 0; + while ( i < doors.size ) + { + doors[ i ] thread weapon_cabinet_door_open( doors[ i ].script_noteworthy ); + i++; + } + player_has_weapon = player has_weapon_or_upgrade( self.zombie_weapon_upgrade ); + if ( !player_has_weapon ) + { + player weapon_give( self.zombie_weapon_upgrade ); + } + else if ( player has_upgrade( self.zombie_weapon_upgrade ) ) + { + player ammo_give( self.zombie_weapon_upgrade + "_upgraded" ); + } + else + { + player ammo_give( self.zombie_weapon_upgrade ); + } + continue; + } + else + { + play_sound_on_ent( "no_purchase" ); + player maps/mp/zombies/_zm_audio::create_and_play_dialog( "general", "no_money_weapon" ); + } + } +} + +get_player_weapondata( player, weapon ) +{ + weapondata = []; + if ( !isDefined( weapon ) ) + { + weapondata[ "name" ] = player getcurrentweapon(); + } + else + { + weapondata[ "name" ] = weapon; + } + weapondata[ "dw_name" ] = weapondualwieldweaponname( weapondata[ "name" ] ); + weapondata[ "alt_name" ] = weaponaltweaponname( weapondata[ "name" ] ); + if ( weapondata[ "name" ] != "none" ) + { + weapondata[ "clip" ] = player getweaponammoclip( weapondata[ "name" ] ); + weapondata[ "stock" ] = player getweaponammostock( weapondata[ "name" ] ); + } + else + { + weapondata[ "clip" ] = 0; + weapondata[ "stock" ] = 0; + } + if ( weapondata[ "dw_name" ] != "none" ) + { + weapondata[ "lh_clip" ] = player getweaponammoclip( weapondata[ "dw_name" ] ); + } + else + { + weapondata[ "lh_clip" ] = 0; + } + if ( weapondata[ "alt_name" ] != "none" ) + { + weapondata[ "alt_clip" ] = player getweaponammoclip( weapondata[ "alt_name" ] ); + weapondata[ "alt_stock" ] = player getweaponammostock( weapondata[ "alt_name" ] ); + } + else + { + weapondata[ "alt_clip" ] = 0; + weapondata[ "alt_stock" ] = 0; + } + return weapondata; +} + +weapon_is_better( left, right ) +{ + if ( left != right ) + { + left_upgraded = !isDefined( level.zombie_weapons[ left ] ); + right_upgraded = !isDefined( level.zombie_weapons[ right ] ); + if ( left_upgraded && right_upgraded ) + { + leftatt = get_attachment_index( left ); + rightatt = get_attachment_index( right ); + return leftatt > rightatt; + } + else + { + if ( left_upgraded ) + { + return 1; + } + } + } + return 0; +} + +merge_weapons( oldweapondata, newweapondata ) +{ + weapondata = []; + weapondata[ "name" ] = "none"; + if ( weapon_is_better( oldweapondata[ "name" ], newweapondata[ "name" ] ) ) + { + weapondata[ "name" ] = oldweapondata[ "name" ]; + } + else + { + weapondata[ "name" ] = newweapondata[ "name" ]; + } + name = weapondata[ "name" ]; + dw_name = weapondualwieldweaponname( name ); + alt_name = weaponaltweaponname( name ); + if ( name != "none" ) + { + weapondata[ "clip" ] = newweapondata[ "clip" ] + oldweapondata[ "clip" ]; + weapondata[ "clip" ] = int( min( weapondata[ "clip" ], weaponclipsize( name ) ) ); + weapondata[ "stock" ] = newweapondata[ "stock" ] + oldweapondata[ "stock" ]; + weapondata[ "stock" ] = int( min( weapondata[ "stock" ], weaponmaxammo( name ) ) ); + } + if ( dw_name != "none" ) + { + weapondata[ "lh_clip" ] = newweapondata[ "lh_clip" ] + oldweapondata[ "lh_clip" ]; + weapondata[ "lh_clip" ] = int( min( weapondata[ "lh_clip" ], weaponclipsize( dw_name ) ) ); + } + if ( alt_name != "none" ) + { + weapondata[ "alt_clip" ] = newweapondata[ "alt_clip" ] + oldweapondata[ "alt_clip" ]; + weapondata[ "alt_clip" ] = int( min( weapondata[ "alt_clip" ], weaponclipsize( alt_name ) ) ); + weapondata[ "alt_stock" ] = newweapondata[ "alt_stock" ] + oldweapondata[ "alt_stock" ]; + weapondata[ "alt_stock" ] = int( min( weapondata[ "alt_stock" ], weaponmaxammo( alt_name ) ) ); + } + return weapondata; +} + +weapondata_give( weapondata ) +{ + current = get_player_weapon_with_same_base( weapondata[ "name" ] ); + if ( isDefined( current ) ) + { + curweapondata = get_player_weapondata( self, current ); + self takeweapon( current ); + weapondata = merge_weapons( curweapondata, weapondata ); + } + name = weapondata[ "name" ]; + weapon_give( name ); + dw_name = weapondualwieldweaponname( name ); + alt_name = weaponaltweaponname( name ); + if ( name != "none" ) + { + self setweaponammoclip( name, weapondata[ "clip" ] ); + self setweaponammostock( name, weapondata[ "stock" ] ); + } + if ( dw_name != "none" ) + { + self setweaponammoclip( dw_name, weapondata[ "lh_clip" ] ); + } + if ( alt_name != "none" ) + { + self setweaponammoclip( alt_name, weapondata[ "alt_clip" ] ); + self setweaponammostock( alt_name, weapondata[ "alt_stock" ] ); + } +} diff --git a/zm_transit_dr_patch/maps/mp/zombies/_zm_zonemgr.gsc b/zm_transit_dr_patch/maps/mp/zombies/_zm_zonemgr.gsc new file mode 100644 index 0000000..c7f2e01 --- /dev/null +++ b/zm_transit_dr_patch/maps/mp/zombies/_zm_zonemgr.gsc @@ -0,0 +1,1229 @@ +#include maps/mp/zombies/_zm_zonemgr; +#include maps/mp/gametypes_zm/_zm_gametype; +#include maps/mp/zombies/_zm_utility; +#include maps/mp/_utility; +#include common_scripts/utility; + +init() +{ +/# + println( "ZM >> Zombiemode Server Scripts Init (_zm_zonemgr.gsc)" ); +#/ + flag_init( "zones_initialized" ); + level.zones = []; + level.zone_flags = []; + level.zone_scanning_active = 0; + if ( !isDefined( level.create_spawner_list_func ) ) + { + level.create_spawner_list_func = ::create_spawner_list; + } +} + +zone_is_enabled( zone_name ) +{ + if ( isDefined( level.zones ) || !isDefined( level.zones[ zone_name ] ) && !level.zones[ zone_name ].is_enabled ) + { + return 0; + } + return 1; +} + +get_player_zone() +{ + player_zone = undefined; + keys = getarraykeys( level.zones ); + i = 0; + while ( i < keys.size ) + { + if ( self entity_in_zone( keys[ i ] ) ) + { + player_zone = keys[ i ]; + break; + } + else + { + i++; + } + } + return player_zone; +} + +get_zone_from_position( v_pos ) +{ + zone = undefined; + scr_org = spawn( "script_origin", v_pos ); + keys = getarraykeys( level.zones ); + i = 0; + while ( i < keys.size ) + { + if ( scr_org entity_in_zone( keys[ i ] ) ) + { + zone = keys[ i ]; + break; + } + else + { + i++; + } + } + scr_org delete(); + return zone; +} + +get_zone_magic_boxes( zone_name ) +{ + if ( isDefined( zone_name ) && !zone_is_enabled( zone_name ) ) + { + return undefined; + } + zone = level.zones[ zone_name ]; +/# + assert( isDefined( zone_name ) ); +#/ + return zone.magic_boxes; +} + +get_zone_zbarriers( zone_name ) +{ + if ( isDefined( zone_name ) && !zone_is_enabled( zone_name ) ) + { + return undefined; + } + zone = level.zones[ zone_name ]; +/# + assert( isDefined( zone_name ) ); +#/ + return zone.zbarriers; +} + +get_players_in_zone( zone_name, return_players ) +{ + if ( !zone_is_enabled( zone_name ) ) + { + return 0; + } + zone = level.zones[ zone_name ]; + num_in_zone = 0; + players_in_zone = []; + players = get_players(); + i = 0; + while ( i < zone.volumes.size ) + { + j = 0; + while ( j < players.size ) + { + if ( players[ j ] istouching( zone.volumes[ i ] ) ) + { + num_in_zone++; + players_in_zone[ players_in_zone.size ] = players[ j ]; + } + j++; + } + i++; + } + if ( isDefined( return_players ) ) + { + return players_in_zone; + } + return num_in_zone; +} + +player_in_zone( zone_name ) +{ + if ( !zone_is_enabled( zone_name ) ) + { + return 0; + } + zone = level.zones[ zone_name ]; + i = 0; + while ( i < zone.volumes.size ) + { + players = get_players(); + j = 0; + while ( j < players.size ) + { + if ( players[ j ] istouching( zone.volumes[ i ] ) && players[ j ].sessionstate != "spectator" ) + { + return 1; + } + j++; + } + i++; + } + return 0; +} + +entity_in_zone( zone_name, ignore_enabled_check ) +{ + if ( !zone_is_enabled( zone_name ) && isDefined( ignore_enabled_check ) && !ignore_enabled_check ) + { + return 0; + } + zone = level.zones[ zone_name ]; + i = 0; + while ( i < zone.volumes.size ) + { + if ( self istouching( zone.volumes[ i ] ) ) + { + return 1; + } + i++; + } + return 0; +} + +deactivate_initial_barrier_goals() +{ + special_goals = getstructarray( "exterior_goal", "targetname" ); + i = 0; + while ( i < special_goals.size ) + { + if ( isDefined( special_goals[ i ].script_noteworthy ) ) + { + special_goals[ i ].is_active = 0; + special_goals[ i ] trigger_off(); + } + i++; + } +} + +zone_init( zone_name ) +{ + if ( isDefined( level.zones[ zone_name ] ) ) + { + return; + } +/# + println( "ZM >> zone_init (1) = " + zone_name ); +#/ + level.zones[ zone_name ] = spawnstruct(); + zone = level.zones[ zone_name ]; + zone.is_enabled = 0; + zone.is_occupied = 0; + zone.is_active = 0; + zone.adjacent_zones = []; + zone.is_spawning_allowed = 0; + zone.volumes = []; + volumes = getentarray( zone_name, "targetname" ); +/# + println( "ZM >> zone_init (2) = " + volumes.size ); +#/ + i = 0; + while ( i < volumes.size ) + { + if ( volumes[ i ].classname == "info_volume" ) + { + zone.volumes[ zone.volumes.size ] = volumes[ i ]; + } + i++; + } +/# + assert( isDefined( zone.volumes[ 0 ] ), "zone_init: No volumes found for zone: " + zone_name ); +#/ + while ( isDefined( zone.volumes[ 0 ].target ) ) + { + spots = getstructarray( zone.volumes[ 0 ].target, "targetname" ); + zone.spawn_locations = []; + zone.dog_locations = []; + zone.screecher_locations = []; + zone.avogadro_locations = []; + zone.inert_locations = []; + zone.quad_locations = []; + zone.leaper_locations = []; + zone.ghost_locations = []; + zone.brutus_locations = []; + zone.zbarriers = []; + zone.magic_boxes = []; + barricades = getstructarray( "exterior_goal", "targetname" ); + box_locs = getstructarray( "treasure_chest_use", "targetname" ); + i = 0; + while ( i < spots.size ) + { + spots[ i ].zone_name = zone_name; + if ( isDefined( spots[ i ].is_blocked ) && !spots[ i ].is_blocked ) + { + spots[ i ].is_enabled = 1; + } + else + { + spots[ i ].is_enabled = 0; + } + tokens = strtok( spots[ i ].script_noteworthy, " " ); + _a323 = tokens; + _k323 = getFirstArrayKey( _a323 ); + while ( isDefined( _k323 ) ) + { + token = _a323[ _k323 ]; + if ( token == "dog_location" ) + { + zone.dog_locations[ zone.dog_locations.size ] = spots[ i ]; + } + else if ( token == "screecher_location" ) + { + zone.screecher_locations[ zone.screecher_locations.size ] = spots[ i ]; + } + else if ( token == "avogadro_location" ) + { + zone.avogadro_locations[ zone.avogadro_locations.size ] = spots[ i ]; + } + else if ( token == "inert_location" ) + { + zone.inert_locations[ zone.inert_locations.size ] = spots[ i ]; + } + else if ( token == "quad_location" ) + { + zone.quad_locations[ zone.quad_locations.size ] = spots[ i ]; + } + else if ( token == "leaper_location" ) + { + zone.leaper_locations[ zone.leaper_locations.size ] = spots[ i ]; + } + else if ( token == "ghost_location" ) + { + zone.ghost_locations[ zone.ghost_locations.size ] = spots[ i ]; + } + else if ( token == "brutus_location" ) + { + zone.brutus_locations[ zone.brutus_locations.size ] = spots[ i ]; + } + else + { + zone.spawn_locations[ zone.spawn_locations.size ] = spots[ i ]; + } + _k323 = getNextArrayKey( _a323, _k323 ); + } + while ( isDefined( spots[ i ].script_string ) ) + { + barricade_id = spots[ i ].script_string; + k = 0; + while ( k < barricades.size ) + { + while ( isDefined( barricades[ k ].script_string ) && barricades[ k ].script_string == barricade_id ) + { + nodes = getnodearray( barricades[ k ].target, "targetname" ); + j = 0; + while ( j < nodes.size ) + { + if ( isDefined( nodes[ j ].type ) && nodes[ j ].type == "Begin" ) + { + spots[ i ].target = nodes[ j ].targetname; + } + j++; + } + } + k++; + } + } + i++; + } + i = 0; + while ( i < barricades.size ) + { + targets = getentarray( barricades[ i ].target, "targetname" ); + j = 0; + while ( j < targets.size ) + { + if ( targets[ j ] iszbarrier() && isDefined( targets[ j ].script_string ) && targets[ j ].script_string == zone_name ) + { + zone.zbarriers[ zone.zbarriers.size ] = targets[ j ]; + } + j++; + } + i++; + } + i = 0; + while ( i < box_locs.size ) + { + chest_ent = getent( box_locs[ i ].script_noteworthy + "_zbarrier", "script_noteworthy" ); + if ( chest_ent entity_in_zone( zone_name, 1 ) ) + { + zone.magic_boxes[ zone.magic_boxes.size ] = box_locs[ i ]; + } + i++; + } + } +} + +reinit_zone_spawners() +{ + zkeys = getarraykeys( level.zones ); + i = 0; + while ( i < level.zones.size ) + { + zone = level.zones[ zkeys[ i ] ]; + while ( isDefined( zone.volumes[ 0 ].target ) ) + { + spots = getstructarray( zone.volumes[ 0 ].target, "targetname" ); + zone.spawn_locations = []; + zone.dog_locations = []; + zone.screecher_locations = []; + zone.avogadro_locations = []; + zone.quad_locations = []; + zone.leaper_locations = []; + zone.ghost_locations = []; + zone.brutus_locations = []; + j = 0; + while ( j < spots.size ) + { + spots[ j ].zone_name = zkeys[ j ]; + if ( isDefined( spots[ j ].is_blocked ) && !spots[ j ].is_blocked ) + { + spots[ j ].is_enabled = 1; + } + else + { + spots[ j ].is_enabled = 0; + } + tokens = strtok( spots[ j ].script_noteworthy, " " ); + _a440 = tokens; + _k440 = getFirstArrayKey( _a440 ); + while ( isDefined( _k440 ) ) + { + token = _a440[ _k440 ]; + if ( token == "dog_location" ) + { + zone.dog_locations[ zone.dog_locations.size ] = spots[ j ]; + } + else if ( token == "screecher_location" ) + { + zone.screecher_locations[ zone.screecher_locations.size ] = spots[ j ]; + } + else if ( token == "avogadro_location" ) + { + zone.avogadro_locations[ zone.avogadro_locations.size ] = spots[ j ]; + } + else if ( token == "quad_location" ) + { + zone.quad_locations[ zone.quad_locations.size ] = spots[ j ]; + } + else if ( token == "leaper_location" ) + { + zone.leaper_locations[ zone.leaper_locations.size ] = spots[ j ]; + } + else if ( token == "ghost_location" ) + { + zone.ghost_locations[ zone.ghost_locations.size ] = spots[ j ]; + } + else if ( token == "brutus_location" ) + { + zone.brutus_locations[ zone.brutus_locations.size ] = spots[ j ]; + } + else + { + zone.spawn_locations[ zone.spawn_locations.size ] = spots[ j ]; + } + _k440 = getNextArrayKey( _a440, _k440 ); + } + j++; + } + } + i++; + } +} + +enable_zone( zone_name ) +{ +/# + if ( isDefined( level.zones ) ) + { + assert( isDefined( level.zones[ zone_name ] ), "enable_zone: zone has not been initialized" ); + } +#/ + if ( level.zones[ zone_name ].is_enabled ) + { + return; + } + level.zones[ zone_name ].is_enabled = 1; + level.zones[ zone_name ].is_spawning_allowed = 1; + level notify( zone_name ); + spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype(); + i = 0; + while ( i < spawn_points.size ) + { + if ( spawn_points[ i ].script_noteworthy == zone_name ) + { + spawn_points[ i ].locked = 0; + } + i++; + } + entry_points = getstructarray( zone_name + "_barriers", "script_noteworthy" ); + i = 0; + while ( i < entry_points.size ) + { + entry_points[ i ].is_active = 1; + entry_points[ i ] trigger_on(); + i++; + } +} + +make_zone_adjacent( main_zone_name, adj_zone_name, flag_name ) +{ + main_zone = level.zones[ main_zone_name ]; + if ( !isDefined( main_zone.adjacent_zones[ adj_zone_name ] ) ) + { + main_zone.adjacent_zones[ adj_zone_name ] = spawnstruct(); + adj_zone = main_zone.adjacent_zones[ adj_zone_name ]; + adj_zone.is_connected = 0; + adj_zone.flags_do_or_check = 0; + if ( isarray( flag_name ) ) + { + adj_zone.flags = flag_name; + } + else + { + adj_zone.flags[ 0 ] = flag_name; + } + } + else + { +/# + assert( !isarray( flag_name ), "make_zone_adjacent: can't mix single and arrays of flags" ); +#/ + adj_zone = main_zone.adjacent_zones[ adj_zone_name ]; + size = adj_zone.flags.size; + adj_zone.flags_do_or_check = 1; + adj_zone.flags[ size ] = flag_name; + } +} + +add_zone_flags( wait_flag, add_flags ) +{ + if ( !isarray( add_flags ) ) + { + temp = add_flags; + add_flags = []; + add_flags[ 0 ] = temp; + } + keys = getarraykeys( level.zone_flags ); + i = 0; + while ( i < keys.size ) + { + if ( keys[ i ] == wait_flag ) + { + level.zone_flags[ keys[ i ] ] = arraycombine( level.zone_flags[ keys[ i ] ], add_flags, 1, 0 ); + return; + } + i++; + } + level.zone_flags[ wait_flag ] = add_flags; +} + +add_adjacent_zone( zone_name_a, zone_name_b, flag_name, one_way ) +{ + if ( !isDefined( one_way ) ) + { + one_way = 0; + } + if ( !isDefined( level.flag[ flag_name ] ) ) + { + flag_init( flag_name ); + } + zone_init( zone_name_a ); + zone_init( zone_name_b ); + make_zone_adjacent( zone_name_a, zone_name_b, flag_name ); + if ( !one_way ) + { + make_zone_adjacent( zone_name_b, zone_name_a, flag_name ); + } +} + +setup_zone_flag_waits() +{ + flags = []; + zkeys = getarraykeys( level.zones ); + z = 0; + while ( z < level.zones.size ) + { + zone = level.zones[ zkeys[ z ] ]; + azkeys = getarraykeys( zone.adjacent_zones ); + az = 0; + while ( az < zone.adjacent_zones.size ) + { + azone = zone.adjacent_zones[ azkeys[ az ] ]; + f = 0; + while ( f < azone.flags.size ) + { + flags = add_to_array( flags, azone.flags[ f ], 0 ); + f++; + } + az++; + } + z++; + } + i = 0; + while ( i < flags.size ) + { + level thread zone_flag_wait( flags[ i ] ); + i++; + } +} + +zone_flag_wait( flag_name ) +{ + if ( !isDefined( level.flag[ flag_name ] ) ) + { + flag_init( flag_name ); + } + flag_wait( flag_name ); + flags_set = 0; + z = 0; + while ( z < level.zones.size ) + { + zkeys = getarraykeys( level.zones ); + zone = level.zones[ zkeys[ z ] ]; + az = 0; + while ( az < zone.adjacent_zones.size ) + { + azkeys = getarraykeys( zone.adjacent_zones ); + azone = zone.adjacent_zones[ azkeys[ az ] ]; + if ( !azone.is_connected ) + { + if ( azone.flags_do_or_check ) + { + flags_set = 0; + f = 0; + while ( f < azone.flags.size ) + { + if ( flag( azone.flags[ f ] ) ) + { + flags_set = 1; + break; + } + else + { + f++; + } + } + } + else flags_set = 1; + f = 0; + while ( f < azone.flags.size ) + { + if ( !flag( azone.flags[ f ] ) ) + { + flags_set = 0; + } + f++; + } + if ( flags_set ) + { + enable_zone( zkeys[ z ] ); + azone.is_connected = 1; + if ( !level.zones[ azkeys[ az ] ].is_enabled ) + { + enable_zone( azkeys[ az ] ); + } + if ( flag( "door_can_close" ) ) + { + azone thread door_close_disconnect( flag_name ); + } + } + } + az++; + } + z++; + } + keys = getarraykeys( level.zone_flags ); + i = 0; + while ( i < keys.size ) + { + if ( keys[ i ] == flag_name ) + { + check_flag = level.zone_flags[ keys[ i ] ]; + k = 0; + while ( k < check_flag.size ) + { + flag_set( check_flag[ k ] ); + k++; + } + } + else i++; + } +} + +door_close_disconnect( flag_name ) +{ + while ( flag( flag_name ) ) + { + wait 1; + } + self.is_connected = 0; + level thread zone_flag_wait( flag_name ); +} + +connect_zones( zone_name_a, zone_name_b, one_way ) +{ + if ( !isDefined( one_way ) ) + { + one_way = 0; + } + zone_init( zone_name_a ); + zone_init( zone_name_b ); + enable_zone( zone_name_a ); + enable_zone( zone_name_b ); + if ( !isDefined( level.zones[ zone_name_a ].adjacent_zones[ zone_name_b ] ) ) + { + level.zones[ zone_name_a ].adjacent_zones[ zone_name_b ] = spawnstruct(); + level.zones[ zone_name_a ].adjacent_zones[ zone_name_b ].is_connected = 1; + } + if ( !one_way ) + { + if ( !isDefined( level.zones[ zone_name_b ].adjacent_zones[ zone_name_a ] ) ) + { + level.zones[ zone_name_b ].adjacent_zones[ zone_name_a ] = spawnstruct(); + level.zones[ zone_name_b ].adjacent_zones[ zone_name_a ].is_connected = 1; + } + } +} + +manage_zones( initial_zone ) +{ +/# + assert( isDefined( initial_zone ), "You must specify an initial zone to manage" ); +#/ + deactivate_initial_barrier_goals(); + zone_choke = 0; + spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype(); + i = 0; + while ( i < spawn_points.size ) + { +/# + assert( isDefined( spawn_points[ i ].script_noteworthy ), "player_respawn_point: You must specify a script noteworthy with the zone name" ); +#/ + spawn_points[ i ].locked = 1; + i++; + } + if ( isDefined( level.zone_manager_init_func ) ) + { + [[ level.zone_manager_init_func ]](); + } +/# + println( "ZM >> zone_init bbbb (_zm_zonemgr.gsc) = " + initial_zone.size ); +#/ + if ( isarray( initial_zone ) ) + { +/# + println( "ZM >> zone_init aaaa (_zm_zonemgr.gsc) = " + initial_zone[ 0 ] ); +#/ + i = 0; + while ( i < initial_zone.size ) + { + zone_init( initial_zone[ i ] ); + enable_zone( initial_zone[ i ] ); + i++; + } + } + else /# + println( "ZM >> zone_init (_zm_zonemgr.gsc) = " + initial_zone ); +#/ + zone_init( initial_zone ); + enable_zone( initial_zone ); + setup_zone_flag_waits(); + zkeys = getarraykeys( level.zones ); + level.zone_keys = zkeys; + level.newzones = []; + z = 0; + while ( z < zkeys.size ) + { + level.newzones[ zkeys[ z ] ] = spawnstruct(); + z++; + } + flag_set( "zones_initialized" ); + flag_wait( "begin_spawning" ); +/# + level thread _debug_zones(); +#/ + while ( getDvarInt( #"10873CCA" ) == 0 || getDvarInt( #"762F1309" ) != 0 ) + { + z = 0; + while ( z < zkeys.size ) + { + level.newzones[ zkeys[ z ] ].is_active = 0; + level.newzones[ zkeys[ z ] ].is_occupied = 0; + z++; + } + a_zone_is_active = 0; + a_zone_is_spawning_allowed = 0; + level.zone_scanning_active = 1; + z = 0; + while ( z < zkeys.size ) + { + zone = level.zones[ zkeys[ z ] ]; + newzone = level.newzones[ zkeys[ z ] ]; + if ( !zone.is_enabled ) + { + z++; + continue; + } + else + { + if ( isDefined( level.zone_occupied_func ) ) + { + newzone.is_occupied = [[ level.zone_occupied_func ]]( zkeys[ z ] ); + } + else + { + newzone.is_occupied = player_in_zone( zkeys[ z ] ); + } + while ( newzone.is_occupied ) + { + newzone.is_active = 1; + a_zone_is_active = 1; + if ( zone.is_spawning_allowed ) + { + a_zone_is_spawning_allowed = 1; + } + azkeys = getarraykeys( zone.adjacent_zones ); + az = 0; + while ( az < zone.adjacent_zones.size ) + { + if ( zone.adjacent_zones[ azkeys[ az ] ].is_connected && level.zones[ azkeys[ az ] ].is_enabled ) + { + level.newzones[ azkeys[ az ] ].is_active = 1; + if ( level.zones[ azkeys[ az ] ].is_spawning_allowed ) + { + a_zone_is_spawning_allowed = 1; + } + } + az++; + } + } + zone_choke++; + if ( zone_choke >= 3 ) + { + zone_choke = 0; + wait 0,05; + } + } + z++; + } + level.zone_scanning_active = 0; + z = 0; + while ( z < zkeys.size ) + { + level.zones[ zkeys[ z ] ].is_active = level.newzones[ zkeys[ z ] ].is_active; + level.zones[ zkeys[ z ] ].is_occupied = level.newzones[ zkeys[ z ] ].is_occupied; + z++; + } + if ( !a_zone_is_active || !a_zone_is_spawning_allowed ) + { + if ( isarray( initial_zone ) ) + { + level.zones[ initial_zone[ 0 ] ].is_active = 1; + level.zones[ initial_zone[ 0 ] ].is_occupied = 1; + level.zones[ initial_zone[ 0 ] ].is_spawning_allowed = 1; + } + else + { + level.zones[ initial_zone ].is_active = 1; + level.zones[ initial_zone ].is_occupied = 1; + level.zones[ initial_zone ].is_spawning_allowed = 1; + } + } + [[ level.create_spawner_list_func ]]( zkeys ); + level.active_zone_names = maps/mp/zombies/_zm_zonemgr::get_active_zone_names(); + wait 1; + } +} + +old_manage_zones( initial_zone ) +{ +/# + assert( isDefined( initial_zone ), "You must specify an initial zone to manage" ); +#/ + deactivate_initial_barrier_goals(); + spawn_points = maps/mp/gametypes_zm/_zm_gametype::get_player_spawns_for_gametype(); + i = 0; + while ( i < spawn_points.size ) + { +/# + assert( isDefined( spawn_points[ i ].script_noteworthy ), "player_respawn_point: You must specify a script noteworthy with the zone name" ); +#/ + spawn_points[ i ].locked = 1; + i++; + } + if ( isDefined( level.zone_manager_init_func ) ) + { + [[ level.zone_manager_init_func ]](); + } +/# + println( "ZM >> zone_init bbbb (_zm_zonemgr.gsc) = " + initial_zone.size ); +#/ + if ( isarray( initial_zone ) ) + { +/# + println( "ZM >> zone_init aaaa (_zm_zonemgr.gsc) = " + initial_zone[ 0 ] ); +#/ + i = 0; + while ( i < initial_zone.size ) + { + zone_init( initial_zone[ i ] ); + enable_zone( initial_zone[ i ] ); + i++; + } + } + else /# + println( "ZM >> zone_init (_zm_zonemgr.gsc) = " + initial_zone ); +#/ + zone_init( initial_zone ); + enable_zone( initial_zone ); + setup_zone_flag_waits(); + zkeys = getarraykeys( level.zones ); + level.zone_keys = zkeys; + flag_set( "zones_initialized" ); + flag_wait( "begin_spawning" ); +/# + level thread _debug_zones(); +#/ + while ( getDvarInt( #"10873CCA" ) == 0 || getDvarInt( #"762F1309" ) != 0 ) + { + z = 0; + while ( z < zkeys.size ) + { + level.zones[ zkeys[ z ] ].is_active = 0; + level.zones[ zkeys[ z ] ].is_occupied = 0; + z++; + } + a_zone_is_active = 0; + a_zone_is_spawning_allowed = 0; + z = 0; + while ( z < zkeys.size ) + { + zone = level.zones[ zkeys[ z ] ]; + if ( !zone.is_enabled ) + { + z++; + continue; + } + else + { + if ( isDefined( level.zone_occupied_func ) ) + { + zone.is_occupied = [[ level.zone_occupied_func ]]( zkeys[ z ] ); + } + else + { + zone.is_occupied = player_in_zone( zkeys[ z ] ); + } + while ( zone.is_occupied ) + { + zone.is_active = 1; + a_zone_is_active = 1; + if ( zone.is_spawning_allowed ) + { + a_zone_is_spawning_allowed = 1; + } + azkeys = getarraykeys( zone.adjacent_zones ); + az = 0; + while ( az < zone.adjacent_zones.size ) + { + if ( zone.adjacent_zones[ azkeys[ az ] ].is_connected && level.zones[ azkeys[ az ] ].is_enabled ) + { + level.zones[ azkeys[ az ] ].is_active = 1; + if ( level.zones[ azkeys[ az ] ].is_spawning_allowed ) + { + a_zone_is_spawning_allowed = 1; + } + } + az++; + } + } + } + z++; + } + if ( !a_zone_is_active || !a_zone_is_spawning_allowed ) + { + if ( isarray( initial_zone ) ) + { + level.zones[ initial_zone[ 0 ] ].is_active = 1; + level.zones[ initial_zone[ 0 ] ].is_occupied = 1; + level.zones[ initial_zone[ 0 ] ].is_spawning_allowed = 1; + } + else + { + level.zones[ initial_zone ].is_active = 1; + level.zones[ initial_zone ].is_occupied = 1; + level.zones[ initial_zone ].is_spawning_allowed = 1; + } + } + [[ level.create_spawner_list_func ]]( zkeys ); + level.active_zone_names = maps/mp/zombies/_zm_zonemgr::get_active_zone_names(); + wait 1; + } +} + +create_spawner_list( zkeys ) +{ + level.zombie_spawn_locations = []; + level.inert_locations = []; + level.enemy_dog_locations = []; + level.zombie_screecher_locations = []; + level.zombie_avogadro_locations = []; + level.quad_locations = []; + level.zombie_leaper_locations = []; + level.zombie_ghost_locations = []; + level.zombie_brutus_locations = []; + z = 0; + while ( z < zkeys.size ) + { + zone = level.zones[ zkeys[ z ] ]; + while ( zone.is_enabled && zone.is_active && zone.is_spawning_allowed ) + { + i = 0; + while ( i < zone.spawn_locations.size ) + { + if ( zone.spawn_locations[ i ].is_enabled ) + { + level.zombie_spawn_locations[ level.zombie_spawn_locations.size ] = zone.spawn_locations[ i ]; + } + i++; + } + x = 0; + while ( x < zone.inert_locations.size ) + { + if ( zone.inert_locations[ x ].is_enabled ) + { + level.inert_locations[ level.inert_locations.size ] = zone.inert_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.dog_locations.size ) + { + if ( zone.dog_locations[ x ].is_enabled ) + { + level.enemy_dog_locations[ level.enemy_dog_locations.size ] = zone.dog_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.screecher_locations.size ) + { + if ( zone.screecher_locations[ x ].is_enabled ) + { + level.zombie_screecher_locations[ level.zombie_screecher_locations.size ] = zone.screecher_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.avogadro_locations.size ) + { + if ( zone.avogadro_locations[ x ].is_enabled ) + { + level.zombie_avogadro_locations[ level.zombie_avogadro_locations.size ] = zone.avogadro_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.quad_locations.size ) + { + if ( zone.quad_locations[ x ].is_enabled ) + { + level.quad_locations[ level.quad_locations.size ] = zone.quad_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.leaper_locations.size ) + { + if ( zone.leaper_locations[ x ].is_enabled ) + { + level.zombie_leaper_locations[ level.zombie_leaper_locations.size ] = zone.leaper_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.ghost_locations.size ) + { + if ( zone.ghost_locations[ x ].is_enabled ) + { + level.zombie_ghost_locations[ level.zombie_ghost_locations.size ] = zone.ghost_locations[ x ]; + } + x++; + } + x = 0; + while ( x < zone.brutus_locations.size ) + { + if ( zone.brutus_locations[ x ].is_enabled ) + { + level.zombie_brutus_locations[ level.zombie_brutus_locations.size ] = zone.brutus_locations[ x ]; + } + x++; + } + } + z++; + } +} + +get_active_zone_names() +{ + ret_list = []; + if ( !isDefined( level.zone_keys ) ) + { + return ret_list; + } + while ( level.zone_scanning_active ) + { + wait 0,05; + } + i = 0; + while ( i < level.zone_keys.size ) + { + if ( level.zones[ level.zone_keys[ i ] ].is_active ) + { + ret_list[ ret_list.size ] = level.zone_keys[ i ]; + } + i++; + } + return ret_list; +} + +_init_debug_zones() +{ + current_y = 30; + current_x = 20; + xloc = []; + xloc[ 0 ] = 50; + xloc[ 1 ] = 60; + xloc[ 2 ] = 100; + xloc[ 3 ] = 130; + xloc[ 4 ] = 170; + zkeys = getarraykeys( level.zones ); + i = 0; + while ( i < zkeys.size ) + { + zonename = zkeys[ i ]; + zone = level.zones[ zonename ]; + zone.debug_hud = []; + j = 0; + while ( j < 5 ) + { + zone.debug_hud[ j ] = newdebughudelem(); + if ( !j ) + { + zone.debug_hud[ j ].alignx = "right"; + } + else + { + zone.debug_hud[ j ].alignx = "left"; + } + zone.debug_hud[ j ].x = xloc[ j ]; + zone.debug_hud[ j ].y = current_y; + j++; + } + current_y += 10; + zone.debug_hud[ 0 ] settext( zonename ); + i++; + } +} + +_destroy_debug_zones() +{ + zkeys = getarraykeys( level.zones ); + i = 0; + while ( i < zkeys.size ) + { + zonename = zkeys[ i ]; + zone = level.zones[ zonename ]; + j = 0; + while ( j < 5 ) + { + zone.debug_hud[ j ] destroy(); + j++; + } + i++; + } +} + +_debug_zones() +{ + enabled = 0; + if ( getDvar( "zombiemode_debug_zones" ) == "" ) + { + setdvar( "zombiemode_debug_zones", "0" ); + } + while ( 1 ) + { + wasenabled = enabled; + enabled = getDvarInt( "zombiemode_debug_zones" ); + if ( enabled && !wasenabled ) + { + _init_debug_zones(); + } + else + { + if ( !enabled && wasenabled ) + { + _destroy_debug_zones(); + } + } + while ( enabled ) + { + zkeys = getarraykeys( level.zones ); + i = 0; + while ( i < zkeys.size ) + { + zonename = zkeys[ i ]; + zone = level.zones[ zonename ]; + text = zonename; + zone.debug_hud[ 0 ] settext( text ); + if ( zone.is_enabled ) + { + text += " Enabled"; + zone.debug_hud[ 1 ] settext( "Enabled" ); + } + else + { + zone.debug_hud[ 1 ] settext( "" ); + } + if ( zone.is_active ) + { + text += " Active"; + zone.debug_hud[ 2 ] settext( "Active" ); + } + else + { + zone.debug_hud[ 2 ] settext( "" ); + } + if ( zone.is_occupied ) + { + text += " Occupied"; + zone.debug_hud[ 3 ] settext( "Occupied" ); + } + else + { + zone.debug_hud[ 3 ] settext( "" ); + } + if ( zone.is_spawning_allowed ) + { + text += " SpawningAllowed"; + zone.debug_hud[ 4 ] settext( "SpawningAllowed" ); + } + else + { + zone.debug_hud[ 4 ] settext( "" ); + } +/# + println( "ZM >> DEBUG=" + text ); +#/ + i++; + } + } + wait 0,1; + } +} + +is_player_in_zone( zone_name ) +{ + zone = level.zones[ zone_name ]; + i = 0; + while ( i < zone.volumes.size ) + { + if ( self istouching( level.zones[ zone_name ].volumes[ i ] ) && self.sessionstate != "spectator" ) + { + return 1; + } + i++; + } + return 0; +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_climb_down_pothole.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_climb_down_pothole.gsc new file mode 100644 index 0000000..040e341 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_climb_down_pothole.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "climb_down_pothole" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_climb_up_pothole.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_climb_up_pothole.gsc new file mode 100644 index 0000000..ac83e22 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_climb_up_pothole.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "climb_up_pothole" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc new file mode 100644 index 0000000..0e8b6df --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_across_120.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_across_120" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc new file mode 100644 index 0000000..8bd9a0e --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_127" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc new file mode 100644 index 0000000..203cc96 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_190.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_190" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc new file mode 100644 index 0000000..ff54012 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_222" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc new file mode 100644 index 0000000..8269b0e --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_48.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_down_48" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc new file mode 100644 index 0000000..e32a251 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_down_96.gsc @@ -0,0 +1,14 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + if ( isDefined( self.isdog ) && self.isdog ) + { + dog_jump_down( 96, 7 ); + } + else + { + dosimpletraverse( "jump_down_96" ); + } +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc new file mode 100644 index 0000000..06cec96 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_up_127.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_127" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc new file mode 100644 index 0000000..793683d --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_jump_up_222.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "jump_up_222" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc new file mode 100644 index 0000000..e97cc4a --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_mantle_over_40_hurdle.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + self dosimpletraverse( "mantle_over_40_hurdle" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_car.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_car.gsc new file mode 100644 index 0000000..218c2f0 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_car.gsc @@ -0,0 +1,29 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + speed = ""; + if ( !isDefined( self.isdog ) || !self.isdog ) + { + switch( self.zombie_move_speed ) + { + case "walk": + case "walk_slide": + speed = ""; + break; + case "run": + case "run_slide": + speed = "_run"; + break; + case "sprint": + case "sprint_slide": + case "super_sprint": + speed = "_sprint"; + break; + default: + } + } + dosimpletraverse( "traverse_car" + speed, 1 ); + } +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_car_reverse.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_car_reverse.gsc new file mode 100644 index 0000000..9a6ea5d --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_car_reverse.gsc @@ -0,0 +1,21 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + speed = ""; + if ( !self.has_legs ) + { + switch( self.zombie_move_speed ) + { + case "sprint": + case "sprint_slide": + case "super_sprint": + speed = "_sprint"; + break; + default: + } + } + dosimpletraverse( "traverse_car_reverse" + speed, 1 ); + } +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter.gsc new file mode 100644 index 0000000..ea9b6f4 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_counter", 1 ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter_reverse.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter_reverse.gsc new file mode 100644 index 0000000..4f62d03 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_counter_reverse.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_counter_reverse", 1 ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof.gsc new file mode 100644 index 0000000..641946a --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_roof" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_hatch_up.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_hatch_up.gsc new file mode 100644 index 0000000..0e256e6 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_hatch_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_roof_hatch_up" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_up.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_up.gsc new file mode 100644 index 0000000..0fb5a5a --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_diner_roof_up.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_diner_roof_up" ); +} diff --git a/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc new file mode 100644 index 0000000..ace7bd7 --- /dev/null +++ b/zm_transit_patch/maps/mp/animscripts/traverse/zm_traverse_garage_door.gsc @@ -0,0 +1,7 @@ +#include maps/mp/animscripts/traverse/zm_shared; +#include maps/mp/animscripts/traverse/shared; + +main() +{ + dosimpletraverse( "traverse_garage_door", 1 ); +} diff --git a/zm_transit_patch/maps/mp/createart/zm_transit_art.gsc b/zm_transit_patch/maps/mp/createart/zm_transit_art.gsc new file mode 100644 index 0000000..424f365 --- /dev/null +++ b/zm_transit_patch/maps/mp/createart/zm_transit_art.gsc @@ -0,0 +1,44 @@ + +main() +{ + level.tweakfile = 1; + setdvar( "scr_fog_exp_halfplane", "639.219" ); + setdvar( "scr_fog_exp_halfheight", "18691.3" ); + setdvar( "scr_fog_nearplane", "138.679" ); + setdvar( "scr_fog_red", "0.806694" ); + setdvar( "scr_fog_green", "0.962521" ); + setdvar( "scr_fog_blue", "0.9624" ); + setdvar( "scr_fog_baseheight", "1145.21" ); + setdvar( "visionstore_glowTweakEnable", "0" ); + setdvar( "visionstore_glowTweakRadius0", "5" ); + setdvar( "visionstore_glowTweakRadius1", "" ); + setdvar( "visionstore_glowTweakBloomCutoff", "0.5" ); + setdvar( "visionstore_glowTweakBloomDesaturation", "0" ); + setdvar( "visionstore_glowTweakBloomIntensity0", "1" ); + setdvar( "visionstore_glowTweakBloomIntensity1", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity0", "" ); + setdvar( "visionstore_glowTweakSkyBleedIntensity1", "" ); + start_dist = 138,679; + half_dist = 1011,624; + half_height = 10834,5; + base_height = 1145,21; + fog_r = 0,501961; + fog_g = 0,501961; + fog_b = 0,501961; + fog_scale = 7,5834; + sun_col_r = 0,501961; + sun_col_g = 0,501961; + sun_col_b = 0,501961; + sun_dir_x = -0,99; + sun_dir_y = 0,06; + sun_dir_z = -0,11; + sun_start_ang = 0; + sun_stop_ang = 0; + time = 0; + max_fog_opacity = 0,8546; + setvolfog( start_dist, half_dist, half_height, base_height, fog_r, fog_g, fog_b, fog_scale, sun_col_r, sun_col_g, sun_col_b, sun_dir_x, sun_dir_y, sun_dir_z, sun_start_ang, sun_stop_ang, time, max_fog_opacity ); + visionsetnaked( "zm_transit", 0 ); + setdvar( "r_lightGridEnableTweaks", 1 ); + setdvar( "r_lightGridIntensity", 1,4 ); + setdvar( "r_lightGridContrast", 0,2 ); +} diff --git a/zm_transit_patch/maps/mp/createfx/zm_transit_fx.gsc b/zm_transit_patch/maps/mp/createfx/zm_transit_fx.gsc new file mode 100644 index 0000000..898866f --- /dev/null +++ b/zm_transit_patch/maps/mp/createfx/zm_transit_fx.gsc @@ -0,0 +1,3930 @@ +#include maps/mp/_utility; + +main() +{ + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -5964,8, 5958,68, -56,5457 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 278 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -7115,4, 6131,36, -52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -8140,71, 6172, -40,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -5614,79, -6468,82, -39,2142 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 264 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -4165,66, -6434,5, -21,0351 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -6463,47, 4442,16, -54,2825 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -8085,35, 5126,36, -55,5562 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5441,89, 2910,1, 86,6898 ); + ent.v[ "angles" ] = ( 0, 181, 4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5012,74, 4,19914, 92,9997 ); + ent.v[ "angles" ] = ( 360, 237, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( -5294,92, 1435,37, 193 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -8375,91, -6880,29, 169,426 ); + ent.v[ "angles" ] = ( 0, 62, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -693,86, -434,302, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1307,61, -433,515, -61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 3301,23, -433,48, -61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1443,74, -1912,92, -49,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1496,75, 951,473, -61,75 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 2317,07, 2920,76, -61,1957 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 326 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 4034,7, 4213,02, -121,687 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 291 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 5863,49, 4856,8, -90,6416 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 165 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 6425,89, 6793,82, -244,747 ); + ent.v[ "angles" ] = ( 0, 165, 6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7658,88, 8594,01, -462,611 ); + ent.v[ "angles" ] = ( 0,7299, 115,044, 6,96203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9492,26, 8859,12, -575,761 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 10248, 7411,77, -572,63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9370,34, 6265,97, -566,254 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9363,72, 5259,97, -561,195 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8247,62, 3780,29, -204,463 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 9 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8454,29, 1816,51, -91,9754 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( -9435,63, 3725,57, 129,632 ); + ent.v[ "angles" ] = ( 0, 328, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -6295,03, -6855,52, -43,3133 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5503,32, -5950,27, -33,7949 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -4278,1, -6853,2, -47,9013 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -2226,38, -6476,4, -111,832 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -430,571, -4777,94, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 1354,92, -4343,55, 8,28402 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 154 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 2374,83, -5587,02, 2,17561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 6376,43, -6175,54, -33,8548 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8345,75, -6327,09, 106,432 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 226 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 10086,9, -6470,41, 118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 354 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7864,23, -7747,09, -22,7953 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 236 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7372,48, -4745,95, -16,153 ); + ent.v[ "angles" ] = ( 5, 177, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 6344,74, -4691,46, -51,8628 ); + ent.v[ "angles" ] = ( 360, 177, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7338,11, -2595,86, -111,322 ); + ent.v[ "angles" ] = ( 359,907, 136,037, 4,87958 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8825, -1201,03, -194,996 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 9725,72, -1742,09, -32,561 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 131 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 8174,97, -105,473, -61,5243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 297 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 7784,83, 6029,76, -345,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( 4116,25, 5645,36, -1 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 98 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_1000x1000" ); + ent.v[ "origin" ] = ( -5802,88, 5634,9, 84,3632 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 360 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_1200x600" ); + ent.v[ "origin" ] = ( -5148,4, 4832,7, 0,312576 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -5934,56, 4918,4, -62,8867 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -6027,78, 5040,17, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 242 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -6079,08, 5289,99, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -7600,2, 4227,16, -56,4433 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 46 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -8537,89, 4162,49, -12,8317 ); + ent.v[ "angles" ] = ( 360, 140, 10 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -8467,74, 4197,83, -25,7767 ); + ent.v[ "angles" ] = ( 0, 88, 5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -8667,97, 4150,55, 4,24724 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 63 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5642,84, 5224,15, -46,4991 ); + ent.v[ "angles" ] = ( 4, 190, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5655,12, 5116,59, -45,489 ); + ent.v[ "angles" ] = ( 3,28795, 202,949, 2,74547 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -8029,04, 3834,02, -0,54985 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -7892,28, 3799,24, -3,22023 ); + ent.v[ "angles" ] = ( 0, 353, -6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 10156,4, 7081,81, -569,368 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 94 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -7670,71, 4400,04, -52,4712 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 25 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -7632,2, 4335,27, -53,4487 ); + ent.v[ "angles" ] = ( 8,99508, 3,31666, 2,0246 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6662,13, 4291,07, -64 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6154,93, 4677,49, -57,6558 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 332 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -7509,32, 4764,04, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6443,25, 5252,53, -46,875 ); + ent.v[ "angles" ] = ( 4,46701, 145,564, -11,1489 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -7010,67, 5058,05, -46,875 ); + ent.v[ "angles" ] = ( 0, 30, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6236,39, 5096,6, -64,875 ); + ent.v[ "angles" ] = ( 337, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6263,69, 5186,76, -110,875 ); + ent.v[ "angles" ] = ( 337, 270, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6935,05, 3992,15, -44,575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6387,72, 5200,47, -45,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 111 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6228,73, 5271,98, -138,875 ); + ent.v[ "angles" ] = ( 0, 320, 26 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -7025,25, 5020,08, -47,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 12 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( -6990,59, 3917,48, -35,575 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 28 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -6482,02, -6922,66, -20,2632 ); + ent.v[ "angles" ] = ( 5,58951, 0,151229, -1,77637 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_right_border" ); + ent.v[ "origin" ] = ( -3783,49, -6804,15, -57,0054 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( -5772,58, 4495,25, -45,7761 ); + ent.v[ "angles" ] = ( 4,55882, 136,126, 0,230205 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -6664,46, 4282,63, -63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -6419,69, 5968, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 182 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -6794,75, 5895,12, -63 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -7130,02, 5875,24, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -7035,44, 6092,55, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = 30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -7019,59, 4360,48, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -7984,94, 4200,7, -40,8316 ); + ent.v[ "angles" ] = ( 359,649, 23,5878, -7,38978 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6164,4, 6207,33, -62 ); + ent.v[ "angles" ] = ( 0, 265, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6611,77, 6255,7, -64,056 ); + ent.v[ "angles" ] = ( 355,996, 257,157, 2,98491 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5905,66, 6053,11, -62,1083 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 243 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -7777,88, 5432,39, -67,6399 ); + ent.v[ "angles" ] = ( 20,9872, 250,768, 2,14186 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -8977,1, 4620,45, -7,94255 ); + ent.v[ "angles" ] = ( 0, 328, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -9194,46, 4472,11, 27,7692 ); + ent.v[ "angles" ] = ( 358,071, 314,131, -11,7653 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -9968,48, 3966,82, 141,149 ); + ent.v[ "angles" ] = ( 360, 320, -2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -9330,22, 3636,74, 143,33 ); + ent.v[ "angles" ] = ( 1,2114, 128,06, 6,8825 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( -7058,84, 5241,95, 114,025 ); + ent.v[ "angles" ] = ( 304, 90, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -6702,67, 4030,74, -21,2888 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -7174,47, 4179,63, 52 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 1543,09, 1046,91, -49 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 262 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( -7823,94, 4726,57, -55,4636 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 349 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6255,49, 5934,51, -55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -7111,76, 5851,47, -42 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( -6651,29, 3918,42, -41 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -6584,17, 3681,87, -4,99999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -7886,28, 3889,4, 82,5849 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_depot_map_flicker" ); + ent.v[ "origin" ] = ( -6713,64, 5321,71, -9,66086 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_depot_map_flicker" ); + ent.v[ "origin" ] = ( -6723,23, 5313,91, -8,18646 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 225 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -6365,04, 4578,04, 109,9 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 100; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5517,59, 5241,44, -11 ); + ent.v[ "angles" ] = ( 28, 182, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -6758,41, 4766,59, -92,7686 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -6689,7, 4768,01, -92,7002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5980,96, 6261,54, -36,3953 ); + ent.v[ "angles" ] = ( 0, 175, -8 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5845,6, 6191,34, -35,9 ); + ent.v[ "angles" ] = ( 358,005, 179,002, -0,139585 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -7810,49, 5420,54, -74,2103 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 154 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -7819,04, 4111,9, -37,6549 ); + ent.v[ "angles" ] = ( 12,9361, 13,2884, -8,13303 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( -7674,39, 5156,76, 166,697 ); + ent.v[ "angles" ] = ( 63, 269, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_dbl_glow" ); + ent.v[ "origin" ] = ( -6801,44, 5517,77, 76,125 ); + ent.v[ "angles" ] = ( 330, 180, -90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( -6583,75, 5403,93, -32,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -300; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( -6968,95, 5308,98, -32,875 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -360; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -6197,68, 3183,08, 15 ); + ent.v[ "angles" ] = ( 271, 187, -84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -4725,65, 4685,73, 338,88 ); + ent.v[ "angles" ] = ( 271, 97, 72 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -4793,84, 4708,26, 346,094 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -7246,23, 4589,33, 78,025 ); + ent.v[ "angles" ] = ( 90, 2, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6951,36, 4934,45, 91,0322 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6751,02, 4934,64, 85,425 ); + ent.v[ "angles" ] = ( 31,9413, 329,602, 91 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6847,37, 5022,5, 91 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -3946,86, -7250,19, 107 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 102; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -4418,11, -626,9, 192,003 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 114; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( 8133,65, 4787,75, -194,479 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 108; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( 10160,1, -1748,62, -45,9508 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 106; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -45,2307, -5452,06, 92,5112 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 104; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6724,03, 4589,1, 81,9 ); + ent.v[ "angles" ] = ( 87, 182, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 287,427, -453,374, -62 ); + ent.v[ "angles" ] = ( 1,9859, 356,008, -0,59234 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_right_border" ); + ent.v[ "origin" ] = ( 10191, 8408,74, -566,847 ); + ent.v[ "angles" ] = ( 3,6542, 275,052, 1,6294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 6127,06, -6034,52, -70,4416 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 43 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_1200x600" ); + ent.v[ "origin" ] = ( 6552,9, -4715,76, -58,9995 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( 7804,15, -4507,67, 76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 7466,6, -4570,16, 32,1187 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6879,38, 4404,41, -55,7499 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6865,54, 4337,65, -56,7845 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 24 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6803,27, 4294,82, -59,5574 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 1397,35, -485,659, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 2955,11, -447,745, -129,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 2318,31, -669,672, 132,6 ); + ent.v[ "angles" ] = ( 82, 90, 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 2393,33, -669,067, 133,725 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 2475,69, -4,57658, 197,512 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( 591,712, -1224,22, 247,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( -385,805, -200,682, 110,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( 1232,59, -1724,85, 188,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 172 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( 1782,94, -2158,76, 109,262 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_street_lamp" ); + ent.v[ "origin" ] = ( 2424, -200, 104 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( 3264,9, -684,243, 110 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 179 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -7174,46, 4182,06, 86,8813 ); + ent.v[ "angles" ] = ( 87, 182, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 1916,05, -1534,34, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 150 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 742,165, -500,51, -61,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1584,48, 61,4287, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1643,6, 239,56, -62,0999 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1956,58, -684,969, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -7162,7, 4430,93, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -5961,17, 4659,68, -56,1655 ); + ent.v[ "angles" ] = ( 0, 177, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1984,16, -477,682, -61,0387 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1529,72, -1378,9, -60 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 2076,71, -1639,77, 6,14304 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( 2284,66, 80,3072, 73,0331 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 2353,79, -515,486, -60,3616 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 2426,85, -478,694, -58,3936 ); + ent.v[ "angles" ] = ( 9, 139, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 702,614, -1449,61, 161,693 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 1721,63, -90,9005, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 1476,19, -161,862, -58,502 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1601,25, 381,192, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 2249,23, -374,64, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 160 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 1313,09, -749,727, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 144 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 2990,83, -473,678, -129,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 129 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -6365,25, 4577,86, 109,8 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 101; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -3946,92, -7250,32, 107,1 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 103; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -4418,04, -626,987, 191,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 115; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( 6300,89, 5078,98, 67,4032 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 111; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( 8133,62, 4787,71, -194,497 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 109; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( 10160, -1748,7, -45,9436 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 107; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -45,1183, -5452,09, 92,4005 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 105; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_bridge_dest" ); + ent.v[ "origin" ] = ( -2790,06, -446,644, 162,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 754,692, -1143,89, 212,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 72 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 969,776, -997,644, 97,8737 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 1037,18, -956,931, 110,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 303 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 920,384, -991,542, 115,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_short_warm" ); + ent.v[ "origin" ] = ( 988,555, -841,342, 117,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 787,978, -855,479, -51,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 355 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 808,764, -1044,17, -54,6895 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 917,617, -1052,28, 94,2635 ); + ent.v[ "angles" ] = ( 29, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 850,388, -949,561, 94 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 695,336, -1140,64, 174,388 ); + ent.v[ "angles" ] = ( 0, 358,745, 90,3158 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -397,618, -1279,07, 159,194 ); + ent.v[ "angles" ] = ( 271, 187, -84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 1144,58, -1476,87, 73,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 1075,85, -1008,77, -61 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 47 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 855,703, -1077,52, -55,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 978,234, -1004,41, 95,8515 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 112 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1026,46, -1141,13, 177,669 ); + ent.v[ "angles" ] = ( 24, 193, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 11566, 7369,17, -754,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 65 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( -7002,24, 4782,52, -63 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( -5071,79, -7163,23, -58,3008 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 8637,74, -6861,16, 100,781 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 10217, -809,125, -216,77 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 10777,6, 7700,74, -579,817 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm" ); + ent.v[ "origin" ] = ( 1256,2, -477,919, -61 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort" ); + ent.v[ "origin" ] = ( -5772,88, 5116,44, -43,0053 ); + ent.v[ "angles" ] = ( 270, 217,395, 178,605 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_detail" ); + ent.v[ "origin" ] = ( -6706,07, 4768,48, -92,5561 ); + ent.v[ "angles" ] = ( 270, 0, 92 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_detail" ); + ent.v[ "origin" ] = ( -7616,51, 4365,68, -58 ); + ent.v[ "angles" ] = ( 270, 0,65106, -162,651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( -5185,59, -6893,63, -65 ); + ent.v[ "angles" ] = ( 270, 0, -3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( -5455,46, -6802,14, -65 ); + ent.v[ "angles" ] = ( 270, 356,906, -30,9059 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( 7051,84, -6104,46, -126 ); + ent.v[ "angles" ] = ( 270, 359,914, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( 7097,11, -6375,92, -126 ); + ent.v[ "angles" ] = ( 270, 359,914, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort_sm" ); + ent.v[ "origin" ] = ( 2790,44, -423,149, -80,455 ); + ent.v[ "angles" ] = ( 270, 0,692906, 178,307 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 6100,79, -5285,34, -32,8692 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_right_border" ); + ent.v[ "origin" ] = ( 10382,8, 8961,99, -422,321 ); + ent.v[ "angles" ] = ( 358,271, 9,94811, 0,507869 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 10049,7, 8042,2, -572,673 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_transition_600x600" ); + ent.v[ "origin" ] = ( 10070,1, 7465,39, -576 ); + ent.v[ "angles" ] = ( 358,698, 359,957, 0,783675 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7062,86, -6152,26, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( -3843,32, -7122,23, 150,713 ); + ent.v[ "angles" ] = ( 63, 269, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( 8854,15, -5938,39, 310,653 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_ext_runner" ); + ent.v[ "origin" ] = ( 1293,97, -1569,38, 275,83 ); + ent.v[ "angles" ] = ( 90, 0,337619, 0,337609 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -6837,05, 5106,9, 122,125 ); + ent.v[ "angles" ] = ( 288,982, 88,5178, 1,46959 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( 2038,82, 145,766, 43,9131 ); + ent.v[ "angles" ] = ( 284,035, 94,1266, -94,0038 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_bowling_sign_fog" ); + ent.v[ "origin" ] = ( 2357,64, -719,063, 369,31 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( 2837,4, -435,051, 11,5 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 181 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1889,32, 763,731, -56,6942 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1791,17, 740,252, -55,0558 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 163 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1979,87, 761,433, -47,4833 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 7818,75, -5992,71, 60,2811 ); + ent.v[ "angles" ] = ( 20, 84, -6 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 7988,32, -6044,29, 75,9195 ); + ent.v[ "angles" ] = ( 4, 35, -11 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8334,09, -6302,3, 93,7967 ); + ent.v[ "angles" ] = ( 359,913, 359,004, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8353,75, -6383, 98,6189 ); + ent.v[ "angles" ] = ( 354,382, 346,891, -3,27537 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 8404,03, -6366,25, 98,1088 ); + ent.v[ "angles" ] = ( 354,374, 344,526, -1,56396 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8393,64, -6460,92, 102,788 ); + ent.v[ "angles" ] = ( 1,29256, 14,9455, -2,83045 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8438,13, -6582,85, 105,293 ); + ent.v[ "angles" ] = ( 359,328, 191,965, -2,0986 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8363,87, -7077,4, 92,5037 ); + ent.v[ "angles" ] = ( 7,08973, 260,142, -1,31736 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 8398,26, -7131,53, 83,5329 ); + ent.v[ "angles" ] = ( 355,945, 6,61279, 7,42273 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8406,2, -7050,16, 95,9016 ); + ent.v[ "angles" ] = ( 4,76812, 319,449, 5,4151 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 8418,49, -6955,4, 101,044 ); + ent.v[ "angles" ] = ( 1,65899, 333,337, -1,42441 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5503,15, 6388,21, -72,5321 ); + ent.v[ "angles" ] = ( 0,109414, 292,37, -8,15952 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5514,5, 6422,25, -73,5282 ); + ent.v[ "angles" ] = ( 356,025, 262,626, -7,13254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 5388,57, 6425,25, -64,7438 ); + ent.v[ "angles" ] = ( 356,766, 272,615, -3,7523 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5337,66, 6389,44, -64,8271 ); + ent.v[ "angles" ] = ( 358,904, 187,573, -0,430535 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5324,97, 6019,33, -64,9331 ); + ent.v[ "angles" ] = ( 359,844, 311,516, -4,94951 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5377,87, 6091,1, -67,7557 ); + ent.v[ "angles" ] = ( 0,239705, 148,415, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5359,91, 6133,77, -69 ); + ent.v[ "angles" ] = ( 0,243594, 80,4189, 1,7854 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5280,21, 6157,39, -65,9638 ); + ent.v[ "angles" ] = ( 2,09653, 38,445, 1,85192 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5298,75, 6236,24, -67,6985 ); + ent.v[ "angles" ] = ( 0,512533, 76,4233, 0,749736 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5481, 6340,94, -69,9456 ); + ent.v[ "angles" ] = ( 354,217, 246,67, -5,76663 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5469,72, 6431,43, -71,8224 ); + ent.v[ "angles" ] = ( 356,025, 262,626, -5,13254 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 5313,89, 6374,04, -68,4139 ); + ent.v[ "angles" ] = ( 352,852, 230,625, -1,9477 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1744,42, 704,608, -57,139 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 267 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -5879,18, 5132,33, -54,9188 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -5679,99, 5029,36, -38,0459 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 224 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 191,569, 618,303, -38 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 53,7307, 538,679, -35,3064 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 250,113, 567,747, -34,6563 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 132,32, 591,904, 85,6072 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 318 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 234,855, 648,418, 85,125 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 141,005, 552,795, -33,0726 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_vault" ); + ent.v[ "origin" ] = ( 466,399, 540,849, 24,125 ); + ent.v[ "angles" ] = ( 2, 330, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_key_glint" ); + ent.v[ "origin" ] = ( 589,29, 440,722, 11,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_key_glint" ); + ent.v[ "origin" ] = ( 589,064, 449,555, 11,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 233 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( 100,097, 339,198, -46,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 256,422, 349,21, -54,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 178,717, 413,692, -29,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_bar_glow" ); + ent.v[ "origin" ] = ( 1777,99, 156,13, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 2523,8, 374,808, 69,625 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 1114,07, 20,5454, 41,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans" ); + ent.v[ "origin" ] = ( 502,541, 765,832, 83,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 991,306, -95,3722, 40,5243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1970,15, 167,957, 163,938 ); + ent.v[ "angles" ] = ( 335, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_med" ); + ent.v[ "origin" ] = ( 2239,96, 185,098, 139,125 ); + ent.v[ "angles" ] = ( 336,247, 251,383, 8,33834 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_med" ); + ent.v[ "origin" ] = ( 1969,63, -25,7143, 91,125 ); + ent.v[ "angles" ] = ( 335,016, 245,207, -0,932351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1873,95, 168,875, 165,392 ); + ent.v[ "angles" ] = ( 332,003, 249,879, 0,387281 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1941,61, 167,23, 198,192 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2003,46, 42,8896, 92,125 ); + ent.v[ "angles" ] = ( 337,004, 241,914, 0,424438 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2350,84, 34,2896, 88,125 ); + ent.v[ "angles" ] = ( 333,004, 244,121, -0,474286 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 1888,03, 168,875, 202,429 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_med" ); + ent.v[ "origin" ] = ( 2324,61, -20,7978, 88,125 ); + ent.v[ "angles" ] = ( 334, 243, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 2179,62, -1804,56, 249,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 173 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 2212,67, -1670,11, 208,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 1264,63, -3157,28, 28,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_off" ); + ent.v[ "origin" ] = ( -627,572, -615,202, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 113; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( -627,359, -615,075, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 112; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( 1927,64, -1060,33, 131,881 ); + ent.v[ "angles" ] = ( 67, 269,911, 87,9181 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1645,32, 694,99, -64,1414 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 359 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1602,48, 476,257, -68,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1535,94, 497,874, -64,9919 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1374,88, 782,003, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1603,51, -262,848, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 584,114, -459,174, -67 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 205 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 775,721, -690,862, -57,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1026,73, -502,666, -64,9585 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 304 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1165,88, -310,769, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1592,68, -972,327, -64,8077 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 31 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1515,33, -822,148, -62,2515 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 20 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1533,38, -1139,12, -60,4293 ); + ent.v[ "angles" ] = ( 0,278291, 274,981, -5,99519 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1359,65, -1213,52, -63,1614 ); + ent.v[ "angles" ] = ( 356,345, 160,109, -1,41514 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1535,79, -1334,63, -63,8559 ); + ent.v[ "angles" ] = ( 0,73816, 38,0882, 3,84916 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1492,83, -1288,81, -50,9464 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 344 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1479,57, -1249,33, -55,1658 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 48 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1493,56, -1314,7, -54,8906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1386,95, 261,349, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 252 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1247,14, 178,805, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 356 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1431,34, 155,715, -66 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1540,99, -68,7187, -64,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 60 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1482,47, -63,7589, -62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 103 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 1343,41, 77,0003, -68,1872 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1562,34, -1135,27, -60,6276 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 283 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 1452,5, -218,951, -70 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 1361,91, -551,798, -67 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 230 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 2441,27, -547,621, -59,6587 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 208 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 1248,59, -1279,85, -58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 294 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1343,33, -1237,01, -55,7566 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 67 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6869,17, 5342,61, -62,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -6869,78, 5464,68, -61,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 15 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6835,64, 5264,04, -66,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 53 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6762,79, 5228,51, -63,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 52 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6720,24, 5171,85, -61,3532 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( -6896,93, 5375,32, -63,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 244 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 3; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_power_pulse" ); + ent.v[ "origin" ] = ( 12204,4, 7587,57, -641 ); + ent.v[ "angles" ] = ( 270, 0, -95 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_power_on" ); + ent.v[ "origin" ] = ( 12204,4, 7587,57, -640 ); + ent.v[ "angles" ] = ( 270, 0, -95 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0,25; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_power_rising" ); + ent.v[ "origin" ] = ( 12204,4, 7587,57, -639 ); + ent.v[ "angles" ] = ( 270, 0, -95 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 30,25; + ent.v[ "exploder" ] = 500; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6865,77, 5449,35, -63,7096 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 18 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6865,9, 5353,17, -64,4128 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 352 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6821,72, 5257,82, -62,8765 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 68 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_crevice_smoke_100" ); + ent.v[ "origin" ] = ( -6752,63, 5222,43, -66,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 50 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 2; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety" ); + ent.v[ "origin" ] = ( 6301,07, 5079,12, 67,4271 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 110; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10128,1, 3411,46, 196 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 331 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10497, 2685,14, 219,741 ); + ent.v[ "angles" ] = ( 0, 331, -15 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10539,3, 1146,3, 311,719 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 316 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -9678,57, 2737,65, 192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -11488,2, 521,303, 192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 27 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -10739,5, -2162,63, 240,948 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 150 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -9363,38, -6107,72, 196 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 230 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -10126,6, -6035,96, 192 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_thick_600x600" ); + ent.v[ "origin" ] = ( -10747,4, -3914,96, 192 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11077, -1101,23, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_lava_distort" ); + ent.v[ "origin" ] = ( -11210, -1129,64, 180 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -11220,5, -1101,46, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 203 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11149,5, -1196,82, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11188,2, -1050,69, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 170 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11279,7, -1155,05, 180 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11278,8, -1268,24, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 93 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11296,1, -909,062, 185 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 78 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -11309,7, -2014,81, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 126 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -11311, -2020,2, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 314 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11375, -1964,33, 185,879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 346 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -11234,5, -2090,5, 180 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 155 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( -11220,4, -3193,42, 268,293 ); + ent.v[ "angles" ] = ( 333,018, 206,982, 2,24406 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -11104,8, -983,586, 194,026 ); + ent.v[ "angles" ] = ( 7, 190, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -10657,8, 889,003, 305,817 ); + ent.v[ "angles" ] = ( 0, 316, -4 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_dbl_glow" ); + ent.v[ "origin" ] = ( -6247,77, 5197,74, 35,125 ); + ent.v[ "angles" ] = ( 297,939, 94,5663, -94,2372 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -9936,09, 2851,18, 441 ); + ent.v[ "angles" ] = ( 270, 0, -30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10224,1, 2342,43, 440 ); + ent.v[ "angles" ] = ( 270, 0, -30 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10610,4, 1486,71, 430,812 ); + ent.v[ "angles" ] = ( 289, 249, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -11120, -312,414, 440,9 ); + ent.v[ "angles" ] = ( 270, 359,089, -12,0888 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -11249,9, -1465,12, 439,2 ); + ent.v[ "angles" ] = ( 270, 359,951, -1,95138 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -11173,1, -3034,18, 441,161 ); + ent.v[ "angles" ] = ( 270, 340,77, 26,2299 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10797,9, -4638,33, 439,9 ); + ent.v[ "angles" ] = ( 270, 1,54295, 17,457 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10121,4, -5933,87, 433,345 ); + ent.v[ "angles" ] = ( 289,524, 274,491, 104,913 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -9680,11, -6367,1, 433 ); + ent.v[ "angles" ] = ( 289,455, 68,9812, -16,4659 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( -10003,3, 3224,71, 192 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -11779,3, -1125,37, 375 ); + ent.v[ "angles" ] = ( 270, 0,906503, -1,90651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( -11778, -1677,58, 373,371 ); + ent.v[ "angles" ] = ( 270, 0,906503, -1,90651 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -11778,4, -2244,37, 374,1 ); + ent.v[ "angles" ] = ( 270, 0,906503, -1,90651 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -10951,7, -5454,94, 374 ); + ent.v[ "angles" ] = ( 270, 358,512, 26,4878 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -10710,7, -855,473, 370 ); + ent.v[ "angles" ] = ( 271, 264,002, 89,9978 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -6163,17, 3293,78, -13,9583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 119 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -11303,5, -3354,03, 302,04 ); + ent.v[ "angles" ] = ( 337,721, 5,86313, -15,1555 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -7381,73, 6748,78, -55 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 284 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -7490,71, 6520,46, -71 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -7307,65, 6961,87, -79 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_column_lrg" ); + ent.v[ "origin" ] = ( -7412,36, 7034,42, -45 ); + ent.v[ "angles" ] = ( 290,014, 195,476, -92,6171 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( -5794,23, 6978,67, -44 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 152 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -6355,24, 5714, 8,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -7184,36, 5600,22, 15,125 ); + ent.v[ "angles" ] = ( 270, 180, 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 177,625, -530,665, -48,3973 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 313 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1295,93, 882,596, -25,875 ); + ent.v[ "angles" ] = ( 35, 342, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 1284,46, 875,951, -32,7092 ); + ent.v[ "angles" ] = ( 327, 156, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5459,9, -6788, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5230,88, -6999,87, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -5145,21, -6915,75, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 337 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5050,25, -6921,37, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 169 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5501,02, -6704,36, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5473,88, -7476,84, 127,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,98, -7531,46, 128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,21, -7664,66, 128,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,52, -7799,99, 127,814 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5429,63, -7933,89, 128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5644,89, -7549,17, 134,291 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6031,36, -7550,77, 136,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6314,79, -7549,68, 134,879 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6469,19, -7789,98, 136,641 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5938,95, -7417,7, 127,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5846,87, -7476,07, 126,967 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -5656,66, -7476,06, 128 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -5483,61, -7432,77, -34,6377 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 5435,05, 6878,72, -9,113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 187 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -5974,13, -7261,3, -48,2301 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 64 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -5972,29, -7281,63, -66,268 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 324 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( -5851,29, -7067,3, -54,1333 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -4366,17, -7273,86, -52,8879 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( -5148,85, -7273,66, -63,5983 ); + ent.v[ "angles" ] = ( 357, 120,999, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -5090,66, -7323,27, -64 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -4380,11, -7148,49, -58,148 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -62; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_papers_windy_slow" ); + ent.v[ "origin" ] = ( -5862,85, -7050,07, -52,8316 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 122 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -17; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( -5969,18, -7734,27, 10,025 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( -5698,49, -8378,1, -12,3228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_glow_fog" ); + ent.v[ "origin" ] = ( -4568,29, -7225,78, 151,693 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 117 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4737,35, -7412,11, 197,275 ); + ent.v[ "angles" ] = ( 270, 0, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4833,49, -7840,76, 125,125 ); + ent.v[ "angles" ] = ( 271, 359,999, -178,999 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4625,94, -7868,51, 124,025 ); + ent.v[ "angles" ] = ( 295,505, 181,435, 177,976 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4410,87, -7797,71, 114,26 ); + ent.v[ "angles" ] = ( 283,337, 346,888, 12,8218 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5409,75, -7279,42, 276,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5408,13, -7411,31, 275,423 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5409,11, -7211,45, 276,35 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5412,33, -7144,55, 274,523 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -99; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5412,82, -7113,89, 274,643 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5409,51, -7012,87, 276,361 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5408,54, -6967,22, 509,706 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5408,04, -6942,82, 606,032 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,28, -7378,8, 275,297 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5337,65, -7312,61, 275,796 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,82, -7245,57, 275,566 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,31, -7143,39, 276,066 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5337,79, -7013,92, 275,057 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5336,85, -6971,21, 475,647 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( -5337,16, -6957,33, 539,584 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -4834,79, -7458,79, 128,325 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -6306,31, -7943,28, 77,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5775,25, -7866,32, 54,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5729,95, -7877,56, 63,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -43; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5625,83, -7543,92, 61,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5268,45, -7968,52, 4,89243 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( -5142,25, -7958,67, -20,1334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 7894,84, -6552,52, 202,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 7889,8, -6318,81, 315,925 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8013,75, -6642,93, 361,925 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8328,49, -5015,29, 161,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 7882,26, -5207,24, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8503,42, -4804,02, 162,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8059,34, -5204,01, 333,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8317,79, -6683,08, 180,206 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8234,94, -6586,04, 178 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 8137,48, -6959,37, 211,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 8057,41, -4806,99, 161,725 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 7374,98, -5426,44, 49,3118 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4220,64, -7799,22, -1,875 ); + ent.v[ "angles" ] = ( 316,689, 259,962, 13,0518 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4189,21, -7705,66, 7,66019 ); + ent.v[ "angles" ] = ( 317,814, 249,191, 10,3636 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4295,9, -7802,49, 21,125 ); + ent.v[ "angles" ] = ( 320,075, 258,325, 14,3308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -4308,83, -7683,01, 32,8659 ); + ent.v[ "angles" ] = ( 325,068, 264,852, 10,8459 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5017,99, -7879,03, -56,875 ); + ent.v[ "angles" ] = ( 340,408, 259,106, 4,31522 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5003,87, -7838,04, -30,3927 ); + ent.v[ "angles" ] = ( 342,331, 260,31, 3,91311 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5494,71, -7831,96, 3,125 ); + ent.v[ "angles" ] = ( 335,016, 248,207, -0,932351 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( -5523,54, -7862,26, 0,125 ); + ent.v[ "angles" ] = ( 336, 246, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 9040,04, -6391,29, 273,2 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 8419,09, -5744,22, 249,051 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( 8242,84, -6849,96, 259,625 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 8240,02, -6532,87, 209,525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 6587,59, -5127,09, -55,2822 ); + ent.v[ "angles" ] = ( 353, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 6987,8, -5763,06, -51,5495 ); + ent.v[ "angles" ] = ( 2, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 7858,56, -5805,03, 8,45168 ); + ent.v[ "angles" ] = ( 2, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 7792,54, -5443,05, 36,5811 ); + ent.v[ "angles" ] = ( 359, 136, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 7442,47, -5125,89, -4,7008 ); + ent.v[ "angles" ] = ( 359, 136, -5 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 8739,61, -6983,54, 86,5683 ); + ent.v[ "angles" ] = ( 0,545573, 157,823, 1,29891 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8027,21, -6432,62, 165,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8225,35, -6613,31, 178,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -20; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8140,59, -6889,03, 168,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8033,01, -6470,27, 294,896 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 9029,53, -6393,49, 249,093 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8416,65, -5742,4, 224,177 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8357,57, -6682,99, 183,255 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8100,48, -5243,8, 114,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7910,7, -5209,15, 151,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8050,46, -5221,8, 334,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -60; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8484,12, -4806,32, 166,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8055,05, -4795,58, 161,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8328,53, -5033,75, 165,125 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -91; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7854,08, -5055,63, 126,147 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7803,41, -4567,1, 111,113 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 8591,82, -5402,47, 117 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 7135,13, -5638,24, 30,9983 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 9978,39, -1767,15, -212,32 ); + ent.v[ "angles" ] = ( 358, 160, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10242, -133,225, -213,655 ); + ent.v[ "angles" ] = ( 2, 160, 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10185, -1131,84, -210,081 ); + ent.v[ "angles" ] = ( 2, 160, 2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10419,3, 7366,19, -557,286 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10426,2, 7362,67, -556,087 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10576,4, 7867,03, -534,373 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 21 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10561,8, 7854,68, -546,776 ); + ent.v[ "angles" ] = ( 24, 21, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -83; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( 10543,1, 7838,16, -564,906 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 287 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -51; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11244,2, 7598,05, -529,002 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -98; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11273,6, 7566,38, -510,46 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11197,5, 7581,58, -554,377 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11102,1, 7582,38, -521,847 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -28; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 11534,9, 7043,33, -422,437 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 125 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_lrg" ); + ent.v[ "origin" ] = ( 11695,4, 6972,81, -417,525 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 121 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10772,1, 7534,6, -579,322 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 134 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_md" ); + ent.v[ "origin" ] = ( 10293,5, 8161,56, -576,661 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 157 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_windy_heavy_sm" ); + ent.v[ "origin" ] = ( 11284,2, 7782,37, -549,009 ); + ent.v[ "angles" ] = ( 8,89267, 132,773, -10,1167 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -15; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10545,1, 7987,11, -542,084 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 213 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( -7274,63, 4216,52, -7,79429 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( -4655,73, -7718,2, -46,2181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 124 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -100; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 1772,67, -134,847, -26,9184 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 177 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10482,5, 8077,43, -551,016 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 176 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10779,7, 7998,21, -540,07 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 257 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 11134,3, 8093,66, -505,788 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 11518,6, 7313,49, -755,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 32 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_insects_swarm_md_light" ); + ent.v[ "origin" ] = ( 11535,9, 7320,47, -712,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 12544,7, 8367,86, -747,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 217 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 12619,1, 8410,46, -751,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 250 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -24; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 11077,4, 8147,23, -472,382 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 85 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 10627,8, 8984,05, -351,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 244 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -63; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_closet" ); + ent.v[ "origin" ] = ( 10671,7, 9056,4, -351,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 221 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 12185,1, 8300,09, -747,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_rising_md" ); + ent.v[ "origin" ] = ( 10667,5, 8857,24, -566,312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 320 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_ash_ember_2000x1000" ); + ent.v[ "origin" ] = ( 11829,2, 7033,91, -366,52 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 142 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( 11000,5, 8592,98, -721,228 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 263 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -50; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -3523,91, 4145,58, 1026 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 164 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -5822,61, 8161,55, 1665,98 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 255 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -10419,6, 2878,18, 1302,32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 33 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -10422,2, 5513,57, 1108,93 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 351 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -7579,71, 2412,15, 1076,04 ); + ent.v[ "angles" ] = ( 20,9875, 82,1415, 0,732403 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -8591,58, 7883,01, 1434,96 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 300 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -5183,81, 1971,44, 1380,88 ); + ent.v[ "angles" ] = ( 8,93236, 125,086, 1,10578 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -3907,73, 6244,31, 1277,76 ); + ent.v[ "angles" ] = ( 4,95198, 216,03, 0,697713 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 200; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -7994,63, -5467,26, 1488 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 338 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -6248,9, -4383,96, 1488,83 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 283 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -3637,03, -5318,07, 994,45 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 232 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -2982,77, -8985,62, 1217,37 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 142 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -4789,43, -10429,2, 1615,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -2144,48, -6671,63, 1097,34 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 189 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -7283,26, -9141,06, 1439,81 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 54 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -8253,71, -7187,61, 1204,71 ); + ent.v[ "angles" ] = ( 357, 7, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 220; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 11039,7, -5731,09, 1349,86 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 185 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4491,1, -6164,51, 1530,32 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 5 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 9613,27, -3527,74, 1697,05 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 238 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4882,98, -3611,48, 1455,78 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 322 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 7145,47, -2628,27, 1418,72 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10641, -8278,11, 1550,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 137 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 5867,88, -8161,48, 1505,91 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 45 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8045,36, -9511,34, 1941,18 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 230; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 6852,87, -2262,35, 1264,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 23 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 13859, -645,96, 1348,54 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 183 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8118,81, 2009,01, 1412,57 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 303 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10501,1, 2270,69, 1535,92 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 271 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 6154,19, 223,038, 1606,08 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 349 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10606,6, -4038,92, 1467,82 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 13138,8, -3032,95, 1329,48 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 139 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 12600,4, 1246,54, 1347,77 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 231 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8452,68, -3056,77, 1074,09 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 55 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 240; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 14766,4, 6814,59, 1098,18 ); + ent.v[ "angles" ] = ( 12, 174, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10339,2, 3964,06, 1379,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 82 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 12754,5, 4793,53, 1107,25 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 132 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 14340,3, 9177,31, 663,407 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 197 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8179,63, 4723,92, 896,714 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 51 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 8458,11, 10639,4, 1231,62 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 307 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 7094,67, 8425,25, 1257 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 353 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 7202,75, 6339,84, 765,131 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 17 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 10729,5, 11122,9, 1151,78 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 266 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 13325,6, 10557,6, 1366,97 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 235 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 250; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -207,347, 1856,37, 1500,13 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 302 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -1247,2, -2498,41, 1408 ); + ent.v[ "angles" ] = ( 360, 36, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 1625,45, 3225,11, 1105 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 268 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4274,06, -1538,84, 1177 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 153 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( -1889,24, 66,6515, 1399 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 348 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 4525,94, 665,024, 1126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 197 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 2974,66, -3206,25, 1577 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 111 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 694,038, -3737,93, 1409 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 79 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createexploder( "fx_zmb_avog_storm_low" ); + ent.v[ "origin" ] = ( 3769,33, 2230,93, 904 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 232 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 260; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_truck_light" ); + ent.v[ "origin" ] = ( 1164,06, 310,847, -0,95 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 200 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( 2050,55, -1176,95, 92,625 ); + ent.v[ "angles" ] = ( 282, 270, 90 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( 888,034, -1532,84, 80,125 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( 888,055, -1424,17, 80,0051 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( 1058,12, -1424,92, 80,725 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_depot_cans" ); + ent.v[ "origin" ] = ( -6494,99, 5193,01, 55,225 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6004,73, 4178,79, -39,7161 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -85; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6007,56, 4183,18, -46,8613 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 99 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -97; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -7256,49, 5356,49, 76,625 ); + ent.v[ "angles" ] = ( 300,56, 56,1976, -63,4146 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11224,3, 7631,21, -757,475 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11166,9, 7525,87, -755,374 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 1510,96, -426,276, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_50x50_sm" ); + ent.v[ "origin" ] = ( -5982,84, -6804,63, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5858,36, -7105,72, -65 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 289 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5694,71, -6884,39, -68 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 350 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( -5823,62, -6768,1, -65,2136 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 97 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -54; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7178,46, 5386,18, -43,6839 ); + ent.v[ "angles" ] = ( 346, 41, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -76; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7176,71, 5393,31, -9,00734 ); + ent.v[ "angles" ] = ( 346, 41, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -66; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7177,88, 5334,54, 45,5397 ); + ent.v[ "angles" ] = ( 356, 55, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7061,11, 5401,32, -55,875 ); + ent.v[ "angles" ] = ( 341, 56, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_cool" ); + ent.v[ "origin" ] = ( -7108,24, 5323,87, -55,875 ); + ent.v[ "angles" ] = ( 341, 55, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6364,25, 5404,07, -54,2979 ); + ent.v[ "angles" ] = ( 327,291, 180,677, 4,76528 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6450,47, 5366,94, -55,875 ); + ent.v[ "angles" ] = ( 317,576, 183,05, -3,56625 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6324,56, 5391,09, 23,3601 ); + ent.v[ "angles" ] = ( 339,99, 181,99, -0,275328 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6526,78, 5027,04, -32,4411 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 279 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6536,44, 5005,17, -38,2548 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 272 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -6550,6, 5011,6, -33,6877 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 269 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 10085,8, 7660,61, -580 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 156 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 10099,7, 7278,2, -583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 77 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( 10029,6, 7897,85, -584 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 206 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -22; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10093,3, 7472,53, -583 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -65; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 10199,8, 7421,3, -573 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 88 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10161,9, 7815,92, -576 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2752,23, -202,843, -61,0126 ); + ent.v[ "angles" ] = ( 10,9441, 272,285, 67,3066 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2748,37, -203,92, -10,2652 ); + ent.v[ "angles" ] = ( 0, 273, 9 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( 1901,03, 564,856, 67,125 ); + ent.v[ "angles" ] = ( 311,502, 195,461, 157,008 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 9992,94, -1245,49, -217,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 130 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -84; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10052,3, -1175,39, -223,625 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 276 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -72; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10168,1, -1213,8, -221,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_100" ); + ent.v[ "origin" ] = ( 10061,8, -1368,94, -222,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 70 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -94; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 11263,9, 8174,39, -337,162 ); + ent.v[ "angles" ] = ( 52, 12, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -18; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 11773,7, 8485,59, -469,375 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 290 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 11333,8, 8107,72, -378,181 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 74 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 10530,4, 8345,07, -413,424 ); + ent.v[ "angles" ] = ( 90, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -4437,91, -7528,95, 99,8901 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow_lg" ); + ent.v[ "origin" ] = ( -4625,7, -7827,94, 124,725 ); + ent.v[ "angles" ] = ( 295,505, 181,435, 177,976 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6346,4, -7804,18, -13,2077 ); + ent.v[ "angles" ] = ( 338, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -6346,4, -7804,18, -13,2077 ); + ent.v[ "angles" ] = ( 338, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -6144,54, -7824,85, 130,125 ); + ent.v[ "angles" ] = ( 282, 90, -180 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_glow" ); + ent.v[ "origin" ] = ( -5761,02, -7822,95, 130,125 ); + ent.v[ "angles" ] = ( 270, 30,9987, -120,999 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_town_cans_sm" ); + ent.v[ "origin" ] = ( -3834,8, -7320,06, 61,125 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2224,68, 104,286, 155,125 ); + ent.v[ "angles" ] = ( 336,062, 255,377, -1,77889 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2202,63, 108,655, 148,125 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -32; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_interior_long" ); + ent.v[ "origin" ] = ( 2182,71, 167,009, 152,125 ); + ent.v[ "angles" ] = ( 336, 251, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_bulb_xsm" ); + ent.v[ "origin" ] = ( 7144,94, -5606,8, 70,4908 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -56; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13759,9, -1380,82, -92,9938 ); + ent.v[ "angles" ] = ( 314, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13870,7, -722,317, -222,776 ); + ent.v[ "angles" ] = ( 306, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13863,9, -341,626, -212,875 ); + ent.v[ "angles" ] = ( 306, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13808,1, -628,646, -252,875 ); + ent.v[ "angles" ] = ( 298, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13859,6, -974,169, -94 ); + ent.v[ "angles" ] = ( 326, 229, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 13805,1, -1449,76, -132,375 ); + ent.v[ "angles" ] = ( 317,174, 237,094, 15,7036 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -78; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 13558,1, -1418,66, -180,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -38; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_glow_xsm" ); + ent.v[ "origin" ] = ( 13987,6, -365,533, -152,199 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13795,6, -429,569, -188,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -25; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13819,1, -1026,6, -185,938 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13763,8, -1373,05, -181,438 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 14249,4, -1138,75, -195,847 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13147,5, -1608,93, -198,477 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_smk_interior_md" ); + ent.v[ "origin" ] = ( 13355,5, -236,408, -194,069 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 14144,1, -1050,49, -192,334 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -49; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13846,6, -1797,74, -179,776 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13715,6, -740,508, -188,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_fog_low_300x300" ); + ent.v[ "origin" ] = ( 13280,2, -758,48, -202,824 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 33 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 11569,6, 7207,64, -627,375 ); + ent.v[ "angles" ] = ( 65, 90, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11097,3, 8370,78, -472,312 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_spark_blue_lg_loop" ); + ent.v[ "origin" ] = ( 11065,7, 8350,09, -480,76 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_transformer_on" ); + ent.v[ "origin" ] = ( 11096,1, 8349,73, -498,022 ); + ent.v[ "angles" ] = ( 10,9932, 163,963, -8,38868 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_blue_sm_loop" ); + ent.v[ "origin" ] = ( 11062,9, 8351,89, -475,091 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11249,7, 904,058, 192 ); + ent.v[ "angles" ] = ( 299,251, 356,208, -7,17259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11060,9, 836,008, 327,885 ); + ent.v[ "angles" ] = ( 299,251, 356,208, -7,17259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -42; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -10848,1, 727,41, 262,305 ); + ent.v[ "angles" ] = ( 299,251, 356,208, -7,17259 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -11453,1, -2704,04, 238 ); + ent.v[ "angles" ] = ( 312,147, 207,959, -4,21566 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( -11447,1, -2717,45, 320 ); + ent.v[ "angles" ] = ( 316,137, 207,551, -3,92308 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_detail" ); + ent.v[ "origin" ] = ( -11237,1, -2774,08, 205,693 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 184 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11065,4, -3093,87, 210,48 ); + ent.v[ "angles" ] = ( 313, 209, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -59; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -11085,3, -3572,2, 238,785 ); + ent.v[ "angles" ] = ( 323, 209, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_tunnel_warm" ); + ent.v[ "origin" ] = ( -10751,6, 548,387, 281,46 ); + ent.v[ "angles" ] = ( 298,016, 48,8707, 1,87996 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 11026,4, 8418,04, -452,626 ); + ent.v[ "angles" ] = ( 319, 238, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -52; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 11047,5, 8544,31, -407,409 ); + ent.v[ "angles" ] = ( 321,972, 238,53, -82,3373 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10965,8, 8541,46, -361,01 ); + ent.v[ "angles" ] = ( 319, 232, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10784,7, 8598,1, -382,159 ); + ent.v[ "angles" ] = ( 312, 253, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 11284,5, 8803,95, -209,321 ); + ent.v[ "angles" ] = ( 71,1934, 180,803, -87,4102 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -47; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10895,9, 8866,25, -196,195 ); + ent.v[ "angles" ] = ( 73, 258, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10781,7, 8702,04, -222,415 ); + ent.v[ "angles" ] = ( 88, 267, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -69; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10799,1, 8575,29, -500,938 ); + ent.v[ "angles" ] = ( 79, 87, 90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_pwr_station" ); + ent.v[ "origin" ] = ( 10979,3, 8831,12, -420,153 ); + ent.v[ "angles" ] = ( 73, 267, -90 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( 7976,72, -4577,1, 193,859 ); + ent.v[ "angles" ] = ( 18,9006, 87,1581, -14,8078 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -90; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8107,3, -4901,58, 390,125 ); + ent.v[ "angles" ] = ( 322,027, 247,537, -1,56188 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -95; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8254,05, -4975,36, 463,125 ); + ent.v[ "angles" ] = ( 322,434, 234,888, 6,2056 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -89; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8194,13, -4983,58, 441,125 ); + ent.v[ "angles" ] = ( 322,109, 239,929, 3,1195 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -31; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8249,4, -4832,61, 434,125 ); + ent.v[ "angles" ] = ( 322, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8226,89, -5241,31, 421,125 ); + ent.v[ "angles" ] = ( 322, 245, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -40; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8046,06, -4860,87, 413,125 ); + ent.v[ "angles" ] = ( 322,677, 257,613, -7,72609 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 635,54, 407,845, 91,125 ); + ent.v[ "angles" ] = ( 16, 71, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 628,125, 406,734, 43,7233 ); + ent.v[ "angles" ] = ( 3, 71, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 638,811, 426,54, -18,875 ); + ent.v[ "angles" ] = ( 349, 71, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 784,565, 726,997, -33,8978 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 270 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_crevice_glow_50" ); + ent.v[ "origin" ] = ( 811,849, 729,36, -35,0041 ); + ent.v[ "angles" ] = ( 0, 270, -2 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_fire_med" ); + ent.v[ "origin" ] = ( 942,825, 799,82, -52,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 223 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -1148,16, -1138,11, -41,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 80 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -70; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2664,01, -1345,03, -346,451 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 104 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -58; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2674,54, 433,639, -359,784 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -44; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -1124,75, 259,523, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 69 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -863,312, -745,248, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1196,8, -787,911, -47,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1381,38, -46,0962, -47,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -21; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2645,12, 9,70624, -357,904 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 87 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2719,28, -285,725, -334,581 ); + ent.v[ "angles" ] = ( 1, 87, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2685,84, -997,132, -346,559 ); + ent.v[ "angles" ] = ( 358,157, 83,9017, 1,94423 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -37; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -2770,44, -707,874, -115,875 ); + ent.v[ "angles" ] = ( 12, 275, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createexploder( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -2778,19, -155,061, -94,875 ); + ent.v[ "angles" ] = ( 29, 80, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 150; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -2291,93, -758,164, -101,161 ); + ent.v[ "angles" ] = ( 11, 214, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -26; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_tall" ); + ent.v[ "origin" ] = ( -1255,13, -1277,79, -34,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 83 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( -2742,09, -665,677, -333,1 ); + ent.v[ "angles" ] = ( 1, 87, 3 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -92; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1508,17, -320,626, -58,369 ); + ent.v[ "angles" ] = ( 355, 187, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1452,09, -720,211, -60,0286 ); + ent.v[ "angles" ] = ( 359,993, 186,739, -2,98858 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1415,76, -1177,25, -62,1707 ); + ent.v[ "angles" ] = ( 356,67, 156,949, -0,497783 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -704,822, -246,538, -58,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 22 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -779,445, -1098,9, -61,8023 ); + ent.v[ "angles" ] = ( 0,993918, 9,99335, -0,738612 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -87; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -699,587, -705,189, -57,1237 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 345 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -75; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1140,42, -15,2616, -48,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -16; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1273,82, -1205,47, -42,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 84 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -53; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -2204,13, -5739,66, -80,9468 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1994,56, -5882,45, -95,6035 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -19; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1875,72, -6466,37, -98,9131 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -61; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -1610,46, -6120,94, -92,074 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -39; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( -2214,93, -6067,3, -102,865 ); + ent.v[ "angles" ] = ( 7, 307, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -30; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1708,85, -6610,85, -95,0234 ); + ent.v[ "angles" ] = ( 355,794, 73,794, -4,39947 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -93; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2318,27, -6315,39, -107,815 ); + ent.v[ "angles" ] = ( 353,394, 27,6107, 4,95295 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -48; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1948,05, -6554,84, -111,909 ); + ent.v[ "angles" ] = ( 356,111, 77,7913, -4,68174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -46; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -1528,88, -5886,45, -91,5689 ); + ent.v[ "angles" ] = ( 356,621, 83,7816, -5,0618 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -2024,68, -5586,57, -68,3597 ); + ent.v[ "angles" ] = ( 356,111, 77,7913, -4,68174 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -81; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( 8336,11, -8461,36, -126,254 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 135 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_river" ); + ent.v[ "origin" ] = ( 7440,73, -8528,75, -124,913 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 81 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7171,28, -6397,54, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -77; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7054,04, -6397,21, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 7094,94, -6285,23, -126 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 107 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8662,38, -5640,09, 124,292 ); + ent.v[ "angles" ] = ( 323, 318, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -82; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 8599,65, -5634,21, 153,303 ); + ent.v[ "angles" ] = ( 321,616, 319,338, -39,0353 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -27; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 5262,91, 7044,48, 43,9142 ); + ent.v[ "angles" ] = ( 316,21, 262,066, 4,81097 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -68; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_god_ray_depot_warm" ); + ent.v[ "origin" ] = ( 5174,93, 7053,13, 41,125 ); + ent.v[ "angles" ] = ( 316,411, 278,687, -6,71217 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_desklamp" ); + ent.v[ "origin" ] = ( -7101,92, 5147,13, -0,163522 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 86 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -36; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -4683,65, -7970,08, 52,9438 ); + ent.v[ "angles" ] = ( 68, 180, -180 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_desklamp" ); + ent.v[ "origin" ] = ( 12139,1, 8505,25, -696,157 ); + ent.v[ "angles" ] = ( 85,685, 136,004, 133,029 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -64; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_int_runner" ); + ent.v[ "origin" ] = ( 7967,02, -464,256, 1429,54 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 416; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_int_runner" ); + ent.v[ "origin" ] = ( 7264,27, -458,783, 1045,58 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 305 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 416; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_spark_int_runner" ); + ent.v[ "origin" ] = ( 7964,59, -462,798, 663,232 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 59 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 416; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -6365,04, 4578,04, 109,9 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 400; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -6365,1, 4578,04, 109,746 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 401; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -3946,92, -7250,32, 107,1 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 403; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -3946,86, -7250,19, 107 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 402; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -45,1183, -5452,09, 92,4005 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 405; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -45,2307, -5452,06, 92,5112 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 404; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( 10160, -1748,7, -45,9436 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 406; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( 10160,1, -1748,62, -45,9508 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 407; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( 8133,62, 4787,71, -194,497 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 409; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( 8133,65, 4787,75, -194,479 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 408; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( 6301,07, 5079,12, 67,4271 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 410; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( 6300,89, 5078,98, 67,4032 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 411; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -627,359, -615,075, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 412; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -627,572, -615,202, 116,432 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 413; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_ric" ); + ent.v[ "origin" ] = ( -4418,11, -626,9, 192,003 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 415; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_light_safety_max" ); + ent.v[ "origin" ] = ( -4418,04, -626,987, 191,91 ); + ent.v[ "angles" ] = ( 0, 1, 0 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 414; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_tranzit_light_street_tinhat" ); + ent.v[ "origin" ] = ( -6917,44, 3891,27, 81,125 ); + ent.v[ "angles" ] = ( 90, 359,662, -0,33762 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -57; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_edge_100" ); + ent.v[ "origin" ] = ( -9032,52, 4222,59, 40,0809 ); + ent.v[ "angles" ] = ( 0,716713, 61,9889, -1,86754 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -35; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 11131,7, 8831,49, -894,668 ); + ent.v[ "angles" ] = ( 81,0228, 227,719, -27,4136 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -80; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_pit" ); + ent.v[ "origin" ] = ( 10945,1, 8621,79, -1116,88 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 61 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 11178,6, 8859,45, -715,452 ); + ent.v[ "angles" ] = ( 63,6007, 216,198, -13,3547 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 10953,1, 8914,32, -688,637 ); + ent.v[ "angles" ] = ( 53,9874, 292,702, 1,41178 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -33; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 10983, 8838,08, -841,275 ); + ent.v[ "angles" ] = ( 66,6739, 293,054, 17,3617 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -41; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_creek" ); + ent.v[ "origin" ] = ( 10999, 8819,35, -930,992 ); + ent.v[ "angles" ] = ( 74,6464, 318,518, 15,5448 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -45; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_smoke_pit" ); + ent.v[ "origin" ] = ( 11118,6, 8507,76, -1176,88 ); + ent.v[ "angles" ] = ( 340, 61, 0 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -67; + ent = maps/mp/_utility::createoneshoteffect( "fx_zmb_lava_100x100" ); + ent.v[ "origin" ] = ( 1417,38, -341,936, -67,875 ); + ent.v[ "angles" ] = vectorScale( ( 0, 1, 0 ), 175 ); + ent.v[ "type" ] = "oneshotfx"; + ent.v[ "delay" ] = -74; + ent = maps/mp/_utility::createexploder( "fx_zmb_tranzit_flourescent_flicker" ); + ent.v[ "origin" ] = ( 1927,64, -1060,33, 131,881 ); + ent.v[ "angles" ] = ( 67, 269,911, 87,9181 ); + ent.v[ "type" ] = "exploder"; + ent.v[ "delay" ] = 0; + ent.v[ "exploder" ] = 490; +}